Ext.define('school.view.interaction.timetable.Detail', { extend: 'school.view.core.form.FormPanel', xtype: 'interaction-timetable-detail', controller: 'interaction-timetable-detail', viewModel: 'interaction-timetable-detail', _title: '课程表', _idField: 'id', _codeField: null, // _readUrl: 'http://10.1.80.47:9520/api/school/curriculum/read', _readUrl: '/api/school/curriculum/read', // _saveUrl: 'http://10.1.80.47:9520/api/school/curriculum/save', _saveUrl: '/api/school/curriculum/save', _deleteUrl: '/api/school/curriculum/delete', initId: 0, cls: 'timetable', START_TIME: Ext.Date.parse('08:00', 'H:i'), // 开始上课时间 END_TIME: Ext.Date.parse('22:00', 'H:i'), // 结束上课时间 MIN_MIN_WHILE: 5, // 最小一节课时间(分钟) CLASS_TIME: 30, // 一节课时间(分钟) MIN_BREAK_TIME: 5, // 最小课间休息时间(分钟) BREAK_TIME: 5, // 课间休息时间(分钟) initComponent: function () { let me = this; Ext.apply(this, { defaultItems: [{ xtype: 'hidden', name: 'id', fieldLabel: 'id' }, { xtype: 'textfield', name: 'name', fieldLabel: '课表名称', columnWidth: 0.5, bind: { emptyText: '{name_emptyText}' } }, { xtype: 'numberfield', name: 'gradeId', fieldLabel: '年级ID', hidden: true }, { xtype: 'gradecombo', name: 'gradeName', fieldLabel: '年级', allowBlank: false, listeners: { select: function (combo, record, eOpts) { let viewModel = me.getViewModel(); viewModel.set('gradeId', record.get('grade_id')); viewModel.set('clazzId', null); viewModel.set('clazzName', null); } } }, { xtype: 'numberfield', name: 'clazzId', fieldLabel: '班级ID', hidden: true }, { xtype: 'classcombo', name: 'clazzName', fieldLabel: '班级', allowBlank: false, listeners: { expand: function (combo, eOpts) { combo.store.clearFilter(); var gradeCombo = combo.up('form').getForm().findField('gradeName'); var gradeName = gradeCombo.getValue(); var filter = new Ext.util.Filter({ property: 'clazz_grade', value: gradeName }); if (!!gradeName) { combo.store.setFilters([filter]); } }, select: function (combo, record, eOpts) { let viewModel = me.getViewModel(); viewModel.set('clazzId', record.get('clazz_id')); viewModel.set('gradeId', record.get('grade_id')); viewModel.set('gradeName', record.get('clazz_grade')); } } }, { xtype: 'combobox', name: 'termPart', fieldLabel: '学年', allowBlank: false, queryModel: 'local', displayField: 'value', valueField: 'value', store: Ext.create('Ext.data.ArrayStore', { fields: ['value'], data: (function() { let now = new Date(); let year = now.getFullYear(); let op = [], o1, o2; o1 = [(year - 1) + '-' + year]; o2 = [year + '-' + (year + 1)]; op.push(o1); op.push(o2); return op; })() }), defaultValue: (function() { let now = new Date(); let year = now.getFullYear(); let month = now.getMonth() + 1; let o1, o2; o1 = [(year - 1) + '-' + year]; o2 = [year + '-' + (year + 1)]; return (month < 9) ? o1[0] : o2[0] })() }, { xtype: "combobox", name: "termName", fieldLabel: "学期", allowBlank: false, queryModel: 'local', displayField: 'value', valueField: 'value', store: Ext.create('Ext.data.ArrayStore', { fields: ['value'], data: [['第一学期'], ['第二学期']] }), defaultValue: (function() { let now = new Date(), month = now.getMonth() + 1, date = now.getDate(), term; if((month > 2 && month < 8) || (month == 2 && date > 15) || (month == 8 && date < 15)) { term = '第二学期'; }else { term = '第一学期' } return term; })() }, { xtype: "textfield", name: "creatorName", fieldLabel: "录入人", defaultValue: school.util.BaseUtil.getCurrentUser().username, readOnly: true }, { xtype: 'datefield', name: 'createTime', fieldLabel: '录入时间', format: 'Y-m-d H:i:s', defaultValue: new Date(), readOnly: true }, { xtype: 'combobox', name: 'status', fieldLabel: '状态', displayField: 'name', valueField: 'value', editable: false, readOnly: true, minChars: 0, queryMode: 'local', store: Ext.create('Ext.data.ArrayStore', { fields: ['name', 'value'], data: [['已生效', '1'], ['未生效', '0']] }), defaultValue: 0 }, { name: "timetable", xtype: "detailGridField", idColumn: 'id', detnoColumn: 'lessons', storeModel: 'school.model.Timetable', deleteDetailUrl: '/api/school/curriculum/deleteDetail', allowEmpty: true, showCount: false, emptyRows: 8, rowViewModel: {}, minHeight: 350, columns: [{ text: 'id', dataIndex: 'id', hidden: true // }, { // text: '时间段', // xtype: 'widgetcolumn', // width: 200, // padding: 0, // tdCls: 'x-period-column', // getBindField: function(c) { // return ['startTime', 'endTime'] // }, // widget: { // xtype: 'container', // style: { // textAlign: 'center' // }, // items: [{ // xtype: 'button', // bind: { // text: '{record._timeText1}', // }, // style: { // margin: '5px', // height: '22px', // width: '74px', // padding: 0 // }, // handler: function(btn) { // let record = btn.ownerCt.$widgetRecord; // let store = record.store; // let idx = record.get('lessons') - 2; // let preRecord, preDate; // if(idx > -1) { // preRecord = store.getAt(idx); // preDate = preRecord.get('_time2'); // if(!!preDate && Ext.Date.format(preDate, 'H:i') != '00:00' && Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME) <= Ext.Date.parse(Ext.Date.format(preDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) { // record.set('startTime', Ext.Date.format(Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME), 'H:i:s')); // } // } // me.currentRecord = record; // }, // menu: { // xtype: 'menu', // plain: true, // items: [{ // xtype: 'timepicker', // maxHeight: 300, // increment: 5, // format: 'H:i', // minValue: me.START_TIME, // maxValue: me.END_TIME, // listeners: { // select: function(model, record, index, eOpts) { // me.onSelectPeriod0(this, this.up(), record); // }, // } // }], // listeners: { // beforeshow: function(th, eOpts) { // let record = th.ownerCmp.ownerCt.$widgetRecord // let picker = th.down('timepicker'); // let store = th.ownerCmp.ownerCt.$widgetRecord.store; // let idx = record.get('lessons') - 2; // let preRecord, preDate, minValue; // me.currentRecord = record; // if(idx > -1) { // preRecord = store.getAt(idx); // preDate = preRecord.get('_time2'); // if(Ext.Date.format(preDate, 'H:i') == '00:00') { // school.util.BaseUtil.showErrorToast('请先完成上一课时设置'); // return false; // } // if(Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME) >= Ext.Date.parse(Ext.Date.format(preDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) { // school.util.BaseUtil.showErrorToast('可用课程时间不足(08:00~22:00)'); // } // minValue = Ext.Date.add(preDate, Ext.Date.MINUTE, me.MIN_BREAK_TIME); // }else { // minValue = Ext.Date.parse('08:00', 'H:i'); // } // picker.setMinValue(minValue) // }, // } // }, // }, { // xtype: 'button', // bind: { // text: '{record._timeText2}', // }, // style: { // margin: '5px', // height: '22px', // width: '74px', // padding: 0 // }, // handler: function(btn) { // let record = btn.ownerCt.$widgetRecord; // let startDate = record.get('_time1'); // if(Ext.Date.format(startDate, 'H:i') != '00:00' && Ext.Date.add(startDate, Ext.Date.MINUTE, me.CLASS_TIME) <= Ext.Date.parse(Ext.Date.format(startDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) { // record.set('endTime', Ext.Date.format(Ext.Date.add(startDate, Ext.Date.MINUTE, me.CLASS_TIME), 'H:i:s')); // } // me.currentRecord = record; // }, // menu: { // xtype: 'menu', // plain: true, // items: [{ // xtype: 'timepicker', // maxHeight: 300, // increment: 5, // format: 'H:i', // minValue: me.START_TIME, // maxValue: me.END_TIME, // listeners: { // select: function(model, record, index, eOpts) { // me.onSelectPeriod1(this, this.up(), record); // }, // } // }], // listeners: { // beforeshow: function(th, eOpts) { // let record = th.ownerCmp.ownerCt.$widgetRecord; // let picker = th.down('timepicker'); // if(Ext.Date.format(record.get('_time1'), 'H:i') == '00:00') { // school.util.BaseUtil.showErrorToast('请先设置开始时间'); // return false; // } // let startDate = record.get('_time1') || Ext.Date.parse('08:00', 'H:i'); // let minValue = Ext.Date.add(startDate, Ext.Date.MINUTE, me.MIN_MIN_WHILE); // me.currentRecord = record; // picker.setMinValue(minValue) // }, // } // }, // }] // } }, { text: '星期一', dataIndex: 'mon', xtype: 'subjectcolumn' }, { text: '星期二', dataIndex: 'tues', xtype: 'subjectcolumn' }, { text: '星期三', dataIndex: 'wed', xtype: 'subjectcolumn' }, { text: '星期四', dataIndex: 'thur', xtype: 'subjectcolumn' }, { text: '星期五', dataIndex: 'fri', xtype: 'subjectcolumn' }, { text: '星期六', dataIndex: 'sat', xtype: 'subjectcolumn', hidden: true }, { text: '星期日', dataIndex: 'sunday', xtype: 'subjectcolumn', hidden: true }] }], applyBtns: [{ apply: true, text: '删除', bind: { hidden: '{!showDeleteBtn || !id || status == 1}' }, }, { apply: true, text: '保存', bind: { hidden: '{!showSaveBtn || status == 1}', disabled: '{!base.valid}' } }], toolBtns: [{ xtype: 'button', text: '启用', hidden: true, bind: { hidden: '{!id || status == 1}' }, handler: 'onPublish' }, { xtype: 'button', text: '禁用', hidden: true, bind: { hidden: '{!id || status == 0}' }, handler: 'onRePublish' }] }); this.callParent(); }, listeners: { beforeSave: function(form) { let nameField = form.getForm().findField('name'); if(!nameField.value) { nameField.setValue(nameField.emptyText); } return true; } }, onSelectPeriod0: function(picker, menu, record) { let me = this; let cRecord = me.currentRecord; let store = cRecord.store, preIdx = cRecord.get('lessons') - 2, preRecord; cRecord.set('startTime', Ext.Date.format(record.get('date'), 'H:i:s')); menu.setVisible(false); if(preIdx > -1) { preRecord = store.getAt(preIdx); if(!!preRecord) { let breakTime = Math.abs(Ext.Date.diff(cRecord.get('_time1'), preRecord.get('_time2'), Ext.Date.MINUTE)); me.BREAK_TIME = breakTime; } } }, onSelectPeriod1: function(picker, menu, record) { let me = this; me.currentRecord.set('endTime', Ext.Date.format(record.get('date'), 'H:i:s')); menu.setVisible(false); let classTime = Math.abs(Ext.Date.diff(me.currentRecord.get('_time1'), me.currentRecord.get('_time2'), Ext.Date.MINUTE)); me.CLASS_TIME = classTime; }, refresh: function() { Ext.StoreMgr.get('store_grade').load(); Ext.StoreMgr.get('store_class').load(); Ext.StoreMgr.get('store_subject').load(); } });