|
|
@@ -0,0 +1,271 @@
|
|
|
+Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
|
|
|
+ extend: 'Ext.grid.Panel',
|
|
|
+ xtype: 'multidbfindgridpanel',
|
|
|
+ GridUtil: Ext.create('saas.util.GridUtil'),
|
|
|
+ BaseUtil: Ext.create('saas.util.BaseUtil'),
|
|
|
+ dataUrl: '',
|
|
|
+ dbSearchFields: [],
|
|
|
+ condition:'',
|
|
|
+ selectRecordArr:[],
|
|
|
+
|
|
|
+ selModel: {
|
|
|
+ checkOnly:true,
|
|
|
+ type:'checkboxmodel',
|
|
|
+ ignoreRightMouseSelection : false,
|
|
|
+ listeners:{
|
|
|
+ select:function(selModel,record,c,d){
|
|
|
+ var selectRecordArr = selModel.view.ownerCt.selectRecordArr;
|
|
|
+ selectRecordArr.push(record);
|
|
|
+ },
|
|
|
+ deselect:function(selModel,record){
|
|
|
+ var selectRecordArr = selModel.view.ownerCt.selectRecordArr;
|
|
|
+ var index = -1;
|
|
|
+ index = selectRecordArr.findIndex(function(f){
|
|
|
+ return f.id==record.id
|
|
|
+ });
|
|
|
+ if(index>-1){
|
|
|
+ selectRecordArr.splice(index,1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onHeaderClick: function(headerCt, header, e) {
|
|
|
+ console.log('header click');
|
|
|
+ if (header.isCheckerHd) {
|
|
|
+ e.stopEvent();
|
|
|
+ var isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');
|
|
|
+ if (isChecked && this.getSelection().length > 0) {//先全选,再筛选后再全选时,无法响应的bug
|
|
|
+ this.deselectAll(true);
|
|
|
+ } else {
|
|
|
+ this.selectAll(true);
|
|
|
+ this.view.ownerCt.selectall = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ initComponent: function() {
|
|
|
+ var me = this;
|
|
|
+ if(me.columns){
|
|
|
+ var fields = me.columns.map(column => column.dataIndex);
|
|
|
+ me.store = Ext.create('Ext.data.Store',{
|
|
|
+ fields:fields,
|
|
|
+ autoLoad: true,
|
|
|
+ pageSize: 6,
|
|
|
+ data: [],
|
|
|
+ proxy: {
|
|
|
+ type: 'ajax',
|
|
|
+ url: me.dataUrl,
|
|
|
+ actionMethods: {
|
|
|
+ read: 'GET'
|
|
|
+ },
|
|
|
+ reader: {
|
|
|
+ type: 'json',
|
|
|
+ rootProperty: 'data.list',
|
|
|
+ totalProperty: 'data.total',
|
|
|
+ }
|
|
|
+ },
|
|
|
+ listeners: {
|
|
|
+ beforeload: function (store, op) {
|
|
|
+ var condition = me.condition;
|
|
|
+ if (Ext.isEmpty(condition)) {
|
|
|
+ condition = " 1=1 ";
|
|
|
+ }
|
|
|
+ Ext.apply(store.proxy.extraParams, {
|
|
|
+ number: op._page,
|
|
|
+ size: store.pageSize,
|
|
|
+ keyword: condition
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Ext.apply(me, {
|
|
|
+ dockedItems:[{
|
|
|
+ xtype:'toolbar',
|
|
|
+ dock:'top',
|
|
|
+ items:me.dbSearchFields.concat([{
|
|
|
+ xtype:'button',
|
|
|
+ text:'查询',
|
|
|
+ handler:function(b){
|
|
|
+ var grid = me;
|
|
|
+ grid.condition = '';
|
|
|
+ var fields = grid.dbSearchFields;
|
|
|
+ Ext.Array.each(fields,function(f) {
|
|
|
+ var field = b.ownerCt.down('[name='+f.name+']')
|
|
|
+ var c = grid.getCondition(field,f.conditionExpression);
|
|
|
+ grid.condition+=c;
|
|
|
+ });
|
|
|
+ if(grid.condition.length>0){
|
|
|
+ grid.condition = grid.condition.substring(0,grid.condition.length-5);
|
|
|
+ }
|
|
|
+ grid.store.loadPage(1);
|
|
|
+ }
|
|
|
+ },'->',{
|
|
|
+ xtype:'button',
|
|
|
+ text:'新增'
|
|
|
+ }])
|
|
|
+ },{
|
|
|
+ xtype: 'pagingtoolbar',
|
|
|
+ dock: 'bottom',
|
|
|
+ displayInfo: true,
|
|
|
+ emptyMsg: "暂无数据",
|
|
|
+ store: me.store,
|
|
|
+ displayMsg: '显示{0}到{1}条数据,共有{2}条',
|
|
|
+ beforePageText: "当前第",
|
|
|
+ afterPageText: "页,共{0}页",
|
|
|
+ items:[{
|
|
|
+ xtype:'checkbox',
|
|
|
+ id:'showSelectRecord',
|
|
|
+ boxLabel:'显示选中数据',
|
|
|
+ handler:function(b){
|
|
|
+ var grid = me;
|
|
|
+ if(b.checked){
|
|
|
+ grid.store.loadData(grid.selectRecordArr);
|
|
|
+ }else{
|
|
|
+ grid.store.loadPage(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ moveFirst: function() {
|
|
|
+ //if(Ext.getCmp('showSelectRecord').checked==false){
|
|
|
+ if (this.fireEvent('beforechange', this, 1) !== false) {
|
|
|
+ this.store.loadPage(1);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ //}
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ movePrevious: function() {
|
|
|
+ var me = this,
|
|
|
+ store = me.store,
|
|
|
+ prev = store.currentPage - 1;
|
|
|
+ if (prev > 0) {
|
|
|
+ if (me.fireEvent('beforechange', me, prev) !== false) {
|
|
|
+ store.previousPage();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ moveNext: function() {
|
|
|
+ var me = this,
|
|
|
+ store = me.store,
|
|
|
+ total = me.getPageData().pageCount,
|
|
|
+ next = store.currentPage + 1;
|
|
|
+ if (next <= total) {
|
|
|
+ if (me.fireEvent('beforechange', me, next) !== false) {
|
|
|
+ store.nextPage();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ moveLast: function() {
|
|
|
+ var me = this,
|
|
|
+ last = me.getPageData().pageCount;
|
|
|
+ if (me.fireEvent('beforechange', me, last) !== false) {
|
|
|
+ me.store.loadPage(last);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ doRefresh: function() {
|
|
|
+ var me = this,
|
|
|
+ store = me.store,
|
|
|
+ current = store.currentPage;
|
|
|
+ if (me.fireEvent('beforechange', me, current) !== false) {
|
|
|
+ store.loadPage(current);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ updateInfo: function() {
|
|
|
+ var me = this,
|
|
|
+ displayItem = me.child('#displayItem'),
|
|
|
+ store = me.store,
|
|
|
+ pageData = me.getPageData(),
|
|
|
+ count, msg;
|
|
|
+ if (displayItem) {
|
|
|
+ count = store.getCount();
|
|
|
+ if (count === 0) {
|
|
|
+ msg = me.emptyMsg;
|
|
|
+ } else {
|
|
|
+ msg = Ext.String.format(me.displayMsg, pageData.fromRecord, pageData.toRecord, pageData.total);
|
|
|
+ }
|
|
|
+ displayItem.setText(msg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ });
|
|
|
+ }
|
|
|
+ me.callParent(arguments);
|
|
|
+ },
|
|
|
+
|
|
|
+ loadData: function(grid, url) {
|
|
|
+ this.BaseUtil.request({url})
|
|
|
+ .then(function(response) {
|
|
|
+ var data = Ext.decode(response.responseText);
|
|
|
+ grid.getStore().loadData(data.data);
|
|
|
+ grid.fireEvent('afterLoadData', grid, data.data);
|
|
|
+ grid.setLoading(false);
|
|
|
+ })
|
|
|
+ .catch(function(response) {
|
|
|
+ // something...
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ listeners:{
|
|
|
+ afterrender:function(grid){
|
|
|
+ if(grid.dataUrl){
|
|
|
+ grid.setLoading(true);
|
|
|
+ grid.loadData(grid, grid.dataUrl);
|
|
|
+ }
|
|
|
+ }//,
|
|
|
+ // itemClick: function(view,record) {
|
|
|
+ // var me = this;
|
|
|
+ // var dbfinds = me.dbfinds;
|
|
|
+ // if(dbfinds&&dbfinds.length>0){
|
|
|
+ // if(me.belong=='grid'){
|
|
|
+ // for (let index = 0; index < dbfinds.length; index++) {
|
|
|
+ // var item = dbfinds[index];
|
|
|
+ // var rec = me.dbfindtrigger.column.ownerCt.ownerCt.selModel.getLastSelected();
|
|
|
+ // if(rec){
|
|
|
+ // var nowRec = me.dbfindtrigger.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
|
|
|
+ // nowRec.set(item.to,record.get(item.from));
|
|
|
+ // //me.column.getEditor().setValue(record.get(item.from));
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }else if(me.belong=='form'){
|
|
|
+ // for (let index = 0; index < dbfinds.length; index++) {
|
|
|
+ // var item = dbfinds[index];
|
|
|
+ // var field = me.ownerCt.belong.down('[name='+item.to+']');
|
|
|
+ // if(field){
|
|
|
+ // var val = record.get(item.from);
|
|
|
+ // if(field.xtype=='dbfindtrigger'){
|
|
|
+ // field.setValue(val);
|
|
|
+ // field.lastTriggerValue=val;
|
|
|
+ // }else{
|
|
|
+ // field.setValue(val);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // me.ownerCt.close();
|
|
|
+ // }
|
|
|
+ },
|
|
|
+
|
|
|
+ getCondition: function(f,conditionExpression){
|
|
|
+ debugger
|
|
|
+ var condition = '';
|
|
|
+ if((f.xtype == 'checkbox' || f.xtype == 'radio')&&f.logic){
|
|
|
+
|
|
|
+ }else if(f.xtype=='textfield'&&f.value!=''){
|
|
|
+ condition=conditionExpression.replace(new RegExp("\\{0}","g"), f.value);
|
|
|
+ }
|
|
|
+ if(condition.length>0){
|
|
|
+ condition+= ' AND ';
|
|
|
+ }
|
|
|
+ return condition;
|
|
|
+ }
|
|
|
+});
|