Ext.QuickTips.init(); Ext.define('erp.controller.ma.MultiForm', { extend: 'Ext.app.Controller', requires: ['erp.util.FormUtil', 'erp.util.GridUtil'], views:[ 'ma.MultiForm','ma.MyForm','ma.MyGrid','ma.MyDetail','core.button.DeleteDetail','core.toolbar.Toolbar', 'core.trigger.DbfindTrigger','core.trigger.MultiDbfindTrigger','core.grid.TfColumn','core.grid.YnColumn', 'core.button.UUListener', 'core.button.DbfindButton','core.button.ComboButton', 'core.form.YnField', 'core.button.Sync' ], init:function(){ var me = this; me.FormUtil = Ext.create('erp.util.FormUtil'); me.GridUtil = Ext.create('erp.util.GridUtil'); this.control({ 'erpSyncButton': { afterrender: function(btn){ btn.autoClearCache = true; }, aftersync: function(btn, caller, datas, masters) { if(caller == 'Form!Post') { var grid = Ext.getCmp('detail'), dg = new Array(); grid.store.each(function(){ if(this.get('dg_id') > 0) dg.push(this.get('dg_id')); }); btn.syncdatas = dg.join(','); btn.caller = 'DetailGrid!Post'; btn.sync(); } else { btn.syncdatas = null; } } }, 'multidbfindtrigger': { render: function(field){ if(field.name == 'fo_button4add' || field.name == 'fo_button4rw'){ var fields = Ext.Object.getKeys($I18N.common.button); var values = Ext.Object.getValues($I18N.common.button); var data = []; Ext.each(fields, function(f, index){ var o = {}; o.value = fields[index]; o.display = values[index]; data.push(o); }); field.multistore = {fields:['display', 'value'],data:data}; } } }, 'mygrid': { select: function(selModel, record){ this.GridUtil.onGridItemClick(selModel, record); var grid=Ext.getCmp('grid'); if(record&&record.data.fd_dbfind) grid.down('erpDbfindButton').setDisabled(false); else if(record && record.data.fd_type == 'C') grid.down('erpComboButton').setDisabled(false); else { grid.down('erpComboButton').setDisabled(true); grid.down('erpDbfindButton').setDisabled(true); } } }, 'mydetail': { select: function(selModel, record){ this.GridUtil.onGridItemClick(selModel, record, 'detail'); var grid=Ext.getCmp('detail'); if(record&&record.data.dg_dbbutton) grid.down('erpDbfindButton').setDisabled(false); else if(record && (record.data.dg_type == 'combo' || record.data.dg_type=='editcombo')) grid.down('erpComboButton').setDisabled(false); else { grid.down('erpComboButton').setDisabled(true); grid.down('erpDbfindButton').setDisabled(true); } } }, 'button[name=save]': { click: function(btn){ //序列号 Ext.getCmp('fo_seq').setValue(Ext.getCmp('fo_table').value.toUpperCase().split(' ')[0] + '_SEQ'); var dt = Ext.getCmp('fo_detailtable').value; if(!Ext.isEmpty(dt)){ Ext.getCmp('fo_detailseq').setValue(dt.toUpperCase().split(' ')[0] + '_SEQ'); } //判断detailtable的主键字段是否加到了detailgrid里面 //me.insertKeyField(); //判断detailtable与主表关联的字段是否加到了detailgrid里面 //me.insertMainField(); me.save(); } }, 'erpDeleteDetailButton': { afterrender: function(btn){ btn.ownerCt.add({ xtype:'erpDbfindButton', }); btn.ownerCt.add({ xtype:'erpComboButton', }); } }, /** * 下拉框设置 */ 'erpComboButton': { click: function(btn){ var activeTab = btn.up('tabpanel').getActiveTab(); var record = activeTab.down('gridpanel').selModel.lastSelected; if(record) { if(activeTab.id == 'maintab'){ if(record.data.fd_type == 'C') { btn.comboSet(Ext.getCmp('fo_caller').value, record.data.fd_field); } } else { if(record.data.dg_type == 'combo' || record.data.dg_type =='editcombo') btn.comboSet(Ext.getCmp('fo_caller').value, record.data.dg_field); } } } }, /** * DBFind设置 */ 'erpDbfindButton': { click: function(btn){ var activeTab = btn.up('tabpanel').getActiveTab(); var record = activeTab.down('gridpanel').selModel.lastSelected; if(record) { if(activeTab.id == 'maintab'){ if(record.data.fd_dbfind) btn.dbfindSetUI(Ext.getCmp('fo_caller').value, record.data.fd_field); }else { if(record.data.dg_dbbutton) btn.dbfindSetGrid(Ext.getCmp('fo_caller').value, activeTab.down('gridpanel'), record.data.dg_field); } } } }, 'button[name=delete]': { click: function(btn){ me.FormUtil.onDelete(Ext.getCmp('fo_id').value); } }, 'button[name=close]': { click: function(btn){ me.FormUtil.beforeClose(me); } }, /*'textfield[name=fo_table]': { change: function(field){ var grid = Ext.getCmp('grid'); if(grid) { var val = field.value.toUpperCase().split(' ')[0]; Ext.Array.each(grid.store.data.items, function(item){ if(item.data['fd_field'] != null && item.data['fd_field'] != ''){ var t = item.data['fd_table']; if(val != t.toUpperCase()){ item.set('fd_table', val); } } }); } } },*/ 'textfield[name=fo_detailtable]': { change: function(field){ var grid = Ext.getCmp('detail'); if(grid) { var val = field.value.toUpperCase().split(' ')[0]; Ext.each(grid.store.items, function(){ var t = this.data['dg_table']; if(t != null && t != ''){ if(val != t.toUpperCase()){ this.set('dg_table', val); } } }); } } }, 'panel[id=detailtab]': { activate: function(){ // var dt = Ext.getCmp('fo_detailtable').value; // if(dt == null || dt == ''){ // showError("[主表]->[从表资料]->[明细表名]还未填写!"); // Ext.getCmp('mytab').setActiveTab(0); // } else { // //判断detailtable的主键字段是否加到了detailgrid里面 // me.insertKeyField(); // //判断detailtable与主表关联的字段是否加到了detailgrid里面 // me.insertMainField(); // } } }, 'dbfindtrigger[name=fo_keyfield]': { afterrender: function(t){ t.autoDbfind = false; t.dbKey = "fo_table"; t.mappingKey = "ddd_tablename"; t.dbMessage = "请先选择表名!"; } }, 'dbfindtrigger[name=fo_codefield]': { afterrender: function(t){ t.autoDbfind = false; t.dbKey = "fo_table"; t.mappingKey = "ddd_tablename"; t.dbMessage = "请先选择表名!"; } }, 'dbfindtrigger[name=fo_statusfield]': { afterrender: function(t){ t.autoDbfind = false; t.dbKey = "fo_table"; t.mappingKey = "ddd_tablename"; t.dbMessage = "请先选择表名!"; } }, 'dbfindtrigger[name=fo_statuscodefield]': { afterrender: function(t){ t.autoDbfind = false; t.dbKey = "fo_table"; t.mappingKey = "ddd_tablename"; t.dbMessage = "请先选择表名!"; } }, 'dbfindtrigger[name=fo_detailkeyfield]': { afterrender: function(t){ t.autoDbfind = false; t.dbKey = "fo_detailtable"; t.mappingKey = "ddd_tablename"; t.dbMessage = "请先选择从表名!"; } }, 'dbfindtrigger[name=fo_detailmainkeyfield]': { afterrender: function(t){ t.autoDbfind = false; t.dbKey = "fo_detailtable"; t.mappingKey = "ddd_tablename"; t.dbMessage = "请先选择从表名!"; } }, 'dbfindtrigger[name=fo_detailstatuscode]': { afterrender: function(t){ t.autoDbfind = false; t.dbKey = "fo_detailtable"; t.mappingKey = "ddd_tablename"; t.dbMessage = "请先选择从表名!"; } }, 'dbfindtrigger[name=fo_detailstatus]': { afterrender: function(t){ t.autoDbfind = false; t.dbKey = "fo_detailtable"; t.mappingKey = "ddd_tablename"; t.dbMessage = "请先选择从表名!"; } }, 'dbfindtrigger[name=fo_detaildetnofield]': { afterrender: function(t){ t.autoDbfind = false; t.dbKey = "fo_detailtable"; t.mappingKey = "ddd_tablename"; t.dbMessage = "请先选择从表名!"; } }, 'button[name=preview]': { click: function(){ } } }); }, insertKeyField: function(){ var grid = Ext.getCmp('detail'); if(grid) { var field = Ext.getCmp('fo_detailkeyfield'); var count = 0; Ext.each(grid.store.data.items, function(){ var logic = this.data['dg_logictype']; var t = this.data['dg_field']; if(field.value.toUpperCase() == t.toUpperCase()){ this.set('dg_logictype', 'keyField'); logic = 'keyField'; if(count >= 2){ if(this.data['dg_id'] == null || this.data['dg_id'] == ''){ grid.store.remove(this); } } } if(logic == 'keyField'){ count++; if(count < 2 && field.value.toUpperCase() != t.toUpperCase()){ this.set('dg_field', field.value); } if(count >= 2){ if(this.data['dg_id'] == null || this.data['dg_id'] == ''){ grid.store.remove(this); } } } }); if(count == 0){ grid.store.add({ dg_sequence: grid.store.data.items[grid.store.data.length-1].data['dg_sequence'] + 1, dg_logictype: 'keyField', dg_field: field.value, dg_caption: 'ID', dg_table: Ext.getCmp('fo_detailtable').value, dg_caller: Ext.getCmp('fo_caller').value, dg_width: 0, dg_visible: '0', dg_type: 'numbercolumn', dg_editable: '0', dg_dbbutton: '0' }); } else if(count > 1){ showError("您的从表中有" + count + "个逻辑类型为[主键字段]的字段,请仔细核查!"); } } }, insertMainField: function(){ var grid = Ext.getCmp('detail'); if(grid) { var field = Ext.getCmp('fo_detailmainkeyfield'); var count = 0; Ext.each(grid.store.data.items, function(){ var logic = this.data['dg_logictype']; var t = this.data['dg_field']; if(field.value.toUpperCase() == t.toUpperCase()){ this.set('dg_logictype', 'mainField'); logic = 'mainField'; if(count >= 2){ if(this.data['dg_id'] == null || this.data['dg_id'] == ''){ grid.store.remove(this); } } } if(logic == 'mainField'){ count++; if(count < 2 && field.value.toUpperCase() != t.toUpperCase()){ this.set('dg_field', field.value); } if(count >= 2){ if(this.data['dg_id'] == null || this.data['dg_id'] == ''){ grid.store.remove(this); } } } }); if(count == 0){ grid.store.add({ dg_sequence: grid.store.data.items[grid.store.data.length-1].data['dg_sequence'] + 1, dg_logictype: 'mainField', dg_field: field.value, dg_caption: 'MainID', dg_table: Ext.getCmp('fo_detailtable').value, dg_caller: Ext.getCmp('fo_caller').value, dg_width: 0, dg_visible: '0', dg_type: 'text', dg_editable: '0', dg_dbbutton: '0' }); } else if(count > 1){ showError("您的从表中有" + count + "个逻辑类型为[关联主表字段]的字段,请仔细核查!"); } } }, createPreForm: function(){ var form = Ext.create('Ext.form.Panel', { }); }, createPreGrid: function(){ }, createFormItem: function(record){ }, save: function(){ var grid = Ext.getCmp('grid'); var field = Ext.getCmp('fo_table'), val = field.value.split(' ')[0]; grid.store.each(function(item){ if(item.get('deploy') && !Ext.isEmpty(item.get('fd_field')) && Ext.isEmpty(item.get('fd_table'))){ item.set('fd_table', val); } }); var detail = Ext.getCmp('detail'); if (!detail) { var me = this; if(! me.FormUtil.checkForm()){ return; } var dd = grid.getChange(); me.FormUtil.update(Ext.getCmp('form').getValues(), Ext.encode(dd.added), Ext.encode(dd.updated), Ext.encode(dd.deleted), "[]", "[]", "[]"); } else { field = Ext.getCmp('fo_detailtable'), val = field.value.split(' ')[0]; detail.store.each(function(item){ if(item.get('deploy') && !Ext.isEmpty(item.get('dg_field')) && Ext.isEmpty(item.get('dg_table'))){ item.set('dg_table', val); } }); var me = this; if(! me.FormUtil.checkForm()){ return; } var dd = grid.getChange(),de = detail.getChange(); me.FormUtil.update(Ext.getCmp('form').getValues(), Ext.encode(dd.added), Ext.encode(dd.updated), Ext.encode(dd.deleted), Ext.encode(de.added), Ext.encode(de.updated), Ext.encode(de.deleted)); } } });