|
@@ -25,11 +25,11 @@
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="remember-row" @click="rememberAccount = !rememberAccount">
|
|
|
|
|
- <view :class="['remember-checkbox', { checked: rememberAccount }]">
|
|
|
|
|
- <text v-if="rememberAccount" class="check-mark">✓</text>
|
|
|
|
|
|
|
+ <view class="remember-row" @click="rememberMe = !rememberMe">
|
|
|
|
|
+ <view :class="['remember-checkbox', { checked: rememberMe }]">
|
|
|
|
|
+ <text v-if="rememberMe" class="check-mark">✓</text>
|
|
|
</view>
|
|
</view>
|
|
|
- <text class="remember-label">记住账号</text>
|
|
|
|
|
|
|
+ <text class="remember-label">记住我</text>
|
|
|
</view>
|
|
</view>
|
|
|
<button class="login-btn" :loading="loading" :disabled="loading" @click="handleLogin">
|
|
<button class="login-btn" :loading="loading" :disabled="loading" @click="handleLogin">
|
|
|
<text v-if="!loading">立即登录</text>
|
|
<text v-if="!loading">立即登录</text>
|
|
@@ -91,20 +91,24 @@ const wechatLoading = ref(false);
|
|
|
const showBindInput = ref(false);
|
|
const showBindInput = ref(false);
|
|
|
const bindingCode = ref('');
|
|
const bindingCode = ref('');
|
|
|
const bindLoading = ref(false);
|
|
const bindLoading = ref(false);
|
|
|
-const rememberAccount = ref(false);
|
|
|
|
|
|
|
+const rememberMe = ref(false);
|
|
|
|
|
|
|
|
-const REMEMBERED_KEY = 'remembered_username';
|
|
|
|
|
|
|
+const REMEMBERED_KEY = 'remembered_login';
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
if (isLoggedIn()) {
|
|
if (isLoggedIn()) {
|
|
|
navigateHome();
|
|
navigateHome();
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- // 读取记住的账号
|
|
|
|
|
|
|
+ // 读取记住的账号和密码
|
|
|
const saved = uni.getStorageSync(REMEMBERED_KEY);
|
|
const saved = uni.getStorageSync(REMEMBERED_KEY);
|
|
|
if (saved) {
|
|
if (saved) {
|
|
|
- formData.username = saved;
|
|
|
|
|
- rememberAccount.value = true;
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ const data = JSON.parse(saved);
|
|
|
|
|
+ if (data.username) formData.username = data.username;
|
|
|
|
|
+ if (data.password) formData.password = data.password;
|
|
|
|
|
+ rememberMe.value = true;
|
|
|
|
|
+ } catch { /* ignore */ }
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
@@ -121,9 +125,12 @@ const handleLogin = async () => {
|
|
|
loading.value = true;
|
|
loading.value = true;
|
|
|
try {
|
|
try {
|
|
|
await login(formData);
|
|
await login(formData);
|
|
|
- // 记住/清除账号
|
|
|
|
|
- if (rememberAccount.value) {
|
|
|
|
|
- uni.setStorageSync(REMEMBERED_KEY, formData.username);
|
|
|
|
|
|
|
+ // 记住/清除账号和密码
|
|
|
|
|
+ if (rememberMe.value) {
|
|
|
|
|
+ uni.setStorageSync(REMEMBERED_KEY, JSON.stringify({
|
|
|
|
|
+ username: formData.username,
|
|
|
|
|
+ password: formData.password,
|
|
|
|
|
+ }));
|
|
|
} else {
|
|
} else {
|
|
|
uni.removeStorageSync(REMEMBERED_KEY);
|
|
uni.removeStorageSync(REMEMBERED_KEY);
|
|
|
}
|
|
}
|