DataDictionary.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.ma.DataDictionary', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. GridUtil: Ext.create('erp.util.GridUtil'),
  6. BaseUtil: Ext.create('erp.util.BaseUtil'),
  7. views:[
  8. 'ma.DataDictionary','core.form.Panel','core.grid.Panel2','core.button.Sync','ma.DataDictionaryGrid','ma.DictPropertyGrid',
  9. 'core.button.Add','core.button.Submit','core.button.Audit','core.button.Save','core.button.Close','core.button.Print',
  10. 'core.button.Upload','core.button.Update','core.button.Delete','core.button.DeleteDetail','core.button.ResAudit',
  11. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.toolbar.Toolbar'
  12. ],
  13. init:function(){
  14. var me = this;
  15. this.control({
  16. 'form':{
  17. afterrender:function(form){
  18. if(!currentRecord && tablename){
  19. me.getTable(form,tablename);
  20. me.getRelations(tablename);
  21. }
  22. }
  23. },
  24. 'button[itemId=save]':{
  25. click:function(btn){
  26. var params=me.getColumnChanges();
  27. Ext.apply(params,me.getIndexChanges());
  28. params.tablename=tablename;
  29. var form=btn.ownerCt.ownerCt,values=form.getForm().getValues();
  30. params.formStore=Ext.JSON.encode(values);
  31. var propgrid=Ext.getCmp("propertygrid");
  32. var param=me.getGridStore(propgrid);
  33. param = param == null ? [] : "[" + param.toString() + "]";
  34. params.gridStore= unescape(param);
  35. me.FormUtil.setLoading(true);
  36. Ext.Ajax.request({
  37. method:'post',
  38. url:basePath+'ma/dataDictionary/alter.action',
  39. params:params,
  40. callback : function(options, success, response){
  41. me.FormUtil.setLoading(false);
  42. if (!response) return;
  43. var res = new Ext.decode(response.responseText);
  44. if(res.success){
  45. window.location.reload();
  46. }
  47. else if(res.exceptionInfo != null){
  48. showError(res.exceptionInfo);return;
  49. }
  50. }
  51. });
  52. }
  53. },
  54. 'button[itemId=add]':{
  55. click:function(btn){
  56. me.FormUtil.onAdd('addDic', '系统数据字典', 'jsps/ma/dataDictionary.jsp');
  57. }
  58. },
  59. 'button[itemId=refresh]':{
  60. click:function(btn){
  61. var form=btn.ownerCt.ownerCt;
  62. me.FormUtil.setLoading(true);
  63. Ext.Ajax.request({
  64. method:'post',
  65. url:basePath+'ma/dataDictionary/refresh.action',
  66. timeout:60000,
  67. params:{tablename:tablename},
  68. callback : function(options, success, response){
  69. me.FormUtil.setLoading(false);
  70. var localJson = new Ext.decode(response.responseText);
  71. if(localJson.success){
  72. Ext.Msg.alert('提示','刷新成功');
  73. }else{
  74. Ext.Msg.alert('提示','刷新失败');
  75. }
  76. }
  77. });
  78. }
  79. },
  80. 'button[itemId=close]':{
  81. click:function(btn){
  82. var main = parent.Ext.getCmp("content-panel");
  83. main.getActiveTab().close();
  84. }
  85. },
  86. 'radiogroup':{
  87. change: function(group ,newvalue,oldvalue){
  88. if(Ext.isString(newvalue.uniqueness)){
  89. me.isDirtyChange(newvalue.uniqueness, group.name);
  90. }
  91. }
  92. },
  93. 'gridpanel[id=grid]':{
  94. afterrender:function(grid){
  95. grid.plugins[1].on('beforeedit',function(e,Opts){
  96. if(e.column.dataIndex == 'data_length'){
  97. var record = e.record,column = e.column;
  98. var f = record.data['data_type'];
  99. if(f=='DATE' || f=='CLOB' || f=='TIMESTAMP'){
  100. return false;
  101. }
  102. }
  103. });
  104. grid.plugins[1].on('edit',function(editor,e){
  105. if(e.field=='column_name'){
  106. var record = e.record,value=e.value;
  107. Ext.Array.each(record.store.data.items,function(item,index){
  108. if(item.get('column_name')==value && index!=e.rowIdx){
  109. Ext.Msg.alert('提示','列 '+value+' 已存在!');
  110. e.record.reject();
  111. }
  112. });
  113. }
  114. });
  115. }
  116. },
  117. 'gridpanel[id=index_column_grid]':{
  118. afterrender:function(grid){
  119. grid.plugins[0].on('edit',function(editor,e,Opts){
  120. /*if()
  121. e.originalValue!=e.value
  122. e.record.reject();*/
  123. var msg=me._checkIndex_col(e.value,e.record,e.rowIdx);
  124. if(msg){
  125. e.record.reject();
  126. Ext.Msg.alert('提示',msg);
  127. }
  128. });
  129. }
  130. },
  131. 'button[itemId=column_add]':{
  132. click:function(btn){
  133. var g=btn.ownerCt.ownerCt;
  134. g.getStore().insert(0,{data_type:'VARCHAR2',data_length:20,nullable:'Y'});
  135. }
  136. },
  137. 'button[itemId=add_index]':{
  138. click:function(btn){
  139. var list=btn.ownerCt.ownerCt.down('boundlist[name=tab_indexs]'),_s=list.store,maxNum=0,_index;
  140. Ext.Array.each(_s.data.items,function(record){
  141. _index=record.get('index_name');
  142. if(_index.indexOf(tablename+'_INDEX')>-1){
  143. var s=_index.split(tablename+'_INDEX')[1];
  144. if(s.length>0){
  145. if(Ext.isNumeric(s)){
  146. if(s>maxNum) maxNum=s;
  147. }
  148. }
  149. }
  150. });
  151. maxNum=parseInt(maxNum)+1;
  152. var data={
  153. index_name:tablename+'_INDEX'+maxNum,
  154. uniqueness:'NONUNIQUE',
  155. ind_columns:[]
  156. };
  157. _s.insert(_s.data.items.length,data);
  158. var _bound=Ext.ComponentQuery.query('boundlist')[0];
  159. _bound.select(_s.data.items.length-1);
  160. me.setIndexDisp(data);
  161. }
  162. },
  163. 'button[itemId=delete_index]':{
  164. click:function(btn){
  165. var list=btn.ownerCt.ownerCt.down('boundlist[name=tab_indexs]'),_s=list.store;
  166. _s.remove(list.getSelectionModel().getSelection());
  167. if(_s.data.items.length>0){
  168. list.select(0);
  169. me.setIndexDisp(_s.data.items[0].data);
  170. }
  171. }
  172. },
  173. 'button[itemId=add_ind_column]':{
  174. click:function(btn){
  175. var _g=Ext.getCmp('index_column_grid'),store=_g.getStore();
  176. var _col=me.getInd_column(store.collect('COLUMN_NAME'));
  177. store.insert(store.data.items.length,{
  178. COLUMN_NAME:_col,
  179. DESCEND:'ASC'
  180. });
  181. var arr=new Array();
  182. Ext.Array.each(store.data.items,function(item){
  183. arr.push(item.data);
  184. });
  185. me.isDirtyChange(arr, "ind_columns");
  186. }
  187. },
  188. 'button[itemId=delete_ind_column]':{
  189. click:function(btn){
  190. var _g=Ext.getCmp('index_column_grid'),store=_g.getStore();
  191. var selected=_g.getSelectionModel().getLastSelected();
  192. var arr=new Array();
  193. if(selected) store.remove(selected);
  194. Ext.Array.each(store.data.items,function(item){
  195. arr.push(item.data);
  196. });
  197. me.isDirtyChange(arr, "ind_columns");
  198. }
  199. },
  200. 'boundlist[name=tab_indexs]':{
  201. itemclick:function(view,record){
  202. me.setIndexDisp(record.data);
  203. },
  204. beforrender:function(list){
  205. list.multiSelect=false;
  206. },
  207. afterrender:function(c){
  208. Ext.defer(function(){
  209. var _bound=Ext.ComponentQuery.query('boundlist')[0],_store=_bound.getStore();
  210. if(_store.data.items.length>0 && _bound.getSelectedNodes().length==0){
  211. _bound.select(0);
  212. me.setIndexDisp(_store.data.items[0].data);
  213. }
  214. },200);
  215. }
  216. },
  217. 'erpSaveButton': {
  218. afterrender: function(){
  219. me.getDetail();
  220. },
  221. click: function(btn){
  222. me.save(btn);
  223. }
  224. },
  225. 'erpUpdateButton': {
  226. click: function(btn){
  227. var form = btn.up('form'),
  228. grid = form.ownerCt.down('grid'),
  229. table = form.down('#dd_tablename').value,
  230. key = form.down('#dd_primekey').value;
  231. grid.store.each(function(){
  232. if(this.get('ddd_id') == 0) {
  233. this.set('ddd_tablename', table);
  234. this.set('ddd_primekey', key);
  235. }
  236. });
  237. me.FormUtil.onUpdate(this);
  238. }
  239. },
  240. 'erpAddButton': {
  241. click: function(){
  242. me.FormUtil.onAdd('addDataDictionary', '新增数据字典', 'jsps/ma/dataDictionary.jsp');
  243. }
  244. },
  245. 'erpCloseButton': {
  246. click: function(btn){
  247. me.FormUtil.beforeClose(me);
  248. }
  249. },
  250. 'erpGridPanel2': {
  251. afterrender: function(g) {
  252. g.plugins[0].on('beforeedit', function(args){
  253. if(g.readOnly || (args.record.get('ddd_id') > 0 && args.field != 'ddd_description')) {// 已存在的,不允许直接界面修改
  254. return false;
  255. }
  256. });
  257. },
  258. itemclick: function(selModel, record) {
  259. if(record)
  260. selModel.ownerCt.down('erpAddDetailButton').setDisabled(false);// 可新增字段
  261. }
  262. },
  263. 'erpFormPanel textfield[name=dd_tablename]': {
  264. change: function(field){
  265. field.setValue(field.value.toUpperCase());
  266. var grid = Ext.getCmp('grid');
  267. Ext.each(grid.store.data.items, function(item){
  268. if(item.dirty == true){
  269. item.set('ddd_tablename', Ext.getCmp('dd_tablename').value);
  270. item.set('ddd_updatetime', Ext.getCmp('dd_updatetime').value);
  271. item.set('ddd_updateuser', Ext.getCmp('dd_updateuser').value);
  272. item.set('ddd_primekey', Ext.getCmp('dd_primekey').value);
  273. }
  274. });
  275. }
  276. },
  277. 'erpFormPanel textfield[name=dd_updatetime]': {
  278. change: function(){
  279. var grid = Ext.getCmp('grid');
  280. Ext.each(grid.store.data.items, function(item){
  281. if(item.dirty == true){
  282. item.set('ddd_tablename', Ext.getCmp('dd_tablename').value);
  283. item.set('ddd_updatetime', Ext.getCmp('dd_updatetime').value);
  284. item.set('ddd_updateuser', Ext.getCmp('dd_updateuser').value);
  285. item.set('ddd_primekey', Ext.getCmp('dd_primekey').value);
  286. }
  287. });
  288. }
  289. },
  290. 'erpFormPanel textfield[name=dd_updateuser]': {
  291. change: function(){
  292. var grid = Ext.getCmp('grid');
  293. Ext.each(grid.store.data.items, function(item){
  294. if(item.dirty == true){
  295. item.set('ddd_tablename', Ext.getCmp('dd_tablename').value);
  296. item.set('ddd_updatetime', Ext.getCmp('dd_updatetime').value);
  297. item.set('ddd_updateuser', Ext.getCmp('dd_updateuser').value);
  298. item.set('ddd_primekey', Ext.getCmp('dd_primekey').value);
  299. }
  300. });
  301. }
  302. }
  303. });
  304. },
  305. _checkIndex_col:function(value,record,rowIndex){
  306. var msg=null;
  307. Ext.Array.each(record.store.data.items,function(item,index){
  308. if(item.get('COLUMN_NAME')==value && index!=rowIndex){
  309. msg='列 '+value+' 在索引 '+Ext.getCmp('index_name').value+' 中只能使用一次';
  310. return false;
  311. }
  312. });
  313. return msg;
  314. },
  315. getForm: function(btn){
  316. return btn.ownerCt.ownerCt;
  317. },
  318. getTable:function(form,tablename){
  319. if(tablename){
  320. Ext.Ajax.request({
  321. url : basePath + '/common/getFieldsData.action',
  322. async: false,
  323. params: {
  324. caller: 'USER_OBJECTS LEFT JOIN User_Tab_Comments ON OBJECT_NAME=User_Tab_Comments.Table_Name',
  325. fields: 'object_name,object_id,comments',
  326. condition: "OBJECT_NAME='"+tablename+"' and OBJECT_TYPE='TABLE'"
  327. },
  328. method : 'post',
  329. callback : function(opt, s, res){
  330. var r = new Ext.decode(res.responseText);
  331. if(r.exceptionInfo){
  332. showError(r.exceptionInfo);return;
  333. } else if(r.success && r.data){
  334. form.getForm().setValues(r.data);
  335. }
  336. }
  337. });
  338. }
  339. },
  340. setIndexDisp:function(data){
  341. Ext.getCmp('uniqueness').setValue({uniqueness:data['uniqueness']});
  342. Ext.getCmp('index_name').setValue(data['index_name']);
  343. Ext.getCmp('index_column_grid').getStore().loadData(data['ind_columns']);
  344. },
  345. getSelectNode:function(_bound){
  346. if(!_bound) _bound=Ext.ComponentQuery.query('boundlist')[0];
  347. var selects=_bound.getSelectionModel().getSelection();
  348. if(selects.length>0) return selects[0];
  349. else return null;
  350. },
  351. isDirtyChange:function(newvalue,name,record){
  352. if(!record) record=this.getSelectNode();
  353. if(newvalue != record.get(name)){
  354. record.set(name,newvalue);
  355. }
  356. },
  357. getInd_column:function(arr){
  358. var store=Ext.getCmp('grid').getStore(),_column=null;
  359. Ext.Array.each(store.data.items,function(item){
  360. if(!Ext.Array.contains(arr,item.get('column_name'))){
  361. _column=item.get('column_name');
  362. return false;
  363. }
  364. });
  365. return _column;
  366. },
  367. checkTab_columns:function(){
  368. // var grid=Ext.getCmp('grid');
  369. },
  370. getColumnChanges:function(){
  371. var grid=Ext.getCmp('grid'),store=grid.getStore(),
  372. toUpdated=store.getUpdatedRecords();
  373. toCreated=store.getNewRecords();
  374. toRemoved=store.getRemovedRecords();
  375. var columparam=new Object();
  376. if(toUpdated.length>0){
  377. var updated=new Array();
  378. Ext.Array.each(toUpdated,function(item){
  379. if(item.get('column_name')!=null && item.get('column_name')!='' && item.get('data_type')!=null && item.get('comments')!=null && item.get('comments')!=''){
  380. updated.push(item.data);
  381. }
  382. });
  383. columparam['Col_update']=Ext.JSON.encode(updated);
  384. }
  385. if(toCreated.length>0){
  386. var created=new Array();
  387. var bool=false; var nonStandard=false;
  388. Ext.Array.each(toCreated,function(item){
  389. if(item.get('column_name')!=null && item.get('column_name').trim()!="" && item.get('data_type')!=null && item.get('data_type').trim()!="" && item.get('comments')!=null && item.get('comments')!=''){
  390. if(!bool && currentMaster!="UAS" && item.get('column_name').toUpperCase().indexOf("_USER")<0){
  391. bool=true;
  392. nonStandard = window.confirm("非UAS标准字段,字段名将默认添加_USER作为后缀");
  393. }
  394. if(nonStandard && item.get('column_name').toUpperCase().indexOf("_USER")<0) item.data['column_name']= item.get('column_name')+"_USER";
  395. created.push(item.data);
  396. }
  397. });
  398. columparam['Col_create']=Ext.JSON.encode(created);
  399. }
  400. if(toRemoved.length>0){
  401. var removed=new Array();
  402. Ext.Array.each(toCreated,function(item){
  403. if(item.get('column_name')!=null && item.get('column_name')!=' ' && item.get('data_type')!=null){
  404. removed.push(item.data);
  405. }
  406. });
  407. columparam['Col_remove']=Ext.JSON.encode(removed);
  408. }
  409. return columparam;
  410. },
  411. getIndexChanges:function(){
  412. var _bound=Ext.ComponentQuery.query('boundlist[name=tab_indexs]')[0],store=_bound.getStore();
  413. toUpdated=store.getUpdatedRecords();
  414. toCreated=store.getNewRecords();
  415. toRemoved=store.getRemovedRecords();
  416. var indexparam=new Object();
  417. if(toUpdated.length>0){
  418. indexparam['Ind_update']=Ext.JSON.encode(toUpdated);
  419. }
  420. if(toCreated.length>0){
  421. var created=new Array();
  422. Ext.Array.each(toCreated,function(item){
  423. if(item.get('ind_columns').length>0){
  424. created.push(item.data);
  425. }
  426. });
  427. indexparam['Ind_create']=Ext.JSON.encode(created);
  428. }
  429. if(toRemoved.length>0){
  430. var remove=new Array();
  431. Ext.Array.each(toRemoved,function(item){
  432. remove.push(item.data);
  433. });
  434. indexparam['Ind_remove']=Ext.JSON.encode(remove);
  435. }
  436. return indexparam;
  437. },
  438. getRelations:function(tablename){
  439. var me=this;
  440. Ext.Ajax.request({
  441. url:basePath+'ma/getDatarelations.action',
  442. method:'get',
  443. params:{tablename:tablename},
  444. callback : function(opt, s, res){
  445. var r = new Ext.decode(res.responseText);
  446. if(r.exceptionInfo){
  447. showError(r.exceptionInfo);return;
  448. } else if(r.success && r.relations && r.relations.length>0 ){
  449. me.showRelTab(me.formatRelations(r));
  450. }
  451. }
  452. });
  453. },
  454. formatRelations:function(r){
  455. var arr=new Array(),o,groupname,relations=r.relations,col_comments=r.relations_col_comments,tab_comments=r.relations_tab_comments;
  456. Ext.Array.each(relations,function(item){
  457. Ext.Array.each(tab_comments,function(tab){
  458. if(tab.TABLE_NAME==item.table_name_y){
  459. groupname=item.table_name_y+'('+tab.COMMENTS+')';
  460. return false;
  461. }
  462. });
  463. if(item.col_x_1){
  464. o=new Object();
  465. o.col_x=item.col_x_1;
  466. o.col_y=item.col_y_1;
  467. Ext.Array.each(r.relations_col_comments,function(col){
  468. if(col.COLUMN_NAME==item.col_x_1 && col.TABLE_NAME==item.table_name_x){
  469. o.desc_x=col.COMMENTS;
  470. o.type_x=col.DATA_TYPE;
  471. }
  472. if(col.COLUMN_NAME==item.col_y_1 && col.TABLE_NAME==item.table_name_y){
  473. o.desc_y=col.COMMENTS;
  474. o.type_y=col.DATA_TYPE;
  475. }
  476. });
  477. o.tab_y=groupname;
  478. arr.push(o);
  479. }
  480. if(item.col_x_2){
  481. o=new Object();
  482. o.col_x=item.col_x_2;
  483. o.col_y=item.col_y_2;
  484. Ext.Array.each(r.relations_col_comments,function(col){
  485. if(col.COLUMN_NAME==item.col_x_2 && col.TABLE_NAME==item.table_name_x){
  486. o.desc_x=col.COMMENTS;
  487. o.type_x=col.DATA_TYPE;
  488. }
  489. if(col.COLUMN_NAME==item.col_y_2 && col.TABLE_NAME==item.table_name_y){
  490. o.desc_y=col.COMMENTS;
  491. o.type_y=col.DATA_TYPE;
  492. }
  493. });
  494. o.tab_y=groupname;
  495. arr.push(o);
  496. }
  497. });
  498. return arr;
  499. },
  500. showRelTab:function(data){
  501. var tabP=Ext.getCmp('dictab'),_m=this;
  502. tabP.insert(2,{
  503. title:'关联表',
  504. xtype:'gridpanel',
  505. id:'relationgrid',
  506. columnLines:true,
  507. columns:[{
  508. text:'基础表',
  509. cls: "x-grid-header-1",
  510. columns:[{
  511. text:'列名',
  512. dataIndex:'col_x',
  513. cls: "x-grid-header-2",
  514. width:150,
  515. fixed :true
  516. },{
  517. text:'类型',
  518. dataIndex:'type_x',
  519. //cls: "x-grid-header-1",
  520. width:80,
  521. fixed :true
  522. },{
  523. text:'注释',
  524. dataIndex:'desc_x',
  525. // cls: "x-grid-header-1",
  526. width:200,
  527. fixed :true
  528. }]
  529. },{
  530. text:'关联表',
  531. cls: "x-grid-header-1",
  532. columns:[{
  533. text:'字段',
  534. dataIndex:'col_y',
  535. // cls: "x-grid-header-1",
  536. width:150,
  537. fixed :true
  538. },{
  539. text:'类型',
  540. dataIndex:'type_y',
  541. //cls: "x-grid-header-1",
  542. width:80,
  543. fixed :true
  544. },{
  545. text:'注释',
  546. dataIndex:'desc_y',
  547. // cls: "x-grid-header-1",
  548. width:200,
  549. fixed :true
  550. }]
  551. },{
  552. dataIndex:'tab_y',
  553. cls: "x-grid-header-1",
  554. width:0
  555. }
  556. ],
  557. store:Ext.create('Ext.data.Store', {
  558. fields: [ {name: 'col_x'},{name:'desc_x'},{name:'type_x'},
  559. {name:'col_y'},{name:'desc_y'},{name:'type_y'},{name:'tablerelation'},{name:'tab_x'},{name:'tab_y'}],
  560. data:data,
  561. groupers:['tab_y']
  562. }),
  563. features: [{
  564. //id: 'group',
  565. ftype: 'grouping',
  566. groupHeaderTpl: '关联表:<a href="#">{name}</a>',
  567. getFeatureTpl: function(values, parent, x, xcount) {
  568. var me = this;
  569. return [
  570. '<tpl if="typeof rows !== \'undefined\'">',
  571. // group row tpl
  572. '<tr class="' + Ext.baseCSSPrefix + 'grid-group-hd ' + (me.startCollapsed ? me.hdCollapsedCls : '') + ' {hdCollapsedCls}"><td class="' + Ext.baseCSSPrefix + 'grid-cell" align=center colspan="' + parent.columns.length + '" ><div class="' + Ext.baseCSSPrefix + 'grid-cell-inner"><div class="' + Ext.baseCSSPrefix + 'grid-group-title">{collapsed}' + me.groupHeaderTpl + '</div></div></td></tr>',
  573. // this is the rowbody
  574. '<tr id="{viewId}-gp-{name}" class="' + Ext.baseCSSPrefix + 'grid-group-body ' + (me.startCollapsed ? me.collapsedCls : '') + ' {collapsedCls}"><td colspan="' + parent.columns.length + '">{[this.recurse(values)]}</td></tr>',
  575. '</tpl>'
  576. ].join('');
  577. },
  578. onGroupClick: function(view, group, idx, foo, e) {
  579. var _table=idx.substring(0,idx.indexOf('('));
  580. _m.FormUtil.onAdd(_table,'系统数据字典',basePath+'jsps/ma/dataDictionary.jsp?formCondition=object_nameIS'+_table);
  581. },
  582. enableGroupingMenu: false
  583. }]
  584. });
  585. },
  586. getGridStore:function(grid){
  587. var jsonGridData = new Array();
  588. var s = grid.getStore().data.items;//获取store里面的数据
  589. var dd;
  590. for(var i=0;i<s.length;i++){//将grid里面各行的数据获取并拼成jsonGridData
  591. var data = s[i].data;
  592. dd = new Object();
  593. if(s[i].dirty){
  594. Ext.each(grid.columns, function(c){
  595. if((c.logic != 'ignore') && c.dataIndex){//只需显示,无需后台操作的字段,自动略去
  596. dd[c.dataIndex] = s[i].data[c.dataIndex];
  597. }
  598. });
  599. jsonGridData.push(Ext.JSON.encode(dd));
  600. }
  601. }
  602. return jsonGridData;
  603. }
  604. });