| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381 |
- /**
- * 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:'(分享后'+'<font style="color:#ff0000;">24小时</font>'+'内有效)'
- }]
- },{
- 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:'(分享后'+'<font style="color:#ff0000;">24小时</font>'+'内有效)'
- }]
- }]
- }]
- });
- win.show();
- }
- });
|