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; } })