Ext.QuickTips.init(); Ext.define('erp.controller.pm.make.SaleSnRule', { extend : 'Ext.app.Controller', FormUtil : Ext.create('erp.util.FormUtil'), GridUtil : Ext.create('erp.util.GridUtil'), BaseUtil : Ext.create('erp.util.BaseUtil'), views : [ 'pm.make.SaleSnRule', 'core.form.Panel', 'core.grid.Panel2', 'core.toolbar.Toolbar', 'core.button.Save', 'core.button.Add', 'core.button.Submit', 'core.button.Audit', 'core.button.Close','core.button.Update', 'core.trigger.DbfindTrigger', 'core.trigger.TextAreaTrigger', 'core.trigger.MultiDbfindTrigger','core.button.Delete', 'core.form.YnField', 'core.trigger.AutoCodeTrigger', 'core.button.AddMakeSNRule'], init : function() { var me = this; this.control({ 'erpFormPanel': { afterload: function(form) { var items = form.items.items; Ext.each(items, function(item) { item.setReadOnly(true); }); } }, '#sd_code': { afterrender: function(field){ me.loadData(field.value); } }, 'erpUpdateButton' : { click : function(btn) { var grid = Ext.getCmp('grid'); var form = Ext.getCmp('form'); var jsonGridData = new Array(); var s = grid.getStore().data.items;//获取store里面的数据 for(var i=0;i类型', labelSeparator: ':', allowBlank: false, columnWidth: 0.3, labelWidth:70, id: 'msr_type', store:{ fields:[ 'display', 'value' ], data:[ { display:"转换前", value:"before" }, { display:"转换后", value:"after" } ] }, queryMode:"local", displayField:"display", valueField:"value", editable:false, style: { 'margin-top': '10px' } },{ xtype: 'textfield', fieldLabel: '前缀', labelSeparator: ':', allowBlank: false, id: 'msr_prefix', columnWidth: 0.3, labelWidth:70, style: { 'margin-top': '10px' } },{ xtype: 'numberfield', fieldLabel: '长度', labelSeparator: ':', id: 'msr_length', allowBlank: false, columnWidth: 0.3, minValue:0, labelWidth:70, style: { 'margin-top': '10px' } },{ xtype: 'numberfield', fieldLabel: '数量', labelSeparator: ':', id: 'msr_qty', allowBlank: false, columnWidth: 0.3, minValue:0, labelWidth:70, /*value:Ext.getCmp("sd_qty").value*/ },{ xtype: 'combo', fieldLabel: '进制', labelSeparator: ':', allowBlank: false, columnWidth: 0.3, id: 'msr_system', store:{ fields:[ 'display', 'value' ], data:[ { display:"十进制", value:"decimal" }, { display:"十六进制", value:"hexadecimal" } ] }, queryMode:"local", displayField:"display", valueField:"value", editable:false, labelWidth:70, value: 'decimal' },{ xtype: 'textfield', fieldLabel: '起始序列号', labelSeparator: ':', id: 'msr_startno', allowBlank: false, minValue:0, columnWidth: 0.45, labelWidth:80 },{ xtype: 'textfield', fieldLabel: '结束序列号', allowBlank: true, id: 'msr_endno', columnWidth: 0.45, labelWidth: 80, fieldStyle: "background:#E0E0FF;color:#515151;", readOnly: true }], closeAction: 'hide', buttonAlign: 'center', buttons: [{ text: $I18N.common.button.erpConfirmButton, handler: function(btn) { var form = btn.ownerCt.ownerCt, a = form.down('#msr_type'), b = form.down('#msr_prefix'), c = form.down('#msr_length'), d = form.down('#msr_system'); e = form.down('#msr_startno'); f = form.down('#msr_qty'); if(form.getForm().isDirty()) { var o = { msr_type: a.value, msr_prefix: b.value, msr_length: c.value, msr_system: d.value, msr_startno: e.value, msr_qty: f.value, msr_id: '' } var arr = new Array(); arr.push(o); me.checkAndUpdate(arr,true); }else{ showError("未发生修改!"); return; } } }, { text: $I18N.common.button.erpCloseButton, cls: 'x-btn-gray', handler: function(btn) { btn.up('window').close(); } }] }] }); win.show(); } } }); }, onGridItemClick : function(selModel, record) {//grid行选择 this.GridUtil.onGridItemClick(selModel, record); }, getForm : function(btn) { return btn.ownerCt.ownerCt; }, checkAndUpdate: function(arr,fromWin) { var me = this; var gridstore = new Array(); var bool = false; if(arr.length == 0 || arr==null || arr ==''){ showError('存在必填项没有填写或者未发生数据修改'); return; } Ext.each(arr, function(data) { var msr_startno = data.msr_startno; var msr_length = data.msr_length; var msr_prefix = data.msr_prefix; var msr_type = data.msr_type; var msr_system = data.msr_system; var msr_qty = data.msr_qty; if(!msr_startno || !msr_length || !msr_prefix || !msr_type || !msr_system || !msr_qty){ showError("存在必填项未填!"); bool = true; return false; } if(msr_length <= msr_prefix.length || msr_length != msr_startno.length){ showError("序列号长度必须大于前缀的长度,并且等于起始序列号的长度!"); bool = true; return false; } var prefix = msr_startno.substring(0, msr_prefix.length); if(prefix != msr_prefix){ showError("起始序列号开始必须和前缀相同!"); bool = true; return false; } var suffix = msr_startno.substring(msr_prefix.length, msr_startno.length); var endsuffix = ''; if (msr_system === "decimal") { var reg = /^[0-9]+$/; if(suffix.match(reg)==null){ showError('进制选择为【十进制】,起始序列号除了前缀必须为十进制数!'); bool = true; return false; } endsuffix = parseInt(suffix) + parseInt(msr_qty) - 1; } else if (msr_system === "hexadecimal") { reg = /^([0-9]|[A-F])+$/; if(suffix.match(reg)==null){ showError('进制选择为【十六进制】,起始序列号除了前缀必须为十六进制数(十六进制数必须大写)!'); bool = true; return false; } endsuffix = (parseInt(suffix,16) + parseInt(msr_qty) - 1).toString(16).toUpperCase(); } endsuffix += ''; if (endsuffix.length > suffix.length) { showError('结束序列号的长度超过起始序列号的长度!'); bool = true; return false; }else if (endsuffix.length < suffix.length) { for(var i = 0, n = suffix.length - endsuffix.length; i < n; i++) { endsuffix = '0' + endsuffix; } } data.msr_endno = prefix + endsuffix; gridstore.push(Ext.JSON.encode(data)); }); if(bool){ return false; } var ma_salecode = Ext.getCmp('sd_code').value; var sd_prodcode = Ext.getCmp('sd_prodcode').value; me.FormUtil.setLoading(true); Ext.Ajax.request({ url: basePath + 'pm/make/updateSaleSnRule.action', params: { gridStore: '[' + gridstore.join(',') + ']', salecode: ma_salecode, saleprodcode: sd_prodcode, caller: caller }, callback: function(opt, s, r) { me.FormUtil.setLoading(false); var rs = Ext.decode(r.responseText); if(rs.exceptionInfo) { showError(rs.exceptionInfo);return; } else { if (fromWin){ Ext.getCmp('addSaleRule').close(); } me.loadData(ma_salecode); } } }); }, loadData: function(value) { var me = this; var prodcode = Ext.getCmp('sd_prodcode'); if(prodcode){ prodcode = prodcode.value; } me.FormUtil.getFieldsValues("makesnrule", 'msr_id, msr_type, msr_prefix, msr_qty, msr_length, msr_system,msr_startno, msr_endno, msr_updateman, msr_updatedate', "msr_salecode='" +value+"' and msr_prodcode = '"+prodcode+"' order by msr_type desc", [], function(data){ var datas = Ext.JSON.decode(data), _datas = []; var grid = Ext.getCmp('grid'); if(datas.length > 0) { var keys = Ext.Object.getKeys(datas[0]); Ext.Array.each(datas, function(d){ var obj = {}; Ext.Array.each(keys, function(key){ obj[key.toLowerCase()] = d[key]; }); _datas.push(obj); }); } store = grid.getStore(); for(var i=0;i1){ if(store.data.items[1].data['msr_type'] == null || store.data.items[1].data['msr_type'] == '' ){ store.data.items[1].set('msr_type','after'); } } _datas.length > 0 && grid.store.loadData(_datas); grid.store.each(function(){ this.dirty = false; }); }); } });