diff --git a/pages/sub_basic/forgetPwd/index.vue b/pages/sub_basic/forgetPwd/index.vue
index 523f916..0c5e66e 100644
--- a/pages/sub_basic/forgetPwd/index.vue
+++ b/pages/sub_basic/forgetPwd/index.vue
@@ -1,8 +1,8 @@
 <template>
 	<view class="register" @touchmove.stop.prevent="moveHandle">
 		<!-- #ifndef MP-WEIXIN -->
-		 <u-navbar title="忘记密码" :border-bottom="false" :is-back="false"></u-navbar>
-		 <!-- #endif -->
+		<u-navbar title="忘记密码" :border-bottom="false" :is-back="false"></u-navbar>
+		<!-- #endif -->
 		<view class="register-con">
 			<view class="register-con-logo">
 				<u-image src="/static/images/login/logo.png" width="300rpx" mode="widthFix"></u-image>
@@ -17,6 +17,7 @@
 				</u-field>
 				<u-field v-model="pwd" icon="lock-fill" placeholder="请输入新的密码" label-width="50" icon-color="#999999" :password="true"
 				 maxlength="12" type="number" clear-size="40"></u-field>
+				<view class="register-con-form-secret"><text @click="toUrl('/pages/sub_basic/forgetPwd/question')">密保改密</text></view>
 			</view>
 			<u-button @click="changePwd" :custom-style="registerConBtn">修改密码</u-button>
 		</view>
@@ -33,7 +34,7 @@
 				code: "",
 				isChecked: false,
 				timer: "",
