ClassInfoController.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. Ext.define('school.view.basic.class.ClassInfoController', {
  2. extend: 'Ext.app.ViewController',
  3. alias: 'controller.basic-class-classinfo',
  4. onAfterRender: function() {
  5. let me = this,
  6. view = me.getView(),
  7. viewModel = me.getViewModel();
  8. viewModel.get('store_grade').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. }],
  167. buttonAlign: 'center',
  168. buttons: [{
  169. text: '确定',
  170. formBind: true,
  171. handler: function() {
  172. let form = this.up('form');
  173. let text = form.getValues().text;
  174. let rootNode = treeList.getRootNode();
  175. let currentNode;
  176. let childNode = {
  177. text: text,
  178. type: sumType
  179. };
  180. let url, params, headers;
  181. if(type == 'SCHOOL') {
  182. currentNode = rootNode;
  183. childNode.leaf = false;
  184. childNode.children = [];
  185. // url = 'http://10.1.80.47:9560/grade/save';
  186. url = '/api/school/grade/save';
  187. params = {
  188. grade: text,
  189. no: childCount
  190. };
  191. headers = {
  192. "Content-Type": 'application/x-www-form-urlencoded; charset=UTF-8'
  193. }
  194. }else {
  195. currentNode = rootNode.findChild('id', id, true);
  196. childNode.leaf = true;
  197. // url = 'http://10.1.80.47:9560/grade/addClass';
  198. url = '/api/school/grade/addClass';
  199. params = JSON.stringify({
  200. grade_id: _id,
  201. clazz_name: text,
  202. no: childCount
  203. });
  204. }
  205. view.setLoading(true);
  206. school.util.BaseUtil.request({
  207. url: url,
  208. method: 'POST',
  209. params: params,
  210. headers: headers
  211. }).then(function(res) {
  212. view.setLoading(false);
  213. childNode._id = res.data.id;
  214. currentNode.appendChild(childNode);
  215. listCard.showNode(currentNode);
  216. win.close();
  217. }).catch(function(e) {
  218. view.setLoading(false);
  219. school.util.BaseUtil.showErrorToast(e.message);
  220. });
  221. }
  222. }]
  223. }]
  224. });
  225. view.add(win);
  226. }
  227. win.setTitle(title);
  228. win.show();
  229. },
  230. showTreeEditWin: function(data) {
  231. let me = this,
  232. view = me.getView(),
  233. refs = me.getReferences(),
  234. treeList = refs.treelist,
  235. listCard = refs.listcard,
  236. win = refs.treeaddwin,
  237. _id = data._id,
  238. id = data.id,
  239. type = data.type;
  240. let title = type == 'GRADE' ? '修改年级' : '修改班级';
  241. if(!win) {
  242. win = Ext.create('Ext.window.Window', {
  243. width: 300,
  244. height: 180,
  245. references: 'treeaddwin',
  246. constrain: true,
  247. modal: true,
  248. bodyPadding: 10,
  249. layout: 'fit',
  250. items: [{
  251. xtype: 'form',
  252. layout: 'column',
  253. defaults: {
  254. columnWidth: 1
  255. },
  256. items: [{
  257. xtype: 'textfield',
  258. name: 'text',
  259. emptyText: '名称',
  260. value: data.text,
  261. allowBlank: false
  262. }],
  263. buttonAlign: 'center',
  264. buttons: [{
  265. text: '确定',
  266. formBind: true,
  267. handler: function() {
  268. let form = this.up('form');
  269. let text = form.getValues().text;
  270. let rootNode = treeList.getRootNode();
  271. let currentNode = rootNode.findChild('id', id, true);
  272. let url, params, headers;
  273. if(type == 'GRADE') {
  274. // url = 'http://10.1.80.47:9560/grade/update';
  275. url = '/api/school/grade/update';
  276. params = JSON.stringify({
  277. grade_id: _id,
  278. grade_name: text
  279. });
  280. }else {
  281. // url = 'http://10.1.80.47:9560/grade/updateClass';
  282. url = '/api/school/grade/updateClass';
  283. params = JSON.stringify({
  284. clazz_id: _id,
  285. clazz_name: text
  286. });
  287. }
  288. view.setLoading(true);
  289. school.util.BaseUtil.request({
  290. url: url,
  291. method: 'POST',
  292. params: params,
  293. headers: headers
  294. }).then(function(res) {
  295. view.setLoading(false);
  296. currentNode.set('text', text);
  297. currentNode.commit();
  298. win.close();
  299. }).catch(function(e) {
  300. view.setLoading(false);
  301. school.util.BaseUtil.showErrorToast(e.message);
  302. });
  303. }
  304. }]
  305. }]
  306. });
  307. view.add(win);
  308. }
  309. win.setTitle(title);
  310. win.show();
  311. },
  312. });