/**
* 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();
}
});