You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
5.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import {accountManager} from "../../../js/utils";
const app = getApp();
Page({
data: {
eduImgDir: global.config.eduImgDir,
buttons:[{text:"删除",type:"warn"}]
},
onLoad: function (options) {
console.log("Load", Date.now());
this.refresh()
.then(res=>{
this.loaded = 1;
})
},
onShow(){
console.log("show", Date.now());
if(this.loaded)
this.refresh();
},
navBack(){
wx.navigateBack({
delta:1
});
},
refresh(){
console.log("start", Date.now());
this.setData({loading:1});
return app.syncUser()
.then(res=>{
if (this.oldNum!=null && accountManager.getAccounts().length>this.oldNum && !this.data.currentAccountSaved && this.currentAccount) {
// 增加了新账号,将未保存的老账号信息保存
accountManager.addAccount(this.currentAccount);
this.setData({ currentAccountSaved: 1 });
}
// 更新当前账号信息, 如果更改了信息,可以显示最新的信息 @todo 完善
let {user_id, image_url, show_name} = res.user;
if(show_name)
accountManager.updateAccount({user_id, image_url, name:show_name});
else
accountManager.updateAccount({ user_id, image_url });
let addedAccounts = accountManager.getAccounts();
var currentAccount = accountManager.getCurrentAccount();
var currentAccountSaved = 0;
if(res.user.user_id&&res.user.user_id!=2){
if(!currentAccount){
var currentAccount = { login: res.user.phone || res.user.email, password: "", save_password: 0, image_url: res.user.image_url, name: res.user.real_name||res.user.name, user_id: res.user.user_id};
accountManager.setCurrentAccount(currentAccount);
}
for (var account of addedAccounts){
if(account.user_id==currentAccount.user_id)
currentAccountSaved = 1;
}
if(!currentAccountSaved)
var accounts = [...addedAccounts, currentAccount];
else
var accounts = addedAccounts;
}else{
var accounts = addedAccounts;
}
this.accounts = accounts;
accounts = accounts.map(i=>{
return {user_id:i.user_id,name: i.name,login: i.login, image_url:i.image_url};
})
this.currentAccount = currentAccount;
this.setData({ accounts, user: {user_id }, currentAccountSaved,loading:0},()=>{
console.log("渲染完成", Date.now());
});
console.log("end", Date.now());
}).catch(e=>{
})
},
deleteAccount({user_id}){
accountManager.removeAccount({user_id});
if(this.data.user.user_id==user_id){
accountManager.clearCurrentAccount();
app.client.session.cookies = "";
app.client.synch = 0;
}
},
removeAccount2(e){
let { currentTarget: { dataset: { id: user_id } } } = e;
this.deleteAccount({user_id});
setTimeout(()=>{
this.refresh();
},300);
},
removeAccount1(e){
let { currentTarget: { dataset: { id: user_id } } } = e;
var info = this.data.user.user_id == user_id?'退出登录并移除':"移除此账号";
wx.showActionSheet({
itemList: [info],
success:res=>{
if(res.tapIndex==0){
this.deleteAccount({user_id});
this.refresh();
}
}
})
},
switchAccount(e){
let { currentTarget: {dataset: {id: user_id}}} = e;
if (user_id==this.data.user.user_id) return;
if (accountManager.getAccounts().length<5&&!this.data.currentAccountSaved&&this.currentAccount){
accountManager.addAccount(this.currentAccount);
this.setData({currentAccountSaved:1});
}
let account = this.accounts.filter(i=>i.user_id == user_id) [0];
if(!account.save_password){
this.navToAccount({login:account.login, message:"账号过期,需重新登录",login_disabled:1, msgType:"error"});
}else{
app.api("accounts.login")(account)
.then(res=>{
res.login = account.login; // 使用登录的手机号或邮箱而不是login字符
accountManager.updateAccount(res);
this.showMsg({message:"切换成功"});
accountManager.setCurrentAccount(account);
this.refresh();
}).catch(e=>{
accountManager.forgetPassword({user_id});
this.navToAccount({login:account.login, message:"账号过期,需重新登录",login_disabled:1, msgType:"error"});
})
}
},
navToAccount({login="", message="", msgType="info", login_disabled=""}={}){
wx.navigateTo({
url:`../account/account?nostorage=1&showMsg=1&message=${message}&msgType=${msgType}&msgDuration=0&&save_password=1&addaccount=1&login=${login}&login_disabled=${login_disabled}`
});
},
addAccount(){
this.oldNum = accountManager.getAccounts().length
if(this.oldNum>=5)
return wx.showToast({
title: '已达数量上限,无法添加',icon:"none"
})
this.navToAccount({message:"密码将在本地加密保存"});
},
showMsg({message,duration=800}){
if(this.timeoutId)
clearTimeout(this.timeoutId);
this.setData({ message, showMessage:1});
this.timeoutId = setTimeout(()=>{
this.hideMsg()
},duration);
},
hideMsg(){
this.setData({showMessage:0});
this.timeoutId = 0;
}
})