/** * This class is the controller for the main view for the application. It is specified as * the "controller" of the Main view class. */ Ext.define('saas.view.main.MainController', { extend: 'Ext.app.ViewController', alias: 'controller.main', init: function() { this.setCompanyMenu(); }, setCompanyMenu: function() { var me = this, view = me.getView(), viewModel = me.getViewModel(), account = viewModel.get('account'), companies = account && account.companies, companyMenu = view.lookup('mainprofile').getMenu(), items = []; if (companies) { items = companies.map(function(c){ return { text: c.name, value: c.id, handler: 'selectCompany', iconCls: c.id == account.companyId ? 'x-fa fa-check' : '' } }); } if(items.length > 1) { companyMenu.insert(0, items); viewModel.set('hasManyCompany', true); }else { viewModel.set('hasManyCompany', false); } }, onToggleNavigationSize: function () { var me = this, viewModel = me.getViewModel(), refs = me.getReferences(), navigationList = refs.navigationTreeList, navCollapsed = !navigationList.navCollapsed, new_width = navCollapsed ? viewModel.get('smallNavWidth') : viewModel.get('navWidth'), newLogoImgStyle = navCollapsed ? { width: 36, height: 36, top: 6, left: 12 } : { width: 32, height: 32, top: 8, left: 28 }, newLogoTextStyle = navCollapsed ? { 5: { opacity: 0 }, 10: { opacity: 0 }, 100: { opacity: 0, display: 'none' } } : { 10: { opacity: 0 }, 50: { opacity: 1 } }, newNavIconStyle = navCollapsed ? { marginLeft: 6, fontSize: 28 } : { marginLeft: 22, fontSize: 24 }, newNavTextStyle = navCollapsed ? { opacity: 0 } : { opacity: 1 }, ope = navCollapsed ? 'addCls' : 'removeCls', toggleIconCls = navCollapsed ? 'sa-arrows-right' : 'sa-arrows-left'; var mainLogo = refs.mainLogo; var logoImg = mainLogo.el.dom.getElementsByTagName('img')[0]; var logoText = mainLogo.el.dom.getElementsByClassName('logo-text')[0]; var navItems = navigationList.el.dom.getElementsByClassName('x-navitem'); var toggleIcon = Ext.getCmp('main-navigation-toggle-btn'); Ext.suspendLayouts(); toggleIcon.setIconCls('x-sa ' + toggleIconCls); mainLogo.animate({dynamic: true, duration: 500, to: {width: new_width}}); Ext.fly(logoImg).animate({dynamic: true, duration: 500, to: newLogoImgStyle}); Ext.fly(logoText).animate({dynamic: true, duration: 500, keyframes: newLogoTextStyle}); navigationList.body.animate({dynamic: true, duration: 500, to: {width: new_width}}); navigationList.animate({dynamic: true, duration: 500, to: {width: new_width}}); for(var i = 0; i < navItems.length; i++) { var item = navItems[i]; var icon = item.getElementsByClassName('nav-inner-icon')[0]; var text = item.getElementsByClassName('nav-inner-text')[0]; Ext.fly(icon).animate({dynamic: true, duration: 500, to: newNavIconStyle}); Ext.fly(text).animate({dynamic: true, duration: 500, to: newNavTextStyle}); } navigationList.el[ope]('nav-collapsed'); navigationList.navCollapsed = navCollapsed; Ext.resumeLayouts(true); }, selectCompany: function(item) { this.fireEvent('selectCompany', item.value); }, onLogout: function() { this.fireEvent('logout'); }, feedbackMsg:function(btn){ var me = this, win = Ext.getCmp("feedbackWin"); if (!win) { win = Ext.create('Ext.window.Window', { modal: true, draggable: false, resizable: false, id:"feedbackWin", height: 343, width: 756, title: '意见反馈', scrollable: true, constrain: true, closable: true, layout: 'fit', items: [{ xtype: 'sys-feedback-formpanel' }] }); }; win.show(); }, loadInvitationMsg: function(count,nowCompanyId) { var me = this.view;//视图层 var hasInvitationMsg = false; //查询后台 var param = [{ type:'condition', value:"re_status=2" },{ type:'condition', value:"companyId="+nowCompanyId }] Ext.Ajax.request({ url :'/api/commons/remind/apply/list', timeout: 8000, async:true, headers:{ 'Access-Control-Allow-Origin': '*', 'Authorization': saas.util.State.get('session').token, "Content-Type": 'application/json;charset=UTF-8' }, method: 'GET', params:{ condition:JSON.stringify(param) }, success: function(fp, o){ var res = Ext.decode(fp.responseText); me.InvitationList = res.data == null ?[]:res.data.list; if(res.data&&res.data.list.length>0){ hasInvitationMsg = true; }else{ hasInvitationMsg = false; } }, failure: function (response, opts) {} }); var s = me.items.items[0].down('[name=realname]') if(hasInvitationMsg){ s.getEl().dom.classList.add('x-header-redpoint') }else{ s.getEl().dom.classList.remove('x-header-redpoint') } if(count==1){ //打开加入邀请窗口 setTimeout(function() { me.getController().invitation(); }, 300); } setTimeout(function() { me.getController().loadInvitationMsg(count+1,nowCompanyId); }, 8000); }, invitation:function(){ var me = this; var data = me.view.InvitationList; if(data.length>0){ var items = [{ margin:'0 0 0 60px', xtype:'displayfield', fieldStyle : 'font-weight: 800;font-size: 18px;color: #35baf6;', value:'收到加入企业申请' }]; Ext.each(data, function(item, index){ if(index<3){ //最多3条 var o = { margin:'10 0 0 0', xtype:'panel', layout: 'hbox', style:'border:1px solid #34BAF6; padding-top: 3px;', items:[{ labelWidth:60, fieldLabel:'申请人', xtype:'displayfield', fieldStyle : 'color: black;', value:item.username },{ labelWidth:80, padding:'0 10 0 0', fieldLabel:'联系方式', xtype:'displayfield', fieldStyle : 'color: black;', value:item.mobile }] } items.push(o); } }); items.push({ width:128, margin:'20 0 0 70', xtype:'button', text:'查 看', handler:function(){ saas.util.BaseUtil.openTab('sys-invitation-datalist','申请列表', 'sys-invitation-datalist'); this.ownerCt.ownerCt.close() } }); var nowHeight = (items.length-2)*70+130; //打开邀请窗口 var win = Ext.create('Ext.window.Window', { cls:'x-window-dbfind', height: nowHeight, width: '45%', modal:true, title: '加入邀请', bodyPadding: 10, constrain: true, closable: true, layout: { type: 'vbox', align: 'center' }, items:[{ xtype:'panel', layout:'vbox', items:items }] }); win.show(); } }, shareCompany:function(){ //打开分享窗口 var win = Ext.create('Ext.window.Window', { cls:'x-window-dbfind', height: 415, width: 550, modal:true, title: '邀请同事', bodyPadding: 10, constrain: true, closable: true, layout: 'fit', items:[{ plain:true, xtype:'tabpanel', cls:'x-tab-shareTab', items:[{ title:'二维码邀请', xtype:'panel', layout: { type: 'vbox', align: 'center' }, items:[{ width:180, height:180, xtype: 'image', margin:'25 0 0 0', padding:'5', style:'border: 1px solid #000;', src:'resources/images/default/basePhoto.png', name:'QRcode', listeners:{ afterrender:function(f){ var companyName = document.getElementsByClassName('x-main-master')[0].getElementsByClassName('x-btn-inner x-btn-inner-header-small')[0].innerText; var serverOptions = Ext.manifest.server; var delay = 1;//天 var accountCenter = serverOptions.accountCenter; var basePath = serverOptions.basePath.https?serverOptions.basePath.https:serverOptions.basePath; Ext.Ajax.request({ url :basePath+'/api/commons/share/qrcode?basePath='+accountCenter+'&delay='+delay+'&companyName='+companyName, timeout: 8000, headers:{ 'Access-Control-Allow-Origin': '*', 'Authorization': saas.util.State.get('session').token, "Content-Type": 'application/json;charset=UTF-8' }, method: 'GET', responseType:'blob', success: function(fp, o){ var url = URL.createObjectURL(fp.responseBlob); f.setSrc(url) }, failure: function (response, opts) { saas.util.BaseUtil.showErrorToast('获取二维码失败'); } }); } } },{ xtype:'displayfield', value:'扫描二维码分享至微信/QQ' },{ xtype:'displayfield', value:'(分享后'+'24小时'+'内有效)' }] },{ title:'链接邀请', xtype:'panel', layout: { type: 'vbox', align: 'center' }, items:[{ margin:'60 0 0 0', xtype:'displayfield', value:'复制以下链接分享给好友' },{ xtype:'textfield', width:500, value:'暂无', listeners:{ afterrender:function(f){ var serverOptions = Ext.manifest.server; var accountCenter = serverOptions.accountCenter; var companyName = document.getElementsByClassName('x-main-master')[0].getElementsByClassName('x-btn-inner x-btn-inner-header-small')[0].innerText; var delay = 1; var basePath = serverOptions.basePath.https?serverOptions.basePath.https:serverOptions.basePath; Ext.Ajax.request({ url :basePath+'/api/commons/share/pc?basePath='+accountCenter+'&delay='+delay+'&companyName='+companyName, timeout: 8000, async:false, headers:{ 'Access-Control-Allow-Origin': '*', 'Authorization': saas.util.State.get('session').token, "Content-Type": 'application/json;charset=UTF-8' }, method: 'GET', success: function(response, o){ var res = Ext.decode(response.responseText); var url = res.data; f.setValue(url) }, failure: function (response, opts) { saas.util.BaseUtil.showErrorToast('获取分享地址失败'); } }); } } },{ margin:'10 0 0 0', width:110, xtype:'button', text:'复 制', handler:function(b){ var text = b.ownerCt.items.items[1].value; var target = Ext.DomHelper.append(document.body, { tag: 'textarea', style: 'opacity: 0;position: absolute;top: -10000px;right: 0;', html: text }); target.focus(); target.select(); document.execCommand('Copy'); target.blur(); document.body.removeChild(target); saas.util.BaseUtil.showSuccessToast('复制链接成功'); } },{ margin:'10 0 0 0', xtype:'displayfield', value:'(分享后'+'24小时'+'内有效)' }] }] }] }); win.show(); } });