Ext.define('saas.view.auth.LoginController', { extend: 'Ext.app.ViewController', alias: 'controller.login', init: function() { this.callParent(arguments); }, onLoginButton: function() { var me = this, view = me.getView(), form = me.lookup('authdialog'), values = form.getValues(); view.mask('请稍等...'); saas.model.Session.login(values.username, values.password) .then(function(session) { view.isMasked() && view.unmask(); me.getViewModel().set('session', session); var cos = session.get("account").companies; if (cos && cos.length) { if (cos.length == 1) { session.get('account').companyId = cos[0].id; me.fireEvent('login', session); } else { Ext.create({ xtype: 'companypicker', viewModel: { stores: { companies: Ext.create('saas.store.Company', { data: cos }) } } }); } } else { me.fireEvent('login', session); } }) .catch(function(error) { view.isMasked() && view.unmask(); saas.util.BaseUtil.showToast(error.message); }); }, onWeixinLogin : function() { }, onNewAccount: function() { }, selectCompany: function(view, record) { var me = this, view = me.getView(), oldSession = me.getViewModel().get('session'), companyId = record.get('id'); view.mask('请稍等...'); saas.model.Session.switchCompany(oldSession, companyId) .then(function(newSession) { newSession.get('account').companyId = companyId; me.fireEvent('login', newSession); }) .catch(function(error) { saas.util.BaseUtil.showToast(error.message); }) .then(function() { view.isMasked() && view.unmask(); view.ownerCt.destroy(); }); } });