Ext.define('erp.view.core.button.DbfindButton',{
extend: 'Ext.Button',
alias: 'widget.erpDbfindButton',
text: 'DBfind设置',
cls: 'x-btn-gray',
hidden: false,
disabled:true,
style: {
marginLeft: '10px'
},
width: 120,
initComponent : function(){
this.callParent(arguments);
},
FormUtil:Ext.create('erp.util.FormUtil'),
dbfindSetUI: function(caller, field, grid){
var me=this;
var formData=null,gridData=null,findData=null;
var arr=new Array();
grid = grid || Ext.getCmp('grid');
Ext.Array.each(grid.data,function(item){
var obj=new Object();
//obj.display=item.fd_caption;
obj.display=item.fd_field;
obj.value=item.fd_field;
arr.push(obj);
});
var localJson=me.getDbFindSetUI(caller,field);
if(localJson!=null && localJson.griddata!=null){
gridData=localJson.griddata;
formData=localJson.formdata;
findData=localJson.fields;
}else {
gridData=new Array();
for(var i=0;i<10;i++){
var o = new Object();
gridData.push(o);
}
}
function showButton(value,cellmeta){
var returnStr = "";
return returnStr;
};
Ext.create('Ext.Window', {
width: '90%',
height: '100%',
autoShow: true,
layout: 'border',
title:'
Form查找配置
',
items: [{
region:'north',
xtype: 'form',
id:'dbform',
layout: 'column',
autoScroll:true,
buttonAlign:'left',//'center',
bodyStyle: 'background:#f1f1f1;',
fieldDefaults: {
labelWidth: 80,
fieldStyle:'background:#FFFAFA;color:#515151;'
},
items: [{
xtype: 'textfield',
fieldLabel: '描述',
allowBlank:false,
fieldStyle:'background:#fffac0;color:#515151;',
id:'ds_caption',
name: 'ds_caption',
columnWidth: 0.25
},{
xtype: 'dbfindtrigger',//'textfield',
fieldLabel: '查找表名',
name: 'ds_whichdbfind',
id:'ds_whichdbfind',
allowBlank:false,
fieldStyle:'background:#fffac0;color:#515151;',
columnWidth: 0.5
},{
xtype: 'dbfindtrigger',
fieldLabel: '关联字段',
name: 'ds_likefield',
id: 'ds_likefield',
allowBlank:false,
fieldStyle:'background:#fffac0;color:#515151;',
columnWidth: 0.25
},{
xtype:'adddbfindtrigger',//'multidbfindtrigger',
fieldLabel:'所需表',
name: 'ds_tables',
id:'ds_tables',
allowBlank:false,
fieldStyle:'background:#fffac0;color:#515151;',
columnWidth: 0.5,
listeners:{
change:function(){
Ext.getCmp('submitchange').setDisabled(false);
}
}
},{
xtype: 'textfield',
fieldLabel: '条件',
name: 'ds_uifixedcondition',
columnWidth: 0.5
},{
xtype: 'textfield',
fieldLabel: '排序',
name: 'ds_orderby',
columnWidth: 0.5
},{
xtype: 'textfield',
fieldLabel: '关联下拉项',
name: 'ds_dlccaller',
id:'ds_dlccaller',
columnWidth: 0.47
},{
xtype: 'button',
iconCls: 'dlccaller',
cls: 'x-btn-tb',
columnWidth: 0.02,
tooltip: '获取关联下拉项',
hidden: false,
handler: function(){
var table=Ext.getCmp('ds_tables').value;
var fields='';
var items=Ext.getCmp('dbgrid').store.data.items;
Ext.each(items,function(i){
if(i.data['ds_type']=='C'){
fields+="'"+i.data['ds_findtoui_f']+"',";
}
});
if(fields.length>0&&table){
fields=fields.substring(0,fields.length-1);
var arr=table.split('#');
var con='';
Ext.each(arr,function(v){
con+="'"+v+"',";
});
con=con.substring(0,con.length-1).toUpperCase();
Ext.Ajax.request({
url : basePath +'common/getDlccallerByTables.action',
params: {
table:con,
fields:fields
},
async: false,
method : 'post',
callback : function(options,success,response){
var res = new Ext.decode(response.responseText);
if(res.exceptionInfo != null){
showError(res.exceptionInfo);return;
}
if(res.success){
var arr=arr1=arr2=new Array();
var s1=Ext.getCmp('ds_dlccaller').value;
arr1=s1.split(',');
var s2=res.callers;
var arr2=s2.split(',');
var arr=Ext.Array.union(arr1,arr2);
arr=Ext.Array.remove(arr,'');
Ext.getCmp('ds_dlccaller').setValue(arr.join(','));
}
}
});
}else{
showError("未配置选择所需表或类型中未配置下拉类型");
}
}
},{
xtype: 'textfield',
fieldLabel: '容错提示',
name: 'ds_error',
columnWidth: 0.5
},{
xtype:'hidden',
name:'ds_id'
},{
xtype:'hidden',
name:'ds_caller',
value:caller
},{
xtype:'hidden',
name:'ds_whichui',
value:field
}],
buttons:[{
xtype : 'tbtext',
text:'*点击【确认】根据所需表载入取值字段' //'*点击【确认】根据所需表载入取值字段'
},'->',{
xtype:'button',
text: '确认',
id:'submitchange',
iconCls: 'x-button-icon-submit',
cls: 'x-btn-gray',
width: 60,
disabled:true,
handler:function(btn){
var newValue=Ext.getCmp('ds_tables').value;
Ext.Ajax.request({
url : basePath +'common/getDbFindFields.action',
params: {
table:newValue
},
async: false,
method : 'post',
callback : function(options,success,response){
var res = new Ext.decode(response.responseText);
if(res.exceptionInfo != null){
showError(res.exceptionInfo);return;
}
if(res.success){
findData=Ext.decode(res.findfields);
}
}
});
}
},{
xtype:'button',
text: $I18N.common.button.erpSaveButton,
iconCls: 'x-button-icon-save',
cls: 'x-btn-gray',
formBind: true,//form.isValid() == false时,按钮disabled
width: 60,
style: {
marginLeft: '10px'
},
handler:function(){
me.save(me,caller,field);
}
},{
xtype:'button',
text: $I18N.common.button.erpCloseButton,
iconCls: 'x-button-icon-close',
cls: 'x-btn-gray',
width: 60,
style: {
marginLeft: '10px'
},
handler:function(btn){
btn.ownerCt.ownerCt.ownerCt.close();
}
},'->','->']
},{
region:'center',
xtype: 'grid',
id:'dbgrid',
columnLines:true,
store:Ext.create('Ext.data.Store',{
fields:['ds_findtoui_f','ds_findtoui_i','ds_dbcaption',{name:'ds_dbwidth',type:'float'},{name:'ds_type',defaultValue:'S'}]
}),
necessaryFields:['ds_findtoui_f','ds_findtoui_i','ds_dbcaption'],
viewConfig: {
plugins: {
ptype: 'gridviewdragdrop',
dragGroup: 'dbgrid',
dropGroup: 'dbgrid'
}
},
emptyText : $I18N.common.grid.emptyText,
bodyStyle: 'background-color:#f1f1f1;',
plugins: Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
}),
listeners:{
itemclick:function(selModel, record,e,index){
var grid=selModel.ownerCt;
if(index.toString() == 'NaN'){
index = '';
}
if(index == grid.store.data.items.length-1){//如果选择了最后一行
var items=grid.store.data.items;
for(var i=0;i<10;i++){
var o = new Object();
grid.store.insert(items.length, o);
items[items.length-1]['index'] = items.length-1;
}
}
}
},
columns: [{
cls : "x-grid-header-1",
text: '取值字段',
xtype: 'combocolumn',
dataIndex: 'ds_findtoui_f',
renderer: function(val, meta, record){
if(!val){
val="";
}
return '
' +
'' + val + '';
},
flex: 1,
format:"",
editor: {
format:'',
xtype: 'combo',
listConfig:{
maxHeight:180
},
store: {
fields: ['display', 'value'],
data :[]
},
displayField: 'display',
valueField: 'value',
queryMode: 'local',
onTriggerClick:function(trigger){
var me=this;
this.getStore().loadData(findData);
if (!me.readOnly && !me.disabled) {
if (me.isExpanded) {
me.collapse();
} else {
me.expand();
}
me.inputEl.focus();
}
}
}
},{
cls : "x-grid-header-1",
text: '赋值字段',
xtype: 'combocolumn',
dataIndex: 'ds_findtoui_i',
flex: 1,
renderer: function(val, meta, record){
if(!val){
val="";
}
return '
' +
'' + val + '';
},
/*renderer: function(val, meta, record){
return val;
},*/
editor: {
format:"",
xtype: 'combo',
listConfig:{
maxHeight:180
},
store: {
fields: ['display', 'value'],
data:arr
},
displayField: 'display',
valueField: 'value',
queryMode: 'local'
}
},{
cls : "x-grid-header-1",
text: '描述',
dataIndex: 'ds_dbcaption',
flex: 1,
renderer: function(val, meta, record){
if(!val){
val="";
}
return '
' +
'' + val + '';
},
editor:{
xtype:'textfield',
format:""
}
},{
cls : "x-grid-header-1",
text: '列宽',
dataIndex: 'ds_dbwidth',
//format: '0',
flex:1,
editor: {
xtype: 'textfield'
///format: '0'
}
},{
cls : "x-grid-header-1",
text: '类型',
dataIndex: 'ds_type',
flex: 1,
editor:{
xtype:'combo',
editable : false,
store: {
fields:['display','value'],
data:[{'display':'字符串','value':'S'},
{'display':'数字','value':'N'},
{'display':'日期','value':'D'},
{'display':'时间','value':'DT'},
{'display':'是否(-1,0)','value':'YN'},
{'display':'下拉框','value':'C'}]},
queryMode: 'local',
displayField: 'display',
valueField: 'value'
}
},{
xtype:'actioncolumn',
cls : "x-grid-header-1",
header:'操作',
//width:50,
align:'center',
items: [{
icon : basePath+'resource/images/delete.png',
handler: function(grid, rowIndex, colIndex) {
grid.getStore().removeAt(rowIndex);
}
}],
flex:0.3
}]
}]
});
if(formData!=null){
if(formData['ds_caller']=="" || formData['ds_caller']==null || formData['ds_caller']!=caller){
delete formData['ds_caller'];
delete formData['ds_id'];
}
Ext.getCmp('dbform').getForm().setValues(formData);
}
Ext.getCmp('dbgrid').getStore().loadData(gridData);
},
dbfindSetGrid:function(caller,grid,field){
var FindFields=new Array(),me=this,SetFields=new Array(),gridData=new Array(),DBCaller=null,DBKey=null,DBtable=null;
var me=this;
function showButton(value,cellmeta){
var returnStr = "";
return returnStr;
};
var localJson=me.getDBGridFields(caller,field);
if(localJson==null||!localJson.data||!localJson.data.dbcaller){
//说明无数据
for(var i=0;i<10;i++){
var o = new Object();
o.ds_caller=caller;
gridData.push(o);
}Ext.Array.each(grid.data,function(item){
var obj=new Object();
obj.display=item.dg_caption;
obj.value=item.dg_field;
SetFields.push(obj);
});
}else {
DBCaller=localJson.data.dbcaller;
DBKey=localJson.data.linkkey;
DBtable=localJson.data.dbtablename;
Ext.Array.each(localJson.data.details,function(field){
var o=new Object();
o.display=field.dd_fieldcaption;
o.value=field.dd_fieldname;
FindFields.push(o);
});
Ext.Array.each(grid.data,function(item){
var obj=new Object();
obj.display=item.dg_caption;
obj.value=item.dg_field;
SetFields.push(obj);
});
gridData=localJson.data.dbfindsetgrid;
if(gridData.length==0)
gridData=[{ds_caller:caller},{ds_caller:caller},{ds_caller:caller},{ds_caller:caller},
{ds_caller:caller},{ds_caller:caller},{ds_caller:caller},{ds_caller:caller},{ds_caller:caller},{ds_caller:caller}];
}
Ext.create('Ext.Window', {
width: '90%',
height: '100%',
autoShow: true,
layout: 'border',
title:'Grid查找配置
',
items: [{
region:'center',
xtype: 'grid',
id:'dbGridgrid',
columnLines:true,
store:Ext.create('Ext.data.Store',{
fields:['ds_id','ds_caller','ds_gridfield','ds_dbfindfield','ds_triggerfield']
}),
emptyText : $I18N.common.grid.emptyText,
bodyStyle: 'background-color:#f1f1f1;',
plugins: Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
}),
tbar:[{
xtype:'button',
text: $I18N.common.button.erpSaveButton,
iconCls: 'x-button-icon-save',
cls: 'x-btn-gray',
formBind: true,//form.isValid() == false时,按钮disabled
width: 60,
style: {
margin: '10 5 0 5'
},
handler:function(btn){
me.saveDBFindSetGrid(btn,caller,field);
}
},'-',{
xtype:'button',
text: $I18N.common.button.erpCloseButton,
iconCls: 'x-button-icon-close',
cls: 'x-btn-gray',
formBind: true,//form.isValid() == false时,按钮disabled
width: 60,
handler:function(btn){
btn.ownerCt.ownerCt.ownerCt.close();
}
},'-',{
xtype:'button',
text: '维护DBFindSet',
iconCls: 'x-button-icon-submit',
cls: 'x-btn-gray',
width: 120,
handler:function(btn){
var value=btn.ownerCt.items.items[6].lastValue;
if(value){
openGridUrl(value,"ds_caller", "dd_caller", "jsps/ma/dbFindSet.jsp", "DBFind维护");
}else{
me.FormUtil.onAdd('DBfindSet', 'DBFIND设置', 'jsps/ma/dbFindSet.jsp');
}
}
},'-',{
xtype:'dbfindtrigger',
fieldLabel:'DBFindSetCaller
',
labelWidth:110,
labelSeparator:"",
name:'dbcaller',
id:'dbcaller',
allowBlank:false,
value:DBCaller,
fieldStyle:'background:#fffac0;color:#515151;',
listeners:{
change:function(field,newValue){
Ext.getCmp('commitchange').setDisabled(false);
},
blur:function(){
}
}
},{
xtype:'hidden',
name:'dbtable',
id:'dbtablename',
value:DBtable,
listeners:{
change:function(field,newValue){
var link=Ext.getCmp('linkkey');
var table=newValue.toUpperCase().split('LEFT JOIN')[0].replace(/(^\s*)|(\s*$)/g, "");
link.setDisabled(false);
Ext.getCmp('linkkey').setValue(null);
}
}
},{
xtype:'dbfindtrigger',
labelAlign:'right',
fieldLabel:'关联字段名
',
labelWidth:80,
labelSeparator:"",
name:'linkkey',
id:'linkkey',
value:DBKey,
disabled:true,
allowBlank:false,
fieldStyle:'background:#fffac0;color:#515151;',
listeners:{
afterrender:function(field){
if(field.value){
field.setDisabled(false);
}
}
}
},'-',{
xtype:'button',
text: '确认',
id:'commitchange',
iconCls: 'x-button-icon-submit',
cls: 'x-btn-gray',
width: 60,
disabled:true,
handler:function(btn){
var field=Ext.getCmp('dbcaller');
var table=Ext.getCmp('dbtablename').value;
if(field.originalValue==field.value||table==undefined){
showMessage('提示','未做任何修改!');
btn.setDisabled(true);
return;
}else{
//更改下拉store 同时 reset 关联字段
var json=me.getDBGridFields(field.value,null);
FindFields=new Array();
Ext.Array.each(json.data.details,function(field){
var o=new Object();
o.display=field.dd_fieldcaption;
o.value=field.dd_fieldname;
FindFields.push(o);
});
}
}
}],
listeners:{
itemclick:function(selModel, record,e,index){
var grid=selModel.ownerCt;
if(index.toString() == 'NaN'){
index = '';
}
if(index == grid.store.data.items.length-1){//如果选择了最后一行
var items=grid.store.data.items;
for(var i=0;i<10;i++){
var o = new Object();
o.ds_caller=caller;
grid.store.insert(items.length, o);
items[items.length-1]['index'] = items.length-1;
}
}
}
},
columns: [{
text: 'ID',
dataIndex: 'ds_id',
xtype:'numbercolumn',
width:0
},{
cls : "x-grid-header-1",
text: 'Caller',
dataIndex: 'ds_caller',
flex:1,
readOnly:true
},{
cls : "x-grid-header-1",
text:'Grid赋值字段',
dataIndex: 'ds_gridfield',
flex:1,
renderer: function(val, meta, record){
if(!val){
val="";
}
return '
' +
'' + val + '';
},
editor: {
format:"",
xtype: 'combobox',
listConfig:{
maxHeight:180
},
typeAhead: true,
triggerAction: 'all',
selectOnTab: true,
store: {
fields: ['display', 'value'],
data:SetFields
},
displayField: 'display',
valueField: 'value',
queryMode: 'local'
}
},{
cls : "x-grid-header-1",
text:'查找字段',
dataIndex: 'ds_dbfindfield',
flex:1,
renderer: function(val, meta, record){
if(!val){
val="";
}
return '
' +
'' + val + '';
},
editor: {
format:"",
xtype: 'combo',
listConfig:{
maxHeight:180
},
store: {
fields: ['display', 'value'],
data:[]
},
onTriggerClick:function(trigger){
var me=this;
this.getStore().loadData(FindFields);
if (!me.readOnly && !me.disabled) {
if (me.isExpanded) {
me.collapse();
} else {
me.expand();
}
me.inputEl.focus();
}
},
displayField: 'display',
valueField: 'value',
queryMode: 'local'
}
},{
cls : "x-grid-header-1",
text: '触发DBFIND字段',
dataIndex:'ds_triggerfield',
flex:1,
renderer: function(val, meta, record){
if(!val){
val="";
}
return val;
},
editor: {
format:"",
xtype: 'combobox',
listConfig:{
maxHeight:180
},
typeAhead: true,
triggerAction: 'all',
selectOnTab: true,
store: {
fields: ['display', 'value'],
data:SetFields
},
displayField: 'display',
valueField: 'value',
queryMode: 'local'
}
},{
xtype:'actioncolumn',
cls : "x-grid-header-1",
header:'操作',
align:'center',
items: [{
icon : basePath+'resource/images/delete.png',
handler: function(grid, rowIndex, colIndex) {
var lastselected=grid.getStore().getAt(rowIndex);
var id=lastselected.data.ds_id;
if(id!=null){
//存在ID 则后台删除
Ext.Ajax.request({
url : basePath + 'common/deleteDbFindSetGrid.action',
params : {
id:id
},
method : 'post',
callback : function(options,success,response){
var res=new Ext.decode(response.responseText);
if(res.exceptionInfo != null){
showError(res.exceptionInfo);return;
}
if(res.success){
Ext.Msg.alert('提示','删除成功!');
}
}
});
}
grid.getStore().removeAt(rowIndex);
}
}],
flex:0.3
}]
}]
});
Ext.getCmp('dbGridgrid').getStore().loadData(gridData);
},
save:function(me,caller,field){
var grid=Ext.getCmp('dbgrid');
var jsonGridData = new Array();
var dd;
var s = grid.getStore().data.items,allowsave=true;
for(var i=0;i