settings.vue 7.3 KB
Newer Older
芊里 已提交
1
<template>
L
23  
linju 已提交
2
	<view class="content">
3
		<!-- 功能列表 -->
DCloud_JSON's avatar
DCloud_JSON 已提交
4
		<uni-list class="mt10" :border="false">
5
			<uni-list-item title="个人资料" to="/pages/ucenter/userinfo/userinfo" link="navigateTo"></uni-list-item>
6 7 8
			<uni-list-item v-if="userInfo.mobile" title="修改密码" :to="'/pages/ucenter/login-page/pwd-retrieve/pwd-retrieve?phoneNumber='+ userInfo.mobile" link="navigateTo"></uni-list-item>
		</uni-list>
		<!-- #ifndef H5 -->
DCloud_JSON's avatar
DCloud_JSON 已提交
9
		<uni-list class="mt10" :border="false">
10 11 12 13 14 15 16
			<!-- #ifdef APP-PLUS -->
			<!-- 检查push过程未结束不显示,push设置项 -->
			<uni-list-item title="清理缓存" @click="clearTmp" link></uni-list-item>
			<uni-list-item v-if="pushIsOn != 'wait'" @click.native="openSetting()" title="推送功能" showSwitch :switchChecked="pushIsOn"></uni-list-item>
			<!-- #endif -->
			<uni-list-item v-if="supportMode.includes('fingerPrint')" title="指纹解锁" @click="startSoterAuthentication('fingerPrint')" link></uni-list-item>
			<uni-list-item v-if="supportMode.includes('facial')" title="人脸解锁" @click="startSoterAuthentication('facial')" link></uni-list-item>
17 18
		</uni-list>
		<!-- #endif -->
DCloud_JSON's avatar
重构  
DCloud_JSON 已提交
19 20
		
		<!-- 退出/登陆 按钮 -->
L
23  
linju 已提交
21
		<view class="bottom-back" @click="clickLogout">
22
			<text class="bottom-back-text" v-if="hasLogin">退出登录</text>
L
23  
linju 已提交
23 24
			<text class="bottom-back-text" v-else>登录</text>
		</view>
芊里 已提交
25 26 27 28
	</view>
</template>

<script>
L
23  
linju 已提交
29 30 31 32 33 34 35 36
	import {
		isOn,
		setting
	} from './dc-push/push.js';
	import {
		mapMutations,
		mapGetters
	} from 'vuex';
