Index: ssts-web/src/main/webapp/js/tBarForm.js =================================================================== diff -u --- ssts-web/src/main/webapp/js/tBarForm.js (revision 0) +++ ssts-web/src/main/webapp/js/tBarForm.js (revision 15441) @@ -0,0 +1,187 @@ +/** + * 工具栏的表单类 + * @param keyWordStore 关键字搜索的数据源,由于不是所有的数据源都能用,所以可以通过下面的setKeyWordStore方法来自定义数据 + * @see #setKeyWordStore + * @constructor + */ +var TBarForm = function (keyWordStore) { + var me = this; + if (!isUndefinedOrNullOrEmpty(keyWordStore)) { + me.searchKeyWord.store = keyWordStore; + } +} + + +/** + * 初始化表单 + * @param btn(可选)动态添加按钮,原来的按钮只有查询和重置,如果需要其他的按钮,可以通过传入这个值来添加 + * @param formItem(可选)自定义的表单,如果没给,则用默认的值 + * @see 动态添加按钮的格式参照:TBarForm.prototype.buttons + * @returns {*} + */ +TBarForm.prototype.initForm = function (btn, formItem) { + var me = this; + if (btn) { + me.addButton(btn); + } + var dateHelper = new DateHelper(Ext); + var firstDay = dateHelper.getFirstDayByJQ('yyyy-MM-dd', Ext); + var formItem = formItem || [{ + width: 400, + layout: 'column', + items: [{ + columnWidth: 1, + layout: 'form', + labelWidth: 60, + items: [me.searchKeyWord] + }, { + columnWidth: .5, + layout: 'form', + labelWidth: 60, + items: [dateHelper.init('startDate', 'startDate', '开始日期', firstDay)] + }, { + columnWidth: .5, + layout: 'form', + labelWidth: 60, + items: [dateHelper.init('endDate', 'endDate', '结束日期')] + }] + }, { + width: 250, + layout: 'column', + items: me.buttons + }]; + var queryForm = new Ext.Panel({ + layout: 'table', + frame: true, + region: 'north', + border: false, + bodyBorder: false, + layoutConfig: {columns: 2}, + height: 63, + items: formItem + }); + return queryForm; + +} + +/** + * 添加按钮 + * @param btn + */ +TBarForm.prototype.addButton = function (btn) { + var me = this; + me.buttons = me.buttons.concat(btn); +} + +/** + * 重置表单数据 + */ +TBarForm.prototype.resetQueryForm = function () { + $Id('keyWord').value = ""; + $Id('startDate').value = ""; + $Id('endDate').value = ""; + $Id('parm_s_keyWord').value = ""; +} + +/** + * 查询按钮触发事件 + */ +TBarForm.prototype.doQuery = function () { + var startDate = $Id('startDate').value; + var endDate = $Id('endDate').value; + if (startDate || endDate) { + if (!compareDate(startDate, endDate)) { + showResult("开始时间不能大于结束时间"); + return; + } + } + $Id('parm_s_startDate').value = startDate; + $Id('parm_s_endDate').value = endDate; + // var keyWord = $Id('keyWord').value; + // $Id('parm_s_keyWord').value = keyWord; + grid.dwrReload(); +} + +/** + * 自定义关键字搜索的数据源,由于部分store不一定能用,所以可以在这里定义数据源 + * @param url 数据源的url + */ +TBarForm.prototype.setKeyWordStore = function (url) { + var me = this; + var keyWordStore = new Ext.data.Store({ + proxy: new Ext.data.HttpProxy({ + url: url, + method: 'POST' + }), + reader: new Ext.data.JsonReader({ + totalProperty: 'totalCount', + root: 'data' + }, [{ + name: 'id', + mapping: 'id' + }, { + name: 'spelling', + mapping: 'spelling' + }, { + name: 'name', + mapping: 'name' + }]) + }); + me.searchKeyWord.store = keyWordStore; +} + +//关键字输入框 +TBarForm.prototype.searchKeyWord = { + fieldLabel: '关键字', + xtype: 'combo', + id: 'keyWord', + name: 'keyWord', + queryParam: 'spell', + minChars: 0, + valueField: 'id', + displayField: 'name', + width: 600, + forceSelection: true, + lazyInit: true, + triggerAction: 'all', + hideTrigger: true, + typeAhead: false, + allowBlank: true, + anchor: '97%', + listeners: { + select: function (combo, records, eOpts) { + var keyWord = records.get('id'); + $Id('parm_s_keyWord').value = keyWord; + // $Id('keyWord').value = keyWord; + } + } +} + +/** + * 其他按钮 + * @type {*[]} + */ +TBarForm.prototype.buttons = [{ + columnWidth: .3, + layout: 'form', + items: [{ + xtype: 'button', + text: '查询', + minWidth: 70, + iconCls: 'icon_search', + handler: TBarForm.prototype.doQuery + }] +}, { + columnWidth: .3, + layout: 'form', + items: [{ + xtype: 'button', + text: '重置', + minWidth: 70, + iconCls: 'icon_set', + handler: TBarForm.prototype.resetQueryForm + }] +}]; + + + Index: ssts-web/src/main/webapp/js/dateHelper.js =================================================================== diff -u --- ssts-web/src/main/webapp/js/dateHelper.js (revision 0) +++ ssts-web/src/main/webapp/js/dateHelper.js (revision 15441) @@ -0,0 +1,98 @@ +/** + * 日期帮助类,里面有初始化日期控件和获取当前时间,当月第一天的方法 + * @param extObj 对应的extjs对象 + * @constructor + */ +var DateHelper = function (extObj) { + this.extObj = extObj; +}; + + +/** + * 初始化日期控件 + * @param fieldId 对应的id属性 + * @param fieldName 对应的name属性 + * @param fieldLabel 对应显示的文字 + * @param defaultTime 默认的事件,如果没有则默认用Ext的方式取服务器当前时间 + * @param config 自定义的field,如果定义了这个则使用这个 + * @returns {{xtype: string, fieldLabel: *, name: *, id: *, readOnly: boolean, altFormats: string, value: Date, editable: boolean, format: string, anchor: string}} + */ +DateHelper.prototype.init = function (fieldId, fieldName, fieldLabel, defaultTime, config) { + var me = this; + //如果extObj有值则用回原来的Ext对象,否则默认给一个 + try { + me.extObj = me.extObj || Ext; + } + catch (error) { + // 如果Ext2不存在则用Ext4 + me.extObj = Ext4; + } + var field = config || { + xtype: 'datefield', + fieldLabel: fieldLabel, + name: fieldName, + id: fieldId, + readOnly: false, + altFormats: 'Y-m-d|Y-n-j|y-n-j|y-m-j|y-m-d|y-n-d|Y-n-d|Y-m-j|Ymd|Ynj|ynj|ymj|ymd|ynd|Ynd|Ymj|Y/m/d|Y/n/j|y/n/j|y/m/j|y/m/d|y/n/d|Y/n/d|Y/m/j', + // value: defaultTime || DateHelper.prototype.getServerTimeByExt('yyyy-MM-dd', me.extObj, fieldId), + value: defaultTime || me.getServerTimeByExt('yyyy-MM-dd', me.extObj, fieldId), + editable: false, + format: 'Y-m-d', + anchor: '94%' + } + return field; +} + + +/** + * 用ExtJs的ajax方式获取服务器时间(注:这种ajax方式在ExtJs2版本不支持同步) + * @param format 时间格式 + * @param extObj Ext对象,暂时有top.Ext,top.Ext4,Ext + * @param fieldId 要设置时间区域的id + * @param myFn 自定义的方法(可选) + * @param url 自定义url(可选) + * @see common.js里的getServerTime + */ +DateHelper.prototype.getServerTimeByExt = function (format, extObj, fieldId, myFn, url) { + getServerTime(format, extObj, fieldId, myFn, url); +} + +/** + * 用jquery的ajax方式向服务器获取当前月第一天的时间(注:要引入jquery库) + * @param format 时间格式 + * @param extObj Ext对象,暂时有top.Ext,top.Ext4,Ext + * @param myFn 回调方法(可选) + */ +DateHelper.prototype.getFirstDayByJQ = function (format, extObj, myFn) { + var me = this; + return me.getServerTimeByJQ(format, extObj, WWWROOT + '/system/serverTimeAction!getFirstDay.do', myFn); +} + +/** + * 用jquery的ajax方式向服务器获取时间,如果不传url默认获取当前时间(注:要引入jquery库) + * @param format 时间格式 + * @param extObj Ext对象 + * @param url 获取时间的url(可选) + * @param myFn 回调方法(可选) + * @returns {*} + */ +DateHelper.prototype.getServerTimeByJQ = function (format, extObj, url, myFn) { + var obj; + $.ajax({ + url: url || WWWROOT + '/system/serverTimeAction!getServerDateTime.do', + type: "POST", + async: false, + data: {dateformat: format} + }).done(function (data) { + obj = extObj.decode(data); + }).fail(function (jqXHR, textStatus, errorThrown) { + alert('获取服务器时间失败'); + }); + if (myFn) { + myFn(obj); + return; + } + return obj.serverTime; +} + +