SysUpdate.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.ma.SysUpdate', {
  3. extend : 'Ext.app.Controller',
  4. requires : [ 'erp.util.BaseUtil' ],
  5. views : [ 'ma.SysUpdate', 'core.form.FtDateField' ],
  6. refs : [ {
  7. ref : 'date',
  8. selector : '#date'
  9. }, {
  10. ref : 'title',
  11. selector : '#title'
  12. }, {
  13. ref : 'grid',
  14. selector : '#grid'
  15. }, {
  16. ref: 'paging',
  17. selector : '#grid > pagingtoolbar'
  18. }],
  19. init : function() {
  20. this.BaseUtil = Ext.create('erp.util.BaseUtil');
  21. var me = this;
  22. this.control({
  23. '#refresh' : {
  24. click : function(btn) {
  25. if (me.getPaging().fireEvent('beforechange', me.getPaging(), 1) !== false){
  26. me.search(0);
  27. }
  28. }
  29. },
  30. '#close' : {
  31. click : function() {
  32. this.BaseUtil.getActiveTab().close();
  33. }
  34. },
  35. '#date' : {
  36. afterrender : function(field) {
  37. field.setValues(me.getDateArea('m', -1), me.getDateArea('d', 0));
  38. }
  39. },
  40. '#grid' : {
  41. afterrender : function(grid) {
  42. grid.store.on('load', function(store, datas){
  43. me.getUpdateLog(store);
  44. });
  45. me.search(0);
  46. }
  47. },
  48. 'button' : {
  49. click : function(btn) {
  50. if (btn.param) {
  51. var a = btn.param[0], b = btn.param[2], m = btn.param[1], n = btn.param[3];
  52. me.getDate().setValues(me.getDateArea(a, m), me.getDateArea(b, n));
  53. if (me.getPaging().fireEvent('beforechange', me.getPaging(), 1) !== false){
  54. me.search(0);
  55. }
  56. }
  57. }
  58. },
  59. 'menuitem[name=item-find]': {
  60. click: function(m) {
  61. me.showPlan(m.ownerCt.record);
  62. }
  63. },
  64. 'menuitem[name=item-cover]': {
  65. click: function(m) {
  66. me.upgrade(m.ownerCt.record, 'COVER');
  67. }
  68. },
  69. 'menuitem[name=item-repair]': {
  70. click: function(m) {
  71. me.upgrade(m.ownerCt.record, 'REPAIR');
  72. }
  73. }
  74. });
  75. },
  76. getDateArea : function(type, val) {
  77. var today = new Date(), year = today.getFullYear(), month = today.getMonth(), day = today.getDate();
  78. if (type == 'd') {
  79. return new Date(year, month, day + val);
  80. } else if (type == 'm') {
  81. return new Date(year, month + val, val == 0 ? 1 : day);
  82. } else if (type == 'y') {
  83. return new Date(year + val, val == 0 ? 0 : month, val == 0 ? 1 : day);
  84. }
  85. },
  86. search : function(start) {
  87. var me = this, store = me.getGrid().store,
  88. condition = me.toUnicode(me.getCondition());
  89. me.getGrid().condition = condition;
  90. store.load({
  91. params : {
  92. start : start,
  93. limit : store.pageSize,
  94. condition : condition
  95. }
  96. });
  97. },
  98. getCondition : function() {
  99. var dateF = this.getDate(), title = this.getTitle().value, filter = {};
  100. if (dateF.value != null && dateF.value.length > 0) {
  101. filter.createDate = {"gted": dateF.firstItem.value.getTime(), "lted": dateF.secondItem.value.getTime() + 86399999};
  102. }
  103. if (title != null && title.length > 0) {
  104. filter.title = title;
  105. }
  106. return Ext.encode(filter);
  107. },
  108. toUnicode : function(s) {
  109. return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g, function() {
  110. return "\\u" + RegExp["$1"].charCodeAt(0).toString(16);
  111. });
  112. },
  113. getUpdateLog: function(store) {
  114. var plans = [];
  115. store.each(function(item){
  116. plans.push(item.get('id'));
  117. });
  118. Ext.Ajax.request({
  119. url: basePath + 'ma/upgrade/log.action',
  120. params: {
  121. planIds: plans.join(',')
  122. },
  123. callback: function(opts, success, response) {
  124. if(success) {
  125. var res = Ext.decode(response.responseText);
  126. Ext.each(res, function(d){
  127. var item = store.findRecord('id', d.plan_id);
  128. if(item) {
  129. item.set('install', true);
  130. item.set('install_version', d.version);
  131. item.set('install_date', d.install_date);
  132. }
  133. });
  134. }
  135. }
  136. });
  137. },
  138. upgrade: function(item, type) {
  139. var me = this;
  140. me.getGrid().setLoading(true);
  141. Ext.Ajax.request({
  142. url: basePath + 'ma/upgrade.action',
  143. params: {
  144. planId: item.get('id'),
  145. type: type || item.get('installType'),
  146. version: item.get('version')
  147. },
  148. timeout: 300000,
  149. callback: function(opts, success, response) {
  150. me.getGrid().setLoading(false);
  151. if(success && response.responseText == 'true') {
  152. showMessage('恭喜', '升级成功!');
  153. me.search(0);
  154. } else {
  155. showError('升级失败!');
  156. }
  157. }
  158. });
  159. },
  160. showPlan: function(item) {
  161. }
  162. });