123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- /**
- * form配置的grid 相当于form组件 可自定义数据
- */
- Ext.define('erp.view.core.grid.ItemGrid',{
- extend: 'Ext.grid.Panel',
- alias: 'widget.itemgrid',
- region: 'south',
- layout : 'fit',
- // id: 'grid1',
- // height:200,
- emptyText : $I18N.common.grid.emptyText,
- columnLines : true,
- autoScroll : true,
- store: [],
- columns: [],
- readOnly : true,
- GridUtil: Ext.create('erp.util.GridUtil'),
- // plugins: Ext.create('Ext.grid.plugin.CellEditing', {
- //
- // clicksToEdit: 1
- // }),
- initComponent : function(){
- var me = this;
- var logic = this.logic;
- var value = this.value;
- me.caller = logic;
- me.readOnly = true;
- me.plugins = new Ext.create('Ext.grid.plugin.CellEditing',{
- id : 'plugins_'+me.id,
- clicksToEdit: 1
- });
- var objectArray = new Array();
- if(this.iniValue!= null &&this.iniValue!= ''){
- //解析 this.defaultValue 的数据
- //this.defaultValue 的数据格式为 columnname1:cn11,cn12,cn13;columnname2:cn21,cn22,cn23
-
- var defaultColumns = this.iniValue.split(';'); //得到[{columnname1:cn11,cn12,cn13},{columnname2:cn21,cn22,cn23}]
- var c = defaultColumns[0].split(':');
- var vc = c[1].split(',');
- for(var i = 0; i < vc.length;i++){
- var o = new Object();
- objectArray.push(o);
- }
-
- Ext.each(defaultColumns,function(dColumn,index){
- var dd = dColumn.split(':');
- var vd = dd[1].split(',');
- Ext.each(objectArray,function(o,index){
- o[dd[0]] = vd[index];
- });
- });
- }
-
- var condition = "ig_mainid = '"+value+"'";
- var gridParam = {caller: logic , condition: condition};
- me.getGridColumnsAndStore(this, 'common/singleGridPanel.action', gridParam, objectArray);//从后台拿到gridpanel的配置及数据
- this.callParent(arguments);
- },
- //把初始化的数据初始化grid
- initGridData: function(grid, count, append, objectArray){
- var store = grid.store,
- items = store.data.items, arr = new Array();
- var detno = grid.detno;
- count = objectArray.length;
- append = append === undefined ? true : false;
- if(detno){
- var index = items.length == 0 ? 0 : Number(store.last().get(detno));
- for(var i=0;i < count;i++ ){
- var o = new Object();
- o[detno] = index + i + 1;
- arr.push(o);
- }
- } else {
- for(var i=0;i < count;i++ ){
- var o = new Object();
-
- arr.push(o);
- }
- }
- store.loadData(objectArray, append);
- var i = 0;
- store.each(function(item, x){
- if(item.index) {
- i = item.index;
- } else {
- if (i) {
- item.index = i++;
- } else {
- item.index = x;
- }
- }
- });
- },
- getGridColumnsAndStore: function(grid, url, param, objectArray){
- var me = this;
- grid.setLoading(true);
- Ext.Ajax.request({//拿到grid的columns
- url : basePath + url,
- params: param,
- async: (grid.sync ? false : true),
- method : 'post',
- callback : function(options,success,response){
- grid.setLoading(false);
- var res = new Ext.decode(response.responseText);
- if(res.exceptionInfo){
- showError(res.exceptionInfo);return;
- }
- if(res.columns){
- var limits = res.limits, limitArr = new Array();
- if(limits != null && limits.length > 0) {//权限外字段
- limitArr = Ext.Array.pluck(limits, 'lf_field');
- }
- Ext.each(res.columns, function(column, y){
- // column有取别名
- if(column.dataIndex.indexOf(' ') > -1) {
- column.dataIndex = column.dataIndex.split(' ')[1];
- }
- //power
- if(limitArr.length > 0 && Ext.Array.contains(limitArr, column.dataIndex)) {
- column.hidden = true;
- }
- //renderer
- me.GridUtil.setRenderer(grid, column);
- //logictype
- me.GridUtil.setLogicType(grid, column);
- });
- //data
- var data = [];
- if(!res.data || res.data.length == 2){
- if (grid.buffered) {
- me.GridUtil.add10EmptyData(grid.detno, data);
- me.GridUtil.add10EmptyData(grid.detno, data);//添加20条空白数据
- } else {
- grid.on('reconfigure', function(){// 改为Grid加载后再添加空行,节约200~700ms
- me.initGridData(grid, 40, false,objectArray);
- });
- }
- } else {
- data = Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']'));
- }
- //store
- var store = me.GridUtil.setStore(grid, res.fields, data, grid.groupField, grid.necessaryField);
- //view
- if(grid.selModel && grid.selModel.views == null){
- grid.selModel.views = [];
- }
- //dbfind
- if(res.dbfinds && res.dbfinds.length > 0){
- grid.dbfinds = res.dbfinds;
- }
- //reconfigure
- if(grid.sync) {//同步加载的Grid
- grid.reconfigure(store, res.columns);
- grid.on('afterrender', function(){
- me.GridUtil.setToolbar(grid, grid.columns, grid.necessaryField, limitArr);
- });
- } else {
- //toolbar
- if (grid.generateSummaryData === undefined) {// 改为Grid加载后再添加合计,节约60ms
- me.GridUtil.setToolbar(grid, res.columns, grid.necessaryField, limitArr);
- }
- grid.reconfigure(store, res.columns);
- }
- if(grid.buffered) {//缓冲数据的Grid
- grid.verticalScroller = Ext.create('Ext.grid.PagingScroller', {
- activePrefetch: false,
- store: store
- });
- store.guaranteeRange(0, store.pageSize - 1);
- }
- var form = Ext.ComponentQuery.query('form');
- if(form && form.length > 0){
- grid.readOnly = form[0].readOnly;//grid不可编辑
- }
- } else {
- grid.hide();
- var form = Ext.ComponentQuery.query('form')[0];
- if(form) {
- if(form.items.items.length == 0) {
- form.on('afterload', function(){
- me.GridUtil.updateFormPosition(form);//字段较少时,修改form布局
- });
- } else {
- me.GridUtil.updateFormPosition(form);//字段较少时,修改form布局
- }
- }
- }
- }
- });
- },
- saveValue:function(){
- var me = this;
- Ext.Ajax.request({//拿到grid的columns
- url : basePath + 'common/getSequenceId.action',
- params: {
- seqname:'itemgrid_main_seq',
- _token: me.id
- },
- async: false,
- method : 'post',
- callback : function(options,success,response){
- var res = Ext.decode(response.responseText);
- if(res.id){
- me.value = res.id;
- Ext.each(me.store.data.items,function(item,index){
- item.set('ig_mainid',res.id);
- });
- var jsondata = me.GridUtil.getGridStore(me);
- Ext.Ajax.request({
- url : basePath + 'common/saveItemGrid.action',
- params: {
- data:jsondata
- },
- async: false,
- method:'post'
- });
- } else if(res.exceptionInfo){
- showError(res.exceptionInfo);return;
- }
- }
- });
-
- },
- updateValue:function(){
- var me = this;
- var jsondata = me.GridUtil.getGridStore(me);
- Ext.Ajax.request({//拿到grid的columns
- url : basePath + 'common/updateItemGrid.action',
- params: {
- data:jsondata
- },
- async: false,
- method : 'post'
- });
-
- }
-
- });
|