-				registerConBtn:{
+				registerConBtn: {
 					width: '600rpx',
 					backgroundColor: '#2FA8E1',
 					color: '#FFFFFF',
@@ -42,10 +43,10 @@
 					marginTop: '100rpx',
 					padding: '50rpx 0'
 				},
-				btn:{
+				btn: {
 					color: '#2FA8E1',
 					backgroundColor: '#FFFFFF',
-					borderColor:'#2FA8E1',
+					borderColor: '#2FA8E1',
 					borderWidth: '1rpx',
 					borderStyle: 'solid',
 					fontFamily: "PingFang-SC-Regular"
@@ -53,7 +54,7 @@
 			}
 		},
 		methods: {
-			moveHandle(){
+			moveHandle() {
 				return
 			},
 			getCode() {
@@ -70,7 +71,7 @@
 				uni.removeStorageSync('token')
 				that.$u.post('/i/code', {
 					phone: tel,
-					"type":"find"
+					"type": "find"
 				}).then(res => {
 					uni.showToast({
 						title: res.msg,
@@ -152,10 +153,10 @@
 							title: "密码重置成功",
 							icon: "none",
 							duration: 800,
-							complete(res){
+							complete(res) {
 								setTimeout(() => {
 									uni.reLaunch({
-										url:"/pages/sub_basic/login/index"
+										url: "/pages/sub_basic/login/index"
 									})
 								}, 1500)
 							}
@@ -208,6 +209,14 @@
 			&-form {
 				width: 650rpx;
 				margin: auto;
+
+				&-secret {
+					color: #999999;
+					font-size: 28rpx;
+					display: flex;
+					justify-content: flex-end;
+					margin-top: 30rpx;
+				}
 			}
 
 			&-btn {
diff --git a/pages/sub_basic/forgetPwd/question.vue b/pages/sub_basic/forgetPwd/question.vue
new file mode 100644
index 0000000..36b90e7
--- /dev/null
+++ b/pages/sub_basic/forgetPwd/question.vue
@@ -0,0 +1,266 @@
+<template>
+	<view>
+		<view class="setQuestion" v-if="show_question && !show_pwd">
+			<view class="setQuestion-container">
+				<view class="setQuestion-item" v-for="(v,i) in list_select" :key='i'>
+					<u-field :disabled="true" :label="v.q_title" :field-style="field_style" v-model="v.q_value" input-align='right'
+					 @click="choose_list(i,'confirm'+i)"></u-field>
+					<u-field :label="v.a_title" :field-style="field_style" v-model="v.a_value" input-align='right' placeholder="请输入您的答案"
+					 maxlength="20"></u-field>
+					<u-picker mode="selector" v-model="v.isShow" :default-selector="[i]" :range="list" range-key="question" @confirm="v.func"></u-picker>
+				</view>
+			</view>
+			<u-button @click="submit" :custom-style="submit_btn">验证密保</u-button>
+		</view>
+		<view class="setQuestion" v-if="!show_question && !show_pwd">
+			<view class="setQuestion-container">
+				<u-field label="手机号" :field-style="field_style" v-model="phone" input-align='right' placeholder="请输入您设置密保时关联的手机号"></u-field>
+			</view>
+			<u-button @click="check_phone" :custom-style="submit_btn">确认手机号</u-button>
+		</view>
+		<view class="setQuestion" v-if="show_pwd">
+			<view class="setQuestion-container">
+				<u-field label="新密码" :field-style="field_style" v-model="pwd" input-align='right' placeholder="请输入您的新密码" password></u-field>
+			</view>
+			<view class="setQuestion-container">
+				<u-field label="确认密码" :field-style="field_style" v-model="repwd" input-align='right' placeholder="请确认您的新密码"
+				 password></u-field>
+			</view>
+			<u-button @click="change_pwd" :custom-style="submit_btn">修改密码</u-button>
+		</view>
+	</view>
+
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				phone: '',
+				field_style: {
+					'font-size': '30rpx',
+					'color': '#6a6a6a'
+				},
+				submit_btn: {
+					width: '600rpx',
+					backgroundColor: '#2FA8E1',
+					color: '#FFFFFF',
+					fontFamily: "PingFang-SC-Medium",
+					fontSize: '30rpx',
+					marginTop: '100rpx',
+					padding: '50rpx 0'
+				},
+				show_question: false,
+				show_pwd: false,
+				list: [],
+				list_select: [{
+						q_title: 'Q1:',
+						q_value: '请选择您的密保问题',
+						a_value: '',
+						a_title: 'A1:',
+						isShow: false,
+						func: null
+					},
+					{
+						q_title: 'Q2:',
+						q_value: '请选择您的密保问题',
+						a_value: '',
+						a_title: 'A2:',
+						isShow: false,
+						func: null
+					},
+					{
+						q_title: 'Q3:',
+						q_value: '请选择您的密保问题',
+						a_value: '',
+						a_title: 'A3:',
+						isShow: false,
+						func: null
+					},
+				],
+				answers: [{
+						"ssid": "",
+						"answer": ""
+					},
+					{
+						"ssid": "",
+						"answer": ""
+					},
+					{
+						"ssid": "",
+						"answer": ""
+					}
+				],
+				pass: false,
+				pwd: '',
+				repwd: ''
+			}
+		},
+		onLoad(optins) {
+			// this.get_list()
+		},
+		methods: {
+			choose_list(e, fun_name) {
+				this.list_select[e].isShow = true
+				this.list_select[e].func = this[fun_name]
+			},
+			check_phone() {
+				let that = this
+				let phone = that.phone
+				that.$u.get('/i/security/list?phone=' + phone).then(res => {
+					let list = res.data
+					if (list.length == 0) {
+						uni.showModal({
+							title: '提示',
+							content: '您还未设置过密保',
+						})
+						return
+					}
+					uni.setStorageSync("phone", phone)
+					that.list = list
+					that.show_question = true
+				})
+			},
+			confirm0(e) {
+				this.list_select[0].q_value = this.list[e[0]].question
+				this.list_select[0].ssid = this.list[e[0]].ssid
+			},
+			confirm1(e) {
+				this.list_select[1].q_value = this.list[e[0]].question
+				this.list_select[1].ssid = this.list[e[0]].ssid
+			},
+			confirm2(e) {
+				this.list_select[2].q_value = this.list[e[0]].question
+				this.list_select[2].ssid = this.list[e[0]].ssid
+			},
+			submit() {
+				let that = this
+				let list = that.list_select
+				let answer = that.answers
+				list.map((item, index, arr) => {
+					let ssid = item.ssid
+					let length = item.a_value.length
+					answer[index].ssid = ssid
+					answer[index].answer = item.a_value
+				})
+				let str = ''
+				answer.forEach(item => {
+					str = str + item.ssid
+				})
+				for (let i = 0; i < answer.length; i++) {
+					let item = answer[i]
+					let ssid = item.ssid
+					if (!ssid) {
+						uni.showModal({
+							title: '提示',
+							content: '请选择密保问题',
+						})
+						that.pass = false
+						break;
+					} else {
+						that.pass = true
+					}
+					let reg = new RegExp(item.ssid, "g")
+					let length = str.match(reg).length
+					if (length >= 2) {
+						uni.showModal({
+							title: '提示',
+							content: '请选择不同的密保问题',
+						})
+						that.pass = false
+						break;
+					} else {
+						that.pass = true
+					}
+
+					let value_length = item.answer.length
+					if (value_length < 2) {
+						uni.showModal({
+							title: '提示',
+							content: '未填写问题或问题答案长度小于2个字符',
+						})
+						that.pass = false
+						break;
+					} else {
+						that.pass = true
+					}
+				}
+				if (!that.pass) return
+				let phone = that.phone
+				let param = {
+					answers: answer,
+					phone
+				}
+				that.$u.post('/i/security/check', param).then(res => {
+					//console.log(res)
+					if (res.error == null) {
+						that.show_question = false
+						that.show_pwd = true
+					} else {
+						uni.showModal({
+							title: '提示',
+							content: '密保错误，请确认后重新验证'
+						})
+					}
+
+				})
+			},
+			change_pwd() {
+				let that = this
+				let pwd = that.pwd
+				let repwd = that.repwd
+				if (!!!pwd || !!!repwd) {
+					uni.showModal({
+						title: '提示',
+						content: '请输入密码'
+					})
+					return
+				}
+				if (pwd != repwd) {
+					uni.showModal({
+						title: '提示',
+						content: '两次密码不一致,请确认后重新输入'
+					})
+					return
+				}
+				let answers = that.answers
+				let phone = that.phone
+				//console.log(answers)
+				let params = {
+					pwd,
+					repwd,
+					answers,
+					phone
+				}
+				that.$u.post('/i/security/pwdset', params).then(res => {
+					uni.showToast({
+						title: "密码修改成功",
+						icon: "none",
+						duration: 800,
+						complete(res) {
+							setTimeout(() => {
+								uni.reLaunch({
+									url: "/pages/sub_basic/login/index"
+								})
+							}, 1500)
+						}
+					})
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.setQuestion {
+		margin-top: 30rpx;
+
+		&-container {
+			background-color: #FFFFFF;
+		}
+
+		&-item {
+			margin-bottom: 30rpx;
+		}
+	}
+</style>
diff --git a/pages/sub_basic/login/index.vue b/pages/sub_basic/login/index.vue
index 050f84c..716fc47 100644
--- a/pages/sub_basic/login/index.vue
+++ b/pages/sub_basic/login/index.vue
@@ -291,7 +291,12 @@
 			faceIn() {
 				let face = uni.getStorageSync("face")
 				if (face) {
-
+					uni.showToast({
+						title: "暂不支持面容登录,请使用其他方式登录",
+						duration: 1500,
+						icon: "none",
+						mask: true,
+					})
 				} else {
 					uni.showToast({
 						title: "未开启面容登录,请使用其他方式登录",
diff --git a/pages/sub_index/scanView/index.vue b/pages/sub_index/scanView/index.vue
index dbf9b26..fab08d2 100644
--- a/pages/sub_index/scanView/index.vue
+++ b/pages/sub_index/scanView/index.vue
@@ -23,37 +23,41 @@
 			let userid = uni.getStorageSync("userid")
 			//that.userid = userid
 			let url = option.url
-			if (url.indexOf("?") > 0) {
-				url = url + "&userid=" + userid
-			} else {
-				url = url + "?userid=" + userid
-			}
+			// if (url.indexOf("?") > 0) {
+			// 	url = url + "&userid=" + userid
+			// } else {
+			// 	url = url + "?userid=" + userid
+			// }
 			console.log(url)
 			that.src = url
 		},
+		onBackPress(options) {
+			uni.reLaunch({
+				url: '/pages/sub_tabbar/index'
+			})
+			return true
+		},
 		onReady() {
-			// let userid = uni.getStorageSync("userid")
-			// var pages = getCurrentPages()
-			// var page = pages[pages.length - 1]
-			// var currentWebview = page.$getAppWebview()
-			// var url = currentWebview.children()[0].getURL()
-			// var wx = currentWebview.children()[0]
-			// console.log('=== url ===', url);
-			// wx.addEventListener('loaded', function(e) {
-			// 	console.log('Loaded: ' + wx.getURL());
-			// 	let newUrl = wx.getURL()
-			// 	if (newUrl.indexOf("userid") > -1) {
-			// 		//console.log(1)
-			// 		return false
-			// 	}
-			// 	if (newUrl.indexOf("?") > 0) {
-			// 		newUrl = newUrl + "&userid=" + userid
-			// 	} else {
-			// 		newUrl = newUrl + "?userid=" + userid
-			// 	}
-			// 	//console.log(newUrl)
-			// 	wx.loadURL(newUrl)
-			// }, false);
+			let that = this
+			let userid = uni.getStorageSync("userid")
+			var pages = getCurrentPages()
+			var page = pages[pages.length - 1]
+			var currentWebview = page.$getAppWebview()
+			var url = currentWebview.children()[0].getURL()
+			var wx = currentWebview.children()[0]
+			wx.addEventListener('loaded', function(e) {
+				let newUrl = wx.getURL()
+				if (newUrl.indexOf("userid") > -1) {
+					//console.log(1)
+					return false
+				}
+				if (newUrl.indexOf("?") > 0) {
+					newUrl = newUrl + "&userid=" + userid
+				} else {
+					newUrl = newUrl + "?userid=" + userid
+				}
+				that.src = newUrl
+			}, false);
 		},
 	}
 </script>
diff --git a/pages/sub_medical/appointment.vue b/pages/sub_medical/appointment.vue
index cf7fd6a..a80132d 100644
--- a/pages/sub_medical/appointment.vue
+++ b/pages/sub_medical/appointment.vue
@@ -104,7 +104,7 @@
 						// #endif
 					},
 					fail(ret){
-						that.local = '获取位置失败'
+						that.local = '重新获取位置...'
 						console.log(ret)
 					}
 				})
diff --git a/pages/sub_medical/cashFlow.vue b/pages/sub_medical/cashFlow.vue
index 6f5091b..c1030de 100644
--- a/pages/sub_medical/cashFlow.vue
+++ b/pages/sub_medical/cashFlow.vue
@@ -9,7 +9,7 @@
 		<view v-if="leftOright">
 			<scroll-view scroll-y :enable-back-to-top="true" @scrolltolower="" class="scrollView">
 				<view class="cashFlow-ul">
-					<view class="cashFlow-ul-item" v-for = '(v,i) in unpay_list' :key='i' @click="toPath('/pages/sub_medical/pay?msg=' + JSON.stringify(v)+'&id=unpay')">
+					<view class="cashFlow-ul-item" v-for='(v,i) in unpay_list' :key='i' @click="toPath('/pages/sub_medical/pay?msg=' + JSON.stringify(v)+'&id=unpay')">
 						<view class="cashFlow-ul-item-left">
 							<view class="cashFlow-ul-item-left-top">
 								<u-image src="./images/pay.png" width="80" height="80"></u-image>
@@ -33,7 +33,7 @@
 		<view v-if="!leftOright">
 			<scroll-view scroll-y :enable-back-to-top="true" @scrolltolower="" class="scrollView">
 				<view class="cashFlow-ul">
-					<view class="cashFlow-ul-item" v-for = '(v,i) in payed_list' :key='i' @click="toPath('/pages/sub_medical/pay?msg=' + JSON.stringify(v) +'&id=payed')">
+					<view class="cashFlow-ul-item" v-for='(v,i) in payed_list' :key='i' @click="toPath('/pages/sub_medical/pay?msg=' + JSON.stringify(v) +'&id=payed')">
 						<view class="cashFlow-ul-item-left">
 							<view class="cashFlow-ul-item-left-top">
 								<u-image src="./images/pay.png" width="80" height="80"></u-image>
@@ -47,7 +47,7 @@
 						<view class="cashFlow-ul-item-right">
 							<text>￥{{v.mergingsubtotal}}</text>
 						</view>
-						<view class="cashFlow-ul-item-status" v-if="!v.notifyStatus">通知医院</view>
+						<view class="cashFlow-ul-item-nstatus" v-if="!v.notifyStatus">通知医院</view>
 					</view>
 				</view>
 			</scroll-view>
@@ -60,64 +60,72 @@
 		data() {
 			return {
 				leftOright: true,
-				unpay_list:[],
-				hospitalcode:'',
-				payed_list:[]
+				unpay_list: [],
+				hospitalcode: '',
+				payed_list: []
 			}
 		},
-		onLoad(options){
+		onLoad(options) {
 			let hospitalcode = options.hospitalcode
 			this.hospitalcode = hospitalcode
 			// this.get_unpay_list(hospitalcode)
 		},
 		methods: {
-			get_unpay_list(code){
+			get_unpay_list(code) {
 				let that = this
 				let param = {
-					hospitalcode : code
+					hospitalcode: code
 				}
-				that.$u.post('/medicalapi/unpayed/list',param).then(res=>{
+				that.$u.post('/medicalapi/unpayed/list', param).then(res => {
 					that.unpay_list = res.data
 				})
 			},
-			get_payed_list(code){
+			get_payed_list(code) {
 				let that = this
 				let param = {
-					hospitalcode : code,
-					pageno:1,
-					pagesize:100
+					hospitalcode: code,
+					pageno: 1,
+					pagesize: 100
 				}
-				that.$u.post('/medicalapi/payed/list',param).then(res=>{
+				that.$u.post('/medicalapi/payed/list', param).then(res => {
 					let list = res.data
-					list.forEach(item=>{
+					list.forEach(item => {
 						item.paytime = item.transdate.substr(0, 4) +
-							"-" + item.transdate.substr(4, 2) + "-" + item.transdate.substr(6, 2) + " " + item.transtime.substr(0, 2) + ":" +
-							item.transtime.substr(2, 2) + ":" + item.transtime.substr(4, 2) 
+							"-" + item.transdate.substr(4, 2) + "-" + item.transdate.substr(6, 2) + " " + item.transtime.substr(0, 2) +
+							":" +
+							item.transtime.substr(2, 2) + ":" + item.transtime.substr(4, 2)
 					})
 					that.payed_list = list
 				})
 			},
 			changeTurnoverList(e) {
 				this.leftOright = e
-				if(e){
+				if (e) {
 					this.get_unpay_list(this.hospitalcode)
-				}else{
+				} else {
 					this.get_payed_list(this.hospitalcode)
 				}
 			},
 		},
-		onShow(){
-			this.get_unpay_list(this.hospitalcode)
+		onShow() {
+			let e = this.leftOright
+			if (e) {
+				this.get_unpay_list(this.hospitalcode)
+			} else {
+				this.get_payed_list(this.hospitalcode)
+			}
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
-	.scrollView{
+	.scrollView {
 		height: calc(100vh - 130rpx - 100rpx);
 	}
+
 	.cashFlow {
 		font-family: "PingFang-SC-Medium";
+
 		&-header {
 			width: 80%;
 			display: flex;
@@ -135,18 +143,19 @@
 				border-top: 2rpx solid #F1F1F1;
 				border-bottom: 2rpx solid #F1F1F1;
 			}
+
 			.left {
 				border-top-left-radius: 50rpx;
 				border-bottom-left-radius: 50rpx;
 				border-left: 2rpx solid #F1F1F1;
 			}
-			
+
 			.right {
 				border-top-right-radius: 50rpx;
 				border-bottom-right-radius: 50rpx;
 				border-right: 2rpx solid #F1F1F1;
 			}
-			
+
 			.color {
 				background-color: #3599fb;
 				color: #ffffff;
@@ -154,9 +163,11 @@
 				border: 2rpx solid transparent;
 			}
 		}
-		&-ul{
+
+		&-ul {
 			padding: 0 20rpx;
-			&-item{
+
+			&-item {
 				background-color: #FFFFFF;
 				display: flex;
 				justify-content: space-between;
@@ -165,22 +176,34 @@
 				border-radius: 10rpx;
 				margin-bottom: 30rpx;
 				position: relative;
-				&-status{
+
+				&-status {
 					position: absolute;
 					bottom: 20rpx;
 					right: 20rpx;
 					font-size: 26rpx;
 					color: #18B566;
 				}
-				&-left{
-					display:  flex;
+				
+				&-nstatus{
+					position: absolute;
+					bottom: 20rpx;
+					right: 20rpx;
+					font-size: 26rpx;
+					color: #FF6F6F;
+				}
+
+				&-left {
+					display: flex;
 					flex-direction: column;
 					justify-content: space-between;
 					width: 75%;
-					&-top{
+
+					&-top {
 						display: flex;
 						align-items: center;
-						text{
+
+						text {
 							overflow: hidden;
 							text-overflow: ellipsis;
 							white-space: nowrap;
@@ -189,24 +212,28 @@
 							font-weight: bold;
 						}
 					}
-					&-bottom{
+
+					&-bottom {
 						margin-top: 20rpx;
-						&-bold{
+
+						&-bold {
 							font-size: 32rpx;
 							font-weight: bold;
 						}
-						&-normal{
+
+						&-normal {
 							color: #a1a1a1;
 						}
 					}
 				}
-				&-right{
+
+				&-right {
 					font-size: 40rpx;
 					color: #FF6F6F;
 					font-weight: bold;
 				}
 			}
 		}
-		
+
 	}
 </style>
diff --git a/pages/sub_medical/pay.vue b/pages/sub_medical/pay.vue
index c763a23..5c9ebe5 100644
--- a/pages/sub_medical/pay.vue
+++ b/pages/sub_medical/pay.vue
@@ -11,10 +11,12 @@
 			<u-cell-item title="订单号" :arrow="false" :value="msg.billNo"></u-cell-item>
 			<u-cell-item title="就诊日期" :arrow="false" :value="msg.date"></u-cell-item>
 			<!-- <u-cell-item title="截止日期"  :arrow="false" value="2020/10/28 23:29:29"></u-cell-item> -->
-			<u-cell-item title="交易状态" :arrow="false" :value="msg.status_ok" :value-style="msg.status=='wip'?status_style:vstyle"></u-cell-item>
+			<u-cell-item title="交易状态" :arrow="false" :value="msg.status_ok" :value-style="msg.status=='wip'|| msg.status==undefined?status_style:vstyle"></u-cell-item>
+			<u-cell-item title="退款状态" :arrow="false" :value="msg.refundflag_ok" :value-style="msg.refundflag=='refund'?status_style:vstyle"
+			 v-if="msg.refundflag == 'wip' || msg.refundflag == 'refund'"></u-cell-item>
 		</u-cell-group>
 		<u-button @click="msg.status=='wip'?query():open()" :custom-style="payBtn" v-if="kind =='unpay'">{{msg.status=='wip'?'查询订单状态':'立即支付'}}</u-button>
-		<u-button @click="" :custom-style="payBtn" v-if="kind =='payed'&& msg.notifyStatus == false">通知医院</u-button>
+		<u-button @click="notify_hosiptal" :custom-style="payBtn" v-if="kind =='payed'&& msg.notifyStatus == false">通知医院</u-button>
 		<!-- 支付密码弹框 -->
 		<uni-popup ref="showPassword" class="pwd-wrapper">
 			<view class="uni-tip uni-pwd">
@@ -49,11 +51,11 @@
 				},
 				vstyle: {
 					color: '#FF6F6F',
-					fontSize:'30rpx'
+					fontSize: '30rpx'
 				},
 				status_style: {
 					color: '#18B566',
-					fontSize:'30rpx'
+					fontSize: '30rpx'
 				},
 				payBtn: {
 					backgroundColor: ' #2FA8E1',
@@ -65,7 +67,7 @@
 					marginTop: '50rpx'
 				},
 				msg: {},
-				kind:''
+				kind: ''
 			}
 		},
 		methods: {
@@ -123,12 +125,12 @@
 					let obj = that.msg
 					let date = res.transdate.substr(0, 4) +
 						"-" + res.transdate.substr(4, 2) + "-" + res.transdate.substr(6, 2) + " " + res.transtime.substr(0, 2) + ":" +
-						res.transtime.substr(2, 2) + ":" + res.transtime.substr(4, 2) 
-						setTimeout(()=>{
-							uni.navigateTo({
-								url: `/pages/sub_medical/payResult?status=${status}&msg=${JSON.stringify(obj)}&date=${date}`
-							})
-						},1500)
+						res.transtime.substr(2, 2) + ":" + res.transtime.substr(4, 2)
+					setTimeout(() => {
+						uni.navigateTo({
+							url: `/pages/sub_medical/payResult?status=${status}&msg=${JSON.stringify(obj)}&date=${date}`
+						})
+					}, 1500)
 				})
 			},
 			query() {
@@ -136,31 +138,49 @@
 				let billno = that.msg.billNo
 				that.$u.post('/medicalapi/pay/query/' + billno, {}).then(res => {
 					let status = res.status
-					if(status == 'wip'){
+					if (status == 'wip') {
 						uni.showToast({
-							icon:'none',
-							title:'订单正在支付中，请稍等...'
+							icon: 'none',
+							title: '订单正在支付中，请稍等...'
 						})
-					}else{
+					} else {
 						let status = res.status
 						let obj = that.msg
 						let date = res.transdate.substr(0, 4) +
 							"-" + res.transdate.substr(4, 2) + "-" + res.transdate.substr(6, 2) + " " + res.transtime.substr(0, 2) + ":" +
-							res.transtime.substr(2, 2) + ":" + res.transtime.substr(4, 2) 
-							setTimeout(()=>{
-								uni.navigateTo({
-									url: `/pages/sub_medical/payResult?status=${status}&msg=${JSON.stringify(obj)}&date=${date}`
-								})
-							},1500)
+							res.transtime.substr(2, 2) + ":" + res.transtime.substr(4, 2)
+						setTimeout(() => {
+							uni.navigateTo({
+								url: `/pages/sub_medical/payResult?status=${status}&msg=${JSON.stringify(obj)}&date=${date}`
+							})
+						}, 1500)
 					}
 				})
+			},
+			notify_hosiptal() {
+				let that = this
+				let billno = that.msg.billno
+				that.$u.post('/medicalapi/pay/notify/' + billno).then(res => {
+					uni.showToast({
+						title: res.msg,
+						icon: 'none',
+						duration:800,
+						success(ret) {
+							setTimeout(() => {
+								uni.navigateBack({
+									delta: 1
+								})
+							}, 1500)
+						}
+					})
+				})
 			}
 		},
 		onLoad(options) {
 			let msg = JSON.parse(options.msg)
 			let id = options.id
 			this.kind = id
-			if(id == 'unpay'){
+			if (id == 'unpay') {
 				msg.date = msg.medicalDate.substr(0, 4) + '-' + msg.medicalDate.substr(4, 2) + '-' + msg.medicalDate.substr(6, 2) +
 					' ' + msg.medicalDate.substr(8, 2) + ':' + msg.medicalDate.substr(10, 2) + ':' + msg.medicalDate.substr(12, 2)
 				switch (msg.status) {
@@ -172,14 +192,20 @@
 						break
 				}
 				this.msg = msg
-			}else if(id == 'payed'){
+			} else if (id == 'payed') {
 				msg.date = msg.medicaldate.substr(0, 4) + '-' + msg.medicaldate.substr(4, 2) + '-' + msg.medicaldate.substr(6, 2) +
 					' ' + msg.medicaldate.substr(8, 2) + ':' + msg.medicaldate.substr(10, 2) + ':' + msg.medicaldate.substr(12, 2)
-					msg.billNo = msg.billno
-					msg.mergingSubtotal = msg.mergingsubtotal
-					msg.mergingName = msg.mergingname
-					msg.status_ok = '已完成'
-					msg.hospitalName = msg.hospitalname
+				msg.billNo = msg.billno
+				msg.mergingSubtotal = msg.mergingsubtotal
+				msg.mergingName = msg.mergingname
+				msg.status_ok = '已完成'
+				switch (msg.refundflag) {
+					case 'wip':
+						msg.refundflag_ok = '退款处理中...';
+						break
+					case 'refund':
+						msg.refundflag_ok = '已退款';
+				}
 				this.msg = msg
 			}
 		}
diff --git a/pages/sub_medical/payResult.vue b/pages/sub_medical/payResult.vue
index e36fd54..08d8185 100644
--- a/pages/sub_medical/payResult.vue
+++ b/pages/sub_medical/payResult.vue
@@ -8,7 +8,11 @@
 			<icon type="warn" size="60"></icon>
 			<text class="payResult-status-text">支付失败</text>
 		</view>
-		<view class="payResult-money" v-if="msg.billstatus ==1"><text>-￥{{msg.mergingSubtotal?msg.mergingSubtotal:'0.00'}}</text></view>
+		<view class="payResult-status" v-if="msg.billstatus ==2">
+			<icon type="waiting" size="60"></icon>
+			<text class="payResult-status-text">交易处理中</text>
+		</view>
+		<view class="payResult-money" v-if="msg.billstatus ==1"><text>￥{{msg.mergingSubtotal?msg.mergingSubtotal:'0.00'}}</text></view>
 		<view class="payResult-msg">
 			<u-cell-group>
 				<u-cell-item title="医院名称" :value="msg.hospitalName?msg.hospitalName:'未知医院'" :arrow="false" bg-color="#FFFFFF"></u-cell-item>
diff --git a/pages/sub_mine/accountSafe/index.vue b/pages/sub_mine/accountSafe/index.vue
index afec07c..8a536bd 100644
--- a/pages/sub_mine/accountSafe/index.vue
+++ b/pages/sub_mine/accountSafe/index.vue
@@ -26,6 +26,7 @@
 					{name:"支付(指纹)",icon:"finger",path:"/pages/sub_mine/otherPay/index"},
 					{name:"挂失",icon:"gs",path:"/pages/sub_mine/reportheLoss/index"},
 					{name:"设置邮箱",icon:"email",path:"/pages/sub_mine/bindEmail/index"},
+					{name:"设置密保",icon:"mibao",path:"/pages/sub_mine/question/index"},
 				]
 			}
 		},
diff --git a/pages/sub_mine/agreement/index.vue b/pages/sub_mine/agreement/index.vue
index dce0c57..7952c6a 100644
--- a/pages/sub_mine/agreement/index.vue
+++ b/pages/sub_mine/agreement/index.vue
@@ -59,7 +59,7 @@
 			}
 		},
 		onLoad() {
-			this.getAgreement()
+			//this.getAgreement()
 		}
 	}
 </script>
diff --git a/pages/sub_mine/bindEmail/index.vue b/pages/sub_mine/bindEmail/index.vue
index 4fcbd70..3bc50fe 100644
--- a/pages/sub_mine/bindEmail/index.vue
+++ b/pages/sub_mine/bindEmail/index.vue
@@ -76,6 +76,7 @@
 						icon: "none",
 						duration: 800,
 						complete(res) {
+							uni.setStorageSync('email', email)
 							setTimeout(() => {
 								uni.navigateBack({
 									delta: 1
diff --git a/pages/sub_mine/lock/index.vue b/pages/sub_mine/lock/index.vue
index a2345f5..547e5b0 100644
--- a/pages/sub_mine/lock/index.vue
+++ b/pages/sub_mine/lock/index.vue
@@ -107,10 +107,18 @@
 				if (pwd) {
 					if (pwd.join('') === data.join('')) {
 						let login = uni.getStorageSync("login")
-						if(login){
+						if(login == 1){
 							that.text = '手势正确,即将进入首页'
 							uni.removeStorageSync("login")
 							that.login()
+						}else if(login ==2){
+							that.text = '手势正确'
+							uni.removeStorageSync("login")
+							setTimeout(() => {
+								uni.switchTab({
+									url: "/pages/sub_tabbar/index"
+								})
+							}, 1500)
 						}else{
 							that.text = '手势正确,关闭手势成功'
 							uni.removeStorageSync("hands")
diff --git a/pages/sub_mine/personalMsg/index.vue b/pages/sub_mine/personalMsg/index.vue
index 36960ea..8d6d620 100644
--- a/pages/sub_mine/personalMsg/index.vue
+++ b/pages/sub_mine/personalMsg/index.vue
@@ -7,12 +7,7 @@
 			<u-cell-item title="市民卡号" :arrow="false" :value="cardno"></u-cell-item>
 			<u-cell-item title="身份证号" :arrow="false" :value="idno"></u-cell-item>
 			<u-cell-item title="身份状态" :arrow="false" :value="signed"></u-cell-item>
-			<!-- <u-field v-model="name" :disabled="true" label="姓名" :field-style="fieldStyle" clear-size="40" input-align="right"></u-field>
-			<u-field v-model="tel" :disabled="true" label="手机号" :field-style="fieldStyle" clear-size="40" input-align="right"></u-field>
-			<u-field v-model="bankcardno" :disabled="true" label="银行卡号" :field-style="fieldStyle" clear-size="40" input-align="right"></u-field>
-			<u-field v-model="cardno" :disabled="true" label="市民卡号" :field-style="fieldStyle" clear-size="40" input-align="right"></u-field>
-			<u-field v-model="idno" :disabled="true" label="身份证号" :field-style="fieldStyle" clear-size="40" input-align="right"></u-field>
-			<u-field v-model="signed" :disabled="true" label="身份状态" :field-style="fieldStyle" clear-size="40" input-align="right"></u-field> -->
+			<u-cell-item title="邮箱号" :arrow="false" :value="email"></u-cell-item>
 		</view>
 	</view>
 </template>
@@ -30,7 +25,8 @@
 				cardno:'',
 				idno:'',
 				signed:'',
-				tel:''
+				tel:'',
+				email:''
 			}
 		},
 		methods: {
@@ -39,11 +35,12 @@
 		onLoad() {
 			let that = this
 			that.name = uni.getStorageSync('name')?uni.getStorageSync('name'):'佚名'
-			that.bankcardno = uni.getStorageSync('bankcardno')?uni.getStorageSync('bankcardno'):'暂无银行卡信息'
-			that.cardno = uni.getStorageSync('cardno')?uni.getStorageSync('cardno').substr(0,2) + '****' + uni.getStorageSync('cardno').substr(6,2):'暂无市民卡信息'
-			that.idno = uni.getStorageSync('idno')?uni.getStorageSync('idno'):'暂无身份证信息'
-			that.signed = uni.getStorageSync('signed') == 'yes' ? '已绑定签约':'未绑定'
-			that.tel = uni.getStorageSync('phoneX') ? uni.getStorageSync('phoneX') : '暂无手机号'
+			that.bankcardno = uni.getStorageSync('bankcardno')?uni.getStorageSync('bankcardno'):'无银行卡信息'
+			that.cardno = uni.getStorageSync('cardno')?uni.getStorageSync('cardno').substr(0,2) + '****' + uni.getStorageSync('cardno').substr(6,2):'无市民卡信息'
+			that.idno = uni.getStorageSync('idno')?uni.getStorageSync('idno'):'无身份证信息'
+			that.signed = uni.getStorageSync('signed') == 'yes' ? '已绑定签约':'未绑定签约'
+			that.tel = uni.getStorageSync('phoneX') ? uni.getStorageSync('phoneX') : '无手机号'
+			that.email = uni.getStorageSync('email') ? uni.getStorageSync('email') : '未绑定邮箱'
 		}
 	}
 </script>
diff --git a/pages/sub_mine/question/index.vue b/pages/sub_mine/question/index.vue
new file mode 100644
index 0000000..8fd7082
--- /dev/null
+++ b/pages/sub_mine/question/index.vue
@@ -0,0 +1,63 @@
+<template>
+	<view class="question">
+		<u-cell-group>
+			<u-cell-item title="开启\删除密保" :arrow="false">
+				<u-icon name="mibao" custom-prefix="custom-icon" size="32" slot="icon"></u-icon>
+				<u-switch slot="right-icon" v-model="question" @change="open"></u-switch>
+			</u-cell-item>
+		</u-cell-group>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				question: false
+			}
+		},
+		methods: {
+			open(e) {
+				if (e) {
+					uni.navigateTo({
+						url: '/pages/sub_mine/setQuestion/index'
+					})
+				} else {
+					uni.showModal({
+						title: "提示",
+						content: "该操作将删除您设置的密保问题，是否继续？",
+						success: (res) => {
+							if (res.confirm) {
+								this.delate_question()
+							} else if (res.cancel) {
+								this.question = true
+							}
+						}
+					})
+				}
+			},
+			delate_question() {
+				let that = this
+				that.$u.post('/v1/security/delete').then(res => {
+					uni.showToast({
+						title: '删除成功',
+						icon: 'none'
+					})
+				})
+			},
+			get_status() {
+				let that = this
+				that.$u.get('/i/security/list?phone=').then(res => {
+					let list = res.data
+					list.length ? that.question = true : that.question = false
+				})
+			}
+		},
+		onShow() {
+			this.get_status()
+		},
+	}
+</script>
+
+<style>
+</style>
diff --git a/pages/sub_mine/setQuestion/index.vue b/pages/sub_mine/setQuestion/index.vue
new file mode 100644
index 0000000..c746443
--- /dev/null
+++ b/pages/sub_mine/setQuestion/index.vue
@@ -0,0 +1,189 @@
+<template>
+	<view class="setQuestion">
+		<view class="setQuestion-container">
+			<view class="setQuestion-item" v-for="(v,i) in list_select" :key='i'>
+				<u-field :disabled="true" :label="v.q_title" :field-style="field_style" v-model="v.q_value" input-align='right'
+				 @click="choose_list(i,'confirm'+i)"></u-field>
+				<u-field :label="v.a_title" :field-style="field_style" v-model="v.a_value" input-align='right' placeholder="请输入您的答案"
+				 maxlength="20"></u-field>
+				<u-picker mode="selector" v-model="v.isShow" :default-selector="[i]" :range="list" range-key="question" @confirm="v.func"></u-picker>
+			</view>
+		</view>
+		<u-button @click="submit" :custom-style="submit_btn">保存密保</u-button>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				field_style: {
+					'font-size': '30rpx',
+					'color': '#6a6a6a'
+				},
+				submit_btn: {
+					width: '600rpx',
+					backgroundColor: '#2FA8E1',
+					color: '#FFFFFF',
+					fontFamily: "PingFang-SC-Medium",
+					fontSize: '30rpx',
+					marginTop: '100rpx',
+					padding: '50rpx 0'
+				},
+				show: false,
+				list: [],
+				list_select: [{
+						q_title: 'Q1:',
+						q_value: '请选择您的密保问题',
+						a_value: '',
+						a_title: 'A1:',
+						isShow: false,
+						func: null
+					},
+					{
+						q_title: 'Q2:',
+						q_value: '请选择您的密保问题',
+						a_value: '',
+						a_title: 'A2:',
+						isShow: false,
+						func: null
+					},
+					{
+						q_title: 'Q3:',
+						q_value: '请选择您的密保问题',
+						a_value: '',
+						a_title: 'A3:',
+						isShow: false,
+						func: null
+					},
+				],
+				answers: [{
+						"ssid": "",
+						"answer": ""
+					},
+					{
+						"ssid": "",
+						"answer": ""
+					},
+					{
+						"ssid": "",
+						"answer": ""
+					}
+				],
+				pass: false
+			}
+		},
+		onLoad(optins) {
+			this.get_list()
+		},
+		methods: {
+			choose_list(e, fun_name) {
+				this.list_select[e].isShow = true
+				this.list_select[e].func = this[fun_name]
+			},
+			get_list() {
+				let that = this
+				that.$u.get('/v1/security/all').then(res => {
+					let list = res.data
+					that.list = list
+				})
+			},
+			confirm0(e) {
+				this.list_select[0].q_value = this.list[e[0]].question
+				this.list_select[0].ssid = this.list[e[0]].ssid
+			},
+			confirm1(e) {
+				this.list_select[1].q_value = this.list[e[0]].question
+				this.list_select[1].ssid = this.list[e[0]].ssid
+			},
+			confirm2(e) {
+				this.list_select[2].q_value = this.list[e[0]].question
+				this.list_select[2].ssid = this.list[e[0]].ssid
+			},
+			submit() {
+				let that = this
+				let list = that.list_select
+				let answer = that.answers
+				list.map((item, index, arr) => {
+					let ssid = item.ssid
+					let length = item.a_value.length
+					answer[index].ssid = ssid
+					answer[index].answer = item.a_value
+				})
+				let str = ''
+				answer.forEach(item => {
+					str = str + item.ssid
+				})
+				for (let i = 0; i < answer.length; i++) {
+					let item = answer[i]
+					let ssid = item.ssid
+					if (!ssid) {
+						uni.showModal({
+							title: '提示',
+							content: '请选择密保问题',
+						})
+						that.pass = false
+						break;
+					} else {
+						that.pass = true
+					}
+					let reg = new RegExp(item.ssid, "g")
+					let length = str.match(reg).length
+					if (length >= 2) {
+						uni.showModal({
+							title: '提示',
+							content: '请选择不同的密保问题',
+						})
+						that.pass = false
+						break;
+					} else {
+						that.pass = true
+					}
+
+					let value_length = item.answer.length
+					if (value_length < 2) {
+						uni.showModal({
+							title: '提示',
+							content: '未填写问题或问题答案长度小于2个字符',
+						})
+						that.pass = false
+						break;
+					} else {
+						that.pass = true
+					}
+				}
+				if (!that.pass) return
+				let param = {
+					answers: answer
+				}
+				that.$u.post('/v1/security/save', param).then(res => {
+					uni.showToast({
+						title: "保存成功",
+						icon: 'none',
+						complete(res) {
+							setTimeout(() => {
+								uni.navigateBack({
+									delta: 1
+								})
+							}, 1500)
+						}
+					})
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.setQuestion {
+		margin-top: 30rpx;
+
+		&-container {
+			background-color: #FFFFFF;
+		}
+
+		&-item {
+			margin-bottom: 30rpx;
+		}
+	}
+</style>
diff --git a/pages/sub_tabbar/index.vue b/pages/sub_tabbar/index.vue
index 0851a76..7264790 100644
--- a/pages/sub_tabbar/index.vue
+++ b/pages/sub_tabbar/index.vue
@@ -14,7 +14,7 @@
 				<view class="img-box" @click="toPath('/pages/sub_index/qrcode/index')">
 					<u-image src="/static/images/index/money.png" width="40rpx" height="40rpx" mode="aspectFit"></u-image>
 				</view>
-				<view class="img-box" @click="toPath('/pages/sub_medical/appointment')">
+				<view class="img-box" @click="toPath('')">
 					<u-image src="/static/images/index/square.png" width="40rpx" height="40rpx" mode="aspectFit"></u-image>
 				</view>
 			</view>
@@ -57,7 +57,7 @@
 						<text class="wrap-active-con-item-desc-desc">签到即可领积分</text>
 					</view>
 				</view>
-				<view class="wrap-active-con-item" @click="toUrl('/pages/sub_index/activeDetails/index?id='+ activity.articleno + '&type=' + activity.code)">
+				<view class="wrap-active-con-item" @click="activity.length == 0?'':toUrl('/pages/sub_index/activeDetails/index?id='+ activity.articleno + '&type=' + activity.code)">
 					<u-image src="/static/images/index/smkhd.png" width="70rpx" height="70rpx"></u-image>
 					<view class="wrap-active-con-item-desc">
 						<text class="wrap-active-con-item-desc-title">{{activity.title?activity.title:''}}</text>
@@ -105,6 +105,7 @@
 </template>
 
 <script>
+	const app = getApp()
 	export default {
 		data() {
 			return {
@@ -141,8 +142,26 @@
 				}, ]
 			}
 		},
-		onShow() {},
 		methods: {
+			get_prompt() {
+				//提示更新或通告
+				let vername = app.globalData.vername
+				let verno = app.globalData.verno
+				let params = {
+					vername,
+					verno
+				}
+				this.$u.get('/i/app/prompt', params).then(res => {
+					let is_have_content = res.prompt
+					if (!!is_have_content) {
+						uni.showModal({
+							title: '提示',
+							content: is_have_content
+						})
+					}
+
+				})
+			},
 			search(e) {
 				uni.showToast({
 					icon: "none",
@@ -175,46 +194,14 @@
 								}
 								//console.log(param.url)
 								that.$u.get('/v1/qrcode/auth', param).then(ret => {
-									//console.log(ret.data.url)
+									// console.log(ret.data)
 									if (ret.data.permit) {
 										if (ret.data.action == 'water') {
-											// setTimeout(() => {
-											// 	uni.navigateTo({
-											// 		url: "/pages/sub_index/scanView/index?url=" + ret.data.url
-											// 	})
-											// }, 1500)
-											let userid = uni.getStorageSync("userid")
-											let url = ret.data.url
-											if (url.indexOf("?") > 0) {
-												url = url + "&userid=" + userid
-											} else {
-												url = url + "?userid=" + userid
-											}
-											let wv = plus.webview.create(url, 'webview_water', {
-												backButtonAutoControl: 'close',
-												popGesture: 'close'
-											})
 											setTimeout(() => {
-												wv.show()
+												uni.navigateTo({
+													url: "/pages/sub_index/scanView/index?url=" + ret.data.url
+												})
 											}, 1500)
-											wv.drag({
-												direction: 'right',
-												moveMode: 'followFinger'
-											}, {
-												view: 'webview_water',
-												moveMode: 'follow'
-											}, function(e) {
-												wv.close()
-											});
-											wv.drag({
-												direction: 'left',
-												moveMode: 'followFinger'
-											}, {
-												view: 'webview_water',
-												moveMode: 'follow'
-											}, function(e) {
-												wv.close()
-											});
 										} else if (ret.data.action == 'dlsmkh5') {
 											let token = uni.getStorageSync('token')
 											let wv = plus.webview.create(ret.data.url, 'webview_pay', {
@@ -241,75 +228,6 @@
 				// #endif
 
 			},
-
-			// scan() {
-			// 	let that = this
-			// 	// #ifndef H5
-			// 	// 只允许通过相机扫码
-			// 	uni.scanCode({
-			// 		success: function(res) {
-			// 			let url = res.result
-			// 			console.log(url)
-			// 			uni.showToast({
-			// 				title: "扫描成功",
-			// 				icon: "none",
-			// 				duration: 800,
-			// 				complete() {
-			// 					let param = {
-			// 						url: url
-			// 					}
-			// 					console.log(param.url)
-			// 					that.$u.get('/v1/qrcode/auth', param).then(ret => {
-			// 						console.log(ret.data.url)
-			// 						if (ret.data.permit) {
-			// 							if (ret.data.action == 'water') {
-			// 								setTimeout(() => {
-			// 									uni.navigateTo({
-			// 										url: "/pages/sub_index/scanView/index?url=" + ret.data.url
-			// 									})
-			// 								}, 1500)
-			// 							} else if (ret.data.action == 'dlsmkh5') {
-			// 								// #ifdef APP-PLUS
-			// 									let token = uni.getStorageSync('token')
-			// 									let wv = plus.webview.create(ret.data.url, 'webview_pay', {
-			// 										backButtonAutoControl:'close',
-			// 										additionalHttpHeaders: {
-			// 											Authorization: 'Bearer ' + token
-			// 										}
-			// 									})
-			// 									setTimeout(() => {
-			// 										wv.show()
-			// 									}, 1500)
-			// 								// #endif
-			// 								// #ifndef APP-PLUS
-			// 								uni.showToast({
-			// 									icon: "none",
-			// 									title: "只支持app端",
-			// 									duration: 1500
-			// 								})
-			// 								// #endif
-			// 							}
-			// 						} else {
-			// 							uni.showToast({
-			// 								icon: "none",
-			// 								title: "暂不支持此二维码",
-			// 								duration: 1500
-			// 							})
-			// 						}
-			// 					})
-			// 				}
-			// 			})
-			// 		}
-			// 	});
-			// 	// #endif
-			// 	// #ifdef H5
-			// 	uni.showToast({
-			// 		icon: "none",
-			// 		title: "H5不支持此功能",
-			// 		duration: 1500
-			// 	})
-			// 	// #endif
-			// },
 			getActivityList() {
 				let that = this
 				let param = [{
@@ -356,6 +274,10 @@
 		},
 		onLoad() {
 			this.getBannarList()
+			setTimeout(() => {
+				this.get_prompt()
+			}, 5 * 1000)
+			this.getActivityList()
 			// #ifdef APP-PLUS
 			//引入插件
 			const KJJPush = uni.requireNativePlugin('KJ-JPush');
