Recycle.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.common.Recycle', {
  3. extend: 'Ext.app.Controller',
  4. requires: ['erp.util.BaseUtil', 'erp.util.GridUtil', 'erp.util.FormUtil', 'erp.util.RenderUtil'],
  5. views: ['common.Recycle','core.form.MultiField','core.trigger.MultiDbfindTrigger','core.trigger.HrOrgTreeDbfindTrigger',
  6. 'core.form.MonthDateField',
  7. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField', 'core.trigger.CateTreeDbfindTrigger',
  8. 'core.grid.YnColumn'],
  9. init: function(){
  10. var me = this;
  11. me.BaseUtil = Ext.create('erp.util.BaseUtil');
  12. me.GridUtil = Ext.create('erp.util.GridUtil');
  13. me.FormUtil = Ext.create('erp.util.FormUtil');
  14. me.RenderUtil = Ext.create('erp.util.RenderUtil');
  15. this.control({
  16. 'panel[id=recycle_panel]': {
  17. afterrender: function(){
  18. me.getRecycles();
  19. }
  20. },
  21. '#export': {
  22. click: function() {
  23. var p = Ext.getCmp('recycle_panel'), grid = p.down('grid');
  24. if(grid)
  25. me.BaseUtil.exportGrid(grid);
  26. }
  27. }
  28. });
  29. },
  30. getRecycles: function(){
  31. var me = this;
  32. if(formCondition) {
  33. var p = Ext.getCmp('recycle_panel');
  34. var re_id = formCondition.replace(/IS/g, '=').split('=')[1];
  35. p.setLoading(true);
  36. Ext.Ajax.request({
  37. url: basePath + 'common/recycle/getRecycles.action',
  38. params: {
  39. id: re_id
  40. },
  41. method: 'post',
  42. callback: function(opt, s, r){
  43. p.setLoading(false);
  44. var res = Ext.decode(r.responseText);
  45. if(res.success) {
  46. var form = null,grid = null;
  47. if(res.formset) {
  48. form = me.createForm(res.formset, res.formdata);
  49. if(res.gridset) {
  50. grid = me.createGrid(res.gridset, res.griddata);
  51. }
  52. } else if(res.gridset) {
  53. grid = me.createGrid(res.gridset, res.griddata);
  54. }
  55. if(form) {
  56. if(!grid) {
  57. form.anchor = '100% 100%';
  58. }
  59. p.add(form);
  60. }
  61. if(grid) {
  62. if(!form) {
  63. grid.anchor = '100% 100%';
  64. }
  65. p.add(grid);
  66. }
  67. }
  68. }
  69. });
  70. }
  71. },
  72. createForm: function(set, data){
  73. data = Ext.decode(data);
  74. Ext.each(set.items, function(item){
  75. if(screen.width < 1280){//根据屏幕宽度,调整列显示宽度
  76. if(item.columnWidth > 0 && item.columnWidth <= 0.25){
  77. item.columnWidth = 1/3;
  78. } else if(item.columnWidth > 0.25 && item.columnWidth <= 0.5){
  79. item.columnWidth = 2/3;
  80. } else if(item.columnWidth >= 1){
  81. item.columnWidth = 1;
  82. }
  83. } else {
  84. if(item.columnWidth > 0.25 && item.columnWidth < 0.5){
  85. item.columnWidth = 1/3;
  86. } else if(item.columnWidth > 0.5 && item.columnWidth < 0.75){
  87. item.columnWidth = 2/3;
  88. }
  89. }
  90. item.fieldStyle = item.fieldStyle + ';background:#f1f1f1;';
  91. item.readOnly = true;
  92. if(item.name) {
  93. item.value = data[item.name] || data[item.name.toUpperCase()];
  94. }
  95. if(item.secondname){
  96. item.secondvalue = data[item.secondname.toUpperCase()];
  97. }
  98. if(item.xtype == 'checkbox' && item.value == 1){
  99. item.checked = true;
  100. }
  101. });
  102. return Ext.create('Ext.form.Panel', {
  103. id: 'form',
  104. anchor: '100% 50%',
  105. frame : true,
  106. title: set.title,
  107. layout : 'column',
  108. autoScroll : true,
  109. defaultType : 'textfield',
  110. labelSeparator : ':',
  111. buttonAlign : 'center',
  112. fieldDefaults : {
  113. margin : '2 2 2 2',
  114. fieldStyle : "background:#FFFAFA;color:#515151;",
  115. focusCls: 'x-form-field-cir',
  116. labelAlign : "right",
  117. msgTarget: 'side',
  118. blankText : $I18N.common.form.blankText
  119. },
  120. items: set.items,
  121. FormUtil: Ext.create('erp.util.FormUtil')
  122. });
  123. },
  124. createGrid: function(set, data){
  125. var columns = set.gridColumns, fields = set.gridFields, datas = new Array(),dd,me = this;
  126. Ext.each(data, function(d){
  127. d = Ext.decode(d);dd = new Object();
  128. Ext.each(fields, function(f){
  129. dd[f.name] = d[f.name.toUpperCase()];
  130. });
  131. datas.push(dd);
  132. });
  133. Ext.each(columns, function(column, y){
  134. if(!column.haveRendered && column.renderer != null && column.renderer != ""){
  135. var renderName = column.renderer;
  136. if(contains(column.renderer, ':', true)){
  137. var args = new Array();
  138. Ext.each(column.renderer.split(':'), function(a, index){
  139. if(index == 0){
  140. renderName = a;
  141. } else {
  142. args.push(a);
  143. }
  144. });
  145. if(!me.RenderUtil.args[renderName]){
  146. me.RenderUtil.args[renderName] = new Object();
  147. }
  148. me.RenderUtil.args[renderName][column.dataIndex] = args;
  149. }
  150. column.renderer = me.RenderUtil[renderName];
  151. column.haveRendered = true;
  152. }
  153. var logic = column.logic;
  154. if(logic != null){
  155. if(logic == 'detno'){
  156. column.width = 40;
  157. column.renderer = function(val, meta) {
  158. meta.tdCls = Ext.baseCSSPrefix + 'grid-cell-special';
  159. return val;
  160. };
  161. }
  162. }
  163. });
  164. return Ext.create('Ext.grid.Panel', {
  165. anchor: '100% 50%',
  166. layout : 'fit',
  167. id: 'grid',
  168. emptyText : $I18N.common.grid.emptyText,
  169. columnLines : true,
  170. autoScroll : true,
  171. RenderUtil: me.RenderUtil,
  172. store: Ext.create('Ext.data.Store', {
  173. fields: fields,
  174. data: datas
  175. }),
  176. columns: columns,
  177. bodyStyle:'background-color:#f1f1f1;'
  178. });
  179. }
  180. });