123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343 |
- Ext.util.Sorter.prototype.defaultSorterFn=function(d, c) {
- var b = this, a = b.transform, g = b.getRoot(d)[b.property], e = b.getRoot(c)[b.property];
- if (a) {
- g = a(g);
- e = a(e)
- }
- if (typeof(g) == "string") {
- return g.localeCompare(e);
- }
- return g > e ? 1 : (g < e ? -1 : 0)
- };
- Ext.define('erp.view.common.editorColumn.GridPanel',{
- extend: 'Ext.grid.Panel',
- alias: 'widget.erpEditorColumnGridPanel',
- id: 'editorColumnGridPanel',
- emptyText : $I18N.common.grid.emptyText,
- columnLines : true,
- autoScroll : true,
- store: [],
- columns: [],
- GridUtil: Ext.create('erp.util.GridUtil'),
- BaseUtil: Ext.create('erp.util.BaseUtil'),
- RenderUtil: Ext.create('erp.util.RenderUtil'),
- plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
- clicksToEdit: 1
- }), Ext.create('erp.view.core.plugin.CopyPasteMenu')],
- bodyStyle:'background-color:#f1f1f1;',
- multiselected: new Array(),
- features : [Ext.create('Ext.grid.feature.Grouping',{
- groupHeaderTpl: '{name} (Count:{rows.length})'
- })],
- selModel: Ext.create('Ext.selection.CheckboxModel',{
- ignoreRightMouseSelection : false,
- checkOnly: true,
- listeners:{
- selectionchange:function(selectionModel, selected, options){
- }
- },
- getEditor: function(){
- return null;
- }
- }),
- caller: null,
- condition: null,
- initComponent : function(){
- // 额外的plugin
- if(this.pluginConfig)
- this.plugins = Ext.Array.merge(this.plugins, this.pluginConfig);
- this.getGridColumnsAndStore(this.condition || condition);
- this.addEvents({
- storeloaded: true
- });
- this.callParent(arguments);
- },
- getEffectData: function(){
- var grid = this;
- var items = grid.selModel.getSelection();
- Ext.each(items, function(item, index){
- if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
- && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
- grid.multiselected.push(item);
- }
- });
- var records = this.unique(grid.multiselected);
- if(records.length > 0){
- var data = new Array();
- Ext.each(records, function(record, index){
- if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
- && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)){
- var o = new Object();
- if(grid.keyField){
- o[grid.keyField] = record.data[grid.keyField];
- }
- if(grid.necessaryFields){
- Ext.each(grid.necessaryFields, function(f, index){
- var v = record.data[f];
- if(Ext.isDate(v)){
- v = Ext.Date.toString(v);
- }
- o[f] = v;
- });
- }
- data.push(o);
- }
- });
- return data;
- }
- },
- unique: function(items) {
- var d = new Object();
- Ext.Array.each(items, function(item){
- d[item.id] = item;
- });
- return Ext.Object.getValues(d);
- },
- updateAction: function(url){
- var grid = this, btn = parent.Ext.getCmp('win').down('button[name=confirm]');
- var data = grid.getEffectData();
- if(data != null){
- grid.setLoading(true);
- Ext.Ajax.request({
- url : basePath + url,
- params: {
- caller: caller,
- data: Ext.encode(data)
- },
- method : 'post',
- async: false,
- callback : function(options,success,response){
- grid.setLoading(false);
- btn.setDisabled(false);
- grid.multiselected = new Array();
- var localJson = new Ext.decode(response.responseText);
- if(localJson.exceptionInfo){
- showError(localJson.exceptionInfo);
- return "";
- }
- if(localJson.success){
- if(localJson.log){
- showMessage("提示", localJson.log);
- }
- Ext.Msg.alert("提示", "处理成功!", function(){
- window.location.href = window.location.href;
- });
- }
- }
- });
- } else {
- btn.setDisabled(false);
- }
- },
- reloadData: function(condition, callback) {
- var grid = this;
- grid.setLoading(true);
- Ext.Ajax.request({
- url : basePath + 'common/singleGridPanel.action',
- params: {
- caller: this.caller || caller,
- condition: condition
- },
- method : 'post',
- callback : function(opt, s, resp){
- grid.setLoading(false);
- var res = new Ext.decode(resp.responseText);
- callback && callback.call(null, res.data ?
- Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']')) : []);
- }
- });
- },
- getGridColumnsAndStore: function(condition){
- var grid = this;
- grid.setLoading(true);
- Ext.Ajax.request({//拿到grid的columns
- url : basePath + 'common/singleGridPanel.action',
- params: {
- caller: this.caller || caller,
- condition: condition
- },
- method : 'post',
- async: false,
- callback : function(options,success,response){
- grid.setLoading(false);
- var res = new Ext.decode(response.responseText);
- if(res.exceptionInfo){
- showError(res.exceptionInfo);return;
- }
- var data = [];
- if(!res.data || res.data.length == 2){
- grid.GridUtil.add10EmptyData(grid.detno, data);
- grid.GridUtil.add10EmptyData(grid.detno, data);
- } else {
- data = Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']'));
- }
- if(grid.columns && grid.columns.length > 2){
- grid.store.loadData(data);
- if(grid.normalGrid){
- grid.normalGrid.on('scrollershow',function(scroller){
- if (scroller && scroller.scrollEl) {
- scroller.clearManagedListeners();
- scroller.mon(scroller.scrollEl, 'scroll', scroller.onElScroll, scroller);
- }
- });
- }
- grid.fireEvent('scrollershow', grid.verticalScroller, 'vertical');
- } else {
- if(res.columns){
- Ext.each(res.columns, function(column, y){
- //render
- if(!column.haveRendered && column.renderer != null && column.renderer != ""){
- var renderName = column.renderer;
- if(contains(column.renderer, ':', true)){
- var args = new Array();
- Ext.each(column.renderer.split(':'), function(a, index){
- if(index == 0){
- renderName = a;
- } else {
- args.push(a);
- }
- });
- if(!grid.RenderUtil.args[renderName]){
- grid.RenderUtil.args[renderName] = new Object();
- }
- grid.RenderUtil.args[renderName][column.dataIndex] = args;
- }
- column.renderer = grid.RenderUtil[renderName];
- column.haveRendered = true;
- }
- //logictype
- var logic = column.logic;
- if(logic != null){
- if(logic == 'detno'){
- grid.detno = column.dataIndex;
- } else if(logic == 'keyField'){
- grid.keyField = column.dataIndex;
- } else if(logic == 'mainField'){
- grid.mainField = column.dataIndex;
- } else if(logic == 'necessaryField'){
- grid.necessaryField = column.dataIndex;
- if(!grid.necessaryFields){
- grid.necessaryFields = new Array();
- }
- grid.necessaryFields.push(column.dataIndex);
- if(!column.haveRendered){
- column.renderer = function(val, meta, record, x, y, store, view){
- var c = this.columns[y];
- if(val != null && val.toString().trim() != ''){
- if(c.xtype == 'datecolumn'){
- val = Ext.Date.format(val, 'Y-m-d');
- }
- return val;
- } else {
- if(c.xtype == 'datecolumn'){
- val = '';
- }
- return '<img src="' + basePath + 'resource/images/icon/need.png" title="必填字段">' +
- '<span style="color:blue;padding-left:2px;" title="必填字段">' + val + '</span>';
- }
- };
- }
- } else if(logic == 'groupField'){
- grid.groupField = column.dataIndex;
- }
- }
- /**
- *****如果有固定咧,grid不能分组*****
- */
- });
- var store = Ext.create('Ext.data.Store', {
- storeId: 'gridStore',
- fields: res.fields,
- data: data,
- groupField: grid.groupField
- });
- if(grid.selModel.views == null){
- grid.selModel.views = [];
- }
- if(res.dbfinds.length > 0){
- grid.dbfinds = res.dbfinds;
- }
- grid.columns = res.columns;
- if(grid.autoRowNumber) {
- Ext.Array.insert(grid.columns, 0, [{xtype: 'rownumberer', width: 35, locked: true, cls: 'x-grid-header-1'}]);
- }
- grid.store = store;
- //grid.fireEvent('storeloaded', grid, store);
- }
- }
- }
- });
- },
- viewConfig: {// 显示分仓库库存
- listeners: {
- render: function(view) {
- var prodfield = Ext.getCmp('editorColumnGridPanel').getProdField();
- if(prodfield && !view.tip) {
- view.tip = Ext.create('Ext.tip.ToolTip', {
- target: view.el,
- delegate: view.itemSelector,
- trackMouse: true,
- renderTo: Ext.getBody(),
- listeners: {
- beforeshow: function updateTipBody(tip) {
- var record = view.getRecord(tip.triggerElement),
- grid = view.ownerCt.ownerCt;
- if(record && grid.productwh) {
- var c = record.get(prodfield), pws = new Array();
- Ext.each(grid.productwh, function(d){
- if(d.PW_PRODCODE == c) {
- pws.push(d);
- }
- });
- tip.down('grid').setTitle(c);
- tip.down('grid').store.loadData(pws);
- }
- }
- },
- items: [{
- xtype: 'grid',
- width: 300,
- columns: [{
- text: '仓库编号',
- cls: 'x-grid-header-1',
- dataIndex: 'PW_WHCODE',
- width: 80
- },{
- text: '仓库名称',
- cls: 'x-grid-header-1',
- dataIndex: 'WH_DESCRIPTION',
- width: 120
- },{
- text: '库存',
- cls: 'x-grid-header-1',
- xtype: 'numbercolumn',
- align: 'right',
- dataIndex: 'PW_ONHAND',
- width: 90
- }],
- columnLines: true,
- title: '物料分仓库存',
- store: new Ext.data.Store({
- fields: ['PW_WHCODE', 'WH_DESCRIPTION', 'PW_ONHAND'],
- data: [{}]
- })
- }]
- });
- }
- }
- }
- },
- getProdField : function() {
- var f = null;
- switch (caller){
- case 'SendNotify!ToProdIN!Deal' ://通知单转出货
- f = 'snd_prodcode';
- break;
- /*case 'Sale!ToAccept!Deal' ://订单转出货
- f = 'sd_prodcode';
- break;*/
- }
- return f;
- }
- });
|