Detail.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. Ext.define('school.view.interaction.timetable.Detail', {
  2. extend: 'school.view.core.form.FormPanel',
  3. xtype: 'interaction-timetable-detail',
  4. controller: 'interaction-timetable-detail',
  5. _title: '课程表',
  6. _idField: 'id',
  7. _codeField: null,
  8. // _readUrl: 'http://10.1.80.35:8560/api/sale/saledown/read',
  9. _readUrl: '/api/school/curriculum/read',
  10. // _saveUrl: 'http://10.1.80.36:9520/api/school/curriculum/save',
  11. _saveUrl: '/api/school/curriculum/save',
  12. _deleteUrl: '/api/school/curriculum/delete',
  13. initId: 0,
  14. cls: 'timetable',
  15. START_TIME: Ext.Date.parse('08:00', 'H:i'), // 开始上课时间
  16. END_TIME: Ext.Date.parse('22:00', 'H:i'), // 结束上课时间
  17. MIN_WHILE: 10, // 一节课最小时间(分钟)
  18. initComponent: function () {
  19. let me = this;
  20. Ext.apply(this, {
  21. defaultItems: [{
  22. xtype: 'hidden',
  23. name: 'id',
  24. fieldLabel: 'id'
  25. }, {
  26. xtype: 'numberfield',
  27. name: 'gradeId',
  28. fieldLabel: '年级(id)',
  29. allowBlank: false
  30. }, {
  31. xtype: 'numberfield',
  32. name: 'clazzId',
  33. fieldLabel: '班级(id)',
  34. allowBlank: false
  35. }, {
  36. xtype: 'textfield',
  37. name: 'creatorName',
  38. fieldLabel: '录入人'
  39. }, {
  40. xtype: 'datefield',
  41. name: 'createTime',
  42. fieldLabel: '录入时间',
  43. format: 'Y-m-d H:i:s'
  44. }, {
  45. xtype: 'textfield',
  46. name: 'status',
  47. fieldLabel: '状态'
  48. }, {
  49. xtype: 'textfield',
  50. name: 'code',
  51. fieldLabel: '课表编号'
  52. }, {
  53. xtype: "textfield",
  54. name: "termName",
  55. fieldLabel: "学期名称"
  56. }, {
  57. xtype: 'textfield',
  58. name: 'name',
  59. fieldLabel: '课表名称'
  60. }, {
  61. xtype: "datefield",
  62. name: "termStart",
  63. fieldLabel: "学期开始时间",
  64. format: 'Y-m-d'
  65. }, {
  66. xtype: 'datefield',
  67. name: 'termEnd',
  68. fieldLabel: '学期结束时间',
  69. format: 'Y-m-d'
  70. }, {
  71. xtype: 'numberfield',
  72. name: 'weekNum',
  73. fieldLabel: '周数'
  74. }, {
  75. name: "timetable",
  76. xtype: "detailGridField",
  77. idColumn: 'id',
  78. detnoColumn: 'lessons',
  79. storeModel: 'school.model.Timetable',
  80. deleteDetailUrl: '/api/school/curriculum/deleteDetail',
  81. allowEmpty: true,
  82. showCount: false,
  83. emptyRows: 10,
  84. rowViewModel: {},
  85. columns: [{
  86. text: 'id',
  87. dataIndex: 'id',
  88. hidden: true
  89. }, {
  90. text: '时间段',
  91. xtype: 'widgetcolumn',
  92. width: 200,
  93. padding: 0,
  94. tdCls: 'x-period-column',
  95. getBindField: function(c) {
  96. return ['startTime', 'endTime']
  97. },
  98. widget: {
  99. xtype: 'container',
  100. style: {
  101. textAlign: 'center'
  102. },
  103. items: [{
  104. xtype: 'button',
  105. text: '0:00',
  106. bind: {
  107. text: '{record._timeText1}',
  108. },
  109. style: {
  110. margin: '5px',
  111. height: '22px',
  112. width: '74px',
  113. padding: 0
  114. },
  115. handler: function(btn) {
  116. me.currentRecord = btn.ownerCt.$widgetRecord;
  117. },
  118. menu: {
  119. xtype: 'menu',
  120. plain: true,
  121. items: [{
  122. xtype: 'timepicker',
  123. maxHeight: 300,
  124. increment: 5,
  125. format: 'H:i',
  126. minValue: Ext.Date.parse('08:00', 'H:i'),
  127. maxValue: Ext.Date.parse('22:00', 'H:i'),
  128. listeners: {
  129. select: function(model, record, index, eOpts) {
  130. me.onSelectPeriod0(this, this.up(), record);
  131. },
  132. }
  133. }]
  134. },
  135. }, {
  136. xtype: 'button',
  137. text: '0:00',
  138. bind: {
  139. text: '{record._timeText2}',
  140. },
  141. style: {
  142. margin: '5px',
  143. height: '22px',
  144. width: '74px',
  145. padding: 0
  146. },
  147. menu: {
  148. xtype: 'menu',
  149. plain: true,
  150. items: [{
  151. xtype: 'timepicker',
  152. maxHeight: 300,
  153. increment: 10,
  154. format: 'H:i',
  155. minValue: Ext.Date.parse('08:00', 'H:i'),
  156. maxValue: Ext.Date.parse('22:00', 'H:i'),
  157. listeners: {
  158. select: function(model, record, index, eOpts) {
  159. me.onSelectPeriod1(this, this.up(), record);
  160. },
  161. }
  162. }],
  163. listeners: {
  164. beforeshow: function(th, eOpts) {
  165. me.currentRecord = th.ownerCmp.ownerCt.$widgetRecord;
  166. let picker = th.down('timepicker');
  167. let startDate = me.currentRecord.get('_time1') || Ext.Date.parse('08:00', 'H:i');
  168. let minValue = Ext.Date.add(startDate, Ext.Date.MINUTE, me.MIN_WHILE);
  169. picker.setMinValue(minValue)
  170. },
  171. }
  172. },
  173. }]
  174. }
  175. }, {
  176. text: '星期一',
  177. dataIndex: 'mon',
  178. xtype: 'subjectcolumn'
  179. }, {
  180. text: '星期二',
  181. dataIndex: 'tues',
  182. xtype: 'subjectcolumn'
  183. }, {
  184. text: '星期三',
  185. dataIndex: 'wed',
  186. xtype: 'subjectcolumn'
  187. }, {
  188. text: '星期四',
  189. dataIndex: 'thur',
  190. xtype: 'subjectcolumn'
  191. }, {
  192. text: '星期五',
  193. dataIndex: 'fri',
  194. xtype: 'subjectcolumn'
  195. }, {
  196. text: '星期六',
  197. dataIndex: 'sat',
  198. xtype: 'subjectcolumn'
  199. }, {
  200. text: '星期日',
  201. dataIndex: 'sunday',
  202. xtype: 'subjectcolumn'
  203. }]
  204. }],
  205. });
  206. this.callParent();
  207. },
  208. onSelectPeriod0: function(picker, menu, record) {
  209. let me = this;
  210. me.currentRecord.set('startTime', Ext.Date.format(record.get('date'), 'H:i:s'));
  211. menu.setVisible(false);
  212. },
  213. onSelectPeriod1: function(picker, menu, record) {
  214. let me = this;
  215. me.currentRecord.set('endTime', Ext.Date.format(record.get('date'), 'H:i:s'));
  216. menu.setVisible(false);
  217. let classTime = Math.abs(Ext.Date.diff(me.currentRecord.get('_time1'), record.get('date'), Ext.Date.MINUTE));
  218. me.CLASS_TIME = classTime;
  219. }
  220. });