ClassInfoController.js 12 KB

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