DeskTabPanel.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. Ext.require([
  2. 'erp.util.*'
  3. ]);
  4. Ext.define('erp.view.common.DeskTop.DeskTabPanel',{
  5. extend: 'Ext.tab.Panel',
  6. alias: 'widget.erpDeskTabPanel',//多列表tabpanel
  7. id:'desktabpanel',
  8. region: 'center',
  9. activeTab: 0,
  10. border: false,
  11. animScroll:true, //使用动画滚动效果
  12. layoutOnTabChange : true, //随着布局变化
  13. resizeTabs:true, // turn on tab resizing
  14. enableTabScroll : true, //tab标签超宽时自动出现滚动效果
  15. plain: true,
  16. BaseUtil: Ext.create('erp.util.BaseUtil'),
  17. initComponent : function(){
  18. this.callParent(arguments);
  19. },
  20. listeners: {
  21. 'add': function(t, p) {
  22. p.on('activate', function(){
  23. var grid = t.activeTab;
  24. caller=grid.caller;
  25. if(grid.firstPage){
  26. grid.firstPage=false;
  27. page=1;
  28. }
  29. else {
  30. page=grid.down('erpDatalistToolbar').child('#inputItem').getValue();
  31. }
  32. grid.lastSelected = grid.selModel.getSelection();//记录当前选中的record
  33. grid.getColumnsAndStore();
  34. });
  35. }
  36. },
  37. onGridItemClick: function(selModel, record){//grid行选择
  38. var me = this;
  39. var keyField= this.activeTab.keyField;
  40. var pfField= this.activeTab.pfField;
  41. if(keyField != null && keyField != ''){//有些datalist不需要打开明细表,这些表在datalist表里面不用配dl_keyField
  42. var value = record.data[keyField];
  43. var formCondition = keyField + "IS" + value ;
  44. var gridCondition = pfField + "IS" + value;
  45. var panel = Ext.getCmp(caller + keyField + "=" + value);
  46. var main = parent.Ext.getCmp("content-panel");
  47. if(!panel){
  48. var title = "";
  49. if (value.toString().length>4) {
  50. title = value.toString().substring(value.toString().length-4);
  51. } else {
  52. title = value;
  53. }
  54. var myurl = '';
  55. var url=basePath+this.activeTab.url;
  56. if(me.BaseUtil.contains(url, '?', true)){
  57. myurl = url + '&formCondition='+formCondition+'&gridCondition='+gridCondition;
  58. } else {
  59. myurl = url + '?formCondition='+formCondition+'&gridCondition='+gridCondition;
  60. }
  61. myurl += "&datalistId=" + main.getActiveTab().id;
  62. main.getActiveTab().currentStore = me.getCurrentStore(value);//用于单据翻页
  63. panel = {
  64. title : me.BaseUtil.getActiveTab().title+'('+title+')',
  65. tag : 'iframe',
  66. tabConfig:{tooltip:me.BaseUtil.getActiveTab().tabConfig.tooltip+'('+keyField + "=" + value+')'},
  67. frame : true,
  68. border : false,
  69. layout : 'fit',
  70. iconCls : 'x-tree-icon-tab-tab1',
  71. html : '<iframe id="iframe_maindetail_'+caller+"_"+value+'" src="' + myurl + '" height="100%" width="100%" frameborder="0" style="border-width: 0px;padding: 0px;" scrolling="auto"></iframe>',
  72. closable : true,
  73. listeners : {
  74. close : function(){
  75. main.setActiveTab(main.getActiveTab().id);
  76. }
  77. }
  78. };
  79. this.openTab(panel, caller + keyField + "=" + record.data[keyField]);
  80. }else{
  81. main.setActiveTab(panel);
  82. }
  83. }
  84. },
  85. openTab : function (panel,id){
  86. var o = (typeof panel == "string" ? panel : id || panel.id);
  87. var main = parent.Ext.getCmp("content-panel");
  88. if(!main) {
  89. main =parent.parent.Ext.getCmp("content-panel");
  90. }
  91. var tab = main.getComponent(o);
  92. if (tab) {
  93. main.setActiveTab(tab);
  94. } else if(typeof panel!="string"){
  95. panel.id = o;
  96. var p = main.add(panel);
  97. main.setActiveTab(p);
  98. }
  99. },
  100. getCurrentStore: function(value){
  101. var grid = this.activeTab;
  102. var keyField=grid.keyField;
  103. var items = grid.store.data.items;
  104. var array = new Array();
  105. var o = null;
  106. Ext.each(items, function(item, index){
  107. o = new Object();
  108. o.selected = false;
  109. if(index == 0){
  110. o.prev = null;
  111. } else {
  112. o.prev = items[index-1].data[keyField];
  113. }
  114. if(index == items.length - 1){
  115. o.next = null;
  116. } else {
  117. o.next = items[index+1].data[keyField];
  118. }
  119. var v = item.data[keyField];
  120. o.value = v;
  121. if(v == value)
  122. o.selected = true;
  123. array.push(o);
  124. });
  125. return array;
  126. }
  127. });