更改扫码api、添加邮箱绑定功能
diff --git a/App.vue b/App.vue
index 47af5bb..fa9f0db 100644
--- a/App.vue
+++ b/App.vue
@@ -5,6 +5,8 @@
 		},
 		onLaunch() {
 			let that = this
+			
+			//获取平台信息
 			uni.getSystemInfo({
 				success(res) {
 					uni.setStorageSync('platform', res.platform)
@@ -18,7 +20,7 @@
 			let version = v + '(' + c + ')'
 			that.globalData.version = version
 
-			//获取uuid
+			//获取设备uuid
 			plus.device.getInfo({
 				success(res) {
 					let uuid = res.uuid
diff --git a/manifest.json b/manifest.json
index 6672599..632e48e 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,215 +1,262 @@
 {
-    "name" : "大理市民卡",
-    "appid" : "__UNI__6DDB720",
-    "description" : "大理市民服务app",
-    "versionName" : "2.1.0",
-    "versionCode" : 5,
-    "transformPx" : false,
-    "app-plus" : {
-        // APP-VUE分包,可提APP升启动速度,2.7.12开始支持,兼容微信小程序分包方案,默认关闭
-        "compatible" : {
-            "ignoreVersion" : true //true为忽略版本检查框
-        },
-        "optimization" : {
-            "subPackages" : true
-        },
-        "safearea" : {
-            "bottom" : {
-                "offset" : "none"
-            }
-        },
-        "splashscreen" : {
-            "alwaysShowBeforeRender" : true,
-            "waiting" : true,
-            "autoclose" : true,
-            "delay" : 0
-        },
-        "usingComponents" : true,
-        "nvueCompiler" : "uni-app",
-        "compilerVersion" : 3,
-        "modules" : {
-            "FaceID" : {},
-            "Fingerprint" : {},
-            "Maps" : {},
-            "Geolocation" : {}
-        },
-        "distribute" : {
-            "android" : {
-                "permissions" : [
-                    "<uses-feature android:name=\"android.hardware.camera\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
-                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
-                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.USE_FINGERPRINT\"/>",
-                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-                ],
-                "permissionExternalStorage" : {
-                    "request" : "none",
-                    "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
-                },
-                "permissionPhoneState" : {
-                    "request" : "none",
-                    "prompt" : "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
-                },
-                "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ]
-            },
-            "ios" : {},
-            "sdkConfigs" : {
-                "ad" : {},
-                "maps" : {
-                    "amap" : {
-                        "appkey_ios" : "301567cad1afe899587917e803441d60",
-                        "appkey_android" : "6e97c7069def9d8f0f3aa3d421ce196b"
-                    }
-                },
-                "geolocation" : {
-                    "amap" : {
-                        "__platform__" : [ "ios", "android" ],
-                        "appkey_ios" : "301567cad1afe899587917e803441d60",
-                        "appkey_android" : "6e97c7069def9d8f0f3aa3d421ce196b"
-                    }
-                }
-            },
-            "icons" : {
-                "android" : {
-                    "hdpi" : "unpackage/res/icons/72x72.png",
-                    "xhdpi" : "unpackage/res/icons/96x96.png",
-                    "xxhdpi" : "unpackage/res/icons/144x144.png",
-                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
-                },
-                "ios" : {
-                    "appstore" : "unpackage/res/icons/1024x1024.png",
-                    "ipad" : {
-                        "app" : "unpackage/res/icons/76x76.png",
-                        "app@2x" : "unpackage/res/icons/152x152.png",
-                        "notification" : "unpackage/res/icons/20x20.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "proapp@2x" : "unpackage/res/icons/167x167.png",
-                        "settings" : "unpackage/res/icons/29x29.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "spotlight" : "unpackage/res/icons/40x40.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
-                    },
-                    "iphone" : {
-                        "app@2x" : "unpackage/res/icons/120x120.png",
-                        "app@3x" : "unpackage/res/icons/180x180.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "notification@3x" : "unpackage/res/icons/60x60.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "settings@3x" : "unpackage/res/icons/87x87.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
-                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
-                    }
-                }
-            },
-            "splashscreen" : {
-                "androidStyle" : "default"
-            }
-        },
-        "nativePlugins" : {
-            "KJ-JPush" : {
-                "ios_appkey" : "d644d997f2cab0551ff704a3",
-                "android_channel" : "huawei",
-                "android_appkey" : "d644d997f2cab0551ff704a3",
-                "ios_channel" : "appstore",
-                "__plugin_info__" : {
-                    "name" : "【离线包、源码优惠出售】极光推送(ios、andorid)",
-                    "description" : "【不维护试用合适再购买3.33块】离线包源码优惠价66块,购买源码加QQ:543610866",
-                    "platforms" : "Android,iOS",
-                    "url" : "https://ext.dcloud.net.cn/plugin?id=1009",
-                    "android_package_name" : "com.dalicitycard.app",
-                    "ios_bundle_id" : "com.dalicitycard.app",
-                    "isCloud" : true,
-                    "bought" : 1,
-                    "pid" : "1009",
-                    "parameters" : {
-                        "ios_appkey" : {
-                            "des" : "发布ios时,必填,填写极光推送的APPKEY",
-                            "key" : "JPUSH_APPKEY",
-                            "value" : "${ios_appkey}"
-                        },
-                        "android_channel" : {
-                            "des" : "发布android时,必填,填写发布渠道,如不知道,填写:huawei",
-                            "key" : "JPUSH_CHANNEL",
-                            "value" : "${android_channel}"
-                        },
-                        "android_appkey" : {
-                            "des" : "发布android时,必填,填写极光推送的APPKEY",
-                            "key" : "JPUSH_APPKEY",
-                            "value" : "${android_appkey}"
-                        },
-                        "ios_channel" : {
-                            "des" : "发布ios时,必填,填写发布渠道,如不知道,填写:appstore",
-                            "key" : "JPUSH_CHANNEL",
-                            "value" : "${ios_channel}"
-                        }
-                    }
-                }
-            }
-        }
-    },
-    "quickapp" : {},
-    "mp-weixin" : {
-        "appid" : "wxc458a08d7fb5b4d3",
-        "setting" : {
-            "urlCheck" : true,
-            "es6" : false,
-            "minified" : true,
-            "postcss" : true
-        },
-        "optimization" : {
-            "subPackages" : true
-        },
-        "usingComponents" : true,
-        "permission" : {
-            "scope.userLocation" : {
-                "desc" : "你的位置信息将用于小程序位置接口的效果展示"
-            }
-        }
-    },
-    "mp-alipay" : {
-        "usingComponents" : true,
-        "component2" : true
-    },
-    "mp-baidu" : {
-        "usingComponents" : true,
-        "appid" : ""
-    },
-    "mp-toutiao" : {
-        "usingComponents" : true
-    },
-    "h5" : {
-        "template" : "template.h5.html",
-        "router" : {
-            "mode" : "hash",
-            "base" : ""
-        },
-        "optimization" : {
-            "treeShaking" : {
-                "enable" : true
-            }
-        },
-        "title" : "uView UI"
-    },
-    "channel_list" : [
-        {
-            "id" : "baidu",
-            "name" : "百度应用市场"
-        }
-    ]
+	"name": "大理市民卡",
+	"appid": "__UNI__6DDB720",
+	"description": "大理市民服务app",
+	"versionName": "2.1.0",
+	"versionCode": 7,
+	"transformPx": false,
+	"app-plus": {
+		// APP-VUE分包,可提APP升启动速度,2.7.12开始支持,兼容微信小程序分包方案,默认关闭
+		"compatible": {
+			"ignoreVersion": true //true为忽略版本检查框
+		},
+		"optimization": {
+			"subPackages": true
+		},
+		"safearea": {
+			"bottom": {
+				"offset": "none"
+			}
+		},
+		"splashscreen": {
+			"alwaysShowBeforeRender": true,
+			"waiting": true,
+			"autoclose": true,
+			"delay": 0
+		},
+		"usingComponents": true,
+		"nvueCompiler": "uni-app",
+		"compilerVersion": 3,
+		"modules": {
+			"FaceID": {},
+			"Fingerprint": {},
+			"Maps": {},
+			"Geolocation": {}
+		},
+		"distribute": {
+			"android": {
+				"permissions": [
+					"<uses-feature android:name=\"android.hardware.camera\"/>",
+					"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+					"<uses-permission android:name=\"android.permission.CAMERA\"/>",
+					"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+					"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+					"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.USE_FINGERPRINT\"/>",
+					"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+					"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+				],
+				"permissionExternalStorage": {
+					"request": "none",
+					"prompt": "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
+				},
+				"permissionPhoneState": {
+					"request": "none",
+					"prompt": "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
+				},
+				"abiFilters": ["armeabi-v7a", "arm64-v8a"]
+			},
+			"ios": {
+				"privacyDescription": {
+					"NSCameraUsageDescription": "使用扫一扫识别二维码需要访问相机权限",
+					"NSPhotoLibraryUsageDescription": "使用app特制功能需要访问相机权限"
+				}
+			},
+			"sdkConfigs": {
+				"ad": {},
+				"maps": {
+					"amap": {
+						"appkey_ios": "301567cad1afe899587917e803441d60",
+						"appkey_android": "6e97c7069def9d8f0f3aa3d421ce196b"
+					}
+				},
+				"geolocation": {
+					"amap": {
+						"__platform__": ["ios", "android"],
+						"appkey_ios": "301567cad1afe899587917e803441d60",
+						"appkey_android": "6e97c7069def9d8f0f3aa3d421ce196b"
+					}
+				}
+			},
+			"icons": {
+				"android": {
+					"hdpi": "unpackage/res/icons/72x72.png",
+					"xhdpi": "unpackage/res/icons/96x96.png",
+					"xxhdpi": "unpackage/res/icons/144x144.png",
+					"xxxhdpi": "unpackage/res/icons/192x192.png"
+				},
+				"ios": {
+					"appstore": "unpackage/res/icons/1024x1024.png",
+					"ipad": {
+						"app": "unpackage/res/icons/76x76.png",
+						"app@2x": "unpackage/res/icons/152x152.png",
+						"notification": "unpackage/res/icons/20x20.png",
+						"notification@2x": "unpackage/res/icons/40x40.png",
+						"proapp@2x": "unpackage/res/icons/167x167.png",
+						"settings": "unpackage/res/icons/29x29.png",
+						"settings@2x": "unpackage/res/icons/58x58.png",
+						"spotlight": "unpackage/res/icons/40x40.png",
+						"spotlight@2x": "unpackage/res/icons/80x80.png"
+					},
+					"iphone": {
+						"app@2x": "unpackage/res/icons/120x120.png",
+						"app@3x": "unpackage/res/icons/180x180.png",
+						"notification@2x": "unpackage/res/icons/40x40.png",
+						"notification@3x": "unpackage/res/icons/60x60.png",
+						"settings@2x": "unpackage/res/icons/58x58.png",
+						"settings@3x": "unpackage/res/icons/87x87.png",
+						"spotlight@2x": "unpackage/res/icons/80x80.png",
+						"spotlight@3x": "unpackage/res/icons/120x120.png"
+					}
+				}
+			},
+			"splashscreen": {
+				"androidStyle": "default"
+			}
+		},
+		"nativePlugins": {
+			"KJ-JPush": {
+				"ios_appkey": "d644d997f2cab0551ff704a3",
+				"android_channel": "huawei",
+				"android_appkey": "d644d997f2cab0551ff704a3",
+				"ios_channel": "appstore",
+				"__plugin_info__": {
+					"name": "【离线包、源码优惠出售】极光推送(ios、andorid)",
+					"description": "【不维护试用合适再购买3.33块】离线包源码优惠价66块,购买源码加QQ:543610866",
+					"platforms": "Android,iOS",
+					"url": "https://ext.dcloud.net.cn/plugin?id=1009",
+					"android_package_name": "com.dalicitycard.app",
+					"ios_bundle_id": "com.dalicitycard.app",
+					"isCloud": true,
+					"bought": 1,
+					"pid": "1009",
+					"parameters": {
+						"ios_appkey": {
+							"des": "发布ios时,必填,填写极光推送的APPKEY",
+							"key": "JPUSH_APPKEY",
+							"value": "${ios_appkey}"
+						},
+						"android_channel": {
+							"des": "发布android时,必填,填写发布渠道,如不知道,填写:huawei",
+							"key": "JPUSH_CHANNEL",
+							"value": "${android_channel}"
+						},
+						"android_appkey": {
+							"des": "发布android时,必填,填写极光推送的APPKEY",
+							"key": "JPUSH_APPKEY",
+							"value": "${android_appkey}"
+						},
+						"ios_channel": {
+							"des": "发布ios时,必填,填写发布渠道,如不知道,填写:appstore",
+							"key": "JPUSH_CHANNEL",
+							"value": "${ios_channel}"
+						}
+					}
+				}
+			},
+			"Mpaas-Scan": {
+				"AppId": "ONEX1D49B6A241152",
+				"WorkspaceId": "default",
+				"License": "zvI8Ix1QYGLcZWTu9pfuwRxhPIERACTAjd2rQ66ky3zCCWLCCZDiISir89uVn4y+OGn0jcPIX/mMsZ8NIZXjfsgvB/m5MzVeaycZ7WRC4cxzoXjMSeN+AYty28ssiJJMdP1kFtIAoy/80VPeOBhl+yozUFaaTtDWEyMqT6XujcLWVuTJp8WHBvvLj0KmoleFV+OAusd+9keF9aSSHGwSwM1IbU9M4JMZsKWmLaKBpC77Ag0MVUhhdnY6MZ5Mff/KDivd5oGu1hbzXBPfoUlEkNppe3gwbxRTUM6k0OndyczPgZdVL9gC1/+UGH7kwiBNjegibMdySzsQuujbtISwFA==",
+				"__plugin_info__": {
+					"name": "支付宝原生扫码插件",
+					"description": "支付宝原生扫码组件,包体积仅0.7MB,15分钟即可完成接入。同时,mPaaS提供「扫码分析」大盘",
+					"platforms": "Android,iOS",
+					"url": "https://ext.dcloud.net.cn/plugin?id=2636",
+					"android_package_name": "com.dalicitycard.app",
+					"ios_bundle_id": "com.dalicitycard.app",
+					"isCloud": true,
+					"bought": 1,
+					"pid": "2636",
+					"parameters": {
+						"AppId": {
+							"des": "Android平台的AppId,请填写Android的config文件中的appId对应的值",
+							"key": "mobilegw.appid",
+							"value": ""
+						},
+						"WorkspaceId": {
+							"des": "Android平台的WorkspaceId,请填写Android的config文件中的workspaceId对应的值",
+							"key": "workspaceId",
+							"value": ""
+						},
+						"License": {
+							"des": "Android平台的License,,请填写Android的config文件中的mpaasConfigLicense对应的值",
+							"key": "mpaasConfigLicense",
+							"value": ""
+						}
+					}
+				}
+			}
+		}
+	},
+	"quickapp": {},
+	"mp-weixin": {
+		"appid": "wxc458a08d7fb5b4d3",
+		"setting": {
+			"urlCheck": true,
+			"es6": false,
+			"minified": true,
+			"postcss": true
+		},
+		"optimization": {
+			"subPackages": true
+		},
+		"usingComponents": true,
+		"permission": {
+			"scope.userLocation": {
+				"desc": "你的位置信息将用于小程序位置接口的效果展示"
+			}
+		}
+	},
+	"mp-alipay": {
+		"usingComponents": true,
+		"component2": true
+	},
+	"mp-baidu": {
+		"usingComponents": true,
+		"appid": ""
+	},
+	"mp-toutiao": {
+		"usingComponents": true
+	},
+	"h5": {
+		"template": "template.h5.html",
+		"router": {
+			"mode": "hash",
+			"base": ""
+		},
+		"optimization": {
+			"treeShaking": {
+				"enable": true
+			}
+		},
+		"title": "uView UI",
+		"devServer": {
+			"proxy": {
+				"/api": {
+					"target": "http://yy.dlsmk.cn:8080/portal/mobileapi",
+					"changeOrigin": true,
+					"pathRewrite": {
+						"^/api": ""
+					}
+				}
+			}
+		}
+	},
+	"channel_list": [{
+		"id": "baidu",
+		"name": "百度应用市场"
+	}]
 }
diff --git a/nativeplugins/Mpaas-Scan/ios/meta.config b/nativeplugins/Mpaas-Scan/ios/meta.config
new file mode 100644
index 0000000..ba57269
--- /dev/null
+++ b/nativeplugins/Mpaas-Scan/ios/meta.config
@@ -0,0 +1,20 @@
+{
+	"appId":"ONEX1D49B6A241152",
+	"appKey":"ONEX1D49B6A241152_IOS",
+	"base64Code":"/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAADAAMDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxFobXF3hJ2CNJ8/SWNZW5Q44QGJ22kFAwABAQAAAAQAAB4AAADAAAAAFAAAAIcAAAABAAAAAAAAAAAAAAAAAAAAAAAAABUAAAABAAAAAAAAAAAAAAAIAAAAAAAAAIsS5F93AAAAAAAAAAAAAABVWwBOfR0SrSIJ/ITdz28UX/oxae3WSeRaVQOdDjghZJQishE/xL5hzbrlqopUvulP71I8xpshIPAkvf91cmdjbngBAwF4dWZ3AwECBgEAEQEBCAFxdHNqb3bKCYAt+YFC+8IbpBxqp74LC7j6fXLnMEqcQlQvaO5IR4BCNipPRSfJukf+oiU2lvm71+Ba47r7eap/jeZSiZTB/9k96/6v6FK4vFMesbWed8FNIqh/Rz3sBFQXRol3yBlCkBypL6kbs0ywBJNO2Var/EAQ2rZ+bi0fGGf35nZZ86KpoPJYcOX7FIZAqVydeCkgh4vX81kFBVScq4Mn3HtAkztKRBKyNdxNn1C7XGGCLmC1PQoww36UL3E3Y2ijFM2Ct4GdlzCviFGr1P8AAMKgGAYAAAAA",
+	"bundleId":"com.dalicitycard.app",
+	"rootPath":"mpaas/ios/ONEX1D49B6A241152-default",
+	"workspaceId":"default",
+	"syncport":"443",
+	"syncserver":"mpaas-mss.aliyuncs.com",
+	"logGW":"https://mpaas-mas-loggw.aliyuncs.com",
+	"pushPort":"443",
+	"pushGW":"mpaas-mps.aliyuncs.com",
+	"mpaasapi":"https://cn-hangzhou-component-gw.cloud.alipay.com/mgw.htm",
+	"rpcGW":"https://mpaas-mgs.aliyuncs.com/mgw.htm",
+	"mrtcserver":"wss://cn-hangzhou-mrtc.cloud.alipay.com/ws",
+	"mpaasConfigVersion":"V_1.0",
+	"mpaasConfigEnv":"ONEX_CLOUD",
+	"mpaasConfigPluginExpired":"",
+	"mpaasConfigLicense":"Db4aL4Dac1G7SekUIk75KL9Wo2BAjGZC8O/I6tzSNxlQmS3e8uhUQHFZ/ELbMeDlfC8MC1C8Qg5vtMIwO8stxh22ZqyAPMsWnmBcuYpbQASxl+15WvtL5zvrrDXjJzlvfy6Sg95dtZsyHpUvZZ3gg4GtMLE/vBJxz0RIxaOEIEHA8A3lZ9dJJCC33LMZzID8pC3B9N7Wsltv2q9310SiOpafBS9aUc1qYWsDY8crzF+ocCt27sB0aNnK5SiCosr/Xw/pxmPeSQXUX8oHPXbhNnS8ZViQbxqsXuyE3Aj5G9X4Ys/nRRTaJo29W32PTMNzcASH1v6VMIq/h1+8zqR5Pw=="
+}
\ No newline at end of file
diff --git a/pages.json b/pages.json
index 244b707..94efca2 100644
--- a/pages.json
+++ b/pages.json
@@ -6,20 +6,20 @@
 			"path": "pages/sub_tabbar/index",
 			"style": {
 				"navigationBarTitleText": "首页",
-				"enablePullDownRefresh":true,
+				"enablePullDownRefresh": true,
 				"app-plus": {
 					"titleNView": false,
-					"pullToRefresh":{
-						"support":true,
-						"range":"20%",
-						"contentdown":{
-							"caption":"下拉刷新"
+					"pullToRefresh": {
+						"support": true,
+						"range": "20%",
+						"contentdown": {
+							"caption": "下拉刷新"
 						},
-						"contentover":{
-							"caption":"正在刷新"
+						"contentover": {
+							"caption": "正在刷新"
 						},
-						"contentrefresh":{
-							"caption":"刷新成功"
+						"contentrefresh": {
+							"caption": "刷新成功"
 						}
 					}
 				}
@@ -45,19 +45,19 @@
 			"path": "pages/sub_tabbar/active",
 			"style": {
 				"navigationBarTitleText": "活动",
-				"enablePullDownRefresh":true,
+				"enablePullDownRefresh": true,
 				"app-plus": {
-					"pullToRefresh":{
-						"support":true,
-						"range":"20%",
-						"contentdown":{
-							"caption":"下拉刷新"
+					"pullToRefresh": {
+						"support": true,
+						"range": "20%",
+						"contentdown": {
+							"caption": "下拉刷新"
 						},
-						"contentover":{
-							"caption":"正在刷新"
+						"contentover": {
+							"caption": "正在刷新"
 						},
-						"contentrefresh":{
-							"caption":"刷新成功"
+						"contentrefresh": {
+							"caption": "刷新成功"
 						}
 					}
 				}
@@ -375,6 +375,12 @@
 				}
 			},
 			{
+				"path": "bindEmail/index",
+				"style": {
+					"navigationBarTitleText": "设置邮箱"
+				}
+			},
+			{
 				"path": "integralQuery/index",
 				"style": {
 					"navigationBarTitleText": "积分查询"
@@ -391,8 +397,7 @@
 		]
 	}, {
 		"root": "pages/sub_medical",
-		"pages": [
-			{
+		"pages": [{
 				"path": "appointment",
 				"style": {
 					"navigationBarTitleText": "预约挂号"
diff --git a/pages/sub_basic/login/index.vue b/pages/sub_basic/login/index.vue
index 7da6209..050f84c 100644
--- a/pages/sub_basic/login/index.vue
+++ b/pages/sub_basic/login/index.vue
@@ -122,7 +122,6 @@
 					platform: platform
 				}
 				that.$u.post('/login',params).then(res => {
-					
 					uni.setStorageSync("token", res.token)
 					uni.setStorageSync("uid", res.uid)
 					uni.setStorageSync("userid", res.userid)
@@ -135,10 +134,11 @@
 					uni.setStorageSync("localpwd", res.localpwd)
 					uni.setStorageSync("phone", tel)
 					uni.setStorageSync("phoneX", res.phone)
-					uni.setStorageSync("imgurl", res.imgurl)
+					uni.setStorageSync("imageurl", res.imageurl)
 					uni.setStorageSync("idno", res.idno)
 					uni.setStorageSync("cardno", res.citizenCardNo)
 					uni.setStorageSync("bankcardno", res.bankCardNo)
+					uni.setStorageSync("email", res.email)
 					let ranNum = Math.ceil(Math.random() * 25)
 					let c = String.fromCharCode(65 + ranNum)
 					// #ifndef MP-WEIXIN
@@ -213,6 +213,7 @@
 					uni.setStorageSync("idno", res.idno)
 					uni.setStorageSync("cardno", res.citizenCardNo)
 					uni.setStorageSync("bankcardno", res.bankCardNo)
+					uni.setStorageSync("email", res.email)
 					if(res.needcheck){
 						uni.navigateTo({
 							url:'/pages/sub_basic/verification/index?data=' + JSON.stringify(params)
diff --git a/pages/sub_basic/verification/index.vue b/pages/sub_basic/verification/index.vue
index 2f60329..f3050b0 100644
--- a/pages/sub_basic/verification/index.vue
+++ b/pages/sub_basic/verification/index.vue
@@ -91,6 +91,7 @@
 					uni.setStorageSync("idno", res.idno)
 					uni.setStorageSync("cardno", res.citizenCardNo)
 					uni.setStorageSync("bankcardno", res.bankCardNo)
+					uni.setStorageSync("email", res.email)
 					uni.showToast({
 						title: "验证成功",
 						icon: "none",
diff --git a/pages/sub_index/scanView/index.vue b/pages/sub_index/scanView/index.vue
index a9515a8..dbf9b26 100644
--- a/pages/sub_index/scanView/index.vue
+++ b/pages/sub_index/scanView/index.vue
@@ -21,42 +21,39 @@
 		onLoad(option) {
 			let that = this
 			let userid = uni.getStorageSync("userid")
-			that.userid = 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
-			//console.log(url)
 		},
 		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);
-		},
-		methods: {
-
+			// 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);
 		},
 	}
 </script>
diff --git a/pages/sub_medical/addPatient.vue b/pages/sub_medical/addPatient.vue
index 94cfda8..332bb0c 100644
--- a/pages/sub_medical/addPatient.vue
+++ b/pages/sub_medical/addPatient.vue
@@ -57,7 +57,7 @@
 					name,sex,cardno,mobile,
 					hospitalcode:''
 				}
-				that.$u.post('/medicineapi/medicalcard/add',params).then(res=>{
+				that.$u.post('/medicalapi/medicalcard/add',params).then(res=>{
 					console.log(res.data)
 				})
 			}
diff --git a/pages/sub_medical/appointment.vue b/pages/sub_medical/appointment.vue
index 5de78b7..cf7fd6a 100644
--- a/pages/sub_medical/appointment.vue
+++ b/pages/sub_medical/appointment.vue
@@ -7,7 +7,7 @@
 		<view class="appointment-search">
 			<u-search placeholder="搜索医院名称" v-model="hospial" :show-action="false" bg-color="#ffffff" @focus="toPath('/pages/sub_medical/hospital')"></u-search>
 		</view>
-		<view class="appointment-record">
+		<!-- <view class="appointment-record">
 			<u-cell-group>
 				<u-cell-item title="我的挂号记录" value="查看更多" @click="toPath('/pages/sub_medical/record')"></u-cell-item>
 			</u-cell-group>
@@ -40,18 +40,18 @@
 			<view class="appointment-record-nomsg" v-else>
 				<text>暂无挂号记录</text>
 			</view>
-			<!-- <view class="appointment-record-btn">
+			<view class="appointment-record-btn">
 				<u-button :plain="true" size="mini" type="primary" shape="circle">取消预约</u-button>
-			</view> -->
-		</view>
+			</view>
+		</view> -->
 		<view class="appointment-hospital">
 			<u-cell-group>
 				<u-cell-item title="本地医院" value="查看更多" @click="toPath('/pages/sub_medical/hospital')"></u-cell-item>
 			</u-cell-group>
 			<view class="appointment-hospital-msg" v-if="hospital_list.length != 0">
-				<view class="appointment-hospital-msg-box" @click="toPath('/pages/sub_medical/outpatient')" v-for="(v,i) in hospital_list" :key="i">
+				<view class="appointment-hospital-msg-box" @click="toPath('/pages/sub_medical/cashFlow?hospitalcode=' + v.hospitalcode)" v-for="(v,i) in hospital_list" :key="i">
 					<view class="appointment-hospital-msg-left">
-						<u-image :src="v.src" width="100" mode="widthFix"></u-image>
+						<u-image :src="v.icon" width="100" mode="widthFix"></u-image>
 					</view>
 					<view class="appointment-hospital-msg-right">
 						<view class="appointment-hospital-msg-right-item">
@@ -87,6 +87,7 @@
 			}
 		},
 		onLoad() {
+			uni.setNavigationBarTitle({title:'医院查询'})
 			this.get_hospital_list()
 			this.getLocal()
 		},
@@ -115,9 +116,14 @@
 					pagesize:3,
 					name:''
 				}
-				that.$u.get('/medicineapi/hospital/list',params).then(res=>{
-					that.hospital_list = res.data.list
-					console.log(res.data.list)
+				that.$u.get('/medicalapi/hospital/list',params).then(res=>{
+					let url = uni.getStorageSync('imageurl')
+					let list = res.data.list
+					list.forEach(item=>{
+						item.icon = url + '/' + item.picid
+					})
+					that.hospital_list = list
+					console.log(list)
 				})
 			}
 		}
diff --git a/pages/sub_medical/cashFlow.vue b/pages/sub_medical/cashFlow.vue
index efe1ff2..6f5091b 100644
--- a/pages/sub_medical/cashFlow.vue
+++ b/pages/sub_medical/cashFlow.vue
@@ -9,20 +9,23 @@
 		<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">
+					<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>
-								<text>挂号费</text>
+								<text>{{v.mergingName}}</text>
 							</view>
 							<view class="cashFlow-ul-item-left-bottom">
-								<text class="cashFlow-ul-item-left-bottom-bold">01</text>
-								<text class="cashFlow-ul-item-left-bottom-normal">天内缴费,截止日期2020/10/28 23:59:59</text>
+								<!-- <text class="cashFlow-ul-item-left-bottom-bold">科类:</text> -->
+								<text class="cashFlow-ul-item-left-bottom-normal" style="margin-right: 50rpx;">科类:{{v.subjectName}}</text>
+								<!-- <text class="cashFlow-ul-item-left-bottom-bold"></text> -->
+								<text class="cashFlow-ul-item-left-bottom-normal">医生:{{v.doctorName}}</text>
 							</view>
 						</view>
 						<view class="cashFlow-ul-item-right">
-							<text>¥23.5</text>
+							<text>¥{{v.mergingSubtotal}}</text>
 						</view>
+						<view class="cashFlow-ul-item-status" v-if="v.status == 'wip'">订单支付中</view>
 					</view>
 				</view>
 			</scroll-view>
@@ -30,20 +33,21 @@
 		<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">
+					<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>
-								<text>挂号费</text>
+								<text>{{v.mergingname}}</text>
 							</view>
 							<view class="cashFlow-ul-item-left-bottom">
 								<text class="cashFlow-ul-item-left-bottom-normal">缴费日期:</text>
-								<text class="cashFlow-ul-item-left-bottom-normal">2020-10-28 12:30:59</text>
+								<text class="cashFlow-ul-item-left-bottom-normal">{{v.paytime}}</text>
 							</view>
 						</view>
 						<view class="cashFlow-ul-item-right">
-							<text>¥23.5</text>
+							<text>¥{{v.mergingsubtotal}}</text>
 						</view>
+						<view class="cashFlow-ul-item-status" v-if="!v.notifyStatus">通知医院</view>
 					</view>
 				</view>
 			</scroll-view>
@@ -55,13 +59,55 @@
 	export default {
 		data() {
 			return {
-				leftOright: true
+				leftOright: true,
+				unpay_list:[],
+				hospitalcode:'',
+				payed_list:[]
 			}
 		},
+		onLoad(options){
+			let hospitalcode = options.hospitalcode
+			this.hospitalcode = hospitalcode
+			// this.get_unpay_list(hospitalcode)
+		},
 		methods: {
+			get_unpay_list(code){
+				let that = this
+				let param = {
+					hospitalcode : code
+				}
+				that.$u.post('/medicalapi/unpayed/list',param).then(res=>{
+					that.unpay_list = res.data
+				})
+			},
+			get_payed_list(code){
+				let that = this
+				let param = {
+					hospitalcode : code,
+					pageno:1,
+					pagesize:100
+				}
+				that.$u.post('/medicalapi/payed/list',param).then(res=>{
+					let list = res.data
+					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) 
+					})
+					that.payed_list = list
+				})
+			},
 			changeTurnoverList(e) {
 				this.leftOright = e
+				if(e){
+					this.get_unpay_list(this.hospitalcode)
+				}else{
+					this.get_payed_list(this.hospitalcode)
+				}
 			},
+		},
+		onShow(){
+			this.get_unpay_list(this.hospitalcode)
 		}
 	}
 </script>
@@ -117,14 +163,27 @@
 				align-items: center;
 				padding: 30rpx 20rpx;
 				border-radius: 10rpx;
+				margin-bottom: 30rpx;
+				position: relative;
+				&-status{
+					position: absolute;
+					bottom: 20rpx;
+					right: 20rpx;
+					font-size: 26rpx;
+					color: #18B566;
+				}
 				&-left{
 					display:  flex;
 					flex-direction: column;
 					justify-content: space-between;
+					width: 75%;
 					&-top{
 						display: flex;
 						align-items: center;
 						text{
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
 							font-size: 36rpx;
 							margin-left: 10rpx;
 							font-weight: bold;
diff --git a/pages/sub_medical/hospital.vue b/pages/sub_medical/hospital.vue
index 1b66fc1..7cf850d 100644
--- a/pages/sub_medical/hospital.vue
+++ b/pages/sub_medical/hospital.vue
@@ -67,7 +67,7 @@
 					pagesize: 10,
 					name: name
 				}
-				that.$u.get('/medicineapi/hospital/list', params).then(res => {
+				that.$u.get('/medicalapi/hospital/list', params).then(res => {
 					that.hospital_list = res.data.list
 					that.notice = '没有搜索到此关键词'
 					console.log(res.data.list)
diff --git a/pages/sub_medical/patient.vue b/pages/sub_medical/patient.vue
index f6d549c..094a73b 100644
--- a/pages/sub_medical/patient.vue
+++ b/pages/sub_medical/patient.vue
@@ -62,7 +62,7 @@
 			deleteMenber(){
 				let that = this
 				let cardid = '123'
-				that.$u.post('/medicineapi/medicalcard/delete/' + cardid).then(res=>{
+				that.$u.post('/medicalapi/medicalcard/delete/' + cardid).then(res=>{
 					console.log(res.data)
 				})
 			}
diff --git a/pages/sub_medical/pay.vue b/pages/sub_medical/pay.vue
index 751d7d3..c763a23 100644
--- a/pages/sub_medical/pay.vue
+++ b/pages/sub_medical/pay.vue
@@ -1,30 +1,59 @@
 <template>
 	<view class="pay">
 		<u-cell-group>
-			<u-cell-item title="挂号费" :title-style="tstyle" :arrow="false">
+			<u-cell-item :title="msg.mergingName" :title-style="tstyle" :arrow="false">
 				<u-image slot="icon" src="./images/cush.png" width="60" height="60" mode="aspectFit"></u-image>
 			</u-cell-item>
-			<u-cell-item title="缴费金额"  :arrow="false" value="23.50元" :value-style="vstyle"></u-cell-item>
+			<u-cell-item title="缴费金额" :arrow="false" :value="msg.mergingSubtotal+'元'" :value-style="vstyle"></u-cell-item>
 		</u-cell-group>
 		<u-cell-group>
-			<u-cell-item title="商户名称"  :arrow="false" value="大理市第一人民医院"></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="未支付"></u-cell-item>
+			<u-cell-item title="医院名称" :arrow="false" :value="msg.hospitalName"></u-cell-item>
+			<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-group>
-		<u-button @click="" :custom-style="payBtn">立即支付</u-button>
+		<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>
+		<!-- 支付密码弹框 -->
+		<uni-popup ref="showPassword" class="pwd-wrapper">
+			<view class="uni-tip uni-pwd">
+				<text class="uni-tip-title">请输入支付密码</text>
+				<view class="pwd-text-wrap">
+					<password-input @tap="openKeyBoard('number')" :length="length" :gutter="0" :list="numberList"></password-input>
+				</view>
+			</view>
+		</uni-popup>
+		<keyboard-package ref="number" @onInput="onInput" @onDelete="onDelete" @onConfirm="onConfirm" :disableDot="true" />
 	</view>
 </template>
 
 <script>
-	export default{
-		data(){
-			return{
+	import keyboardPackage from "./z_components/keyboard-package/keyboard-package.vue"
+	import passwordInput from "./z_components/password-input/password-input.vue"
+	import uniPopup from './z_components/uni-popup/uni-popup.vue'
+	export default {
+		components: {
+			uniPopup,
+			keyboardPackage,
+			passwordInput
+		},
+		data() {
+			return {
+				numberList: [],
+				length: 6,
+				type: 'number',
 				tstyle: {
 					marginLeft: '10rpx',
 					fontWeight: 'bold'
 				},
 				vstyle: {
-					color: '#FF6F6F'
+					color: '#FF6F6F',
+					fontSize:'30rpx'
+				},
+				status_style: {
+					color: '#18B566',
+					fontSize:'30rpx'
 				},
 				payBtn: {
 					backgroundColor: ' #2FA8E1',
@@ -35,23 +64,191 @@
 					border: '1px solid #2FA8E1',
 					marginTop: '50rpx'
 				},
+				msg: {},
+				kind:''
 			}
 		},
-		methods:{
-			
+		methods: {
+			// 呼起键盘
+			openKeyBoard(key) {
+				this.type = key;
+				this.$refs[key].open();
+			},
+			// 输入密码
+			onInput(val) {
+				this.numberList.push(val)
+				if (this.numberList.length == this.length) {
+					this.$refs.showPassword.close()
+					this.$refs[this.type].close()
+					this.pay()
+				}
+			},
+			//完成输入点击完成
+			onConfirm() {
+				let length = this.numberList.length
+				if (length == this.length) {
+					this.$refs.showPassword.close()
+					this.$refs[this.type].close()
+				} else {
+					this.numberList = []
+					uni.showToast({
+						title: '密码错误',
+						icon: 'none'
+					})
+				}
+			},
+			//删除密码
+			onDelete(val) {
+				this.numberList.pop(val)
+			},
+			//打开密码输入框
+			open() {
+				this.numberList = []
+				this.$refs.showPassword.open()
+				this.openKeyBoard('number')
+			},
+			pay() {
+				let that = this
+				let pwd = ''
+				let billno = that.msg.billNo
+				that.numberList.forEach(item => {
+					pwd += item + ''
+				})
+				let param = {
+					paypwd: pwd,
+					billno
+				}
+				that.$u.post('/medicalapi/pay', param).then(res => {
+					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)
+				})
+			},
+			query() {
+				let that = this
+				let billno = that.msg.billNo
+				that.$u.post('/medicalapi/pay/query/' + billno, {}).then(res => {
+					let status = res.status
+					if(status == 'wip'){
+						uni.showToast({
+							icon:'none',
+							title:'订单正在支付中,请稍等...'
+						})
+					}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)
+					}
+				})
+			}
 		},
-		onLoad(){
-			
+		onLoad(options) {
+			let msg = JSON.parse(options.msg)
+			let id = options.id
+			this.kind = id
+			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) {
+					case 'init':
+						msg.status_ok = '未支付';
+						break
+					case 'wip':
+						msg.status_ok = '订单正在支付中...'
+						break
+				}
+				this.msg = msg
+			}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
+				this.msg = msg
+			}
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
-	.u-cell-box{
+	.u-cell-box {
 		margin-bottom: 30rpx;
 	}
-	.pay{
+
+	.pay {
 		font-family: "PingFang-SC-Medium";
 	}
-	
+
+	.pwd-wrapper {
+		background: rgba(0, 0, 0, .4);
+		z-index: 1;
+
+		/deep/.uni-popup__wrapper.uni-custom.center {
+			.uni-popup__wrapper-box {
+				position: unset;
+				max-width: none;
+				max-height: none;
+				overflow-y: hidden;
+				background: none;
+				margin-top: -70rpx;
+				padding: 60rpx 30rpx 30rpx;
+			}
+
+			.pwd-text-wrap {
+				width: 100%;
+				padding: 50rpx 43rpx 60rpx;
+				box-sizing: border-box;
+			}
+		}
+
+		.uni-tip {
+			/* #ifndef APP-NVUE */
+			display: flex;
+			flex-direction: column;
+			/* #endif */
+			margin-top: -60rpx;
+			width: 570rpx;
+			background-color: #fff;
+			border-radius: 12rpx;
+			position: relative;
+		}
+
+		.uni-pwd {
+			width: 630rpx;
+		}
+
+		.uni-tip-icon-wrap {
+			text-align: center;
+		}
+
+		.uni-tip-content {
+			padding: 31rpx 40rpx 60rpx;
+			font-size: 30rpx;
+			color: #6F737A;
+		}
+	}
+
+	.uni-tip-title {
+		margin-top: 30rpx;
+		text-align: center;
+		font-weight: 500;
+		font-size: 34rpx;
+		color: $uni-text-color;
+	}
 </style>
diff --git a/pages/sub_medical/payResult.vue b/pages/sub_medical/payResult.vue
index bd09b48..e36fd54 100644
--- a/pages/sub_medical/payResult.vue
+++ b/pages/sub_medical/payResult.vue
@@ -1,23 +1,23 @@
 <template>
 	<view class="payResult">
-		<view class="payResult-status" v-if="msg.billstatus ==2">
+		<view class="payResult-status" v-if="msg.billstatus ==1">
 			<icon type="success" size="60" color="#3599FB"></icon>
 			<text class="payResult-status-text">支付成功</text>
 		</view>
-		<view class="payResult-status" v-if="msg.billstatus !=2">
+		<view class="payResult-status" v-if="msg.billstatus ==0">
 			<icon type="warn" size="60"></icon>
 			<text class="payResult-status-text">支付失败</text>
 		</view>
-		<view class="payResult-money" v-if="msg.billstatus ==2"><text>-¥{{msg.amount?msg.amount:'0.00'}}</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.shopname?msg.shopname:'未知商户'" :arrow="false" bg-color="#FFFFFF"></u-cell-item>
-				<u-cell-item title="交易方式" :value="msg.billname?msg.billname:'未知方式'" :arrow="false" bg-color="#FFFFFF"></u-cell-item>
+				<u-cell-item title="医院名称" :value="msg.hospitalName?msg.hospitalName:'未知医院'" :arrow="false" bg-color="#FFFFFF"></u-cell-item>
+				<u-cell-item title="交易方式" value="大理市民卡" :arrow="false" bg-color="#FFFFFF"></u-cell-item>
 				<u-cell-item title="交易时间" :value="msg.paytime?msg.paytime:'未知时间'" :arrow="false" bg-color="#FFFFFF"></u-cell-item>
-				<u-cell-item title="订单号" :value="msg.refno?msg.refno:'未知订单号'" :arrow="false" bg-color="#FFFFFF"></u-cell-item>
+				<u-cell-item title="订单号" :value="msg.billNo?msg.billNo:'未知订单号'" :arrow="false" bg-color="#FFFFFF"></u-cell-item>
 			</u-cell-group>
 		</view>
-		<u-button class="btn":custom-style="btn"  @tap="goBack">返回首页</u-button>
+		<u-button class="btn":custom-style="btn"  @tap="goBack">返回待缴费列表</u-button>
 	</view>
 </template>
 
@@ -39,17 +39,28 @@
 		},
 		onLoad(options) {
 			let that = this;
-			if (options.data) {
-				let msg = JSON.parse(options.data);
-				msg.amount = msg.amount.toFixed(2);
-				that.msg = msg
+			let msg = JSON.parse(options.msg)
+			let status = options.status
+			let date = options.date
+			switch(status){
+				case 'fail':
+				msg.billstatus = 0;
+				break
+				case 'success':
+				msg.billstatus = 1;
+				break
+				case 'wip': //订单状态等待中 需查询
+				msg.billstatus = 2;
+				break
 			}
+			msg.paytime = date
+			that.msg = msg
 		},
 		methods: {
 			goBack() {
-				uni.switchTab({
-					url: '/pages/sub_tabbar/index'
-				});
+				uni.navigateBack({
+					delta:2
+				})
 			}
 		}
 	}
@@ -73,6 +84,12 @@
 				margin-top: 30rpx;
 			}
 		}
+		&-money{
+			padding: 30rpx;
+			font-size: 50rpx;
+			text-align: right;
+			color: #2FA8E1;
+		}
 		&-msg{
 			margin-top: 50rpx;
 		}
diff --git a/pages/sub_medical/z_components/keyboard-package/keyboard-package.vue b/pages/sub_medical/z_components/keyboard-package/keyboard-package.vue
new file mode 100644
index 0000000..0d92542
--- /dev/null
+++ b/pages/sub_medical/z_components/keyboard-package/keyboard-package.vue
@@ -0,0 +1,299 @@
+<template>
+	<uni-popup :custom="true" type="bottom" ref="keyboardPackage">
+		<view class="keyboardbox">
+			<view class="numkeyboard" v-if="type==='number'">
+				<view class="num-area">
+					<view class="row" v-for="(item,index) in numKeybordList" :key="index">
+						<view :class="['item',ite===0?'z':'',(disableDot && ite==='.')?'disabled':'']" v-for="(ite,idx) in item"
+						 hover-class="active" :hover-start-time="0" :hover-stay-time="5" :key="idx" @tap="input(ite)">{{ite}}</view>
+					</view>
+				</view>
+				<view class="btn-area">
+					<view :class="['item','del']" hover-class="active" :hover-start-time="0" :hover-stay-time="5" @tap="deleteVal">
+						删除
+					</view>
+					<view class="confirem item" hover-class="active" :hover-start-time="0" :hover-stay-time="5" @tap="confirm">
+						完成
+					</view>
+				</view>
+			</view>
+
+			<view class="numkeyboard" v-if="type==='idCard'">
+				<view class="num-area">
+					<view class="row" v-for="(item,index) in idCardList" :key="index">
+						<view :class="['item',ite===0?'z':'',(disableDot && ite==='.')?'disabled':'']" v-for="(ite,idx) in item"
+						 hover-class="active" :hover-start-time="0" :hover-stay-time="5" :key="idx" @tap="input(ite)">{{ite}}</view>
+					</view>
+				</view>
+				<view class="btn-area">
+					<view :class="['item','del']" hover-class="active" :hover-start-time="0" :hover-stay-time="5" @tap="deleteVal">
+						删除
+					</view>
+					<view class="confirem item" hover-class="active" :hover-start-time="0" :hover-stay-time="5" @tap="confirm">
+						完成
+					</view>
+				</view>
+			</view>
+
+			<view class="platenumber" v-if="type==='plateNumber'">
+				<view class="header">
+					<view @tap="active=active===1?2:1" hover-class="active" :hover-start-time="0" :hover-stay-time="5">{{active===1?'地区':'车牌号'}}</view>
+					<view hover-class="active" :hover-start-time="0" :hover-stay-time="5" @tap="confirm">完成</view>
+				</view>
+				<view class="main">
+					<view class="normal" v-if="active===1">
+						<view class="row" v-for="(item,index) in EngKeyBoardList" :key="index">
+							<view class="item" v-for="(ite,idx) in item" :key="idx" hover-class="active" :hover-start-time="0" :hover-stay-time="5" @tap="input(ite)">
+								{{ite}}
+							</view>
+							<view class="item img" v-if="index===EngKeyBoardList.length-1" hover-class="active" :hover-start-time="0" :hover-stay-time="5" @tap="deleteVal">
+								<image src="/static/delete.png" mode=""></image>
+							</view>
+						</view>
+					</view>
+					<view class="area" v-if="active===2">
+						<view class="row" v-for="(item,index) in areaList" :key="index">
+							<view class="item" v-for="(ite,idx) in item" :key="idx" hover-class="active" :hover-start-time="0" :hover-stay-time="5" @tap="input(ite)">
+								{{ite}}
+							</view>
+							<view class="item img" v-if="index===EngKeyBoardList.length-1" hover-class="active" :hover-start-time="0" :hover-stay-time="5" @tap="deleteVal">
+								<image src="/static/delete.png" mode=""></image>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="safe-area" v-if="safeAreaInsetBottom"></view>
+	</uni-popup>
+</template>
+
+<script>
+	import uniPopup from "../uni-popup/uni-popup.vue"
+	export default {
+		components: {
+			uniPopup
+		},
+		props: {
+			type: {
+				type: String,
+				default: 'number'
+			},
+			safeAreaInsetBottom: { //是否设置安全区
+				type: Boolean,
+				default: false
+			},
+			disableDot: { //数字键盘是否禁止点击.仅type为number生效
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				numKeybordList: [
+					[1, 2, 3],
+					[4, 5, 6],
+					[7, 8, 9],
+					[0, '.']
+				],
+				idCardList: [
+					[1, 2, 3],
+					[4, 5, 6],
+					[7, 8, 9],
+					[0, 'X']
+				],
+				areaList: [
+					['京', '沪', '粤', '津', '冀', '豫', '云', '辽', '黑', '湘'],
+					['皖', '鲁', '苏', '浙', '赣', '鄂', '桂', '甘', '晋', '陕'],
+					['蒙', '吉', '闽', '贵', '渝', '川', '青', '琼', '宁'],
+					['藏', '新', '使', '港', '澳', '学']
+				],
+				EngKeyBoardList: [
+					[1, 2, 3, 4, 5, 6, 7, 8, 9, 0],
+					['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],
+					['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],
+					['Z', 'X', 'C', 'V', 'B', 'N', 'M']
+				],
+				active: 1
+			};
+		},
+		methods: {
+			open() {
+				this.$refs.keyboardPackage.open();
+			},
+			confirm() {
+				this.$emit('onConfirm');
+			},
+			deleteVal() {
+				this.$emit('onDelete');
+			},
+			input(val) {
+				if (val === '.' && this.disableDot) return;
+				this.$emit('onInput', val);
+			},
+			close() {
+				this.$refs.keyboardPackage.close();
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.keyboardbox {
+		background-color: #FFFFFF;
+
+		.numkeyboard {
+			height: 432rpx;
+			display: flex;
+			background-color: #ebedf0;
+
+			.btn-area {
+				width: 180rpx;
+				height: 100%;
+				display: flex;
+				flex-direction: column;
+
+				.item {
+					width: 100%;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					flex-grow: 1;
+				}
+
+				.del {
+					background-color: #ebedf0;
+					color: #333;
+
+					&.active {
+						background-color: #f1f3f5;
+					}
+				}
+
+				.confirem {
+					background-color: #1989fa;
+					color: #FFFFFF;
+
+					&.active {
+						background-color: #0570db;
+					}
+				}
+			}
+
+			.num-area {
+				flex-grow: 1;
+				display: flex;
+				flex-wrap: wrap;
+
+				.row {
+					width: 100%;
+					height: 25%;
+					display: flex;
+					margin-top: 1px;
+
+					.item {
+						flex-grow: 1;
+						height: 100%;
+						display: flex;
+						justify-content: center;
+						align-items: center;
+						background-color: #FFFFFF;
+						border-right: 1px solid #ebedf0;
+						width: 33.33%;
+						
+						&.active {
+							background-color: #ebedf0;
+						}
+
+						&.z {
+							flex-grow: 2;
+							width: 66.66%;
+						}
+
+						&.disabled {
+							background: #FFFFFF;
+							color: #B9B9B9;
+						}
+					}
+				}
+
+			}
+		}
+	}
+
+	.safe-area {
+		padding-bottom: 0rpx;
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+	}
+
+	.platenumber {
+		background-color: #f5f5f5;
+
+		.header {
+			height: 76rpx;
+			background-color: #FFFFFF;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			font-size: 28rpx;
+			border-top: 1px solid #f5f5f5;
+
+			&>view {
+				padding: 0 45rpx;
+				color: #00a7ea;
+				height: 100%;
+				display: flex;
+				align-items: center;
+				&.active {
+					background-color: #ebedf0;
+				}
+			}
+		}
+
+		.main {
+			height: 435rpx;
+
+			.row {
+				margin: 13rpx 0;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+
+				.item {
+					width: 56rpx;
+					height: 94rpx;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					background-color: #FFFFFF;
+					border-radius: 6rpx;
+					margin: 0 7rpx;
+					font-size: 24rpx;
+					&.active {
+						background-color: #ebedf0;
+					}
+
+					&.img {
+						background-color: #c2cacc;
+						width: 94rpx;
+
+						&.active {
+							background-color: #ddd;
+						}
+
+						&>image {
+							width: 49rpx;
+							height: 48rpx;
+						}
+					}
+				}
+			}
+
+		}
+		
+	}
+	// /deep/.uni-popup__mask.uni-bottom {
+	// 	background:rgba(0, 0, 0, .4);
+	// }
+</style>
diff --git a/pages/sub_medical/z_components/password-input/password-input.vue b/pages/sub_medical/z_components/password-input/password-input.vue
new file mode 100644
index 0000000..f02de6c
--- /dev/null
+++ b/pages/sub_medical/z_components/password-input/password-input.vue
@@ -0,0 +1,103 @@
+<template>
+	<view class="box">
+		<view :class="['item',list.length===index?'fakecursor':'']" v-for="(item,index) in length" :key="item" :style="{margin:formatMargin(gutter)}">
+			<view :class="['circle',(index<list.length)?'dot':'']"></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props:{
+			length:{//长度只允许为6和4
+				type:Number,
+				default:6,
+				validator(val){
+					if(val!==6 && val !==4){
+						return false;
+					}
+					return true;
+				}
+			},
+			gutter:{
+				type:Number,
+				default:0
+			},
+			list:{
+				type:Array,
+				default:function(){
+					return [];
+				}
+			}
+		},
+		data() {
+			return {
+			};
+		},
+		computed:{
+			
+		},
+		methods:{
+			formatMargin(gutter){
+				return 0 + ' ' + gutter+'rpx';
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.box {
+		display: flex;
+		.item{
+			position: relative;
+			background-color: #FFFFFF;
+			height: 90upx;
+			width: 90upx;
+			flex-grow: 1;
+			flex-shrink: 0;
+			border: 1px solid #D9DCE0;
+			border-right: 0;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			&:nth-child(6) {
+				border-right: 1px solid #D9DCE0;
+			}
+			.circle{
+				width: 18rpx;
+				height: 18rpx;
+				border-radius: 50%;
+				background-color: #fff;
+				&.dot{
+					background-color: #000;
+				}
+			}
+		}
+	}
+
+	.fakecursor::after {
+		content: '';
+		display: block;
+		width: 1px;
+		height: 32rpx;
+		animation: blink 1s infinite steps(1, start);
+		position: absolute;
+		left: 50%;
+		top: 50%;
+		margin-top: -16rpx;
+	}
+
+	@keyframes blink {
+		0% {
+			background-color: white;
+		}
+
+		50% {
+			background-color: black;
+		}
+
+		100% {
+			background-color: white;
+		}
+	}
+</style>
diff --git a/pages/sub_medical/z_components/uni-popup/message.js b/pages/sub_medical/z_components/uni-popup/message.js
new file mode 100644
index 0000000..6688e84
--- /dev/null
+++ b/pages/sub_medical/z_components/uni-popup/message.js
@@ -0,0 +1,29 @@
+export default {
+	created() {
+		if (this.type === 'message') {
+			// 获取自组件对象
+			this.maskShow = false
+			this.children = null
+		}
+	},
+	created() {
+		if (this.type === 'message') {
+			// 不显示遮罩
+			this.maskShow = false 
+			// 获取子组件对象
+			this.childrenMsg = null
+		}
+	},
+	methods: {
+		customOpen() {
+			if (this.childrenMsg) {
+				this.childrenMsg.open()
+			}
+		},
+		customClose() {
+			if (this.childrenMsg) {
+				this.childrenMsg.close()
+			}
+		}
+	}
+}
diff --git a/pages/sub_medical/z_components/uni-popup/popup.js b/pages/sub_medical/z_components/uni-popup/popup.js
new file mode 100644
index 0000000..2a7f22f
--- /dev/null
+++ b/pages/sub_medical/z_components/uni-popup/popup.js
@@ -0,0 +1,25 @@
+import message from './message.js';
+// 定义 type 类型:弹出类型:top/bottom/center
+const config = {
+	// 顶部弹出
+	top:'top',
+	// 底部弹出
+	bottom:'bottom',
+	// 居中弹出
+	center:'center',
+	// 消息提示
+	message:'top',
+	// 对话框
+	dialog:'center',
+	// 分享
+	share:'bottom',
+}
+
+export default {
+	data(){
+		return {
+			config:config
+		}
+	},
+	mixins: [message],
+}
diff --git a/pages/sub_medical/z_components/uni-popup/popup.vue b/pages/sub_medical/z_components/uni-popup/popup.vue
new file mode 100644
index 0000000..26b166b
--- /dev/null
+++ b/pages/sub_medical/z_components/uni-popup/popup.vue
@@ -0,0 +1,112 @@
+<template>
+	<uni-popup ref="showtip" :mask-click="false" >
+		<view class="uni-tip">
+			<view class="uni-tip-icon-wrap"><img class="uni-tip-icon" src="~@/static/tip.svg"></view>
+			<text class="uni-tip-title">{{title}}</text>
+			<text class="uni-tip-content">{{content}}</text>
+			<view class="uni-tip-group-button">
+				<text class="uni-tip-button" @click="cancel">取消</text>
+				<text class="uni-tip-button uni-tip-button-confirm" @click="confirm">确定</text>
+			</view>
+		</view>
+	</uni-popup>
+</template>
+
+<script>
+import uniPopup from "@/components/uni-popup/uni-popup.vue"
+export default {
+	components: {uniPopup},
+	props:{
+		title:{
+			type: String,
+			default:''
+		},
+		content:{
+			type: String,
+			default:''
+		},
+		isShowPopup: {
+			type: Boolean,
+			default: false
+		}
+	},
+	data() {
+		return {
+			
+		}
+	},
+	onLoad() {
+		console.log('测试',this.isShowPopup)
+	},
+	watch:{
+		isShowPopup(val) {
+			val ? this.$refs.showtip.open() : this.$refs.showtip.close()
+			console.log('显示',val)
+		}
+	},
+	methods:{
+		cancel() {
+			this.$refs.showtip.close()
+		},
+		confirm() {
+			this.$emit('confirm')
+			this.$refs.showtip.close()
+		},
+	}
+}
+</script>
+
+<style scoped lang="scss">
+.uni-tip {
+	/* #ifndef APP-NVUE */
+	display: flex;
+	flex-direction: column;
+	/* #endif */
+	width: 570upx;
+	background-color: #fff;
+	border-radius: 12upx;
+	border: 1upx solid #D9DCE0;
+}
+.uni-pwd {
+	width: 630upx;
+}
+.uni-tip-icon-wrap {
+	text-align: center;
+}
+.uni-tip-icon {
+	text-align: center;
+	margin-top: 60upx;
+	width: 90upx;
+	height: 90upx;
+}
+.uni-tip-title {
+	margin-top: 30upx;
+	text-align: center;
+	font-weight: 500;
+	font-size: 34upx;
+	color: $uni-text-color;
+}
+.uni-tip-content {
+	padding: 31upx 40upx 60upx;
+	font-size: 30upx;
+	color: #6F737A;
+}
+.uni-tip-group-button {
+	/* #ifndef APP-NVUE */
+	display: flex;
+	/* #endif */
+	flex-direction: row;
+	border-top: 1upx solid #D9DCE0;
+}
+.uni-tip-button {
+	flex: 1;
+	text-align: center;
+	font-size: 32upx;
+	color: #3b4144;
+	padding: 29upx 0;
+}
+.uni-tip-button-confirm {
+	border-left: 1upx solid #D9DCE0;
+	color: #1574DF;
+}
+</style>
diff --git a/pages/sub_medical/z_components/uni-popup/uni-popup-dialog.vue b/pages/sub_medical/z_components/uni-popup/uni-popup-dialog.vue
new file mode 100644
index 0000000..c91123c
--- /dev/null
+++ b/pages/sub_medical/z_components/uni-popup/uni-popup-dialog.vue
@@ -0,0 +1,243 @@
+<template>
+	<view class="uni-popup-dialog">
+		<view class="uni-dialog-title">
+			<text class="uni-dialog-title-text" :class="['uni-popup__'+dialogType]">{{title}}</text>
+		</view>
+		<view class="uni-dialog-content">
+			<text class="uni-dialog-content-text" v-if="mode === 'base'">{{content}}</text>
+			<input v-else class="uni-dialog-input" v-model="val" type="text" :placeholder="placeholder" :focus="focus" >
+		</view>
+		<view class="uni-dialog-button-group">
+			<view class="uni-dialog-button" @click="close">
+				<text class="uni-dialog-button-text">取消</text>
+			</view>
+			<view class="uni-dialog-button uni-border-left" @click="onOk">
+				<text class="uni-dialog-button-text uni-button-color">确定</text>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	/**
+	 * PopUp 弹出层-对话框样式
+	 * @description 弹出层-对话框样式
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} value input 模式下的默认值
+	 * @property {String} placeholder input 模式下输入提示
+	 * @property {String} type = [success|warning|info|error] 主题样式
+	 *  @value success 成功
+	 * 	@value warning 提示
+	 * 	@value info 消息
+	 * 	@value error 错误
+	 * @property {String} mode = [base|input] 模式、
+	 * 	@value base 基础对话框
+	 * 	@value input 可输入对话框
+	 * @property {String} content 对话框内容
+	 * @property {Boolean} beforeClose 是否拦截取消事件
+	 * @event {Function} confirm 点击确认按钮触发
+	 * @event {Function} close 点击取消按钮触发
+	 */
+
+	export default {
+		name: "uniPopupDialog",
+		props: {
+			value: {
+				type: [String, Number],
+				default: ''
+			},
+			placeholder: {
+				type: [String, Number],
+				default: '请输入内容'
+			},
+			/**
+			 * 对话框主题 success/warning/info/error	  默认 success
+			 */
+			type: {
+				type: String,
+				default: 'error'
+			},
+			/**
+			 * 对话框模式 base/input
+			 */
+			mode: {
+				type: String,
+				default: 'base'
+			},
+			/**
+			 * 对话框标题
+			 */
+			title: {
+				type: String,
+				default: '提示'
+			},
+			/**
+			 * 对话框内容
+			 */
+			content: {
+				type: String,
+				default: ''
+			},
+			/**
+			 * 拦截取消事件 ,如果拦截取消事件,必须监听close事件,执行 done()
+			 */
+			beforeClose: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				dialogType: 'error',
+				focus: false,
+				val: ""
+			}
+		},
+		inject: ['popup'],
+		watch: {
+			type(val) {
+				this.dialogType = val
+			},
+			mode(val) {
+				if (val === 'input') {
+					this.dialogType = 'info'
+				}
+			},
+			value(val) {
+				this.val = val
+			}
+		},
+		created() {
+			// 对话框遮罩不可点击
+			this.popup.mkclick = false
+			if (this.mode === 'input') {
+				this.dialogType = 'info'
+				this.val = this.value
+			} else {
+				this.dialogType = this.type
+			}
+		},
+		mounted() {
+			this.focus = true
+		},
+		methods: {
+			/**
+			 * 点击确认按钮
+			 */
+			onOk() {
+				this.$emit('confirm', () => {
+					this.popup.close()
+					if (this.mode === 'input') this.val = this.value
+				}, this.mode === 'input' ? this.val : '')
+			},
+			/**
+			 * 点击取消按钮
+			 */
+			close() {
+				if (this.beforeClose) {
+					this.$emit('close', () => {
+						this.popup.close()
+					})
+					return
+				}
+				this.popup.close()
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-popup-dialog {
+		width: 300px;
+		border-radius: 15px;
+		background-color: #fff;
+	}
+
+	.uni-dialog-title {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding-top: 15px;
+		padding-bottom: 5px;
+	}
+
+	.uni-dialog-title-text {
+		font-size: 16px;
+		font-weight: 500;
+	}
+
+	.uni-dialog-content {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 5px 15px 15px 15px;
+	}
+
+	.uni-dialog-content-text {
+		font-size: 14px;
+		color: #6e6e6e;
+	}
+
+	.uni-dialog-button-group {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		border-top-color: #f5f5f5;
+		border-top-style: solid;
+		border-top-width: 1px;
+	}
+
+	.uni-dialog-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		height: 45px;
+	}
+
+	.uni-border-left {
+		border-left-color: #f0f0f0;
+		border-left-style: solid;
+		border-left-width: 1px;
+	}
+
+	.uni-dialog-button-text {
+		font-size: 14px;
+	}
+
+	.uni-button-color {
+		color: $uni-color-primary;
+	}
+
+	.uni-dialog-input {
+		flex: 1;
+		font-size: 14px;
+	}
+
+	.uni-popup__success {
+		color: $uni-color-success;
+	}
+
+	.uni-popup__warn {
+		color: $uni-color-warning;
+	}
+
+	.uni-popup__error {
+		color: $uni-color-error;
+	}
+
+	.uni-popup__info {
+		color: #909399;
+	}
+</style>
diff --git a/pages/sub_medical/z_components/uni-popup/uni-popup-message.vue b/pages/sub_medical/z_components/uni-popup/uni-popup-message.vue
new file mode 100644
index 0000000..a32bd00
--- /dev/null
+++ b/pages/sub_medical/z_components/uni-popup/uni-popup-message.vue
@@ -0,0 +1,116 @@
+<template>
+	<view class="uni-popup-message" :class="'uni-popup__'+[type]">
+		<text class="uni-popup-message-text" :class="'uni-popup__'+[type]+'-text'">{{message}}</text>
+	</view>
+</template>
+
+<script>
+	
+	/**
+	 * PopUp 弹出层-消息提示
+	 * @description 弹出层-消息提示
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} type = [success|warning|info|error] 主题样式
+	 *  @value success 成功
+	 * 	@value warning 提示
+	 * 	@value info 消息
+	 * 	@value error 错误
+	 * @property {String} message 消息提示文字
+	 * @property {String} duration 显示时间,设置为 0 则不会自动关闭
+	 */
+	
+	export default {
+		name: 'UniPopupMessage',
+		props: {
+			/**
+			 * 主题 success/warning/info/error	  默认 success
+			 */
+			type: {
+				type: String,
+				default: 'success'
+			},
+			/**
+			 * 消息文字
+			 */
+			message: {
+				type: String,
+				default: ''
+			},
+			/**
+			 * 显示时间,设置为 0 则不会自动关闭
+			 */
+			duration: {
+				type: Number,
+				default: 3000
+			}
+		},
+		inject: ['popup'],
+		data() {
+			return {}
+		},
+		created() {
+			this.popup.childrenMsg = this
+		},
+		methods: {
+			open() {
+				if (this.duration === 0) return
+				clearTimeout(this.popuptimer)
+				this.popuptimer = setTimeout(() => {
+					this.popup.close()
+				}, this.duration)
+			},
+			close() {
+				clearTimeout(this.popuptimer)
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.uni-popup-message {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		background-color: #e1f3d8;
+		padding: 10px 15px;
+		border-color: #eee;
+		border-style: solid;
+		border-width: 1px;
+	}
+	.uni-popup-message-text {
+		font-size: 14px;
+		padding: 0;
+	}
+
+	.uni-popup__success {
+		background-color: #e1f3d8;
+	}
+
+	.uni-popup__success-text {
+		color: #67C23A;
+	}
+
+	.uni-popup__warn {
+		background-color: #faecd8;
+	}
+
+	.uni-popup__warn-text {
+		color: #E6A23C;
+	}
+
+	.uni-popup__error {
+		background-color: #fde2e2;
+	}
+
+	.uni-popup__error-text {
+		color: #F56C6C;
+	}
+
+	.uni-popup__info {
+		background-color: #F2F6FC;
+	}
+
+	.uni-popup__info-text {
+		color: #909399;
+	}
+</style>
diff --git a/pages/sub_medical/z_components/uni-popup/uni-popup-share.vue b/pages/sub_medical/z_components/uni-popup/uni-popup-share.vue
new file mode 100644
index 0000000..4c11a13
--- /dev/null
+++ b/pages/sub_medical/z_components/uni-popup/uni-popup-share.vue
@@ -0,0 +1,165 @@
+<template>
+	<view class="uni-popup-share">
+		<view class="uni-share-title"><text class="uni-share-title-text">{{title}}</text></view>
+		<view class="uni-share-content">
+			<view class="uni-share-content-box">
+				<view class="uni-share-content-item" v-for="(item,index) in bottomData" :key="index" @click.stop="select(item,index)">
+					<image class="uni-share-image" :src="item.icon" mode="aspectFill"></image>
+					<text class="uni-share-text">{{item.text}}</text>
+				</view>
+
+			</view>
+		</view>
+		<view class="uni-share-button-box">
+			<button class="uni-share-button" @click="close">取消</button>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'UniPopupShare',
+		props: {
+			title: {
+				type: String,
+				default: '分享到'
+			}
+		},
+		inject: ['popup'],
+		data() {
+			return {
+				bottomData: [{
+						text: '微信',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-2.png',
+						name: 'wx'
+					},
+					{
+						text: '支付宝',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-8.png',
+						name: 'wx'
+					},
+					{
+						text: 'QQ',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/gird-3.png',
+						name: 'qq'
+					},
+					{
+						text: '新浪',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-1.png',
+						name: 'sina'
+					},
+					{
+						text: '百度',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-7.png',
+						name: 'copy'
+					},
+					{
+						text: '其他',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-5.png',
+						name: 'more'
+					}
+				]
+			}
+		},
+		created() {},
+		methods: {
+			/**
+			 * 选择内容
+			 */
+			select(item, index) {
+				this.$emit('select', {
+					item,
+					index
+				}, () => {
+					this.popup.close()
+				})
+			},
+			/**
+			 * 关闭窗口
+			 */
+			close() {
+				this.popup.close()
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.uni-popup-share {
+		background-color: #fff;
+	}
+	.uni-share-title {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: center;
+		height: 40px;
+	}
+	.uni-share-title-text {
+		font-size: 14px;
+		color: #666;
+	}
+	.uni-share-content {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding-top: 10px;
+	}
+	
+	.uni-share-content-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		flex-wrap: wrap;
+		width: 360px;
+	}
+	
+	.uni-share-content-item {
+		width: 90px;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		padding: 10px 0;
+		align-items: center;
+	}
+	
+	.uni-share-content-item:active {
+		background-color: #f5f5f5;
+	}
+	
+	.uni-share-image {
+		width: 30px;
+		height: 30px;
+	}
+	
+	.uni-share-text {
+		margin-top: 10px;
+		font-size: 14px;
+		color: #3B4144;
+	}
+	
+	.uni-share-button-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		padding: 10px 15px;
+	}
+	
+	.uni-share-button {
+		flex: 1;
+		border-radius: 50px;
+		color: #666;
+		font-size: 16px;
+	}
+	
+	.uni-share-button::after {
+		border-radius: 50px;
+	}
+</style>
diff --git a/pages/sub_medical/z_components/uni-popup/uni-popup.vue b/pages/sub_medical/z_components/uni-popup/uni-popup.vue
new file mode 100644
index 0000000..50434e6
--- /dev/null
+++ b/pages/sub_medical/z_components/uni-popup/uni-popup.vue
@@ -0,0 +1,187 @@
+<template>
+	<view v-if="showPopup" class="uni-popup">
+		<view :class="[ani, animation ? 'ani' : '', !custom ? 'uni-custom' : '']" class="uni-popup__mask" @click="close(true)" />
+		<view :class="[type, ani, animation ? 'ani' : '', !custom ? 'uni-custom' : '']" class="uni-popup__wrapper" @click="close(true)">
+			<view class="uni-popup__wrapper-box" @click.stop="clear">
+				<slot />
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'UniPopup',
+		props: {
+			// 开启动画
+			animation: {
+				type: Boolean,
+				default: true
+			},
+			// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
+			type: {
+				type: String,
+				default: 'center'
+			},
+			// 是否开启自定义
+			custom: {
+				type: Boolean,
+				default: false
+			},
+			// maskClick
+			maskClick: {
+				type: Boolean,
+				default: true
+			},
+			show: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			return {
+				ani: '',
+				showPopup: false
+			}
+		},
+		watch: {
+			show(newValue) {
+				if (newValue) {
+					this.open()
+				} else {
+					this.close()
+				}
+			}
+		},
+		created() {},
+		methods: {
+			clear() {},
+			open() {
+				this.$emit('change', {
+					show: true
+				})
+				this.showPopup = true
+				this.$nextTick(() => {
+					setTimeout(() => {
+						this.ani = 'uni-' + this.type
+					}, 30)
+				})
+			},
+			close(type) {
+				if (!this.maskClick && type) return
+				this.$emit('change', {
+					show: false
+				})
+				this.ani = ''
+				this.$nextTick(() => {
+					setTimeout(() => {
+						this.showPopup = false
+					}, 300)
+				})
+			}
+		}
+	}
+</script>
+<style>
+	@charset "UTF-8";
+
+	.uni-popup {
+		position: fixed;
+		top: 0;
+		top: 0;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		z-index: 99999;
+		overflow: hidden
+	}
+
+	.uni-popup__mask {
+		position: absolute;
+		top: 0;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		z-index: 998;
+		/* background: rgba(0, 0, 0, .4); */
+		opacity: 0
+	}
+
+	.uni-popup__mask.ani {
+		transition: all .3s
+	}
+
+	.uni-popup__mask.uni-bottom,
+	.uni-popup__mask.uni-center,
+	.uni-popup__mask.uni-top {
+		opacity: 1
+	}
+
+	.uni-popup__wrapper {
+		position: absolute;
+		z-index: 999;
+		box-sizing: border-box
+	}
+
+	.uni-popup__wrapper.ani {
+		transition: all .3s
+	}
+
+	.uni-popup__wrapper.top {
+		top: 0;
+		left: 0;
+		width: 100%;
+		transform: translateY(-100%)
+	}
+
+	.uni-popup__wrapper.bottom {
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		transform: translateY(100%)
+	}
+
+	.uni-popup__wrapper.center {
+		width: 100%;
+		height: 100%;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		transform: scale(1.2);
+		opacity: 0
+	}
+
+	.uni-popup__wrapper-box {
+		position: relative;
+		box-sizing: border-box
+	}
+
+	.uni-popup__wrapper.uni-custom .uni-popup__wrapper-box {
+		padding: 30upx;
+		background: #fff
+	}
+
+	.uni-popup__wrapper.uni-custom.center .uni-popup__wrapper-box {
+		position: relative;
+		max-width: 80%;
+		max-height: 80%;
+		overflow-y: scroll
+	}
+
+	.uni-popup__wrapper.uni-custom.bottom .uni-popup__wrapper-box,
+	.uni-popup__wrapper.uni-custom.top .uni-popup__wrapper-box {
+		width: 100%;
+		max-height: 500px;
+		overflow-y: scroll
+	}
+
+	.uni-popup__wrapper.uni-bottom,
+	.uni-popup__wrapper.uni-top {
+		transform: translateY(0)
+	}
+
+	.uni-popup__wrapper.uni-center {
+		transform: scale(1);
+		opacity: 1
+	}
+</style>
\ No newline at end of file
diff --git a/pages/sub_mine/accountSafe/index.vue b/pages/sub_mine/accountSafe/index.vue
index add45ed..afec07c 100644
--- a/pages/sub_mine/accountSafe/index.vue
+++ b/pages/sub_mine/accountSafe/index.vue
@@ -25,6 +25,7 @@
 					{name:"设置支付密码",icon:"pay",path:"/pages/sub_mine/changePayPwd/index"},
 					{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"},
 				]
 			}
 		},
diff --git a/pages/sub_mine/bindEmail/index.vue b/pages/sub_mine/bindEmail/index.vue
new file mode 100644
index 0000000..4fcbd70
--- /dev/null
+++ b/pages/sub_mine/bindEmail/index.vue
@@ -0,0 +1,162 @@
+<template>
+	<view class="bindEmail">
+		<view class="bindEmail-field">
+			<u-field v-model="email" label="邮箱" placeholder="请输入您的邮箱号" placeholder-style="color:#999999;font-family:PingFang-SC-Regular"
+			 label-width="160" clear-size="40"></u-field>
+			<u-field v-model="code" label="验证码" placeholder="请输入验证码" clear-size="40" placeholder-style="color:#999999"
+			 label-width="160" maxlength="6" type="number">
+				<u-button size="mini" slot="right" type="primary" @click="isHaveEmail?getcode('unbind'):getcode('bind')" shape="circle"
+				 :custom-style="btn" :disabled="isChecked">{{codeText}}</u-button>
+			</u-field>
+		</view>
+		<u-button class="bindEmail-btn" @click="isHaveEmail?unbind():bind()" :custom-style="isHaveEmail?cancel:confirm">{{isHaveEmail?'解除绑定':'绑定邮箱'}}</u-button>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				email: '',
+				confirm: {
+					width: '600rpx',
+					backgroundColor: '#2FA8E1',
+					color: '#FFFFFF',
+					fontFamily: "PingFang-SC-Medium",
+					fontSize: '30rpx',
+					marginTop: '100rpx',
+					padding: '50rpx 0'
+				},
+				cancel: {
+					width: '600rpx',
+					backgroundColor: '#fa3534',
+					color: '#FFFFFF',
+					fontFamily: "PingFang-SC-Medium",
+					fontSize: '30rpx',
+					marginTop: '100rpx',
+					padding: '50rpx 0'
+				},
+				isChecked: false,
+				codeText: '获取验证码',
+				btn: {
+					color: '#2FA8E1',
+					backgroundColor: '#FFFFFF',
+					borderColor: '#2FA8E1',
+					borderWidth: '1rpx',
+					borderStyle: 'solid',
+					fontFamily: "PingFang-SC-Regular"
+				},
+				code: '',
+				isHaveEmail: false
+			}
+		},
+		onLoad() {
+			let isHaveEmail = !!uni.getStorageSync('email')
+			this.email = uni.getStorageSync('email')
+			this.isHaveEmail = isHaveEmail
+		},
+		methods: {
+			bind() {
+				let that = this
+				let email = that.email
+				let code = that.code
+				let params = {
+					email,
+					code
+				}
+				if (!code || !email) {
+					uni.showToast({
+						title: '请输入验证码',
+						icon: 'none',
+					})
+				}
+				that.$u.post('/v1/email/bind', params).then(res => {
+					uni.showToast({
+						title: "绑定成功",
+						icon: "none",
+						duration: 800,
+						complete(res) {
+							setTimeout(() => {
+								uni.navigateBack({
+									delta: 1
+								})
+							}, 1500)
+						}
+					})
+				})
+			},
+			unbind() {
+				let that = this
+				let code = that.code
+				let params = {
+					code
+				}
+				if (!code) {
+					uni.showToast({
+						title: '请输入验证码',
+						icon: 'none',
+					})
+				}
+				that.$u.post('/v1/email/unbind', params).then(res => {
+					uni.showToast({
+						title: "解绑成功",
+						icon: "none",
+						duration: 800,
+						complete(res) {
+							uni.setStorageSync('email', '')
+							setTimeout(() => {
+								uni.navigateBack({
+									delta: 1
+								})
+							}, 1500)
+						}
+					})
+				})
+			},
+			getcode(type) {
+				let that = this
+				let reg = /^[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}$/;
+				let email = that.email
+				if (!reg.test(email)) {
+					uni.showToast({
+						title: '请输入正确的邮箱号',
+						icon: 'none',
+					})
+					return
+				}
+				let params = {
+					email,
+					type
+				}
+				that.$u.post('/v1/email/send', params).then(res => {
+					uni.showToast({
+						title: '发送成功,请去邮箱中获取验证码',
+						icon: "none",
+						duration: 800
+					})
+					let i = 120
+					that.isChecked = true
+					that.timer = setInterval(() => {
+						if (i != 0) {
+							i--
+							that.codeText = i + "s"
+						} else {
+							clearInterval(that.timer)
+							that.codeText = "重新获取"
+							that.isChecked = false
+						}
+					}, 1000)
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.bindEmail {
+		&-field {
+			margin-top: 30rpx;
+			background-color: #FFFFFF;
+		}
+	}
+</style>
diff --git a/pages/sub_mine/lock/index.vue b/pages/sub_mine/lock/index.vue
index 22886de..a2345f5 100644
--- a/pages/sub_mine/lock/index.vue
+++ b/pages/sub_mine/lock/index.vue
@@ -78,6 +78,7 @@
 					uni.setStorageSync("idno", res.idno)
 					uni.setStorageSync("cardno", res.citizenCardNo)
 					uni.setStorageSync("bankcardno", res.bankCardNo)
+					uni.setStorageSync("email", res.email)
 					if(res.needcheck){
 						uni.navigateTo({
 							url:'/pages/sub_basic/verification/index?data=' + JSON.stringify(params)
diff --git a/pages/sub_tabbar/index.vue b/pages/sub_tabbar/index.vue
index a2f261e..0851a76 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('')">
+				<view class="img-box" @click="toPath('/pages/sub_medical/appointment')">
 					<u-image src="/static/images/index/square.png" width="40rpx" height="40rpx" mode="aspectFit"></u-image>
 				</view>
 			</view>
@@ -141,8 +141,7 @@
 				}, ]
 			}
 		},
-		onShow() {
-		},
+		onShow() {},
 		methods: {
 			search(e) {
 				uni.showToast({
@@ -153,12 +152,19 @@
 			},
 
 			scan() {
+				// #ifdef APP-PLUS
 				let that = this
-				// #ifndef H5
-				// 只允许通过相机扫码
-				uni.scanCode({
-					success: function(res) {
-						let url = res.result
+				var ali = uni.requireNativePlugin("Mpaas-Scan-Module")
+				ali.mpaasScan({
+						// 扫码 UI 风格,参数可为 qr、bar,默认为 qr
+						'type': 'qr',
+						// 扫码识别类型,参数可多选,qrCode、barCode,不设置,默认识别所有
+						'scanType': ['qrCode'],
+						// 是否隐藏相册,默认false不隐藏
+						'hideAlbum': false
+					},
+					(ret) => {
+						let url = ret.resp_result
 						uni.showToast({
 							title: "扫描成功",
 							icon: "none",
@@ -167,35 +173,59 @@
 								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
+											// 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'
 											})
-											// #endif
+											setTimeout(() => {
+												wv.show()
+											}, 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', {
+												backButtonAutoControl: 'close',
+												additionalHttpHeaders: {
+													Authorization: 'Bearer ' + token
+												}
+											})
+											setTimeout(() => {
+												wv.show()
+											}, 1500)
 										}
 									} else {
 										uni.showToast({
@@ -207,17 +237,79 @@
 								})
 							}
 						})
-					}
-				});
+					})
 				// #endif
-				// #ifdef H5
-				uni.showToast({
-					icon: "none",
-					title: "H5不支持此功能",
-					duration: 1500
-				})
-				// #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 = [{
@@ -276,7 +368,7 @@
 			// #endif
 
 		},
-		async onPullDownRefresh(){
+		async onPullDownRefresh() {
 			await this.getActivityList()
 			uni.stopPullDownRefresh()
 		}
diff --git a/static/css/iconfont.css b/static/css/iconfont.css
index 4f09fdd..3568e25 100644
--- a/static/css/iconfont.css
+++ b/static/css/iconfont.css
@@ -1,6 +1,5 @@
 @font-face {font-family: "custom-icon";
-  src: 
-  url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2');
+  src:url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAABisAAsAAAAAKvwAABhdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCHGgrCPLUmATYCJAN0CzwABCAFhREHggsbYSMz0nJWS5eIKk0r+78c0DHGyF0so2VFpDZmM/A4tXHCt5JxwXwYLyZQSpPQpLMJhUuPy39bk2fH1G2FzV924/p+KCU84ZTfuyZd6aVN/prbTiRqTWVQYDQSZbHoftg/T3P2f+7MxCcCBPEgLfUE0dpEDLEItBuKeAslLFR8oIZoRfx32S2yfUhTW4Oq0MKKVrLrsMtPALQ5+8D/BAgwX2azmiwLw1Idu77LzkGAHJLDanH+p+5Vz/4OSMYC7QQr0DDnzhBALlmrtMpSgLCA9Pd2UFcqJSzdZxIcJHzwsIUmorbznRMu48T2el5lyXaBDgxBdoosKIzNAZ086B+uxksnrfgTWqA1Pzp+0/Hq5jQtwARCOjG0zBLW/l6nrlYRtqzAW+H2XtduS8f/vmT4kklSSHZyieKSwkoKVpjXAm+dAEfJDsklK0WYGEdetgzT3LFQc0bMWlzrApj4icUbjC3/zEU5K9HHxkhY5GcI4BixRK7uE43AxvISgosPWJwL7NgKW1AJxSwjvLVj8hkYFMlHbAj45H5ffrNRAQmp4eXu3St1AVAt1vVoR2yZDdQ2dwC0d2CAJWAhOSAeZQvjj5fciSOF7eKHs2aMJYzxGpELbyFmCBVlLg2TchWqrXQUHmptPxaW9FMnsuYcqpoj13u5LawZyUZzy1568Gce9Evo0MtQ0cljKcloqBnQxTGoR0ofYUhB1C0nUJAMnCuAPJFPQ2gxU+hHyw/SCCF0oHUSetG6CAZab6GCNiQoYgYED63MWBAKU4IomAzMQdAdc2FqoIIZAGqYLqCBccCEgA3KYXpABUwKqmH6wEoYAUfQzgFHIRTwAAeiXd3BdLvYIOTwo1AI+JPUzWzJ8JsD8AXcf/DfeMnn+S4rKRZjc5kwUSwNqV/foFRYEhLJDUxDUhlBmRssh8rUmO3erpDFON1lTeYkVpWIujgU9w2MqdX+MtjekRh6w0AIoyGGzu4YXVjqVb+RGNXoOiZGolf1w/4SR+X6+oLYLrU2hFo1LyOsM+8cVQ3ON9E3Zps6lGX3Iy+ovdp+5zp0rpgOoRzq/JlSl9Q3NmH/+1a9xrORjvFp8bXWtZTUjaVA2VDRdYftmTOAODAH+wdvYm++aoF6KefqzpBHVW5+dcX/QW6kNff1mgCyAsqPF5Ti89W64Y+a8lZ35wYZ+CCJRxM25B48ieZ7F43PhA5mAglBkciOsgkqn5yDxrTTOtxAij7TLmWjN2fu1FNxhMtwhVLQoGkxQbV1PwqgJQaeA0RnrxOEcFLqXMYfY/qtU/2F4Xz40xb26kt55tBja/6tjbGZe0MIACN3kM3urTXGK0yUCiTDr7UkNWnUzjsXBFQer9y3g/gDeS9SvEaxKauRpDKsCSpz/JrZu40LXgXL/DwsgwJBSW3mDiDoux1rHh6jMXSvW2olESBIgyreZ0oJwUK+IND4lkiiKY9UKkckmLtC/CAa/qhbKbTnPkETG/CD09/co7CAyp4JAgz2ZixUO1U0M4fLnjObNxCyYh4BiAXCrMkSqnC+5bEyKJNFaiuK7TvO2fhHLmjsJNaWEEZTZMTNXFNz9OZvbeBMa9+YgAldaOoWQ1sIYN/zhiumAphKDcKNeUMbyFhqVDT14RIT51FTheJhE2SxCKAZ0dmjuq315MYXkWUxSXlVLfrITpOBCvv101kFUiqV/zNqTYmIa/i4y+URoHPwA0CiqvZMU7rfv2NPsNBDFxLUegSZqmeSiDzWumsSHjmp0vAHk0Swhwgtq8qQdkYqewIW2FSpIzwCR/QMMUz5uguqvQ4fJJEQ7G+5GvsO3I+YQUwqvDd/GZY9d/kLA7EYSkitQioVvVmXCCJp5DKUGiSCfNYS1kAJpKho0qApXrJecqx3XDopxCOlxSQo+Xe3+wDHruWNhgm+7Ee7B9NADOTNFVN7OD9rY3nTjRCW9zaUOTt304MkVMFj9cVaSCUzhfAjail17NrCYiPlAuNiFFRehzHVSQhvBhBGINolkAKoRqw0j0m9I2U/tPrWX+9UsEZcLTam/e7/H9Fz9SP/PL1Tw0GpnGQxDRYxX9jxtsLI73O7//QDcu8v/4W/Uwzjf0V7V//wRajzd5/RPyIJ+uD31cjPscdLCHuyPtACuSwDsDmVfClZOIuSGlPliogQWMiUR2oaJcSPByaTR2EnX/RDqBAFlAojikT8/KlhjhezmBIMV0fLdrfAF28cKebo9PQia4nXkAHx8t9HtlGRzL/1DMRKu5rHmcwGyvMLZ0dgb0LtLbvn87OgsCMksuiMY0Em9CwYxdnmcjSDemtz9w5+3apHEGoQgMkNzGuQLiXCQGbvgjI+qhlNfs0qwTU7o0HmlM2hJSYC8REjzArYB2HuXlBhAH7Xv/O4ILZkhuJOQm+Uan/+MQVR+r8MvdIL15otEGhYsPWNPbMT7q5RPTU45gQd4SdTTld3ctL0IdadiLgawsjRMMLkrVbtHIdkAU+PPGxJh6Y/JmODOCO1+O6fNQ+iye4f9F1zzQFKFC8VytHugE2Be2/D2OPrDt1LRO8bhsR0NSy8XaQPfjezxMKtUYw7h3ZjkUdBCW3uPeJ+oJEb86PQMUEz9YgELbiWQYPKFsi00jGrJ23NCblpBa/mVIvJusJejvMemmYbDxsZHjrvjHcrb/Xv/OyTMTqXXMU3rv/mnzk2L6+h3lF7Rz/skdln3W7SBo1XP30eMl++//57ZzUmU3ZEblf6WONj64Yvf9Xbex3zby5fpovGcxTs3MQ6A7Egh0RMZrIxSJK8M9vZf8JKWpOIKfVs3rSk4B+VJDkgd8REmnuDVx40Lsyiy6lRhBFaseqMXR5Cnfd9tNEvIp17X/mTe9U6fexLy8RYSZnugA1KYYePwYIdgmAyiUpR72sSesNmgEnfm8BMugf55L02Mgi0JbBVCDMAcQgoRX9tvCTGdvgT83kdZopWpUHxB2MqiEZmLsyRBz/506J7hZx2CXxpQGFfn65AzZP5W2TKvvGxXsj03Yf0o6k/QsOvIH3JljAWvovAud/JF/0IQU/wJg2wTCrFW26n9kmNmkjvuvM3xmzWQNZ230Ipg/Lk3OXL8N0czsto8cW5+xriKFT87U+gMMJDWhQwj1cnJTS855mcbobl6wvQNjhgpNdPGXE4OxchDKYfI7MYelHlpi19G7xko/Cuv6NnzH09ZcHIuTTbzNenZZ6adhJ6tMXLn0Jmbzb2N3qKz4/pop7x0HIbdMyazfrNwxnhTr8h9Mx8knKZFxP/uuPVADcOHpiZSfym46TGgkqmv/u/X3s9zOHwvmY+LYR88RY+6gJBH2tKIQwVxw5eXdxABHn60DfXgjiHGivVv98hGQ/CXIEHsEEtkMdaMnC248yfb07ZeWS+bJHJK63WVuX7KXtoP20Ydd6YRw91Ik5yyhDb3QLNWXiE9zl0aPKiyW41D3hLbvY83p0TAKTxlJsMTrLdu2uUNo58z82LJl7Fp60o3TpGNA9mhzp3YbCjdwX8XoOQikPWfDgN+PtBispkQXyGH0vxaikngiA/CRUMPhYSxXw94gufhiooLfiU9HrA1fg6VcgYbHfneiepk7j4tJc7TAPl3TQ3zHZ8LWKn/1XZs8qzvmChiMlb/31L6RVgQAb6MWj8mxfKvyb+HYWxUwChX1+vvk7lRlVM5ZHouq+bczpST7VsK2j67YsybpNIxdUGdJjH1vI07f8oovcQkYxNsQRTAKwr3EmcosvrTnmUc+Lj26pjExNjyz3rYwsvC0zicJttBVnOXMt4XF4ZSbmKUS7YF3hWELuhpZbypCDeQVM2oHYcxo8/fXIMDzTo3jCkxNWrvhp8kfhicDBidn2JZa/X3q++GpJVyfGtlzq3YvJ3drYluaxqCKICNhwZ5r6B3gBeQC+Qrv6btmHxcNubNI1WTIp54mm8NK2WeMMdvhGamHRWPTm4Iv1A2BqPo0XNzeeEFCXH7ef4T+SKqVMV8gZhYbLw2PPjQXqhXA6OKpf6yfUhpq4YXt3otxX6vvEttGlqJvINabL1zehvG+TKfpFxB9u8H3hFljf80jAJQOL8pNFmHfUPrk1pObpjhLaJ8Mw4lNqSGbFu0vqIK1i5TqjPbInZLBLlRB4uTjlUdi0jou0r0kFuulBPjTxiIqzvWCLWO2ufrP0vJiDcylzB9IEDAj/L9pyIYYm9oXpuJLD0+KAnZWKBIq1BasaRoaLCgIxoaQUyREjNDSVBtRdRdV5oLr7u9Ol1mKIyolnYlN7kv2PEYPDzq3mjo/MEggfxkf39tPe/5eXtmLsmMJSapM/bXjSkjw9cvQZ6zhThDZ9+2oAbzZh4Q9FUp2K4CMVOX8vh6fOKsFXHjq7EhPTFYqvClpjxybj5EVvkNjRjyE3ETn588euL0OP9SpLKY6HWJY68/EKxzJydU/QXNGAsb9X5CP4e/gF/SquO5GI7Nv23zGS4utrHYE1f9ytqRpxieuTXXteuGwmu31EzP7Cy6lhb0v9KKlF/fMY7Mr4g+Q3QrLowwqTQ2vxmjap6DFVXUZuGYUv8TzxbmBdT2Y+qOFA489r0BZMudc12nZY5/QrkI1hc0vFBRBX2z+ZFSp9ID+M8ovbnwNprybHfR9huDsVwqrCxqlPSdFRWjgwYXr7hZIlfzVBo7SLv6l1QgPDs9ese/JFbyuTrivJ13JqBnJqfMowDjNNfurBWsVx88y9oXazRdd4fiJh7VhxJ0XmnxyeeyFV66k7gz5/hxxGzWdrgTbe00q7u50f8COZHb37IWv/RjPYkVp2gjqWbWtcwyefU1dCRqUp+RDQVezCDqX9elnln4tSqjkFDpI/SLa58PvufcTauka9aYvj4ElWJzm3xKWcuvH/K1SNv76oiUJ2vGnOuUvjrB6pgaJHebM5xNqnSrmSWQRackSvnqmz1pEoj79TA/68f2XJ9+c3EqMwDYCFO/vuyH+/DhS7o1V70EY9PYTLFW8CU2Zw4E9G1yc/gJJ7Kb8Zb0J7EXm2xvpe+l5ll1tdWh9TIyxlJR4K4toxl1bDAQz5pWyYaMQNm9SPjPEwDmkR5nKxepuLvFTgZ1SjLgjRInZWlBg1YspAaaSyWFwtYe3I4OUMHqPf88GqZSq42WmB9gi6hWqFSqBVHXPY/xpgHDTbdix7boDTp+ofpuxX+BVY1n2LVTzE5tQDBeuYmh2Ml31+IUoyMepQtkiSfW3VMYivu6bucefNR5SEY7p/fBx/NbZp/AA7XHOQcLqvKuOX95J/69lDP+lX1ET5+k2/+ttojtabhxq8QcyRcbA3Ad3h+/MTd7WmH5w48wKpl6XjqxuoZ1USl9uSKNorEZvPcM7pULkeXdB62C34Gk3i/PGfdHJ5QkRB+fEXEikRrsWJFfg3T+u5kSLBqxQ5llArOYn8gb7nfIpWRvGURncYlHUO8Ud4tj1tYYdmwD3jDvHnEc7KIfE7M4w2732fmdtmL7F1cneAd5DAZTr50f0kx5zV3DyIvojgQwb4LIAMQGKGO15xwAFU4PNHkwf45sXHlupn+eD3Vc/tyYOkMKf4cZMYbd2P+/jlxfOfaL5L4TJKGSc79ohYTxF898Jy8163zt2Jq0FXnOkgVU72EjuilirS6Yh13++0y+14hJdxrDw8L577lUby33LIjB0L7OK+4cWFxI2clu1ZawiyMtvGwcZDhNORodQxgtC/HV3UvEjgJbKYH3Mtm4zkAR8KjIrwBvCOiwoO/4h4pOcKdYk8GEpzeu9cZHd7ltNW0MsEIdPXQYefRMZ1uyRKttvwT/6kWvA12fyc1vHe8xbc9HtTIQpCMe4HnuKS8p7v7pWjcE7zGJ8OjlOSUbT09zx1h3Ktcr/9QieWSHBminF71SsC3vDPO3BIP38nHSZDsq/FRlZaqfDS+B7S+B/3O6aPy1Sbzne7OsyhoU7qJtldcvJ7v5O1kU9w1FGw4LKdNbBvbRMvrc1ElJM8fc1S+syAAQkcpiu/EB3NFDd08icCZPyORJCCUmYOUqiCzTOiCXG+aX/z5eL9pAcJLAQlO0b8Kyj99kSahxM15NrhWJWmf/yRCXiIZU/peengXEYHLiHDivTkVGcsqFLJYUkKJy3AlIWWxKhxHFOTCWfPduUtOsYf3V/AYp40U5MxjpKHM4RS32+9hGr4/MM2YxNDgEWpcz9CxzuxWbeFot8qubn/fMi14E5PvsuW/wpNxjbmn7xwMyVuBqOnS0Isd3a5e06/F7F/iqpinCDaUKXydO9/WNCacKPSVR87wev5pXcmuB8n3n4+E+YWN2GrsG6FCuEF0F8m+YUQhXCAIE9LCzFHpkTBBUCstDPcNF0r8hgGVrgIRi3BqtCqu6vb8VTIgYn0pO7GNsFMW12oc5SCGCPvuFSSQFtLOw3fF7jKTjjutkN86m+foaAGVihnLs5Or8sIgMij4BIapkrYn+/Usgm9axXLAUDKGzcDmw60FhJGSESaHVvE3gM7SqaKKyoceg5kvWs/gRr5udaEAw2IQfBqdjfR3XMTlYkAxGEbB35KvMYxxvR68VM1Ml8jlAWmWTAC1vGuZQt2tC+mS6Ucmqb2LvFWJYenc6d2nS/eU9qq9729gmwwGk/B/QsdULTy30soylpQaheeFptKSOM9mEZc1NRmRbI16IP/6d387RQkxYfvs/hjsD1kOq7/VwcLcZ3DCvep0gHdKqq0jNZUXcDr/nzjLbNLh4eCRqSkfX01J8QEgHZ4OEoAbaxndjDv0RrB1cxZtyyHNcR3Xcx0I5jZ/+0CjOrzPH1Qq3bJ674qwkLwpeZUxNCQ0NyR3ShyhDe8r+LkDARk/pchDPkRcVHviocaKnV6LCmpS5mddgoV408uaRCEeH2Tl9Yw93vON+JM8N3odc/bI1fE/19HMvE/E3+wRO+uPF2d6ScMsvvXXxEk/9e+Emx/ia/FNN7/eyTQadNETfvPDnT+lo6VLUS9PX1ruQktEhjA8S44yM0AOCkQ5gqQAOR68Y5ohUaL3s1r99JIEOOWf6KerrNT5Jfgbc0xTN2piL5lFP/9qjlTs0JpgP37nDt6u/QDo0Cqn17mXDQb/BD99pVXnlygZXs7p5XRmsYMyy/Vx3DWosSASp4w8cAOeUS1jvcMHeNFpuNUZTZy9Tm3gJvH0+Yt1ohOehdiWLVghyOctzj47gZy3lrBgVc+cVbF0yog1xzrqvn5WxUz1p2AomG7H6siC0t0pgd95+j9/uleaFoqSiouTkDh8bUKaU+WsXP7Tn6Wej1IDS3eRBbsP81hgyr7Z0C539ijpcdG9EDprsAQP6sxNljHNyDrawjtGFd0BXJASeGbXrHCpevIvHc4hyRKfJmF8ALT/2iNqu8XtwepC9rjM5lwI+nGKX3rT37bWdWL9y5mh+Yh8z7J3OFq7h528MYk3QoY2x5115CH+e5Ih5r23vueVkHZ3B6nQ1Llt1WhXuiNIK/twq7o6fmsOuNcBORYBNjj+/gcAAH+GfQvgoF3FaTdxAI1HJf6Lr8EZxjcF47ETnzhsduHUc/C6fkQ7Yx+e6ZhwrCe8qyReM4DLE++4iM8iB5qgSsuG/IBHND3zZSGtRp65L38DgcBxkGquAwDAbU0ApFvYj0h8wYgHkz9YW5EEACDasd8TP1eHxyiP7MenI3hFfdcV/SJxxX/VkSEbfb85WzjnTzaPgJdNLz0OL3JhPIH1TOg+BGzA8goQwP/QPBPuRjiyR8dLti9x356ZN/E13EOJY4KmDfTFxDoY9TQDyb5ICkIFAwCuMQLgf+giZ3jFpseVGtuEF2O0VAxYIEnFgQchFDE7jGLMnksxZ+tSuTAdDBfmgQusBxwQwQGAadB+SUXgBr2pGAjgXioObvCaImb/aWMsRjyKOTsglQtmFB0nDyajZq4SVgJeQLLmwlBQUFm3LETNhfwqfvRv0NXxpLcMtvxDysiBbLfeEiofIEBqziQf9b4UxVQiz+5rvjpwjliXqAVR1qaU7rDZKJLpWpDvLbhJwIudWTLNZVUUFJRRWSBqLg9FflX043yDro6n4g5Iyj8knUPp5DA7a1s66gGBadtkUZ2Pev+oFMVMLlUrZO6ZlsAZZcR05GgtiLJmKijdwUbqS9Fy6249/ihxbNB2X849XCJGrKSSSS6FlL8NPgEVL7U0Eop11FlX3fXUW1/9DTTYUMONGL/0HN0sVshlWd+wJSnlMMAjuG7mgB/hLetxZyjAKKMOY0caw7Djl4nCoCFNPeTMNYwbdC6PMlcwPVIVBtIMV/gR6cTdJBuqLY4ESRhczyMLqo4TNVQmgieJcuQYDVox0HmAcuw7muJlmkA5ns1IcQFjw4PMvR4AAA==') format('woff2')
 }
 
 .custom-icon {
@@ -11,6 +10,10 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.custom-icon-email:before {
+  content: "\e678";
+}
+
 .custom-icon-question:before {
   content: "\e60d";
 }
diff --git a/static/js/http.interceptor.js b/static/js/http.interceptor.js
index 89d1562..4087b6c 100644
--- a/static/js/http.interceptor.js
+++ b/static/js/http.interceptor.js
@@ -4,6 +4,7 @@
 		// baseUrl: 'https://yy.dlsmk.cn/payapi/mobileapi', // 大理智警域名 
 		baseUrl:'https://yy.dlsmk.cn/portal/mobileapi', //正式地址
 		// baseUrl:'http://yy.dlsmk.cn:8080/portal/mobileapi', //测试地址
+		// baseUrl:'/api',
 		// baseUrl: "http://172.28.43.20:8089/portal/mobileapi",//本地地址
 		// method: 'POST',
 		// 设置为json,返回后会对数据进行一次JSON.parse()
@@ -30,7 +31,8 @@
 		}
 		//console.log(config.url,config.header['Authorization'])
 		config.header["X-TENANT-ID"] = tenantid;
-		if (config.url == "/i/activity" || config.url == "/v1/feedback/release" || config.url == '/medicineapi/medicalcard/add') {
+		if (config.url == "/i/activity" || config.url == "/v1/feedback/release" 
+		|| config.url == '/medicineapi/medicalcard/add' || config.url == '/medicalapi/pay') {
 			config.header['content-type'] = "application/json";
 		} else {
 			config.header['content-type'] = "application/x-www-form-urlencoded";
@@ -87,6 +89,13 @@
 					// content: `${res.data.status}:${res.data.message}`,
 					showCancel: false,
 				})
+			}else{
+				uni.showModal({
+					title: "错误",
+					content: res.errMsg,
+					// content: `${res.data.status}:${res.data.message}`,
+					showCancel: false,
+				})
 			}
 			return false;
 		}