Detail.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  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.47:9520/api/school/curriculum/read',
  9. // _readUrl: '/api/school/curriculum/read',
  10. _saveUrl: 'http://10.1.80.47: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: 'textfield',
  27. name: 'name',
  28. fieldLabel: '课表名称'
  29. }, {
  30. xtype: 'numberfield',
  31. name: 'gradeId',
  32. fieldLabel: '年级ID',
  33. hidden: true
  34. }, {
  35. xtype: 'gradecombo',
  36. name: 'gradeName',
  37. fieldLabel: '年级',
  38. allowBlank: false,
  39. listeners: {
  40. select: function (combo, record, eOpts) {
  41. combo.up('form').getForm().findField('gradeId').setValue(record.get('value'));
  42. combo.up('form').getForm().findField('clazzId').setValue(null);
  43. combo.up('form').getForm().findField('clazzName').setValue(null);
  44. }
  45. }
  46. }, {
  47. xtype: 'numberfield',
  48. name: 'clazzId',
  49. fieldLabel: '班级ID',
  50. hidden: true
  51. }, {
  52. xtype: 'classcombo',
  53. name: 'clazzName',
  54. fieldLabel: '班级',
  55. allowBlank: false,
  56. listeners: {
  57. expand: function (combo, eOpts) {
  58. combo.store.clearFilter();
  59. var gradeCombo = combo.up('form').getForm().findField('gradeName');
  60. var gradeName = gradeCombo.getValue();
  61. var filter = new Ext.util.Filter({
  62. property: 'gradeName',
  63. value: gradeName
  64. });
  65. if (!!gradeName) {
  66. combo.store.setFilters([filter]);
  67. }
  68. },
  69. select: function (combo, record, eOpts) {
  70. combo.up('form').getForm().findField('clazzId').setValue(record.get('value'));
  71. combo.up('form').getForm().findField('gradeName').setValue(record.get('gradeName'));
  72. }
  73. }
  74. }, {
  75. xtype: 'textfield',
  76. name: 'termPart',
  77. fieldLabel: '学年',
  78. allowBlank: false
  79. }, {
  80. xtype: "textfield",
  81. name: "termName",
  82. fieldLabel: "学期",
  83. allowBlank: false
  84. }, {
  85. xtype: "textfield",
  86. name: "creatorName",
  87. fieldLabel: "录入人",
  88. defaultValue: school.util.BaseUtil.getCurrentUser().username,
  89. readOnly: true
  90. }, {
  91. xtype: 'datefield',
  92. name: 'createTime',
  93. fieldLabel: '录入时间',
  94. format: 'Y-m-d H:i:s',
  95. defaultValue: new Date(),
  96. readOnly: true
  97. }, {
  98. xtype: 'textfield',
  99. name: 'status',
  100. fieldLabel: '状态'
  101. }, {
  102. name: "timetable",
  103. xtype: "detailGridField",
  104. idColumn: 'id',
  105. detnoColumn: 'lessons',
  106. storeModel: 'school.model.Timetable',
  107. deleteDetailUrl: '/api/school/curriculum/deleteDetail',
  108. allowEmpty: true,
  109. showCount: false,
  110. emptyRows: 10,
  111. rowViewModel: {},
  112. columns: [{
  113. text: 'id',
  114. dataIndex: 'id',
  115. hidden: true
  116. }, {
  117. text: '时间段',
  118. xtype: 'widgetcolumn',
  119. width: 200,
  120. padding: 0,
  121. tdCls: 'x-period-column',
  122. getBindField: function(c) {
  123. return ['startTime', 'endTime']
  124. },
  125. widget: {
  126. xtype: 'container',
  127. style: {
  128. textAlign: 'center'
  129. },
  130. items: [{
  131. xtype: 'button',
  132. text: '0:00',
  133. bind: {
  134. text: '{record._timeText1}',
  135. },
  136. style: {
  137. margin: '5px',
  138. height: '22px',
  139. width: '74px',
  140. padding: 0
  141. },
  142. handler: function(btn) {
  143. me.currentRecord = btn.ownerCt.$widgetRecord;
  144. },
  145. menu: {
  146. xtype: 'menu',
  147. plain: true,
  148. items: [{
  149. xtype: 'timepicker',
  150. maxHeight: 300,
  151. increment: 5,
  152. format: 'H:i',
  153. minValue: Ext.Date.parse('08:00', 'H:i'),
  154. maxValue: Ext.Date.parse('22:00', 'H:i'),
  155. listeners: {
  156. select: function(model, record, index, eOpts) {
  157. me.onSelectPeriod0(this, this.up(), record);
  158. },
  159. }
  160. }]
  161. },
  162. }, {
  163. xtype: 'button',
  164. text: '0:00',
  165. bind: {
  166. text: '{record._timeText2}',
  167. },
  168. style: {
  169. margin: '5px',
  170. height: '22px',
  171. width: '74px',
  172. padding: 0
  173. },
  174. menu: {
  175. xtype: 'menu',
  176. plain: true,
  177. items: [{
  178. xtype: 'timepicker',
  179. maxHeight: 300,
  180. increment: 10,
  181. format: 'H:i',
  182. minValue: Ext.Date.parse('08:00', 'H:i'),
  183. maxValue: Ext.Date.parse('22:00', 'H:i'),
  184. listeners: {
  185. select: function(model, record, index, eOpts) {
  186. me.onSelectPeriod1(this, this.up(), record);
  187. },
  188. }
  189. }],
  190. listeners: {
  191. beforeshow: function(th, eOpts) {
  192. me.currentRecord = th.ownerCmp.ownerCt.$widgetRecord;
  193. let picker = th.down('timepicker');
  194. let startDate = me.currentRecord.get('_time1') || Ext.Date.parse('08:00', 'H:i');
  195. let minValue = Ext.Date.add(startDate, Ext.Date.MINUTE, me.MIN_WHILE);
  196. picker.setMinValue(minValue)
  197. },
  198. }
  199. },
  200. }]
  201. }
  202. }, {
  203. text: '星期一',
  204. dataIndex: 'mon',
  205. xtype: 'subjectcolumn'
  206. }, {
  207. text: '星期二',
  208. dataIndex: 'tues',
  209. xtype: 'subjectcolumn'
  210. }, {
  211. text: '星期三',
  212. dataIndex: 'wed',
  213. xtype: 'subjectcolumn'
  214. }, {
  215. text: '星期四',
  216. dataIndex: 'thur',
  217. xtype: 'subjectcolumn'
  218. }, {
  219. text: '星期五',
  220. dataIndex: 'fri',
  221. xtype: 'subjectcolumn'
  222. }, {
  223. text: '星期六',
  224. dataIndex: 'sat',
  225. xtype: 'subjectcolumn'
  226. }, {
  227. text: '星期日',
  228. dataIndex: 'sunday',
  229. xtype: 'subjectcolumn'
  230. }]
  231. }],
  232. });
  233. this.callParent();
  234. },
  235. onSelectPeriod0: function(picker, menu, record) {
  236. let me = this;
  237. me.currentRecord.set('startTime', Ext.Date.format(record.get('date'), 'H:i:s'));
  238. menu.setVisible(false);
  239. },
  240. onSelectPeriod1: function(picker, menu, record) {
  241. let me = this;
  242. me.currentRecord.set('endTime', Ext.Date.format(record.get('date'), 'H:i:s'));
  243. menu.setVisible(false);
  244. let classTime = Math.abs(Ext.Date.diff(me.currentRecord.get('_time1'), record.get('date'), Ext.Date.MINUTE));
  245. me.CLASS_TIME = classTime;
  246. },
  247. refresh: function() {
  248. Ext.StoreMgr.get('store_subject').load();
  249. }
  250. });