Ext.define('saas.view.sys.config.FormPanelController', { extend: 'Ext.app.ViewController', alias: 'controller.sys-config-formpanel', BaseUtil: Ext.create('saas.util.BaseUtil'), FormUtil: Ext.create('saas.util.FormUtil'), auditBtnClick: function() { var me = this, form = me.getView(), statusCodeField = form._statusCodeField, viewModel = me.getViewModel(), status = viewModel.get(statusCodeField); status == 'AUDITED' ? me.unAudit() : me.audit(); }, add: function(){ var form = this.getView(); var id = form.xtype + '-add'; openTab(form.xtype,'新增' + form._title, id); }, delete: function(){ var me = this; var form = this.getView(); var viewModel = me.getViewModel(); var id = viewModel.get(form._idField); var code = viewModel.get(form._codeField); if(id&&id.value!=0){ me.BaseUtil.request({ url: form._deleteUrl+id, method: 'POST', }) .then(function(localJson) { if(localJson.success){ var mainTab = Ext.getCmp('main-tab-panel'); mainTab.getActiveTab().close(); //解析参数 showToast('删除成功'); } }) .catch(function(res) { console.error(res); showToast('删除失败: ' + res.message); }); } }, onSave: function() { var me = this, form = this.getView(); var valid = form.isValid(); if(!valid) { showToast('表单校验有误,请检查'); return false; } if(form.getForm().wasDirty==false){ showToast('未修改数据,请修改后保存'); return false; } //form里面数据 var formData = form.getFormData(); me.save(formData); }, save:function(formData){ var me = this, form = this.getView(), detailCount = form.detailCount, viewModel = me.getViewModel(), modelData = viewModel.getData(); var params = { main:formData.main }; for(var i = 0; i < detailCount; i++) { params['items' + ( i + 1)] = formData['detail' + i]; } // 只有一个从表时从表字段改为items if(detailCount == 1) { params.items = params.items1; delete params.items1; } me.BaseUtil.request({ url: form._saveUrl, params: JSON.stringify(params), method: 'POST', }) .then(function(localJson) { if(localJson.success){ var id = localJson.data.id; var code = localJson.data.code; form.initId = id; form.FormUtil.loadData(form); showToast('保存成功'); var newId = form.xtype + '-' + id; var newTitle = form._title + '(' + code + ')'; refreshTabTitle(newId, newTitle); } }) .catch(function(res) { console.error(res); showToast('保存失败: ' + res.message); }); }, audit: function(){ var me = this, form = this.getView(), detailCount = form.detailCount, viewModel = me.getViewModel(), modelData = viewModel.getData(); var valid = form.isValid(); if(!valid) { showToast('表单校验有误,请检查'); return false; } if(form.getForm().wasDirty==false){ showToast('未修改数据,请修改后保存'); return false; } //form里面数据 var formData = form.getFormData(); var params = { main: formData.main }; for(var i = 0; i < detailCount; i++) { params['items' + ( i + 1)] = formData['detail' + i]; } // 只有一个从表时从表字段改为items if(detailCount == 1) { params.items = params.items1; delete params.items1; } me.BaseUtil.request({ url: form._auditUrl, params: JSON.stringify(params), method: 'POST', }) .then(function(localJson) { if(localJson.success){ // 未保存直接审核会返回id if(localJson.data) { var id = localJson.data.id; var code = localJson.data.code; form.initId = id; var newId = form.xtype + '-' + id; var newTitle = form._title + '(' + code + ')'; refreshTabTitle(newId, newTitle); } form.FormUtil.loadData(form); form.setEditable(false); showToast('审核成功'); } }) .catch(function(res) { console.error(res); showToast('审核失败: ' + res.message); }); }, unAudit: function() { var me = this; var form = this.getView(); var viewModel = me.getViewModel(); var id = viewModel.get(form._idField); var code = viewModel.get(form._codeField); if(id&&id.value!=0){ me.BaseUtil.request({ url: form._unAuditUrl+id, method: 'POST', }) .then(function(localJson) { if(localJson.success){ //解析参数 showToast('反审核成功'); form.FormUtil.loadData(form); } }) .catch(function(res) { console.error(res); showToast('反审核失败: ' + res.message); }); } }, codeEditorBlur: function(e) { var me = this, viewModel = me.getViewModel(), targetEl = event.target, faEl = targetEl.getElementsByClassName('fa')[0]; if(faEl && faEl.classList.contains('fa-check-circle')) { // 处理重复触发事件 // viewModel.set('base.codeEditable', false); }else { viewModel.set('base.codeEditable', false); } }, codeEditorClick: function() { var me = this, viewModel = me.getViewModel(), codeEditable = viewModel.get('base.codeEditable'); viewModel.set('base.codeEditable', !codeEditable); } });