ClassInfoController.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  1. Ext.define('school.view.basic.class.ClassInfoController', {
  2. extend: 'Ext.app.ViewController',
  3. alias: 'controller.basic-class-classinfo',
  4. onBeforeRender: function() {
  5. let me = this,
  6. view = me.getView(),
  7. viewModel = me.getViewModel();
  8. viewModel.get('store_gradeclass').load();
  9. },
  10. onItemMouseEnter: function(tree, record, item, index, e, eOpts) {
  11. let icons = item.getElementsByClassName('action-icon');
  12. let addIcon = icons[0],
  13. editIcon = icons[1],
  14. deleteIcon = icons[2];
  15. if(record.data.type == 'SCHOOL') {
  16. addIcon.classList.remove('x-hidden');
  17. }else if(record.data.type == 'GRADE') {
  18. addIcon.classList.remove('x-hidden');
  19. editIcon.classList.remove('x-hidden');
  20. deleteIcon.classList.remove('x-hidden');
  21. }else if(record.data.type == 'CLASS') {
  22. // addIcon.classList.remove('x-hidden');
  23. editIcon.classList.remove('x-hidden');
  24. deleteIcon.classList.remove('x-hidden');
  25. }
  26. },
  27. onItemMouseLeave: function(tree, record, item, index, e, eOpts) {
  28. let icons = item.getElementsByClassName('action-icon');
  29. for(let x = 0; x < icons.length; x++) {
  30. icons[x].classList.add('x-hidden');
  31. }
  32. },
  33. onItemClick: function(tree, record, item, index, e, eOpts) {
  34. let me = this,
  35. refs = me.getReferences(),
  36. listCard = refs.listcard;
  37. listCard.showNode(record);
  38. },
  39. onItemBeforeDrop: function(node, data, overModel, dropPosition, dropHandlers) {
  40. let cdata = data.records[0].data;
  41. let tdata = overModel.data;
  42. dropHandlers.wait = true;
  43. if(cdata.type == tdata.type && dropPosition != 'append') {
  44. dropHandlers.processDrop();
  45. }else {
  46. dropHandlers.cancelDrop();
  47. }
  48. },
  49. onItemDrop: function() {
  50. },
  51. onToggleTree: function() {
  52. let me = this,
  53. viewModel = me.getViewModel(),
  54. refs = me.getReferences(),
  55. treeList = refs.treelist,
  56. nwidth,
  57. nToggleIconCls;
  58. if(treeList.nowidth) {
  59. treeList.nowidth = false;
  60. nwidth = treeList.owidth;
  61. nToggleIconCls = 'sa-arrows-left'
  62. }else {
  63. treeList.nowidth = true;
  64. treeList.owidth = treeList.getBox().width;
  65. nwidth = 0;
  66. nToggleIconCls = 'sa-arrows-right'
  67. }
  68. viewModel.set('toggleIconCls', nToggleIconCls);
  69. viewModel.set('treeWidth', nwidth);
  70. },
  71. onTreeUp: function() {
  72. let me = this,
  73. viewModel = me.getViewModel(),
  74. refs = me.getReferences(),
  75. treeList = refs.treelist,
  76. listCard = refs.listcard,
  77. currentNodeData = viewModel.get('currentNodeData'),
  78. rootNode = treeList.getRootNode(),
  79. currentNode;
  80. if(currentNodeData.id !== 'root') {
  81. currentNode = rootNode.findChild('id', currentNodeData.id, true);
  82. if(!!currentNode.parentNode) {
  83. treeList.setSelection(currentNode.parentNode);
  84. listCard.showNode(currentNode.parentNode);
  85. }
  86. }
  87. },
  88. onTreeAddClick: function(tree, row, col, item, e, eOpts, tr) {
  89. let me = this,
  90. store = tree.store,
  91. record = store.getAt(row);
  92. me.showTreeAddWin(record);
  93. },
  94. onTreeEditClick: function(tree, row, col, item, e, eOpts, tr) {
  95. let me = this,
  96. store = tree.store,
  97. record = store.getAt(row);
  98. me.showTreeEditWin(record.data, true);
  99. },
  100. onTreeDeleteClick: function(tree, row, col, item, e, eOpts, tr) {
  101. let me = this,
  102. refs = me.getReferences(),
  103. listCard = refs.listcard,
  104. treeList = refs.treelist,
  105. store = treeList.store,
  106. record = store.getAt(row),
  107. rootNode = treeList.getRootNode(),
  108. _id = record.data._id,
  109. id = record.data.id,
  110. type = record.data.type,
  111. currentNode = rootNode.findChild('id', id, true),
  112. parentNode = currentNode.parentNode;
  113. let url;
  114. if(type == 'GRADE') {
  115. // url = 'http://10.1.80.47:9560/grade/delete'
  116. url = '/api/school/grade/delete'
  117. }else {
  118. // url = 'http://10.1.80.47:9560/grade/deleteClass'
  119. url = '/api/school/grade/deleteClass'
  120. }
  121. school.util.BaseUtil.request({
  122. url: url + '/' + _id,
  123. method: 'POST'
  124. }).then(function(res) {
  125. treeList.setSelection(parentNode);
  126. currentNode.remove();
  127. listCard.showNode(parentNode);
  128. }).catch(function(e) {
  129. school.util.BaseUtil.showErrorToast(e.message);
  130. });
  131. },
  132. showTreeAddWin: function(record, count) {
  133. let me = this,
  134. view = me.getView(),
  135. refs = me.getReferences(),
  136. treeList = refs.treelist,
  137. listCard = refs.listcard,
  138. win = refs.treeaddwin,
  139. data = record.data,
  140. id = data.id,
  141. _id = data._id,
  142. type = data.type,
  143. childCount = count >= 0 ? count : record.childNodes.length;
  144. let title = type == 'SCHOOL' ? '新增年级' : '新增班级';
  145. let sumType = type == 'SCHOOL' ? 'GRADE' : 'CLASS';
  146. if(!win) {
  147. win = Ext.create('Ext.window.Window', {
  148. width: 300,
  149. height: 180,
  150. constrain: true,
  151. references: 'treeaddwin',
  152. modal: true,
  153. bodyPadding: 10,
  154. layout: 'fit',
  155. items: [{
  156. xtype: 'form',
  157. layout: 'column',
  158. defaults: {
  159. columnWidth: 1
  160. },
  161. items: [{
  162. xtype: 'textfield',
  163. name: 'text',
  164. emptyText: '名称',
  165. allowBlank: false,
  166. maxLength: 20
  167. }],
  168. buttonAlign: 'center',
  169. buttons: [{
  170. text: '确定',
  171. formBind: true,
  172. handler: function() {
  173. let form = this.up('form');
  174. let text = form.getValues().text;
  175. let rootNode = treeList.getRootNode();
  176. let currentNode;
  177. let childNode = {
  178. text: text,
  179. type: sumType
  180. };
  181. let url, params, headers;
  182. if(type == 'SCHOOL') {
  183. currentNode = rootNode;
  184. childNode.leaf = true;
  185. childNode.children = [];
  186. // url = 'http://10.1.80.47:9560/grade/save';
  187. url = '/api/school/grade/save';
  188. params = {
  189. grade: text,
  190. no: childCount
  191. };
  192. headers = {
  193. "Content-Type": 'application/x-www-form-urlencoded; charset=UTF-8'
  194. }
  195. }else {
  196. currentNode = rootNode.findChild('id', id, true);
  197. childNode.leaf = true;
  198. // url = 'http://10.1.80.47:9560/grade/addClass';
  199. url = '/api/school/grade/addClass';
  200. params = JSON.stringify({
  201. grade_id: _id,
  202. clazz_name: text,
  203. no: childCount
  204. });
  205. }
  206. view.setLoading(true);
  207. school.util.BaseUtil.request({
  208. url: url,
  209. method: 'POST',
  210. params: params,
  211. headers: headers
  212. }).then(function(res) {
  213. view.setLoading(false);
  214. childNode._id = res.data.id;
  215. currentNode.appendChild(childNode);
  216. listCard.showNode(currentNode);
  217. win.close();
  218. }).catch(function(e) {
  219. view.setLoading(false);
  220. school.util.BaseUtil.showErrorToast(e.message);
  221. });
  222. }
  223. }]
  224. }]
  225. });
  226. view.add(win);
  227. }
  228. win.setTitle(title);
  229. win.show();
  230. },
  231. showTreeEditWin: function(data) {
  232. let me = this,
  233. view = me.getView(),
  234. refs = me.getReferences(),
  235. treeList = refs.treelist,
  236. listCard = refs.listcard,
  237. win = refs.treeaddwin,
  238. _id = data._id,
  239. id = data.id,
  240. type = data.type;
  241. let title = type == 'GRADE' ? '修改年级' : '修改班级';
  242. if(!win) {
  243. win = Ext.create('Ext.window.Window', {
  244. width: 300,
  245. height: 180,
  246. references: 'treeaddwin',
  247. constrain: true,
  248. modal: true,
  249. bodyPadding: 10,
  250. layout: 'fit',
  251. items: [{
  252. xtype: 'form',
  253. layout: 'column',
  254. defaults: {
  255. columnWidth: 1
  256. },
  257. items: [{
  258. xtype: 'textfield',
  259. name: 'text',
  260. emptyText: '名称',
  261. value: data.text,
  262. allowBlank: false,
  263. maxLength: 20
  264. }],
  265. buttonAlign: 'center',
  266. buttons: [{
  267. text: '确定',
  268. formBind: true,
  269. handler: function() {
  270. let form = this.up('form');
  271. let text = form.getValues().text;
  272. let rootNode = treeList.getRootNode();
  273. let currentNode = rootNode.findChild('id', id, true);
  274. let url, params, headers;
  275. if(type == 'GRADE') {
  276. // url = 'http://10.1.80.47:9560/grade/update';
  277. url = '/api/school/grade/update';
  278. params = JSON.stringify({
  279. grade_id: _id,
  280. grade_name: text
  281. });
  282. }else {
  283. // url = 'http://10.1.80.47:9560/grade/updateClass';
  284. url = '/api/school/grade/updateClass';
  285. params = JSON.stringify({
  286. clazz_id: _id,
  287. clazz_name: text
  288. });
  289. }
  290. view.setLoading(true);
  291. school.util.BaseUtil.request({
  292. url: url,
  293. method: 'POST',
  294. params: params,
  295. headers: headers
  296. }).then(function(res) {
  297. view.setLoading(false);
  298. currentNode.set('text', text);
  299. currentNode.set('pathText', text);
  300. currentNode.commit();
  301. win.close();
  302. listCard.showNode(currentNode);
  303. }).then(function() {
  304. Ext.StoreMgr.get('store_grade').load();
  305. Ext.StoreMgr.get('store_class').load();
  306. }).catch(function(e) {
  307. view.setLoading(false);
  308. school.util.BaseUtil.showErrorToast(e.message);
  309. });
  310. }
  311. }]
  312. }]
  313. });
  314. view.add(win);
  315. }
  316. win.setTitle(title);
  317. win.show();
  318. },
  319. });