Ext.QuickTips.init();
Ext.define('erp.controller.mobile.Main', {
extend : 'Ext.app.Controller',
views : [ 'mobile.Main' ],
refs : [ {
ref : 'treeroot',
selector : '#treeroot'
} , {
ref : 'tab',
selector : 'tabpanel'
} , {
ref: 'card',
selector: '#card'
}],
init : function() {
Ext.MessageBox.cls = 'custom custom-box';
this.control({
'#logout': {
click: function() {
var me = this;
Ext.Msg.confirm("提示", "确定退出ERP系统?", function(btn){
if (btn == 'yes') {
me.logout();
}
});
}
},
'#treeroot' : {
afterrender : function() {
this.getTreeNode(0, 1);
},
itemclick: function(view, record, el, idx, e) {
if(record.get('leaf')) {
this.addPanel(record.get('text'), record.get('url'), record.get('id'));
} else {
var pid = Number(record.get('id'));
this.getTreeNode(pid, 2, record.get('text'));
}
}
},
'tabpanel': {
afterrender: function(tab) {
var me = this;
tab.addPanel = function(a, b, c) {
me.addPanel(a, b, c);
};
}
},
/* '#commonuse' : {
afterrender : function(view) {
this.getCommonUse(view);
},
itemclick: function(view, record, el, idx, e) {
this.addPanel(record.get('cu_description'), record.get('cu_url'), record.get('cu_snid'));
}
},*/
'#mychoice' : {
afterrender : function(view) {
var me = this;
setTimeout(function(){
me.getMyChoice(view);
}, 500);
},
itemclick: function(view, record, el, idx, e) {
var id = record.get('id');
if (id) {
var url = 'jsps/common/jtaketask.jsp?formCondition=jp_nodeIdIS' + id;
this.addPanel(record.get('taskname'), url, id);
}
}
},
'#myflow' : {
afterrender : function(view) {
var me = this;
setTimeout(function(){
me.getMyFlow(view);
}, 500);
},
itemclick: function(view, record, el, idx, e) {
var id = record.get('id');
if (id) {
var url = 'jsps/common/jprocessDeal.jsp?formCondition=jp_nodeIdIS' + id;
this.addPanel(record.get('taskname'), url, id);
}
}
},
/*'#mytask' : {
afterrender : function(view) {
var me = this;
setTimeout(function(){
me.getMyTask(view);
}, 500);
},
itemclick: function(view, record, el, idx, e) {
var id = record.get('id');
var url = 'jsps/plm/record/workrecord.jsp?formCondition=ra_idIS' + id + '&gridCondition=wr_raidIS' + id;
this.addPanel(record.get('taskname'), url, id);
}
},*/
'dataview[level=2]' : {
itemclick: function(view, record, el, idx, e) {
if(record.get('leaf')) {
this.addPanel(record.get('text'), record.get('url'), record.get('id'));
} else {
var pid = Number(record.get('id'));
this.getTreeNode(pid, 3, record.get('text'), record);
}
}
},
'dataview[level=3]' : {
itemclick: function(view, record, el, idx, e) {
if(record.get('leaf')) {
this.addPanel(record.get('text'), record.get('url'), record.get('id'));
} else {
var pid = Number(record.get('id'));
this.getTreeNode(pid, 4, record.get('text'), record);
}
}
},
'dataview[level=4]' : {
itemclick: function(view, record, el, idx, e) {
if(record.get('leaf')) {
view.up('window').hide();
this.addPanel(record.get('text'), record.get('url'), record.get('id'));
} else {
var pid = Number(record.get('id'));
this.getTreeNode(pid, 5, record.get('text'), record);
}
}
},
'dataview[level=5]' : {
itemclick: function(view, record, el, idx, e) {
if(record.get('leaf')) {
view.up('window').hide();
this.addPanel(record.get('text'), record.get('url'), record.get('id'));
}
}
}
});
},
setLoading : function(bool) {
var dom = document.getElementById('loading');
if (bool)
dom.style.display = 'block';
else
dom.style.display = 'none';
},
cacheStore: {},
getTreeNode : function(parentId, level, desc, record) {
if(level == 2) {
var p = Ext.getCmp(this.prefix + parentId);
if(p) {
this.addSecondCard(parentId);return;
}
}
if(level == 3) {
var nodes = this.cacheStore[parentId];
if(nodes) {
this.addThirdCard(parentId, nodes, record);return;
}
}
if(level == 4) {
var p = Ext.getCmp(this.prefix + parentId);
if(p) {
this.addForthWin(parentId);return;
}
}
if(level == 5) {
var nodes = this.cacheStore[parentId];
if(nodes) {
this.addFifthWin(parentId, nodes, record);return;
}
}
var me = this;
Ext.Ajax.request({
url : basePath + 'common/lazyTree.action',
params : {
parentId : parentId
},
callback : function(opt, s, r) {
me.setLoading(false);
var res = new Ext.decode(r.responseText);
if (res.tree) {
var tree = res.tree;
if(parentId == 0)
me.getTreeroot().store.loadData(tree);
else if(level == 2)
me.addSecondCard(parentId, tree, desc);
else if(level == 3)
me.addThirdCard(parentId, tree, record);
else if(level == 4)
me.addForthWin(parentId, tree, desc);
else if(level == 5)
me.addFifthWin(parentId, tree, record);
} else if (res.exceptionInfo) {
alert(res.exceptionInfo);
}
}
});
},
prefix: 'mob-node-',
addSecondCard: function(pid, nodes, desc) {
var me = this, p = Ext.getCmp(this.prefix + pid);
if(!p) {
p = Ext.create('Ext.container.Container', {
id: me.prefix + pid,
margin: '5 0 0 5',
layout: 'border',
height: 1000,
cls: 'custom',
items: [{
xtype: 'toolbar',
region: 'north',
margin: '5 0 0 0',
cls: 'custom-tb',
height: 40,
items: [desc, '->',{
text: '返回»',
cls: 'custom-button',
handler: function(btn){
var p = me.getCard().items.items[0];
if(p){
me.getCard().layout.setActiveItem(p);
} else {
btn.up('panel').hide();
}
}
}]
},{
xtype: 'container',
region: 'center',
layout: 'hbox',
height: 100000,
items: [{
xtype: 'dataview',
cls: 'datalist',
level: 2,
flex: 1,
itemSelector: '.custom-button',
overItemCls : 'tree-node-hover',
selectedItemCls : 'selected',
enableDragDrop: true,
tpl: Ext.create('Ext.XTemplate',
'',
'',
'{text}',
'
',
'',
'',
'{text}',
'
',
'',
''
),
store: new Ext.data.Store({
fields: ['text', 'parentId', {name: 'id', type: 'number'}, 'url', 'leaf']
}),
onItemSelect: function(record) {
var node = this.getNode(record);
if (node) {
Ext.fly(node).addCls(this.selectedItemCls);
}
},
onItemDeselect: function(record) {
var node = this.getNode(record);
if (node) {
Ext.fly(node).removeCls(this.selectedItemCls);
}
}
},{
xtype: 'dataview',
cls: 'datalist',
level: 3,
flex: 2,
itemSelector: '.custom-button',
overItemCls : 'tree-node-hover',
selectedItemCls : 'selected',
enableDragDrop: true,
tpl: Ext.create('Ext.XTemplate',
'',
'',
'{text}',
'
',
'',
'',
'{text}',
'
',
'',
''
),
store: new Ext.data.Store({
fields: ['text', 'parentId', {name: 'id', type: 'number'}, 'url', 'leaf']
}),
onItemSelect: function(record) {
var node = this.getNode(record);
if (node) {
Ext.fly(node).addCls(this.selectedItemCls);
}
},
onItemDeselect: function(record) {
var node = this.getNode(record);
if (node) {
Ext.fly(node).removeCls(this.selectedItemCls);
}
}
}]
}]
});
me.getCard().add(p);
p.down('dataview').store.loadData(nodes);
}
me.getCard().layout.setActiveItem(p);
},
addThirdCard: function(pid, nodes, record) {
var ca = this.getCard().layout.getActiveItem(),
view = ca.down('dataview[level=3]');
if(view) {
view.store.loadData(nodes);
this.cacheStore[pid] = nodes;
}
},
addForthWin: function(pid, nodes, desc) {
var me = this, p = Ext.getCmp(this.prefix + pid);
if(!p) {
p = Ext.create('Ext.Window', {
modal: true,
id: me.prefix + pid,
width: '100%',
height: '80%',
cls: 'custom',
title: desc,
closeAction: 'hide',
layout: 'anchor',
items: [{
xtype: 'container',
anchor: '100% 100%',
layout: 'hbox',
defaults: {
margin: '4 0 10 0'
},
autoScroll: true,
items: [{
xtype: 'dataview',
cls: 'datalist',
level: 4,
flex: 1,
itemSelector: '.custom-button',
overItemCls : 'tree-node-hover',
selectedItemCls : 'selected',
enableDragDrop: true,
tpl: Ext.create('Ext.XTemplate',
'',
'',
'{text}',
'
',
'',
'',
'{text}',
'
',
'',
''
),
store: new Ext.data.Store({
fields: ['text', 'parentId', {name: 'id', type: 'number'}, 'url', 'leaf']
}),
onItemSelect: function(record) {
var node = this.getNode(record);
if (node) {
Ext.fly(node).addCls(this.selectedItemCls);
}
},
onItemDeselect: function(record) {
var node = this.getNode(record);
if (node) {
Ext.fly(node).removeCls(this.selectedItemCls);
}
}
},{
xtype: 'dataview',
cls: 'datalist',
level: 5,
flex: 1,
itemSelector: '.custom-button',
overItemCls : 'tree-node-hover',
selectedItemCls : 'selected',
enableDragDrop: true,
tpl: Ext.create('Ext.XTemplate',
'',
'',
'{text}',
'
',
'',
'',
'{text}',
'
',
'',
''
),
store: new Ext.data.Store({
fields: ['text', 'parentId', {name: 'id', type: 'number'}, 'url', 'leaf']
}),
onItemSelect: function(record) {
var node = this.getNode(record);
if (node) {
Ext.fly(node).addCls(this.selectedItemCls);
}
},
onItemDeselect: function(record) {
var node = this.getNode(record);
if (node) {
Ext.fly(node).removeCls(this.selectedItemCls);
}
}
}]
}]
});
p.down('dataview[level=4]').store.loadData(nodes);
}
p.show();
},
addFifthWin: function(pid, nodes, record) {
var win = Ext.ComponentQuery.query('window[hidden=false]'),
view = win[0].down('dataview[level=5]');
if(view) {
view.store.loadData(nodes);
this.cacheStore[pid] = nodes;
}
},
logout : function() {
Ext.Ajax.request({
url : basePath + 'common/logout.action',
callback : function(opt, s, r) {
var data = Ext.decode(r.responseText);
if (data.success) {
document.location.href = basePath;
} else {
if (data.reason) {
Ext.Msg.alert(data.reason);
} else {
Ext.Msg.alert(data.exceptionInfo);
}
}
}
});
},
getCommonUse: function(view) {
Ext.Ajax.request({
url : basePath + 'common/getCommonUse.action',
method : 'get',
callback : function(opt, s, r){
var res = new Ext.decode(r.responseText);
if(res.exception || res.exceptionInfo){
alert(res.exceptionInfo);
return;
}
view.store.loadData(res.commonuse);
}
});
},
getMyChoice: function(view) {
Ext.Ajax.request({
url : basePath + 'common/datalist.action',
params: {
caller: 'JProCand',
condition: 'jp_candidate=\'' + em_code + '\' AND jp_status=\'待审批'+'\' AND jp_flag=1',
page: 1,
pageSize: 10,
_noc : 1
},
method : 'post',
callback : function(options,success,response){
var res = new Ext.decode(response.responseText);
if(res.exception || res.exceptionInfo){
return;
}
var task = res.data != null ? Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']')) : new Array();
if(task.length > 0){
var data = new Array();
Ext.Array.each(task, function(item){
item.id = item.jp_nodeId;
item.taskname = item.jp_form + " -> " + item.jp_nodeName;
item.status = item.jp_status;
item.type = '可选流程';
item.typecode = 'procand';
data.push(item);
});
view.store.loadData(data);
} else {
view.store.loadData([{status : '无'}]);
}
}
});
},
getMyFlow: function(view) {
Ext.Ajax.request({
url : basePath + 'common/datalist.action',
params: {
caller: 'JProcess!Me',
condition: '(jp_nodedealman=\'' + em_code + '\' AND jp_status=\'待审批'+'\') or (jp_launcherid=\'' + em_code + '\' AND jp_status=\'未通过'+'\') ',
page: 1,
pageSize: 10,
_noc : 1
},
method : 'post',
callback : function(options,success,response){
var res = new Ext.decode(response.responseText);
if(res.exception || res.exceptionInfo){
return;
}
var task = res.data != null ? Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']')) : new Array();
if(task.length > 0){
var data = new Array();
Ext.Array.each(task,function(item){
item.id = item.jp_nodeId;
item.taskname = item.jp_form + " -> " + item.jp_nodeName;
item.status = item.jp_status;
if(item.jp_status == '未通过'){
item.type = '未同意流程';
item.typecode = 'unprocess';
}else{
item.type = '待审批流程';
item.typecode = 'process';
}
data.push(item);
});
view.store.loadData(data);
} else {
view.store.loadData([{status : '无'}]);
}
}
});
},
getMyTask: function(view) {
Ext.Ajax.request({
url : basePath + 'common/datalist.action',
params: {
caller: 'ResourceAssignment',
condition: 'ra_emid=' + em_uu+' AND ra_statuscode!=\'FINISHED'+'\'',
page: 1,
pageSize: 10,
_noc : 1
},
method : 'post',
callback : function(options,success,response){
var res = new Ext.decode(response.responseText);
if(res.exception || res.exceptionInfo){
return;
}
var task = res.data != null ? Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']')) : new Array();
if(task.length > 0){
var data = new Array();
Ext.Array.each(task,function(item){
item.id = item.ra_id;
item.taskname = item.ra_taskname;
item.status = item.ra_status;
item.type = '工作任务';
item.typecode = 'worktask';
data.push(item);
});
view.store.loadData(data);
} else {
view.store.loadData([{status : '无'}]);
}
}
});
},
addPanel: function(text, url, id) {
var me = this;
var tab = me.getTab();
var p = Ext.getCmp(new String(id));
if(p) {
tab.setActiveTab(p);return;
}
if(Ext.isEmpty(url))
return;
url = this.parseUrl(url);
p = Ext.create('Ext.container.Container', {
id: new String(id),
title: text,
closable: true,
autoScroll: true,
html : '',
tabConfig: {tooltip: text},
setLoading: function(bool) {
me.setLoading(bool);
},
close: function() {
this.destroy();
},
listeners: {
resize: function(cmp, w, h, opt) {
var width = Ext.getBody().dom.clientWidth, height = Ext.getBody().dom.clientHeight;
var myWidth = (1 + (1366 - width)/1366)*100, myHeight = (1 + (768 - height)/768)*100;
if(width < height) {
myWidth*=1.6;
} else {
myHeight*=2;
}
var iframe = cmp.getEl().down('iframe');
iframe.dom.width = '' + myWidth + '%';
iframe.dom.height = '' + myHeight + '%';
}
}
});
tab.add(p);
tab.setActiveTab(p);
},
parseUrl: function(url){
if(url.indexOf('session:em_uu') != -1){
url = url.replace(/session:em_uu/, em_uu);
}
if(url.indexOf('session:em_code') != -1){
url = url.replace(/session:em_code/, "'" + em_code + "'");
}
if(url.indexOf('sysdate') != -1){
url = url.replace(/sysdate/, "to_date('" + Ext.Date.toString(new Date()) + "','Y-m-d')");
}
if(url.indexOf('session:em_name') != -1){
url = url.replace(/session:em_name/,"'"+em_name+"'" );
}
if(url.indexOf(basePath) == -1) {
url = basePath + url;
}
return url;
}
});