SchoolNotice.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. /**
  2. * 学校通知
  3. */
  4. Ext.define('school.view.interaction.notice.SchoolNotice', {
  5. extend: 'school.view.core.form.FormPanel',
  6. xtype: 'interaction-notice-schoolnotice',
  7. controller: 'interaction-notice-schoolnotice',
  8. viewModel: 'interaction-notice-schoolnotice',
  9. //字段属性
  10. _title: '学校通知',
  11. _idField: 'notify_id',
  12. _codeField: null,
  13. // _readUrl: 'http://10.1.80.101:9520/api/school/notice/read',
  14. _readUrl: '/api/school/notice/read',
  15. // _saveUrl: 'http://10.1.80.101:9520/api/school/notice/save',
  16. _saveUrl: '/api/school/notice/save',
  17. _deleteUrl: '/api/school/notice/delete',
  18. initId: 0,
  19. initComponent: function () {
  20. var me = this;
  21. Ext.apply(this, {
  22. defaultItems: [{
  23. xtype: 'hidden',
  24. name: 'notify_id',
  25. fieldLabel: 'id'
  26. }, {
  27. xtype: "textfield",
  28. name: "notify_creator",
  29. fieldLabel: "发布人id",
  30. columnWidth: 0.5,
  31. defaultValue: school.util.BaseUtil.getCurrentUser().teacher_id,
  32. hidden: true
  33. }, {
  34. xtype: "textfield",
  35. name: "creator",
  36. fieldLabel: "发布人",
  37. columnWidth: 0.25,
  38. defaultValue: school.util.BaseUtil.getCurrentUser().username,
  39. readOnly: true
  40. }, {
  41. xtype: 'combobox',
  42. name: 'notify_status',
  43. fieldLabel: '发布状态',
  44. displayField: 'name',
  45. valueField: 'value',
  46. editable: false,
  47. readOnly: true,
  48. defaultValue: 2,
  49. store: Ext.create('Ext.data.ArrayStore', {
  50. fields: ['name', 'value'],
  51. data: [['未发布', 2], ['已发布', 1]]
  52. }),
  53. minChars: 0,
  54. queryMode: 'local'
  55. }, {
  56. xtype: 'datefield',
  57. name: 'publish_date',
  58. fieldLabel: '发布时间',
  59. format: 'Y-m-d H:i:s',
  60. readOnly: true
  61. }, {
  62. xtype: 'combobox',
  63. fieldLabel: '通知对象',
  64. name: 'notify_target',
  65. displayField: 'name',
  66. valueField: 'value',
  67. editable: false,
  68. clearable: false,
  69. store: Ext.create('Ext.data.Store', {
  70. fields: ['name', 'value'],
  71. data: [{ name: '全体教师', value: 'teacher' }, { name: '全体家长', value: 'parent' }, { name: '指定年级', value: 'grade'}, { name: '指定班级', value: 'class' }]
  72. }),
  73. defaultValue: 'parent',
  74. minChars: 0,
  75. queryMode: 'local',
  76. allowBlank: false,
  77. listeners: {
  78. change: 'onNotifyTargetComboChange'
  79. }
  80. }, {
  81. xtype: 'hidden',
  82. name: 'gradeId',
  83. fieldLabel: '年级ID'
  84. }, {
  85. xtype: 'gradecombo',
  86. name: 'gradeName',
  87. fieldLabel: '年级',
  88. visible: false,
  89. allowBlank: false,
  90. listeners: {
  91. select: function (combo, record, eOpts) {
  92. let viewModel = me.getViewModel();
  93. viewModel.set('gradeId', record.get('grade_id'));
  94. viewModel.set('classId', null);
  95. viewModel.set('classzName', null);
  96. }
  97. }
  98. }, {
  99. xtype: 'hidden',
  100. name: 'classId',
  101. fieldLabel: '班级ID'
  102. }, {
  103. xtype: 'classcombo',
  104. name: 'classzName',
  105. fieldLabel: '班级',
  106. visible: false,
  107. allowBlank: false,
  108. listeners: {
  109. expand: function (combo, eOpts) {
  110. combo.store.clearFilter();
  111. var gradeCombo = combo.up('form').getForm().findField('gradeName');
  112. var gradeName = gradeCombo.getValue();
  113. var filter = new Ext.util.Filter({
  114. property: 'clazz_grade',
  115. value: gradeName
  116. });
  117. if (!!gradeName) {
  118. combo.store.setFilters([filter]);
  119. }
  120. },
  121. select: function (combo, record, eOpts) {
  122. let viewModel = me.getViewModel();
  123. viewModel.set('classId', record.get('clazz_id'));
  124. viewModel.set('gradeId', record.get('grade_id'));
  125. viewModel.set('gradeName', record.get('clazz_grade'));
  126. }
  127. }
  128. }, {
  129. xtype: "textfield",
  130. name: "notify_title",
  131. fieldLabel: "标题",
  132. columnWidth: 1,
  133. allowBlank: false
  134. }, {
  135. xtype: "textareafield",//文本域
  136. name: 'notify_details',
  137. fieldLabel: "内容",
  138. height: 300,
  139. columnWidth: 1,
  140. allowBlank: false,
  141. maxLength: 5000
  142. }, {
  143. xtype: 'mfilefield',
  144. name: 'notify_files',
  145. fieldLabel: '附件',
  146. fileRegex: /\.(jpeg|jpg|png|gif)$/
  147. }],
  148. applyBtns: [{
  149. apply: true,
  150. text: '保存',
  151. bind: {
  152. hidden: '{!showSaveBtn || notify_status == 1}',
  153. disabled: '{!base.valid}'
  154. }
  155. }, {
  156. apply: true,
  157. text: '删除',
  158. bind: {
  159. hidden: '{!showDeleteBtn || !notify_id || notify_status == 1}'
  160. },
  161. }],
  162. toolBtns: [{
  163. xtype: 'button',
  164. text: '发布',
  165. hidden: true,
  166. bind: {
  167. hidden: '{!notify_id || notify_status == 1}'
  168. },
  169. handler: 'onPublish'
  170. }]
  171. });
  172. this.callParent();
  173. },
  174. initFormData: function(data) {
  175. let me = this;
  176. if(data.main.notify_target == 'grade') {
  177. data.main.gradeId = data.main.notify_targetId;
  178. }else if(data.main.notify_target == 'class') {
  179. data.main.classId = data.main.notify_targetId;
  180. }
  181. me.setFormData(data);
  182. me.clearDirty();
  183. },
  184. isValid: function() {
  185. let me = this;
  186. let viewModel = me.getViewModel();
  187. let formItems = me.formItems || [];
  188. let notifyTargetValue = me.getForm().findField('notify_target').value;
  189. let valid = !Ext.Array.findBy(formItems, function(f) {
  190. if(notifyTargetValue == 'teacher' || notifyTargetValue == 'parent') {
  191. if(f.name == 'gradeName' || f.name == 'classzName') {
  192. return false;
  193. }
  194. }else if(notifyTargetValue == 'grade') {
  195. if(f.name == 'classzName') {
  196. return false;
  197. }
  198. }
  199. return !f.isValid();
  200. });
  201. let detailGrids = me.query('detailGridField');
  202. for(let i = 0; i < detailGrids.length; i++) {
  203. let g = detailGrids[i];
  204. if(!g.isValid()) {
  205. valid = false;
  206. break;
  207. }
  208. }
  209. viewModel.set('base.valid', valid);
  210. return valid;
  211. },
  212. refresh: function() {
  213. Ext.StoreMgr.get('store_grade').load();
  214. Ext.StoreMgr.get('store_class').load();
  215. },
  216. listeners: {
  217. load: function(form, data) {
  218. let fileField = form.down('mfilefield');
  219. fileField.value = data.main.notify_files
  220. fileField.renderMF(fileField);
  221. }
  222. }
  223. });