BOMTree.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.pm.bom.BOMTree', {
  3. extend: 'Ext.app.Controller',
  4. BaseUtil: Ext.create('erp.util.BaseUtil'),
  5. GridUtil: Ext.create('erp.util.GridUtil'),
  6. views:[
  7. 'pm.bom.BOMTree','common.query.Form','pm.bom.BOMTreeGrid','core.form.YnField',
  8. 'core.trigger.DbfindTrigger'
  9. ],
  10. init:function(){
  11. this.control({
  12. 'bomTreeGrid': {
  13. itemmousedown: function(selModel, record){
  14. if(record.data['bs_sonbomid'] > 0 && record.childNodes.length == 0){
  15. Ext.getCmp('querygrid').loadChildNodes(record);
  16. }
  17. }
  18. },
  19. 'button[name=export]':{
  20. beforerender:function(btn){
  21. btn.handler=function(){
  22. var grid = Ext.getCmp('querygrid');
  23. var main = parent.Ext.getCmp("content-panel");
  24. var title =main.getActiveTab().tabConfig.tooltip+ Ext.Date.format(new Date(), 'Y-m-d H:m:s');
  25. var columns = grid.columns,cm = new Array(),datas = new Array();
  26. Ext.Array.each(columns, function(c){
  27. if(!c.hidden && c.width > 0) {
  28. if(c.items && c.items.length > 0) {
  29. var items = c.items.items;
  30. Ext.Array.each(items, function(item){
  31. if(!item.hidden)
  32. cm.push({text: c.text.replace(/<br>/g, '\n') + '(' + item.text.replace(/<br>/g, '\n') + ')',
  33. dataIndex: item.dataIndex, width: item.width, xtype: item.xtype, format: item.format});
  34. });
  35. } else {
  36. cm.push({text: c.text.replace(/<br>/g, '\n'), dataIndex: c.dataIndex, width: c.width, xtype: c.xtype, format: c.format});
  37. }
  38. }
  39. });
  40. Ext.Array.each(grid.store.tree.root.childNodes, function(d){
  41. var dd = d.data;
  42. Ext.each(grid.columns, function(c){
  43. if(c.xtype == 'datecolumn'){
  44. c.format = c.format || 'Y-m-d';
  45. if(Ext.isDate(dd[c.dataIndex])){
  46. dd[c.dataIndex] = Ext.Date.format(dd[c.dataIndex], c.format);
  47. }
  48. } else if(c.xtype == 'datetimecolumn'){
  49. if(Ext.isDate(dd[c.dataIndex])){
  50. dd[c.dataIndex] = Ext.Date.format(dd[c.dataIndex], 'Y-m-d H:i:s');
  51. }
  52. } else if(c.xtype == 'numbercolumn'){
  53. if(Ext.isNumber(dd[c.dataIndex])){
  54. dd[c.dataIndex] = dd[c.dataIndex].toString();
  55. }
  56. }
  57. if(dd[c.dataIndex] == null) {
  58. dd[c.dataIndex] = '';
  59. }
  60. });
  61. datas.push(dd);
  62. });
  63. if (!Ext.fly('ext-grid-excel')) {
  64. var frm = document.createElement('form');
  65. frm.id = 'ext-grid-excel';
  66. frm.name = id;
  67. frm.className = 'x-hidden';
  68. document.body.appendChild(frm);
  69. }Ext.Ajax.request({
  70. url: basePath + 'common/excel/grid.xls',
  71. method: 'post',
  72. form: Ext.fly('ext-grid-excel'),
  73. isUpload: true,
  74. params: {
  75. datas: unescape(Ext.JSON.encode(datas).replace(/\\/g,"%")),
  76. columns: Ext.encode(cm),
  77. title: title
  78. }
  79. });
  80. };
  81. }
  82. }
  83. });
  84. }
  85. });