80 lines
2.1 KiB
JavaScript
80 lines
2.1 KiB
JavaScript
// pages/LoginOrOutDetails/LoginOrOutDetails.js
|
|
const api = require('../../utils/api');
|
|
const store = require('../../utils/store');
|
|
const config = require('../../config/index');
|
|
|
|
const app = getApp();
|
|
|
|
/** 未填昵称时自动生成,与旧版行为一致:用户 + 8 位小写字母数字 */
|
|
function randomNickname() {
|
|
const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
let s = '';
|
|
for (let i = 0; i < 8; i++) s += chars[Math.floor(Math.random() * chars.length)];
|
|
return '用户' + s;
|
|
}
|
|
|
|
Page({
|
|
data: {
|
|
userInfo: { avatarUrl: '', nickName: '' },
|
|
loginStatue: false,
|
|
LoginTag: '一键登录',
|
|
},
|
|
|
|
onLoad() {
|
|
app.ready().then(() => this.refresh());
|
|
},
|
|
|
|
onShow() {
|
|
this.refresh();
|
|
},
|
|
|
|
refresh() {
|
|
const user = store.getUser();
|
|
const registered = !!(user && user.nickname);
|
|
this.setData({
|
|
loginStatue: registered,
|
|
LoginTag: registered ? '退出登录' : '一键登录',
|
|
userInfo: {
|
|
avatarUrl: config.STATIC_BASE_URL + config.PLACEHOLDER.WECHAT,
|
|
nickName: registered ? user.nickname : '',
|
|
},
|
|
});
|
|
},
|
|
|
|
onLoginBtnClick() {
|
|
const nickname = this.data.userInfo.nickName || randomNickname();
|
|
wx.showLoading({ title: '请稍候', mask: true });
|
|
|
|
api
|
|
.updateMe({ nickname: nickname })
|
|
.then((user) => {
|
|
store.setUser(user);
|
|
wx.hideLoading();
|
|
wx.showToast({ title: '成功', icon: 'success', mask: true, duration: 1500 });
|
|
setTimeout(() => wx.switchTab({ url: '/pages/wode/wode' }), 1500);
|
|
})
|
|
.catch((err) => {
|
|
wx.hideLoading();
|
|
wx.showToast({ title: err.message || '登录失败', icon: 'none', mask: true });
|
|
});
|
|
},
|
|
|
|
onlogout() {
|
|
if (!this.data.loginStatue) return;
|
|
wx.showModal({
|
|
title: '提示',
|
|
content: '确定退出登录吗?',
|
|
confirmColor: '#ff0000',
|
|
success: (res) => {
|
|
if (!res.confirm) return;
|
|
wx.showLoading({ title: '请稍候', mask: true });
|
|
api.logout().then(() => {
|
|
wx.hideLoading();
|
|
wx.switchTab({ url: '/pages/wode/wode' });
|
|
});
|
|
},
|
|
});
|
|
},
|
|
});
|
|
|