|
|
@@ -19,6 +19,7 @@ Ext.define('school.view.interaction.notice.SchoolNotice', {
|
|
|
_deleteUrl: '/api/school/notice/delete',
|
|
|
initId: 0,
|
|
|
initComponent: function () {
|
|
|
+ var me = this;
|
|
|
Ext.apply(this, {
|
|
|
defaultItems: [{
|
|
|
xtype: 'hidden',
|
|
|
@@ -69,15 +70,65 @@ Ext.define('school.view.interaction.notice.SchoolNotice', {
|
|
|
clearable: false,
|
|
|
store: Ext.create('Ext.data.Store', {
|
|
|
fields: ['name', 'value'],
|
|
|
- data: [{ name: '全体教师', value: -1 }, { name: '全体家长', value: -2 }]
|
|
|
+ data: [{ name: '全体教师', value: -1 }, { name: '全体家长', value: -2 }, { name: '指定班级', value: -3 }]
|
|
|
}),
|
|
|
defaultValue: -2,
|
|
|
minChars: 0,
|
|
|
queryMode: 'local',
|
|
|
allowBlank: false,
|
|
|
listeners: {
|
|
|
- boxready: 'onNotifyClassComboReady',
|
|
|
- expand: 'onNotifyClassComboExpand'
|
|
|
+ change: 'onNotifyClassComboChange'
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ xtype: 'hidden',
|
|
|
+ name: 'gradeId',
|
|
|
+ fieldLabel: '年级ID'
|
|
|
+ }, {
|
|
|
+ xtype: 'gradecombo',
|
|
|
+ name: 'gradeName',
|
|
|
+ fieldLabel: '年级',
|
|
|
+ visible: false,
|
|
|
+ allowBlank: false,
|
|
|
+ listeners: {
|
|
|
+ select: function (combo, record, eOpts) {
|
|
|
+ let viewModel = me.getViewModel();
|
|
|
+ viewModel.set('gradeId', record.get('grade_id'));
|
|
|
+ viewModel.set('classId', null);
|
|
|
+ viewModel.set('classzName', null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ xtype: 'hidden',
|
|
|
+ name: 'classId',
|
|
|
+ fieldLabel: '班级ID'
|
|
|
+ }, {
|
|
|
+ xtype: 'classcombo',
|
|
|
+ name: 'classzName',
|
|
|
+ fieldLabel: '班级',
|
|
|
+ visible: false,
|
|
|
+ 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('classId', record.get('clazz_id'));
|
|
|
+ viewModel.set('gradeId', record.get('grade_id'));
|
|
|
+ viewModel.set('gradeName', record.get('clazz_grade'));
|
|
|
+ }
|
|
|
}
|
|
|
}, {
|
|
|
xtype: "textfield",
|
|
|
@@ -125,6 +176,42 @@ Ext.define('school.view.interaction.notice.SchoolNotice', {
|
|
|
});
|
|
|
this.callParent();
|
|
|
},
|
|
|
+ initFormData: function(data) {
|
|
|
+ let me = this;
|
|
|
+ if(data.main.notify_class > 0) {
|
|
|
+ data.main.classId = data.main.notify_class;
|
|
|
+ data.main.notify_class = -3;
|
|
|
+ }
|
|
|
+ me.setFormData(data);
|
|
|
+ me.clearDirty();
|
|
|
+ },
|
|
|
+ isValid: function() {
|
|
|
+ let me = this;
|
|
|
+ let viewModel = me.getViewModel();
|
|
|
+ let formItems = me.formItems || [];
|
|
|
+ let notifyClassValue = me.getForm().findField('notify_class').value;
|
|
|
+ let valid = !Ext.Array.findBy(formItems, function(f) {
|
|
|
+ if(notifyClassValue != -3 && (f.name == 'gradeName' || f.name == 'classzName')) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return !f.isValid();
|
|
|
+ });
|
|
|
+ let detailGrids = me.query('detailGridField');
|
|
|
+
|
|
|
+ for(let i = 0; i < detailGrids.length; i++) {
|
|
|
+ let g = detailGrids[i];
|
|
|
+ if(!g.isValid()) {
|
|
|
+ valid = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ viewModel.set('base.valid', valid);
|
|
|
+ return valid;
|
|
|
+ },
|
|
|
+ refresh: function() {
|
|
|
+ Ext.StoreMgr.get('store_grade').load();
|
|
|
+ Ext.StoreMgr.get('store_class').load();
|
|
|
+ },
|
|
|
listeners: {
|
|
|
load: function(form, data) {
|
|
|
let fileField = form.down('mfilefield');
|