/** * 方便选择的时间区间查询 * @author */ Ext.define('erp.view.core.form.ConDateHourMinuteFieldQ', { extend: 'Ext.form.FieldContainer', alias: 'widget.condatehourminutefieldq', layout: 'column', requires:['erp.view.core.form.DateHourMinuteField'], valuePrint:"", items: [], layout: 'column', showscope: true, defaultamstarttime:'08:00', defaultamendtime:'12:00', defaultpmstarttime:'14:00', defaultpmendtime:'18:00', timeregex:/^(([01]?[0-9])|(2[0-3])):[0-5]?[0-9]$/, dateregex:/^(d{4})-(d{2})-(d{2})$/, minDate:null, minTime:null, maxDate:null, maxTime:null, initComponent : function(){ this.cls = (this.cls || '') + ' x-form-field-multi'; this.callParent(arguments); var me = this; if(me.value){ me.minDate=me.value.substring(0,10); me.minTime=me.value.substring(11,16); } if(me.secondvalue){ me.maxDate=me.secondvalue.substring(0,10); me.maxTime=me.secondvalue.substring(11,16); } me.insert(0, Ext.create('Ext.form.field.Date', { columnWidth: 0.3, fieldStyle: me.fieldStyle, readOnly:me.readOnly, value:me.minDate, groupName:me.groupName, allowBlank: me.allowBlank, editable:false, listeners: { change: function(field){ var date = me.items.items[0].value; var time = me.items.items[1].value; me.items.items[3].setMinValue(date); if(me.items.items[3].value && date>me.items.items[3].value){ me.items.items[3].setValue(null); } if(date!=null && date !='' && time!=null && time !='' && me.timeregex.test(time)){ me.firstValue=Ext.Date.format(date,'Y-m-d')+" "+time+":00"; this.value=me.firstValue; me.items.items[5].setValue(me.firstValue); } } } })); me.insert(1, Ext.create('erp.view.core.form.TimeMinuteField', { columnWidth: 0.2, fieldStyle: me.fieldStyle, readOnly:me.readOnly, allowBlank: me.allowBlank, value:me.minTime, groupName:me.groupName, editable:false, listeners: { change: function(){ var date = me.items.items[0].value; var time = me.items.items[1].value; if(date!=null && date !='' && time!=null && time !='' && me.timeregex.test(time)){ me.firstValue=Ext.Date.format(date,'Y-m-d')+" "+time+":00"; this.value=me.firstValue; me.items.items[5].setValue(me.firstValue); } } } })); me.insert(2,{ xtype: 'label', text: ' -- ', paddings: '0 10 0 10' }); me.insert(3, Ext.create('Ext.form.field.Date', { columnWidth: 0.3, fieldStyle: me.fieldStyle, readOnly:me.readOnly, value:me.maxDate, editable:false, groupName:me.groupName, allowBlank: me.allowBlank, listeners: { change: function(){ var date = me.items.items[3].value; var time = me.items.items[4].value; me.items.items[0].setMaxValue(date); if(me.items.items[0].value && me.items.items[0].value>date){ me.items.items[0].setValue(null); } if(date!=null && date !='' && time!=null && time !='' && me.timeregex.test(time)){ me.secondvalue=Ext.Date.format(date,'Y-m-d')+" "+time+":00"; /*Ext.getCmp(me.secondname).setValue(me.secondvalue);*/ } } } })); me.insert(4, Ext.create('erp.view.core.form.TimeMinuteField', { columnWidth: 0.2, fieldStyle: me.fieldStyle, readOnly:me.readOnly, value:me.maxTime, groupName:me.groupName, allowBlank: me.allowBlank, listeners: { change: function(){ var date = me.items.items[3].value; var time = me.items.items[4].value; if(date!=null && date !='' && time!=null && time !='' && me.timeregex.test(time)){ me.secondvalue=Ext.Date.format(date,'Y-m-d')+" "+time+":00"; } } } })); me.insert(5,{ xtype:'hidden', name:me.name, value:me.value }); me.insert(6,{ xtype: 'button', iconCls: 'x-button-icon-add', cls: 'x-btn-tb', width:20, hidden:me.readOnly==true, listeners:{ mouseover:function(btn,e){ btn.showMenu(); } }, menuAlign:'tl-bl?', menu:{ xtype:'menu', width:100, items:[{ text: '上午', iconCls: 'main-msg', listeners: { click: function(m){ me.setDateFieldValue(1); } } },{ text: '下午', iconCls: 'main-msg', width:80, listeners: { click: function(m){ me.setDateFieldValue(2); } } },{ text: '上下午', width:80, iconCls: 'main-msg', listeners: { click: function(m){ me.setDateFieldValue(3); } } },{ text:'自定义', width:50, iconCls: 'main-msg', listeners: { click: function(m){ me.setDateFieldValue(4); } } }] } }); }, setDateFieldValue: function(v){ v = Number(v); var now=new Date(), minDate, maxDate, minTime, maxTime; var nowYear = now.getYear(); //当前年 nowYear += (nowYear < 2000) ? 1900 : 0; var me = this; switch (v) { case 1://上午 minDate = now; maxDate = now; minTime =me.defaultamstarttime; maxTime =me.defaultamendtime; break; case 2://下午 minDate = now; maxDate = now; minTime =me.defaultpmstarttime; maxTime =me.defaultpmendtime; break; case 3://整天 minDate = now; maxDate = now; minTime =me.defaultamstarttime; maxTime =me.defaultpmendtime; break; case 4://非整天 minDate = new Date(1970, 0, 1); maxDate = new Date(nowYear + 100, 11, 31); minTime = '00:00'; maxTime = '23:59'; break; default: minDate = null; maxDate = null; minTime = null; maxTime = null; break; } me.items.items[0].setValue(minDate); me.items.items[1].setValue(minTime); me.items.items[3].setValue(maxDate); me.items.items[4].setValue(maxTime); }, isValid: function(){ return this.firstField.isValid(); }, setValue: function(value){ this.firstField.setValue(value); }, getValue: function(){ return this.value; }, setReadOnly:function(bool){ Ext.Array.each(this.items.items,function(item){ if(item.setReadOnly)item.setReadOnly(bool); if(item.xtype='button'){ if(bool) item.hide(); else item.show(); } }); this.fireEvent('resize',this); }, setFieldStyle:function(style){ Ext.Array.each(this.items.items,function(item){ if(item.setFieldStyle) item.setFieldStyle(style); }); }, hideScope: function(bool) { if(bool) this.items.items[0].hide(); else this.items.items[0].show(); }, mregex: /^[1-9]\d{3}[0-1]\d$/, listeners: { afterrender: function(){ var tb = this.getEl().dom; tb.childNodes[1].style.height = 22; tb.childNodes[1].style.overflow = 'hidden'; } } });