SchedulerResource.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. Ext.require([
  2. 'Sch.model.Resource',
  3. 'Sch.model.Event',
  4. ]);
  5. Ext.define('erp.view.oa.SchedulerResource',{
  6. extend: 'Ext.Viewport',
  7. layout: 'fit',
  8. hideBorders: true,
  9. initComponent : function(){
  10. var me = this;
  11. this.scheduler = this.createScheduler();
  12. this.populateScheduler();
  13. Ext.apply(me, {
  14. items: [{
  15. layout: 'fit',
  16. items: [this.scheduler]
  17. }]
  18. });
  19. me.callParent(arguments);
  20. },
  21. populateScheduler : function() {
  22. var me=this;
  23. Ext.Ajax.request({//拿到form的items
  24. url : basePath + 'oa/getSchedulerResourceData.action',
  25. params: {
  26. caller:caller
  27. },
  28. async:false,
  29. method : 'post',
  30. callback : function(options, success, response){
  31. var res = new Ext.decode(response.responseText);
  32. me.scheduler.resourceStore.loadData(res.res.resourcedata);
  33. console.log(res);
  34. me.scheduler.eventStore.loadData(res.res.schdata);
  35. }
  36. });
  37. },
  38. createScheduler : function() {
  39. var me=this;
  40. var Configs=me.getConfigs(caller);
  41. Ext.define('Resource', {
  42. extend : 'Sch.model.Resource',
  43. fields:Configs.resourceFields,
  44. idProperty:'ID'
  45. });
  46. Ext.define('Event', {
  47. extend : 'Sch.model.Event',
  48. resourceIdField : "RESOURCEID",
  49. startDateField : "STARTDATE",
  50. endDateField : "ENDDATE",
  51. fields:Configs.SchFields
  52. });
  53. // Store holding all the resources
  54. var resourceStore = Ext.create('Sch.data.ResourceStore', {
  55. model : 'Resource'
  56. });
  57. var eventStore = Ext.create('Sch.data.EventStore', {
  58. model : 'Event'
  59. });
  60. var startDate = Ext.Date.parse(Ext.Date.format(new Date(),"Y-m-d"), "Y-m-d");
  61. var endDate=Ext.Date.add(startDate,Ext.Date.DAY,1);
  62. var g = Ext.create("Sch.panel.SchedulerGrid", {
  63. height : 300,
  64. width : 1000,
  65. allowOverlap : false,
  66. viewPreset : 'hourAndDay',
  67. startDate :startDate,
  68. endDate : endDate,
  69. rowHeight : 25,
  70. loadMask : { store : eventStore },
  71. eventRenderer : function (event, resource, tplData, row, col, ds) {
  72. tplData.cls = 'evt-' + resource.get('Category');
  73. return event.get('Title');
  74. },
  75. resizeValidatorFn : function(resourceRecord, eventRecord, start, end) {
  76. if (eventRecord.get('Group') === 'min-one-day') {
  77. return Sch.util.Date.getDurationInDays(start, end) >= 1;
  78. }
  79. return true;
  80. },
  81. dndValidatorFn : function(dragEventRecords, targetRowRecord) {
  82. return targetRowRecord.get('Available');
  83. },
  84. // Setup your static columns
  85. columns :Configs.resourceColumns,
  86. viewConfig : {
  87. getRowClass : function(resourceRecord) {
  88. if (!resourceRecord.get('Available')) {
  89. return 'unavailable';
  90. }
  91. return '';
  92. }
  93. },
  94. resourceStore : resourceStore,
  95. eventStore : eventStore,
  96. border : true,
  97. tbar : [
  98. {
  99. iconCls : 'icon-prev',
  100. scale : 'medium',
  101. handler : function() {
  102. g.shiftPrevious();
  103. }
  104. },
  105. '->',
  106. {
  107. iconCls : 'icon-next',
  108. scale : 'medium',
  109. handler : function() {
  110. g.shiftNext();
  111. }
  112. }
  113. ],
  114. listeners : {
  115. beforedragcreate : function(s, resource) {
  116. if (!resource.get('Available')) {
  117. Ext.Msg.alert('Oops', "This machine is not available");
  118. return false;
  119. }
  120. },
  121. beforeeventdrag : function(s, r) {
  122. return r.get('Group') !== 'non-movable';
  123. },
  124. beforeeventresize : function(s, r) {
  125. if (r.get('Group') === 'non-resizable') {
  126. Ext.Msg.alert('Oops', "DOH!");
  127. return false;
  128. }
  129. }
  130. }
  131. });
  132. return g;
  133. },
  134. getConfigs:function (caller){
  135. var Object={};
  136. if(caller=='Meeting'){
  137. Object.resourceColumns=[{header : '会议室名称', sortable:true, width:150, dataIndex : 'MR_NAME', renderer : function(v, m, r) {
  138. m.tdCls = r.get('Category');
  139. return v;
  140. }}];
  141. Object.resourceFields=[{
  142. name:'ID'
  143. },{
  144. name:'MR_NAME'
  145. },{
  146. name:'MR_SITE'
  147. }];
  148. Object.SchFields=[{
  149. name:'ME_NAME'
  150. },{
  151. name:'ME_CODE'
  152. }];
  153. Object.DataFields=[{
  154. name:'ME_TITLE'},{
  155. name:'ma_starttime'},{
  156. name:'ma_endtime'}];
  157. }else if(caller=='VehicleapplyToVehiclereturn!Deal'){
  158. Object.resourceColumns=[{header : '车牌号码', sortable:true, width:150, dataIndex : 'VA_CARD', renderer : function(v, m, r) {
  159. m.tdCls = r.get('Category');
  160. return v;
  161. }}];
  162. Object.resourceFields=[{
  163. name:'ID'
  164. },{
  165. name:'VA_CARD'
  166. },{
  167. name:'VA_DRIVER'
  168. }];
  169. Object.SchFields=[{
  170. name:'VA_CARD'
  171. },{
  172. name:'VA_DRIVER'
  173. }];
  174. Object.DataFields=[{
  175. name:'VA_CARD'},{
  176. name:'vr_starttime'},{
  177. name:'vr_endtime'}];
  178. }
  179. return Object;
  180. }
  181. });