123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- /**
- * From-To datefield With combobox
- * @author yingp
- */
- Ext.define('erp.view.core.form.ConDateField', {
- extend: 'Ext.form.FieldContainer',
- alias: 'widget.condatefield',
- layout: 'hbox',
- valuePrint:"",
- items: [],
- showscope: true,
- initComponent : function(){
- this.cls = (this.cls || '') + ' x-form-field-multi';
- this.callParent(arguments);
- var me = this, allowBlank = (Ext.isDefined(me.allowBlank) ? me.allowBlank : true);
- me.combo = Ext.create('Ext.form.field.ComboBox', {
- width: 75,
- editable: false,
- hidden: !me.showscope,
- fieldStyle: 'background:#C1CDC1',
- store: Ext.create('Ext.data.Store', {
- fields: ['display', 'value'],
- data : [
- {"display":"-请选择-", "value": 7},
- {"display":"今天", "value": 1},
- {"display":"昨天", "value": 2},
- {"display":"本月", "value": 3},
- {"display":"上个月", "value": 4},
- {"display":"本年度", "value": 5},
- {"display":"上年度", "value": 6},
- {"display":"自定义", "value": 7}
- ]
- }),
- queryMode: 'local',
- displayField: 'display',
- valueField: 'value',
- value: 3,
- listeners: {
- select: function(combo, records, obj){
- me.setDateFieldValue(combo.value);
- }
- }
- });
- me.insert(0, me.combo);
- me.from = me.insert(1, {
- xtype: 'datefield',
- id: me.name + '_from',
- name: me.name + '_from',
- format: 'Y-m-d',
- allowBlank: allowBlank,
- flex: 1,
- fieldStyle: me.fieldStyle,
- listeners: {
- change: function(){
- var from = Ext.getCmp(me.name + '_from').value;
- var to = Ext.getCmp(me.name + '_to').value;
- var v = me.items.items[0].value;
- if(v != 7) {
- Ext.getCmp(me.name + '_to').setMinValue(Ext.getCmp(me.name + '_from').value);
- }
- from = from == null || from == '' ? to == null || to == '' ? '' : to : from;
- to = to == null || to == '' ? from == null || from == '' ? '' : from : to;
- me.firstVal = from;
- me.secondVal = to;
- if(to!=''&&from!=''){
- me.value = "BETWEEN to_date('" + Ext.Date.format(from,'Y-m-d') + " 00:00:00','yyyy-MM-dd HH24:mi:ss') AND to_date('"
- + Ext.Date.format(to,'Y-m-d') + " 23:59:59','yyyy-MM-dd HH24:mi:ss')";
- if(me.ownerCt){
- var tablename = me.ownerCt.tablename;
- me.valuePrint="{"+tablename+"."+me.name+"}>=date('"+Ext.Date.format(from,'Y-m-d')+"') and {"+tablename+"."+me.name+"}<=date('"+Ext.Date.format(to,'Y-m-d')+"')";
- }
- }else {
- me.value=null;
- }
- }
- }
- });
- me.to = me.insert(2, {
- xtype: 'datefield',
- id: me.name + '_to',
- name: me.name + '_to',
- allowBlank: allowBlank,
- format: 'Y-m-d',
- flex: 1,
- fieldStyle: me.fieldStyle,
- listeners: {
- change: function(){
- var from = Ext.getCmp(me.name + '_from').value;
- var to = Ext.getCmp(me.name + '_to').value;
- var v = me.items.items[0].value;
- Ext.getCmp(me.name + '_from').setMaxValue(Ext.getCmp(me.name + '_to').value);
- from = from == null || from == '' ? to == null || to == '' ? '' : to : from;
- to = to == null || to == '' ? from == null || from == '' ? '' : from : to;
- me.firstVal = from;
- me.secondVal = to;
- if(to!=''&& from!=''){
- me.value = "BETWEEN to_date('" + Ext.Date.format(from,'Y-m-d') + " 00:00:00','yyyy-MM-dd HH24:mi:ss') AND to_date('"
- + Ext.Date.format(to,'Y-m-d') + " 23:59:59','yyyy-MM-dd HH24:mi:ss')";
- if(me.ownerCt){
- var tablename = me.ownerCt.tablename;
- me.valuePrint = "{"+tablename+"."+me.name+"}>=date('"+Ext.Date.format(from,'Y-m-d')+"') and {"+tablename+"."+me.name+"}<=date('"+Ext.Date.format(to,'Y-m-d')+"')";
- }
- }else {
- me.value=null;
- }
- }
- }
- });
- var t = this.value;
- if(!t || !t in [1,2,3,4,5,6,7]) {
- t = 3;
- }
- this.value = null;
- this.setValue(t);
- },
- setDateFieldValue: function(v){
- v = Number(v);
- var me = this;
- var from = Ext.getCmp(me.name + '_from');
- var to = Ext.getCmp(me.name + '_to');
- var now = new Date(); //当前日期
- var nowDay = now.getDate(); //当前日
- var nowMonth = now.getMonth(); //当前月
- var nowYear = now.getYear(); //当前年
- nowYear += (nowYear < 2000) ? 1900 : 0;
- var maxDate = null;
- var minDate = null;
- switch (v) {
- case 1://今天
- minDate = now;
- maxDate = now;
- break;
- case 2://昨天
- minDate = new Date(nowYear, nowMonth, nowDay - 1);
- maxDate = new Date(nowYear, nowMonth, nowDay - 1);
- break;
- case 3://本月
- minDate = Ext.Date.getFirstDateOfMonth(now);
- maxDate = Ext.Date.getLastDateOfMonth(now);
- break;
- case 4://上个月
- minDate = Ext.Date.getFirstDateOfMonth(new Date(nowYear, nowMonth - 1, 1));
- maxDate = Ext.Date.getLastDateOfMonth(new Date(nowYear, nowMonth - 1, 1));
- break;
- case 5://本年度
- minDate = new Date(nowYear, 0, 1);
- maxDate = new Date(nowYear, 11, 31);
- break;
- case 6://上年度
- minDate = new Date(nowYear - 1, 0, 1);
- maxDate = new Date(nowYear - 1, 11, 31);
- break;
- case 7://自定义
- minDate = new Date(1970, 0, 1);
- maxDate = new Date(nowYear + 100, 11, 31);
- break;
- default:
- minDate = new Date(1970, 0, 1);
- maxDate = new Date(nowYear + 100, 11, 31);
- break;
- }
- from.setMaxValue(maxDate);
- from.setMinValue(minDate);
- to.setMaxValue(maxDate);
- to.setMinValue(minDate);
- if(v == 7) {
- from.setValue(null);
- to.setValue(null);
- me.firstVal = null;
- me.secondVal = null;
- from.setEditable(true);
- to.setEditable(true);
- } else {
- from.setValue(minDate);
- to.setValue(maxDate);
- me.firstVal = minDate;
- me.secondVal = maxDate;
- from.setEditable(false);
- to.setEditable(false);
- }
- },
- setValue: function(v){
- if (v) {
- this.combo.setValue(v);
- this.setDateFieldValue(v);
- }
- },
- getValue: function(){
- return this.value;
- },
- listeners: {
- afterrender: function(){
- var tablename = this.ownerCt == null ? '' : this.ownerCt.tablename;
- if(this.firstVal != null && this.secondVal != null) {
- this.valuePrint = "{"+tablename+"."+this.name+"}>=date('"+Ext.Date.toString(this.firstVal)+"') and {"
- +tablename+"."+this.name+"}<=date('"+Ext.Date.toString(this.secondVal)+"')";
- }
- }
- },
- hideScope: function(bool) {
- if(bool)
- this.items.items[0].hide();
- else
- this.items.items[0].show();
- },
- mregex: /^[1-9]\d{3}[0-1]\d$/,
- setMonthValue: function(val) {
- if(this.mregex.test(val)) {
- var me = this,
- d = Ext.Date.parse(val + '01', 'Ymd'),
- f = Ext.Date.getFirstDateOfMonth(d),
- l = Ext.Date.getLastDateOfMonth(d);
- var from = Ext.getCmp(me.name + '_from');
- var to = Ext.getCmp(me.name + '_to');
- from.setMaxValue(l);
- from.setMinValue(f);
- to.setMaxValue(l);
- to.setMinValue(f);
- from.setValue(f);
- to.setValue(l);
- }
- },
- getFilter: function() {
- var me = this, fromVal = me.from.getValue(), toVal = me.to.getValue();
- return (fromVal || toVal) ? {
- "gte": fromVal ? Ext.Date.format(fromVal, 'Y-m-d') : null,
- "lte": toVal ? Ext.Date.format(toVal, 'Y-m-d') : null
- } : null;
- }
- });
|