芊里 已提交
37 38
	export default {
		data() {
39 40 41
			return {
				supportMode:[],
				pushIsOn:"wait"
芊里 已提交
42
			}
L
23  
linju 已提交
43 44 45
		},
		computed: {
			...mapGetters({
46
				'userInfo': 'user/info',
47
				'hasLogin': 'user/hasLogin',
L
23  
linju 已提交
48
			})
芊里 已提交
49 50
		},
		onLoad() {
51 52 53 54 55 56 57
			// #ifdef APP-PLUS || MP-WEIXIN
			uni.checkIsSupportSoterAuthentication({
				success: (res) => {
					console.log(res);
					this.supportMode = res.supportMode
				},
				fail: (err) => {
58
					console.log(err);
59 60 61
				}
			})
			// #endif
芊里 已提交
62
		},
63 64 65 66 67 68
		onShow() {
			// 检查手机端获取推送是否开启
			//#ifdef APP-PLUS
			setTimeout(()=>{
				this.pushIsOn = isOn();
			},1)
DCloud_JSON's avatar
重构  
DCloud_JSON 已提交
69
			//#endif
芊里 已提交
70 71 72 73
		},
		methods: {
			...mapMutations({
				logout: 'user/logout'
L
23  
linju 已提交
74 75 76
			}),
			toEdit() {
				uni.navigateTo({
77
					url: '/pages/ucenter/userinfo/userinfo'
L
23  
linju 已提交
78 79 80 81
				});
			},
			changePwd() {
				uni.navigateTo({
82
					url: '/pages/ucenter/login-page/pwd-retrieve/pwd-retrieve?phoneNumber='
83
						+ (this.userInfo && this.userInfo.mobile ? this.userInfo.mobile : ''),
L
23  
linju 已提交
84 85 86 87 88 89 90
					fail: err => {
						console.log(err);
					}
				});
			},
			/**
			 * 开始生物认证
芊里 已提交
91
			 */
92
			startSoterAuthentication(checkAuthMode) {
93
				let title = {"fingerPrint":"指纹解锁","facial":"人脸解锁"}[checkAuthMode]
L
23  
linju 已提交
94
				// 检查是否开启认证
95
				this.checkIsSoterEnrolledInDevice({checkAuthMode,title})
L
23  
linju 已提交
96 97 98
					.then(() => {
						// 开始认证
						uni.startSoterAuthentication({
99
							checkAuthModes: [requestAuthMode],
L
23  
linju 已提交
100
							challenge: '123456', // 微信端挑战因子
DCloud_JSON's avatar
DCloud_JSON 已提交
101
							authContent: `请用${title}`,
L
23  
linju 已提交
102 103 104 105 106 107 108 109 110 111
							success: (res) => {
								if (res.errCode == 0) {
									/**
									 * 验证成功后开启自己的业务逻辑
									 * 
									 * app端以此为依据 验证成功
									 * 
									 * 微信小程序需要再次通过后台验证resultJSON与resultJSONSignature获取最终结果
									 */
									return uni.showToast({
DCloud_JSON's avatar
DCloud_JSON 已提交
112
										title: `${title}成功`,
L
23  
linju 已提交
113 114 115 116 117 118 119 120
										icon: 'none'
									});
								}
								uni.showToast({
									title: '认证失败请重试',
									icon: 'none'
								});
							},
121 122
							fail: (err) => {
								console.log(err);
L
23  
linju 已提交
123 124 125 126 127 128 129 130 131
								console.log(`认证失败:${err.errCode}`);
								uni.showToast({
									title: `认证失败`,
									icon: 'none'
								});
							}
						})
					})
			},
132
			checkIsSoterEnrolledInDevice({checkAuthMode,title}) {
L
23  
linju 已提交
133 134
				return new Promise((resolve, reject) => {
					uni.checkIsSoterEnrolledInDevice({
135
						checkAuthMode,
L
23  
linju 已提交
136 137 138 139 140
						success: (res) => {
							if (res.isEnrolled) {
								return resolve(res);
							}
							uni.showToast({
141
								title: `设备未开启${title}`,
L
23  
linju 已提交
142 143 144 145
								icon: 'none'
							});
							reject(res);
						},
146 147
						fail: (err) => {
							console.log(err);
L
23  
linju 已提交
148
							uni.showToast({
149
								title: `${title}失败`,
L
23  
linju 已提交
150 151 152 153 154
								icon: 'none'
							});
							reject(err);
						}
					})
芊里 已提交
155 156
				})
			},
L
23  
linju 已提交
157
			clickLogout() {
158
				if (this.hasLogin) {
L
23  
linju 已提交
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
					uni.showModal({
						title: '提示',
						content: '是否退出登录',
						cancelText: '取消',
						confirmText: '确定',
						success: res => {
							if (res.confirm) {
								this.logout();
								uni.navigateBack();
							}
						},
						fail: () => {},
						complete: () => {}
					});
				} else {
					uni.navigateTo({
175
						url: '/pages/ucenter/login-page/index/index'
L
23  
linju 已提交
176 177
					});
				}
178
			},
L
23  
linju 已提交
179 180 181 182
			clearTmp() {
				uni.showLoading({
					title: '清除中',
					mask: true
183 184 185 186 187 188 189 190 191 192 193
				});
				/*
				任何临时存储或删除不直接影响程序运行逻辑(清除缓存必定造成业务逻辑的变化,如:打开页面的图片不从缓存中读取而从网络请求)的内容都可以视为缓存。主要有storage、和file写入。
				缓存分为三部分		
					原生层(如:webview、x5播放器的、第三方sdk的、地图组件等)
					前端框架(重启就会自动清除)
					开发者自己的逻辑(如:
						本示例的 检测更新功能下载了apk安装包,
						其他逻辑需要根据开发者自己的业务设计
						比如:有聊天功能的应用,聊天记录是否视为缓存,还是单独提供清除聊天记录的功能由开发者自己设计

L
linju 已提交
194
				*/
L
23  
linju 已提交
195 196 197 198 199 200
				uni.getSavedFileList({
					success:res=>{
						if (res.fileList.length > 0) {
							uni.removeSavedFile({
								filePath: res.fileList[0].filePath,
								complete:res=>{
201 202 203 204 205
									console.log(res);
									uni.hideLoading()
									uni.showToast({
										title: '清除成功',
										icon: 'none'
L
linju 已提交
206
									});
L
23  
linju 已提交
207 208
								}
							});
209 210 211 212 213 214
						}else{
							uni.hideLoading()
							uni.showToast({
								title: '清除成功',
								icon: 'none'
							});
L
23  
linju 已提交
215
						}
216 217 218
					},
					complete:e=>{
						console.log(e);
L
23  
linju 已提交
219 220 221
					}
				});
			},
芊里 已提交
222 223 224
			/**
			 * 打开设置页面
			 */
225
			openSetting() {
DCloud_JSON's avatar
重构  
DCloud_JSON 已提交
226
				console.log('openSetting');
芊里 已提交
227 228 229 230 231 232 233 234 235 236 237 238 239
				setting();
			}
		}
	}
</script>

<style>
	/* #ifndef APP-NVUE */
	page {
		flex: 1;
		width: 100%;
		height: 100%;
	}
L
23  
linju 已提交
240 241 242 243 244 245

	uni-button:after {
		border: none;
		border-radius: 0;
	}

芊里 已提交
246 247 248 249
	/* #endif */
	.content {
		/* #ifndef APP-NVUE */
		display: flex;
L
23  
linju 已提交
250 251
		width: 750rpx;
		height: 100vh;
芊里 已提交
252 253
		/* #endif */
		flex-direction: column;
L
23  
linju 已提交
254 255
		flex: 1;
		background-color: #F9F9F9;
芊里 已提交
256 257 258
	}

	.bottom-back {
L
23  
linju 已提交
259
		margin-top: 10px;
芊里 已提交
260
		width: 750rpx;
L
23  
linju 已提交
261
		height: 44px;
芊里 已提交
262 263 264 265 266 267 268 269 270 271
		/* #ifndef APP-NVUE */
		display: flex;
		/* #endif */
		flex-direction: column;
		justify-content: center;
		align-items: center;
		/* #ifndef APP-NVUE */
		border: none;
		/* #endif */
		border-width: 0;
L
23  
linju 已提交
272 273
		border-radius: 0;
		background-color: #FFFFFF;
芊里 已提交
274 275 276
	}

	.bottom-back-text {
L
23  
linju 已提交
277 278 279
		font-size: 33rpx;
	}

280 281
	.mt10 {
		margin-top: 10px;
L
23  
linju 已提交
282 283 284 285 286 287
	}

	.content /deep/ .uni-list {
		background-color: #F9F9F9;
	}

288
	.content /deep/ .uni-list-item--disabled,.list-item {
289
		height: 50px;
290
		margin-bottom: 1px;
芊里 已提交
291
	}
DCloud_JSON's avatar
重构  
DCloud_JSON 已提交
292
</style>