ComboButton.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. Ext.define('erp.view.core.button.ComboButton',{
  2. extend: 'Ext.Button',
  3. alias: 'widget.erpComboButton',
  4. cls: 'x-btn-gray',
  5. //id: 'combo',
  6. text: '下拉框设置',
  7. cls: 'x-btn-blue',
  8. iconCls: 'x-button-icon-paste',
  9. hidden: false,
  10. disabled:true,
  11. style: {
  12. marginLeft: '10px'
  13. },
  14. width: 120,
  15. initComponent : function(){
  16. this.callParent(arguments);
  17. },
  18. comboSet:function(caller, field){
  19. var me=this;
  20. var combodata=me.getComboData(caller,field);
  21. Ext.create('Ext.Window', {
  22. width: '80%',
  23. height: '80%',
  24. autoShow: true,
  25. layout: 'border',
  26. buttonAlign : 'center',
  27. title:'<h1>Form下拉配置</h1>',
  28. items: [{
  29. region:'center',
  30. xtype: 'grid',
  31. id:'combogrid',
  32. columnLines:true,
  33. bodyStyle: 'background-color:#f1f1f1;',
  34. plugins: Ext.create('Ext.grid.plugin.CellEditing', {
  35. clicksToEdit: 1
  36. }),
  37. listeners:{
  38. itemclick:function(selModel, record,e,index){
  39. var grid=selModel.ownerCt;
  40. Ext.getCmp('deletecombo').setDisabled(false);
  41. if(index.toString() == 'NaN'){
  42. index = '';
  43. }
  44. if(index == grid.store.data.items.length-1){//如果选择了最后一行
  45. var items=grid.store.data.items;
  46. for(var i=0;i<10;i++){
  47. var o = new Object();
  48. o.dlc_caller=caller;
  49. o.dlc_fieldname=field;
  50. o.dlc_value=null;
  51. o.dlc_value_en=null;
  52. o.dlc_value_tw=null;
  53. o.dlc_display=null;
  54. grid.store.insert(items.length, o);
  55. items[items.length-1]['index'] = items.length-1;
  56. }
  57. }
  58. }
  59. },
  60. columns: [{
  61. text:'ID',
  62. dataIndex:'dlc_id',
  63. width:0,
  64. },{
  65. cls : "x-grid-header-1",
  66. text: '中文值',
  67. dataIndex: 'dlc_value',
  68. flex: 1,
  69. editor: {
  70. format:'',
  71. xtype: 'textfield'
  72. },
  73. renderer: function(val, meta, record){
  74. if(!val){
  75. val="";
  76. }
  77. return '<img src="' + basePath + 'resource/images/icon/need.png" title="必填字段">' +
  78. '<span style="color:blue;padding-left:2px;" title="必填字段">' + val + '</span>';
  79. },
  80. },{
  81. cls : "x-grid-header-1",
  82. text: '英文值',
  83. dataIndex: 'dlc_value_en',
  84. flex: 1,
  85. editor: {
  86. format:'',
  87. xtype: 'textfield',
  88. }
  89. },{
  90. cls : "x-grid-header-1",
  91. text:'繁文',
  92. dataIndex: 'dlc_value_tw',
  93. flex: 1,
  94. editor: {
  95. format:'',
  96. xtype: 'textfield',
  97. }
  98. },{
  99. cls : "x-grid-header-1",
  100. text:'实际值',
  101. dataIndex:'dlc_display',
  102. flex:1,
  103. editor: {
  104. format:'',
  105. xtype: 'textfield',
  106. },
  107. renderer: function(val, meta, record){
  108. if(!val){
  109. val="";
  110. }
  111. return '<img src="' + basePath + 'resource/images/icon/need.png" title="必填字段">' +
  112. '<span style="color:blue;padding-left:2px;" title="必填字段">' + val + '</span>';
  113. },
  114. },{
  115. cls : "x-grid-header-1",
  116. text:'Caller',
  117. dataIndex: 'dlc_caller',
  118. flex:1,
  119. readOnly:true,
  120. },{
  121. cls : "x-grid-header-1",
  122. text:'字段名',
  123. dataIndex:'dlc_fieldname',
  124. flex:1,
  125. readOnly:true
  126. }]
  127. }],
  128. buttons:['->',{
  129. xtype:'button',
  130. text: $I18N.common.button.erpSaveButton,
  131. iconCls: 'x-button-icon-save',
  132. cls: 'x-btn-gray',
  133. formBind: true,//form.isValid() == false时,按钮disabled
  134. width: 60,
  135. style: {
  136. marginLeft: '10px'
  137. },
  138. handler:function(){
  139. me.saveCombo(caller,field);
  140. }
  141. },{
  142. xtype:'button',
  143. text: $I18N.common.button.erpDeleteButton,
  144. iconCls: 'x-button-icon-delete',
  145. cls: 'x-btn-gray',
  146. id:'deletecombo',
  147. width: 60,
  148. style: {
  149. marginLeft: '10px'
  150. },
  151. handler:function(){
  152. me.deleteCombo(me);
  153. }
  154. },{
  155. xtype:'button',
  156. text: $I18N.common.button.erpCloseButton,
  157. iconCls: 'x-button-icon-close',
  158. cls: 'x-btn-gray',
  159. formBind: true,//form.isValid() == false时,按钮disabled
  160. width: 60,
  161. style: {
  162. marginLeft: '10px'
  163. },
  164. handler:function(btn){
  165. btn.ownerCt.ownerCt.close();
  166. }
  167. },'->']
  168. });
  169. Ext.getCmp('combogrid').getStore().loadData(combodata);
  170. },
  171. getComboData:function(caller,field){
  172. var combodata=null;
  173. Ext.Ajax.request({
  174. url : basePath +'common/getComboDataByCallerAndField.action',
  175. params: {
  176. caller:caller,
  177. field:field
  178. },
  179. async: false,
  180. method : 'post',
  181. callback : function(options,success,response){
  182. var res = new Ext.decode(response.responseText);
  183. if(res.exceptionInfo != null){
  184. showError(res.exceptionInfo);
  185. return;
  186. }
  187. if(res.success){
  188. combodata=res.data;
  189. }
  190. }
  191. });
  192. if(combodata.length<1){
  193. this.add10EmptyData(combodata,caller, field);
  194. }
  195. return combodata;
  196. },
  197. saveCombo:function(caller,field){
  198. var me=this;
  199. var grid=Ext.getCmp('combogrid');
  200. grid.necessaryField='dlc_value';
  201. var jsonGridData = new Array();
  202. var dd;
  203. var s = grid.getStore().data.items;
  204. for(var i=0;i<s.length;i++){
  205. var data = s[i].data;
  206. dd = new Object();
  207. if(data[grid.necessaryField] != null && data[grid.necessaryField] != ""){
  208. Ext.each(grid.columns, function(c){
  209. dd[c.dataIndex] = s[i].data[c.dataIndex];
  210. });
  211. jsonGridData.push(Ext.JSON.encode(dd));
  212. }
  213. }
  214. var param=jsonGridData;
  215. if(param == null || param == ''){
  216. showError($I18N.common.grid.emptyDetail);
  217. }else {
  218. var params = new Object();
  219. params.gridStore = unescape(param.toString().replace(/\\/g,"%"));
  220. Ext.Ajax.request({
  221. url : basePath + 'common/saveCombo.action',
  222. params : params,
  223. method : 'post',
  224. callback : function(options,success,response){
  225. var res=new Ext.decode(response.responseText);
  226. if(res.exceptionInfo != null){
  227. showError(res.exceptionInfo);return;
  228. }
  229. if(res.success){
  230. Ext.Msg.alert('提示','保存成功!',function(){
  231. grid.getStore().loadData(me.getComboData(caller,field));
  232. });
  233. }
  234. }
  235. });
  236. }
  237. },
  238. deleteCombo:function(){
  239. var grid= Ext.getCmp('combogrid');
  240. var id= grid.getSelectionModel().lastSelected.data['dlc_id'];
  241. if(id!=null&&id!="null"){
  242. //存在数据后台删除
  243. Ext.Ajax.request({
  244. url : basePath + 'common/deleteCombo.action',
  245. params : {
  246. id:id
  247. },
  248. method : 'post',
  249. callback : function(options,success,response){
  250. var res=new Ext.decode(response.responseText);
  251. if(res.exceptionInfo != null){
  252. showError(res.exceptionInfo);return;
  253. }
  254. if(res.success){
  255. Ext.Msg.alert('提示','删除成功!');
  256. grid.getStore().remove(grid.getSelectionModel().getSelection());
  257. }
  258. }
  259. });
  260. }else {
  261. //不存在数据直接remove
  262. grid.getStore().remove(grid.getSelectionModel().getSelection());
  263. }
  264. Ext.getCmp('deletecombo').setDisabled(true);
  265. },
  266. add10EmptyData: function(data,caller, field){
  267. for(var i=0;i<10;i++){
  268. var o = new Object();
  269. o.dlc_caller=caller;
  270. o.dlc_fieldname=field;
  271. o.dlc_value=null;
  272. o.dlc_value_en=null;
  273. o.dlc_value_tw=null;
  274. o.dlc_display=null;
  275. data.push(o);
  276. }
  277. }
  278. });