Detail.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  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: 'clazz_grade',
  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('clazz_id'));
  71. combo.up('form').getForm().findField('gradeName').setValue(record.get('clazz_grade'));
  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: 'combobox',
  99. name: 'status',
  100. fieldLabel: '状态',
  101. displayField: 'name',
  102. valueField: 'value',
  103. editable: false,
  104. readOnly: true,
  105. minChars: 0,
  106. queryMode: 'local',
  107. store: Ext.create('Ext.data.ArrayStore', {
  108. fields: ['name', 'value'],
  109. data: [['已生效', '1'], ['未生效', '0']]
  110. }),
  111. defaultValue: 0
  112. }, {
  113. name: "timetable",
  114. xtype: "detailGridField",
  115. idColumn: 'id',
  116. detnoColumn: 'lessons',
  117. storeModel: 'school.model.Timetable',
  118. deleteDetailUrl: '/api/school/curriculum/deleteDetail',
  119. allowEmpty: true,
  120. showCount: false,
  121. emptyRows: 10,
  122. rowViewModel: {},
  123. columns: [{
  124. text: 'id',
  125. dataIndex: 'id',
  126. hidden: true
  127. }, {
  128. text: '时间段',
  129. xtype: 'widgetcolumn',
  130. width: 200,
  131. padding: 0,
  132. tdCls: 'x-period-column',
  133. getBindField: function(c) {
  134. return ['startTime', 'endTime']
  135. },
  136. widget: {
  137. xtype: 'container',
  138. style: {
  139. textAlign: 'center'
  140. },
  141. items: [{
  142. xtype: 'button',
  143. text: '0:00',
  144. bind: {
  145. text: '{record._timeText1}',
  146. },
  147. style: {
  148. margin: '5px',
  149. height: '22px',
  150. width: '74px',
  151. padding: 0
  152. },
  153. handler: function(btn) {
  154. me.currentRecord = btn.ownerCt.$widgetRecord;
  155. },
  156. menu: {
  157. xtype: 'menu',
  158. plain: true,
  159. items: [{
  160. xtype: 'timepicker',
  161. maxHeight: 300,
  162. increment: 5,
  163. format: 'H:i',
  164. minValue: Ext.Date.parse('08:00', 'H:i'),
  165. maxValue: Ext.Date.parse('22:00', 'H:i'),
  166. listeners: {
  167. select: function(model, record, index, eOpts) {
  168. me.onSelectPeriod0(this, this.up(), record);
  169. },
  170. }
  171. }]
  172. },
  173. }, {
  174. xtype: 'button',
  175. text: '0:00',
  176. bind: {
  177. text: '{record._timeText2}',
  178. },
  179. style: {
  180. margin: '5px',
  181. height: '22px',
  182. width: '74px',
  183. padding: 0
  184. },
  185. menu: {
  186. xtype: 'menu',
  187. plain: true,
  188. items: [{
  189. xtype: 'timepicker',
  190. maxHeight: 300,
  191. increment: 10,
  192. format: 'H:i',
  193. minValue: Ext.Date.parse('08:00', 'H:i'),
  194. maxValue: Ext.Date.parse('22:00', 'H:i'),
  195. listeners: {
  196. select: function(model, record, index, eOpts) {
  197. me.onSelectPeriod1(this, this.up(), record);
  198. },
  199. }
  200. }],
  201. listeners: {
  202. beforeshow: function(th, eOpts) {
  203. me.currentRecord = th.ownerCmp.ownerCt.$widgetRecord;
  204. let picker = th.down('timepicker');
  205. let startDate = me.currentRecord.get('_time1') || Ext.Date.parse('08:00', 'H:i');
  206. let minValue = Ext.Date.add(startDate, Ext.Date.MINUTE, me.MIN_WHILE);
  207. picker.setMinValue(minValue)
  208. },
  209. }
  210. },
  211. }]
  212. }
  213. }, {
  214. text: '星期一',
  215. dataIndex: 'mon',
  216. xtype: 'subjectcolumn'
  217. }, {
  218. text: '星期二',
  219. dataIndex: 'tues',
  220. xtype: 'subjectcolumn'
  221. }, {
  222. text: '星期三',
  223. dataIndex: 'wed',
  224. xtype: 'subjectcolumn'
  225. }, {
  226. text: '星期四',
  227. dataIndex: 'thur',
  228. xtype: 'subjectcolumn'
  229. }, {
  230. text: '星期五',
  231. dataIndex: 'fri',
  232. xtype: 'subjectcolumn'
  233. }, {
  234. text: '星期六',
  235. dataIndex: 'sat',
  236. xtype: 'subjectcolumn'
  237. }, {
  238. text: '星期日',
  239. dataIndex: 'sunday',
  240. xtype: 'subjectcolumn'
  241. }]
  242. }],
  243. });
  244. this.callParent();
  245. },
  246. onSelectPeriod0: function(picker, menu, record) {
  247. let me = this;
  248. me.currentRecord.set('startTime', Ext.Date.format(record.get('date'), 'H:i:s'));
  249. menu.setVisible(false);
  250. },
  251. onSelectPeriod1: function(picker, menu, record) {
  252. let me = this;
  253. me.currentRecord.set('endTime', Ext.Date.format(record.get('date'), 'H:i:s'));
  254. menu.setVisible(false);
  255. let classTime = Math.abs(Ext.Date.diff(me.currentRecord.get('_time1'), record.get('date'), Ext.Date.MINUTE));
  256. me.CLASS_TIME = classTime;
  257. },
  258. refresh: function() {
  259. Ext.StoreMgr.get('store_grade').load();
  260. Ext.StoreMgr.get('store_class').load();
  261. Ext.StoreMgr.get('store_subject').load();
  262. }
  263. });