Ext.define('school.view.basic.class.ClassInfoController', { extend: 'Ext.app.ViewController', alias: 'controller.basic-class-classinfo', onBeforeRender: function() { let me = this, view = me.getView(), viewModel = me.getViewModel(); viewModel.get('store_gradeclass').load(); }, onItemMouseEnter: function(tree, record, item, index, e, eOpts) { let icons = item.getElementsByClassName('action-icon'); let addIcon = icons[0], editIcon = icons[1], deleteIcon = icons[2]; if(record.data.type == 'SCHOOL') { addIcon.classList.remove('x-hidden'); }else if(record.data.type == 'GRADE') { addIcon.classList.remove('x-hidden'); editIcon.classList.remove('x-hidden'); deleteIcon.classList.remove('x-hidden'); }else if(record.data.type == 'CLASS') { // addIcon.classList.remove('x-hidden'); editIcon.classList.remove('x-hidden'); deleteIcon.classList.remove('x-hidden'); } }, onItemMouseLeave: function(tree, record, item, index, e, eOpts) { let icons = item.getElementsByClassName('action-icon'); for(let x = 0; x < icons.length; x++) { icons[x].classList.add('x-hidden'); } }, onItemClick: function(tree, record, item, index, e, eOpts) { let me = this, refs = me.getReferences(), listCard = refs.listcard; listCard.showNode(record); }, onItemBeforeDrop: function(node, data, overModel, dropPosition, dropHandlers) { let cdata = data.records[0].data; let tdata = overModel.data; dropHandlers.wait = true; if(cdata.type == tdata.type && dropPosition != 'append') { dropHandlers.processDrop(); }else { dropHandlers.cancelDrop(); } }, onItemDrop: function() { }, onToggleTree: function() { let me = this, viewModel = me.getViewModel(), refs = me.getReferences(), treeList = refs.treelist, nwidth, nToggleIconCls; if(treeList.nowidth) { treeList.nowidth = false; nwidth = treeList.owidth; nToggleIconCls = 'sa-arrows-left' }else { treeList.nowidth = true; treeList.owidth = treeList.getBox().width; nwidth = 0; nToggleIconCls = 'sa-arrows-right' } viewModel.set('toggleIconCls', nToggleIconCls); viewModel.set('treeWidth', nwidth); }, onTreeUp: function() { let me = this, viewModel = me.getViewModel(), refs = me.getReferences(), treeList = refs.treelist, listCard = refs.listcard, currentNodeData = viewModel.get('currentNodeData'), rootNode = treeList.getRootNode(), currentNode; if(currentNodeData.id !== 'root') { currentNode = rootNode.findChild('id', currentNodeData.id, true); if(!!currentNode.parentNode) { treeList.setSelection(currentNode.parentNode); listCard.showNode(currentNode.parentNode); } } }, onTreeAddClick: function(tree, row, col, item, e, eOpts, tr) { let me = this, store = tree.store, record = store.getAt(row); me.showTreeAddWin(record); }, onTreeEditClick: function(tree, row, col, item, e, eOpts, tr) { let me = this, store = tree.store, record = store.getAt(row); me.showTreeEditWin(record.data, true); }, onTreeDeleteClick: function(tree, row, col, item, e, eOpts, tr) { let me = this, refs = me.getReferences(), listCard = refs.listcard, treeList = refs.treelist, store = treeList.store, record = store.getAt(row), rootNode = treeList.getRootNode(), _id = record.data._id, id = record.data.id, type = record.data.type, currentNode = rootNode.findChild('id', id, true), parentNode = currentNode.parentNode; let url; if(type == 'GRADE') { // url = 'http://10.1.80.47:9560/grade/delete' url = '/api/school/grade/delete' }else { // url = 'http://10.1.80.47:9560/grade/deleteClass' url = '/api/school/grade/deleteClass' } school.util.BaseUtil.request({ url: url + '/' + _id, method: 'POST' }).then(function(res) { treeList.setSelection(parentNode); currentNode.remove(); listCard.showNode(parentNode); }).catch(function(e) { school.util.BaseUtil.showErrorToast(e.message); }); }, showTreeAddWin: function(record, count) { let me = this, view = me.getView(), refs = me.getReferences(), treeList = refs.treelist, listCard = refs.listcard, win = refs.treeaddwin, data = record.data, id = data.id, _id = data._id, type = data.type, childCount = count >= 0 ? count : record.childNodes.length; let title = type == 'SCHOOL' ? '新增年级' : '新增班级'; let sumType = type == 'SCHOOL' ? 'GRADE' : 'CLASS'; if(!win) { win = Ext.create('Ext.window.Window', { width: 300, height: 180, constrain: true, references: 'treeaddwin', modal: true, bodyPadding: 10, layout: 'fit', items: [{ xtype: 'form', layout: 'column', defaults: { columnWidth: 1 }, items: [{ xtype: 'textfield', name: 'text', emptyText: '名称', allowBlank: false, maxLength: 20 }], buttonAlign: 'center', buttons: [{ text: '确定', formBind: true, handler: function() { let form = this.up('form'); let text = form.getValues().text; let rootNode = treeList.getRootNode(); let currentNode; let childNode = { text: text, type: sumType }; let url, params, headers; if(type == 'SCHOOL') { currentNode = rootNode; childNode.leaf = true; childNode.children = []; // url = 'http://10.1.80.47:9560/grade/save'; url = '/api/school/grade/save'; params = { grade: text, no: childCount }; headers = { "Content-Type": 'application/x-www-form-urlencoded; charset=UTF-8' } }else { currentNode = rootNode.findChild('id', id, true); childNode.leaf = true; // url = 'http://10.1.80.47:9560/grade/addClass'; url = '/api/school/grade/addClass'; params = JSON.stringify({ grade_id: _id, clazz_name: text, no: childCount }); } view.setLoading(true); school.util.BaseUtil.request({ url: url, method: 'POST', params: params, headers: headers }).then(function(res) { view.setLoading(false); childNode._id = res.data.id; currentNode.appendChild(childNode); listCard.showNode(currentNode); win.close(); }).catch(function(e) { view.setLoading(false); school.util.BaseUtil.showErrorToast(e.message); }); } }] }] }); view.add(win); } win.setTitle(title); win.show(); }, showTreeEditWin: function(data) { let me = this, view = me.getView(), refs = me.getReferences(), treeList = refs.treelist, listCard = refs.listcard, win = refs.treeaddwin, _id = data._id, id = data.id, type = data.type; let title = type == 'GRADE' ? '修改年级' : '修改班级'; if(!win) { win = Ext.create('Ext.window.Window', { width: 300, height: 180, references: 'treeaddwin', constrain: true, modal: true, bodyPadding: 10, layout: 'fit', items: [{ xtype: 'form', layout: 'column', defaults: { columnWidth: 1 }, items: [{ xtype: 'textfield', name: 'text', emptyText: '名称', value: data.text, allowBlank: false, maxLength: 20 }], buttonAlign: 'center', buttons: [{ text: '确定', formBind: true, handler: function() { let form = this.up('form'); let text = form.getValues().text; let rootNode = treeList.getRootNode(); let currentNode = rootNode.findChild('id', id, true); let url, params, headers; if(type == 'GRADE') { // url = 'http://10.1.80.47:9560/grade/update'; url = '/api/school/grade/update'; params = JSON.stringify({ grade_id: _id, grade_name: text }); }else { // url = 'http://10.1.80.47:9560/grade/updateClass'; url = '/api/school/grade/updateClass'; params = JSON.stringify({ clazz_id: _id, clazz_name: text }); } view.setLoading(true); school.util.BaseUtil.request({ url: url, method: 'POST', params: params, headers: headers }).then(function(res) { view.setLoading(false); currentNode.set('text', text); currentNode.set('pathText', text); currentNode.commit(); win.close(); listCard.showNode(currentNode); }).then(function() { Ext.StoreMgr.get('store_grade').load(); Ext.StoreMgr.get('store_class').load(); }).catch(function(e) { view.setLoading(false); school.util.BaseUtil.showErrorToast(e.message); }); } }] }] }); view.add(win); } win.setTitle(title); win.show(); }, });