Ext.define('saas.view.money.verification.FormPanelController', { extend: 'saas.view.core.form.FormPanelController', alias: 'controller.money-verification-formpanel', init: function (form) { var me = this; this.control({ // 客户 'dbfindtrigger[name=vc_custname]':{ beforerender:function(f){ Ext.apply(f,{ //赋值 dbfinds:[{ from: 'id', to: 'vc_custid',ignore:true }, { from:'cu_code', to:'vc_custcode' },{ from:'cu_name', to:'vc_custname' },{ from:'cu_currency',to:'vc_currency' },{ from:'cr_rate',to:'vc_rate' } ], }) ; } }, // 转入客户 'dbfindtrigger[name=vc_turncustname]':{ beforerender:function(f){ Ext.apply(f,{ //赋值 dbfinds:[{ from: 'id', to: 'vc_turncustid',ignore:true }, { from:'cu_code', to:'vc_turncustcode' },{ from:'cu_name', to:'vc_turncustname' }], }) ; } }, // 供应商 'vendorDbfindTrigger[name=vc_vendname]':{ beforerender: function (f) { if(!f.dbfinds){ Ext.apply(f, { dbfinds: [{ from: 'id', to: 'vc_vendid', ignore: true }, { from: 've_code', to: 'vc_vendcode' }, { from: 've_name', to: 'vc_vendname' },{ from:'ve_currency',to:'vc_currency' },{ from:'cr_rate',to:'vc_rate' }] }); } } }, // 转入供应商 'dbfindtrigger[name=vc_turnvendname]':{ beforerender: function (f) { Ext.apply(f, { dbfinds: [{ from: 'id', to: 'vc_turnvendid', ignore: true }, { from: 've_code', to: 'vc_turnvendcode' }, { from: 've_name', to: 'vc_turnvendname' }], }); } }, // 来源单号1 'oriOrderMutiDbfindTrigger[name=vd_slcode]': { beforerender: function (f) { Ext.apply(f, { dbfinds: [{ from: 'id', to: 'vd_slid',ignore:true }, { from: 'sl_code', to: 'vd_slcode' },{ from: 'sl_orderamount', to: 'vd_amount' },{ from: 'sl_yamount', to: 'sl_yamount' },{ from: 'sl_namount', to: 'sl_namount' },{ from:'sl_date', to:'vd_sldate' },{ from:'sl_kind', to:'vd_slkind' },{ from: 'sl_namount', to: 'vd_nowbalance' }], }); }, beforequery: function(f) { var defaultCondition = this.getDefaultCondition(0); var form = me.getView(), viewModel = me.getViewModel(); var kind=viewModel.get('vc_kind'); console.log(kind); if (kind == 'receivable_to_receivable' || kind == 'payable_to_payable'){ f.dataUrl='/api/money/subledger/dbfindlist'; } if(!defaultCondition) { return false; } Ext.apply(f, { defaultCondition: defaultCondition }); }, beforetriggerclick: function(f) { console.log('beforetriggerclick'); var defaultCondition = this.getDefaultCondition(0); var form = me.getView(), viewModel = me.getViewModel(); var kind=viewModel.get('vc_kind'); if (kind == 'receivable_to_receivable' || kind == 'payable_to_payable'){ f.dataUrl='/api/money/subledger/dbfindlist'; } if(!defaultCondition) { return false; } Ext.apply(f, { defaultCondition: defaultCondition }); } }, // 来源单号2 'oriOrderMutiDbfindTrigger[name=vcd_slcode]': { beforerender: function (f) { Ext.apply(f, { dbfinds: [{ from: 'id', to: 'vcd_slid',ignore:true }, { from: 'sl_code', to: 'vcd_slcode' },{ from: 'sl_orderamount', to: 'vcd_amount' },{ from: 'sl_yamount', to: 'sl_yamount' },{ from: 'sl_namount', to: 'sl_namount' },{ from:'sl_date', to:'vcd_sldate' },{ from:'sl_kind', to:'vcd_slkind' },{ from: 'sl_namount', to: 'vcd_nowbalance' }], }); }, beforequery: function(f) { var defaultCondition = this.getDefaultCondition(1); if(!defaultCondition) { return false; } Ext.apply(f, { defaultCondition: defaultCondition }); }, beforetriggerclick: function(f) { var defaultCondition = this.getDefaultCondition(1); if(!defaultCondition) { return false; } Ext.apply(f, { defaultCondition: defaultCondition }); } }, }); }, getDefaultCondition: function(idx) { var me = this, form = me.getView(), formItems = form.formItems, viewModel = me.getViewModel(), acitveType = form.acitveType, etc = form.etc, defaultConditions = etc.defaultConditions, defaultConditionMode = defaultConditions[acitveType][idx]; var reg = /{.+?}/g; var arr = defaultConditionMode.match(reg) || []; var fields = {}; var nullFields = []; var defaultCondition = defaultConditionMode; // TODO arr未去重 arr.map(function(a) { var fieldName = a.replace(/[{|}]/g, ''); var field = Ext.Array.findBy(formItems, function(f) { return f.name == fieldName; }); var fieldLabel = field.fieldLabel || field.name; var fieldValue = viewModel.get(fieldName); if(Ext.isDate(fieldValue)) { fieldValue = Ext.Date.format(fieldValue, 'Y-m-d'); } fields[fieldName] = fieldValue; if(!fieldValue && nullFields.indexOf(fieldLabel) == -1) { nullFields.push(fieldLabel); } }); if(nullFields.length == 0) { var keys = Ext.Object.getAllKeys(fields); keys.map(function(k) { var v = fields[k]; defaultCondition = defaultCondition.replace(new RegExp('{' + k + '}', 'g'), v); }); return defaultCondition; }else { saas.util.BaseUtil.showErrorToast('请先选择【' + '' + nullFields.join(',') + '】'); return null; } }, /** * 清空所有从表数据 */ clearDetails: function() { var me = this; me.clearDetail0(); me.clearDetail1(); }, /** * 清空第一个从表数据 */ clearDetail0: function(f, n, o) { var me = this, form = me.getView(), grid = form.query('detailGridField')[0]; me.clearDetail(grid); }, /** * 清空第二个从表数据 */ clearDetail1: function() { var me = this, form = me.getView(), grid = form.query('detailGridField')[1]; me.clearDetail(grid); }, /** * 清空一个从表数据 */ clearDetail: function(grid) { var datas = [], emptyRows = grid.emptyRows, detnoColumn = grid.detnoColumn, detno = 0, store = grid.getStore(); Ext.Array.each(new Array(emptyRows), function() { detno += 1; var data = {}; data[detnoColumn] = detno; datas.push(data); }) store.removeAll(); store.add(datas); // 不写该方法合计列会错位,这里触发afterEdit事件用来刷新grid store.getAt(0) ? store.afterEdit(store.getAt(0), ['']) : null; }, onSave: function() { var me = this, form = me.getView(), viewModel = me.getViewModel(), store1 = viewModel.get('detail0').detailStore, store2 = viewModel.get('detail1').detailStore; var valid = form.isValid(); if(!valid) { saas.util.BaseUtil.showErrorToast(form.invalidText); return false; } vc_kind = viewModel.get('vc_kind'); //应收转应收 receivable_to_receivable 客户一致时提示 “保存失败: 转出客户与转入客户相同” if(vc_kind === 'receivable_to_receivable' && (viewModel.get('vc_custid') === viewModel.get('vc_turncustid') )){ saas.util.BaseUtil.showErrorToast("保存失败: 转出客户与转入客户相同"); return false; } //应付转应付 payable_to_payable 供应商一致时提示 “保存失败: 转出供应商与转入供应商相同” if(vc_kind === 'payable_to_payable' && (viewModel.get('vc_vendid') === viewModel.get('vc_turnvendid') )){ saas.util.BaseUtil.showErrorToast("保存失败: 转出客户与转入客户相同"); return false; } var sum_detail1 = store1.sum('vd_nowbalance'); // 从表1核销合计 var sum_detail2 = store2.sum('vcd_nowbalance'); // 从表2核销合计 viewModel.set("vc_amount1",sum_detail1); viewModel.set("vc_amount2",sum_detail2); me.save(); }, save:function(){ var me = this, form = this.getView(), codeField = form.getForm().findField(form._codeField), detailCount = form.detailCount, viewModel = me.getViewModel(), codeModified = !form.initId || (codeField && codeField.isDirty()); //form里面数据 var formData = form.getSaveData(); var params = { main:formData.main }; for(var i = 0; i < detailCount; i++) { params['items' + ( i + 1)] = formData['detail' + i]; } params.codeModified = codeModified; form.setLoading(true); saas.util.BaseUtil.request({ url: form._saveUrl, params: JSON.stringify(params), method: 'POST', }) .then(function(localJson) { form.setLoading(false); if(localJson.success){ var id = localJson.data.id; var code = localJson.data.code; form.initId = id; saas.util.FormUtil.loadData(form); saas.util.BaseUtil.showSuccessToast('保存成功'); var newId = form.xtype + '-' + id; var newTitle = form._title + '(' + code + ')'; saas.util.BaseUtil.refreshTabTitle(newId, newTitle); form.fireEvent('aftersave', true, form, localJson); } }) .catch(function(e) { form.setLoading(false); saas.util.BaseUtil.showErrorToast('保存失败: ' + e.message); form.fireEvent('aftersave', false, form); }); }, audit: function() { var me = this, form = me.getView(), viewModel = me.getViewModel(), detailCount = form.detailCount, codeField = form.getForm().findField(form._codeField), codeModified = !form.initId || (codeField && codeField.isDirty()), store1 = viewModel.get('detail0').detailStore, store2 = viewModel.get('detail1').detailStore; var sum_detail1 = store1.sum('vd_nowbalance'); // 从表1核销合计 var sum_detail2 = store2.sum('vcd_nowbalance'); // 从表2核销合计 viewModel.set("vc_amount1",sum_detail1); viewModel.set("vc_amount2",sum_detail2); //form里面数据 var formData = form.getFormData(); var params = { main: formData.main }; for(var i = 0; i < detailCount; i++) { params['items' + ( i + 1)] = formData['detail' + i]; } params.codeModified = codeModified; form.setLoading(true); saas.util.BaseUtil.request({ url: form._auditUrl, params: JSON.stringify(params), method: 'POST', }) .then(function(localJson) { form.setLoading(false); 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 + ')'; saas.util.BaseUtil.refreshTabTitle(newId, newTitle); } saas.util.FormUtil.loadData(form); form.setEditable(false); saas.util.BaseUtil.showSuccessToast('审核成功' + (localJson.message ? ': ' + localJson.message : '')); form.fireEvent('afteraudit', true, form, localJson); } }) .catch(function(e) { form.setLoading(false); saas.util.BaseUtil.showErrorToast('审核失败: ' + e.message); form.fireEvent('afteraudit', false, form); }); }, myInitCopyData: function(formData) { var me = this, form = me.getView(); //录入人,录入日期,审核人,审核日期清空 formData.main['creatorId'] = saas.util.BaseUtil.getCurrentUser().id; formData.main['creatorName'] = saas.util.BaseUtil.getCurrentUser().realname; formData.main['createTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s'); formData.main['updaterId'] = undefined; formData.main['updaterName'] = undefined; formData.main['updateTime'] = undefined; formData.main[form._auditmanField] = undefined; formData.main[form._auditdateField] = undefined; return formData; }, refresh: function() { var me = this, form = me.getView(), xtype = form.xtype, _config = { initId: form.initId, }, currentTab = saas.util.BaseUtil.getCurrentTab(); var view = { _config: _config, xtype: xtype }; Ext.apply(view, _config); Ext.suspendLayouts(); currentTab.removeAll(); currentTab.add(view); Ext.resumeLayouts(true); }, });