Commit 2b378729f4ca146acaac059156d922da7c861d26

Authored by gesilong
1 parent 9748025d

commit:记住密码功能

Showing 1 changed file with 63 additions and 1 deletions
@@ -17,6 +17,9 @@ @@ -17,6 +17,9 @@
17 <view class="input-item"> 17 <view class="input-item">
18 <input v-model="loginForm.password" type="password" class="input" placeholder="请输入密码" placeholder-style="color:#aaa;" maxlength="20" /> 18 <input v-model="loginForm.password" type="password" class="input" placeholder="请输入密码" placeholder-style="color:#aaa;" maxlength="20" />
19 </view> 19 </view>
  20 + <view class="remember-row">
  21 + <uni-data-checkbox v-model="rememberVal" :localdata="rememberOptions" :multiple="true" />
  22 + </view>
20 <view class="input-row" v-if="captchaEnabled"> 23 <view class="input-row" v-if="captchaEnabled">
21 <input v-model="loginForm.captcha" type="text" class="input" placeholder="请输入验证码" placeholder-style="color:#aaa;" maxlength="4" /> 24 <input v-model="loginForm.captcha" type="text" class="input" placeholder="请输入验证码" placeholder-style="color:#aaa;" maxlength="4" />
22 <image :src="codeUrl" @click="getCode" class="captcha-img" /> 25 <image :src="codeUrl" @click="getCode" class="captcha-img" />
@@ -48,8 +51,10 @@ export default { @@ -48,8 +51,10 @@ export default {
48 globalConfig: getApp().globalData.config, 51 globalConfig: getApp().globalData.config,
49 codeUrl: "", 52 codeUrl: "",
50 captchaEnabled: false, 53 captchaEnabled: false,
51 - agreeVal: [], 54 + agreeVal: ['1'],
52 agreeOptions: [{ text: '已预览并同意', value: '1' }], 55 agreeOptions: [{ text: '已预览并同意', value: '1' }],
  56 + rememberVal: [],
  57 + rememberOptions: [{ text: '记住密码', value: '1' }],
53 // 用户注册开关 58 // 用户注册开关
54 register: false, 59 register: false,
55 //默认登录账号和密码 60 //默认登录账号和密码
@@ -72,9 +77,53 @@ export default { @@ -72,9 +77,53 @@ export default {
72 } 77 }
73 }, 78 },
74 created() { 79 created() {
  80 + this.initRememberPwd()
75 this.getCode() 81 this.getCode()
76 }, 82 },
77 methods: { 83 methods: {
  84 + getAgreeChecked() {
  85 + return Array.isArray(this.agreeVal)
  86 + ? (this.agreeVal.includes('1') || this.agreeVal.length > 0)
  87 + : !!this.agreeVal
  88 + },
  89 + getRememberChecked() {
  90 + return Array.isArray(this.rememberVal)
  91 + ? (this.rememberVal.includes('1') || this.rememberVal.length > 0)
  92 + : !!this.rememberVal
  93 + },
  94 + initRememberPwd() {
  95 + const remember = uni.getStorageSync('login_remember_pwd')
  96 + const rememberChecked = remember === true || remember === '1' || remember === 1
  97 + this.rememberVal = rememberChecked ? ['1'] : []
  98 +
  99 + const username = uni.getStorageSync('login_username')
  100 + const password = uni.getStorageSync('login_password')
  101 + if (rememberChecked) {
  102 + if (username !== undefined && username !== null && username !== '') {
  103 + this.loginForm.username = username
  104 + }
  105 + if (password !== undefined && password !== null && password !== '') {
  106 + this.loginForm.password = password
  107 + }
  108 + } else {
  109 + if (username !== undefined && username !== null && username !== '') {
  110 + this.loginForm.username = username
  111 + }
  112 + }
  113 + },
  114 + persistRememberPwd() {
  115 + const username = (this.loginForm.username || '').trim()
  116 + const password = (this.loginForm.password || '').trim()
  117 + const rememberChecked = this.getRememberChecked()
  118 +
  119 + uni.setStorageSync('login_username', username)
  120 + uni.setStorageSync('login_remember_pwd', rememberChecked)
  121 + if (rememberChecked) {
  122 + uni.setStorageSync('login_password', password)
  123 + } else {
  124 + uni.removeStorageSync('login_password')
  125 + }
  126 + },
78 // 用户注册 127 // 用户注册
79 handleUserRegister() { 128 handleUserRegister() {
80 this.$tab.redirectTo('/pages/register') 129 this.$tab.redirectTo('/pages/register')
@@ -101,6 +150,10 @@ export default { @@ -101,6 +150,10 @@ export default {
101 }, 150 },
102 // 登录方法 151 // 登录方法
103 async handleLogin() { 152 async handleLogin() {
  153 + if (!this.getAgreeChecked()) {
  154 + this.$modal.msgError("请先勾选已预览并同意")
  155 + return
  156 + }
104 if (this.loginForm.username === "") { 157 if (this.loginForm.username === "") {
105 this.$modal.msgError("请输入您的账号") 158 this.$modal.msgError("请输入您的账号")
106 } else if (this.loginForm.password === "") { 159 } else if (this.loginForm.password === "") {
@@ -125,6 +178,7 @@ export default { @@ -125,6 +178,7 @@ export default {
125 }, 178 },
126 // 登录成功后,处理函数 179 // 登录成功后,处理函数
127 loginSuccess(result) { 180 loginSuccess(result) {
  181 + this.persistRememberPwd()
128 this.$tab.reLaunch('/pages/index') 182 this.$tab.reLaunch('/pages/index')
129 } 183 }
130 } 184 }
@@ -192,6 +246,14 @@ export default { @@ -192,6 +246,14 @@ export default {
192 } 246 }
193 .captcha-img { width: 200rpx; height: 88rpx; border-left: 1px solid #e5e7eb; } 247 .captcha-img { width: 200rpx; height: 88rpx; border-left: 1px solid #e5e7eb; }
194 248
  249 + .remember-row {
  250 + display: flex;
  251 + align-items: center;
  252 + color: rgba(0,0,0,0.9);
  253 + margin-top: -16rpx;
  254 + font-size: 28rpx;
  255 + }
  256 +
195 .agree-row { 257 .agree-row {
196 display: flex; 258 display: flex;
197 align-items: center; 259 align-items: center;