CallProcedureByConfig.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /**
  2. * 公共按钮 CallProcedureByConfig
  3. */
  4. Ext.define('erp.view.core.button.CallProcedureByConfig',{
  5. extend: 'Ext.Button',
  6. alias: 'widget.erpCallProcedureByConfig',
  7. param: [],
  8. name: 'erpCallProcedureByConfig',
  9. //text: $I18N.common.button.erpAbateButton,
  10. iconCls: 'x-button-icon-save',
  11. cls: 'x-btn-gray',
  12. //width: 60,
  13. style: {
  14. marginLeft: '10px'
  15. },
  16. initComponent : function(){
  17. this.callParent(arguments);
  18. },
  19. listeners : {
  20. beforerender : function(btn){
  21. //var form = btn.up('form');
  22. console.log(caller);
  23. Ext.Ajax.request({
  24. url: basePath + 'common/getButtonconfigs.action',
  25. async : false,
  26. method : 'post',
  27. params: {
  28. caller : caller
  29. },
  30. callback: function(opt, s, r) {
  31. if(r){
  32. var res = new Ext.decode(r.responseText);
  33. Ext.each(res.log,function(b,index){
  34. var f = btn.ownerCt;
  35. var button = f.down("button[name="+b.BC_BUTTONNAME+"]");
  36. if(button){
  37. button.text = b.BC_BUTTONDESC;
  38. button.width = b.BC_WIDTH;
  39. var condition = b.BC_CONDITION;
  40. if(condition != null && condition != ''){
  41. var c = "\\["; // 1.先计算condition中有多少个'['符号;
  42. var regex = new RegExp(c, 'g'); //使用g表示整个字符串都要匹配,i匹配第一个
  43. var result = condition.match(regex);
  44. var count = !result ? 0 : result.length;//2.计算condition中的'['个数
  45. var reg = new RegExp('\\[(.+?)\\]',"i");
  46. var ss = condition;
  47. for(var i=0;i<count;i++){//3.然后每次将condition中的第一个[]中的值取出替换;
  48. var r = reg.exec(ss);console.log(r);
  49. ss = ss.replace(reg,"'"+Ext.getCmp(r[1]).value+"'");
  50. }
  51. if(eval(ss)){
  52. button.show();
  53. }else{
  54. button.hide();
  55. }
  56. }
  57. }
  58. });
  59. }
  60. }
  61. });
  62. },
  63. click : function(btn){
  64. var form = btn.up('form');
  65. var fo_keyField = form.fo_keyField;
  66. var keyFieldValue = Ext.getCmp(fo_keyField).value;
  67. Ext.Ajax.request({
  68. url : basePath + 'common/turnAllCommon.action',
  69. method : 'post',
  70. params: {
  71. caller : caller,
  72. id : keyFieldValue,
  73. name : btn.name
  74. },
  75. callback: function(opt, s, r) {
  76. var res = new Ext.decode(r.responseText);
  77. if(res.success){
  78. showError(res.log);
  79. window.location.reload();
  80. }
  81. }
  82. });
  83. }
  84. }
  85. });