123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565 |
- Ext.QuickTips.init();
- Ext.define('erp.controller.ma.DataDictionary', {
- extend: 'Ext.app.Controller',
- FormUtil: Ext.create('erp.util.FormUtil'),
- GridUtil: Ext.create('erp.util.GridUtil'),
- BaseUtil: Ext.create('erp.util.BaseUtil'),
- views:[
- 'ma.DataDictionary','core.form.Panel','core.grid.Panel2','core.button.Sync','ma.DataDictionaryGrid',
- 'core.button.Add','core.button.Submit','core.button.Audit','core.button.Save','core.button.Close','core.button.Print',
- 'core.button.Upload','core.button.Update','core.button.Delete','core.button.DeleteDetail','core.button.ResAudit',
- 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.toolbar.Toolbar'
- ],
- init:function(){
- var me = this;
- this.control({
- 'form':{
- afterrender:function(form){
- if(!currentRecord && tablename){
- me.getTable(form,tablename);
- me.getRelations(tablename);
- }
- }
- },
- 'button[itemId=save]':{
- click:function(btn){
- var params=me.getColumnChanges();
- Ext.apply(params,me.getIndexChanges());
- params.tablename=tablename;
- var form=btn.ownerCt.ownerCt,values=form.getForm().getValues();
- params.formStore=Ext.JSON.encode(values);
- me.FormUtil.setLoading(true);
- Ext.Ajax.request({
- method:'post',
- url:basePath+'ma/dataDictionary/alter.action',
- params:params,
- callback : function(options, success, response){
- me.FormUtil.setLoading(false);
- if (!response) return;
- var res = new Ext.decode(response.responseText);
- if(res.success){
- window.location.reload();
- }
- else if(res.exceptionInfo != null){
- showError(res.exceptionInfo);return;
- }
- }
- });
- }
- },
- 'button[itemId=add]':{
- click:function(btn){
- me.FormUtil.onAdd('addDic', '系统数据字典', 'jsps/ma/dataDictionary.jsp');
- }
- },
- 'button[itemId=close]':{
- click:function(btn){
- var main = parent.Ext.getCmp("content-panel");
- main.getActiveTab().close();
- }
- },
- 'radiogroup':{
- change: function(group ,newvalue,oldvalue){
- if(Ext.isString(newvalue.uniqueness)){
- me.isDirtyChange(newvalue.uniqueness, group.name);
- }
- }
- },
- 'gridpanel[id=grid]':{
- afterrender:function(grid){
- grid.plugins[1].on('beforeedit',function(e,Opts){
- if(e.column.dataIndex == 'data_length'){
- var record = e.record,column = e.column;
- var f = record.data['data_type'];
- if(f=='DATE' || f=='CLOB' || f=='TIMESTAMP'){
- return false;
- }
- }
- });
- grid.plugins[1].on('edit',function(editor,e){
- if(e.field=='column_name'){
- var record = e.record,value=e.value;
- Ext.Array.each(record.store.data.items,function(item,index){
- if(item.get('column_name')==value && index!=e.rowIdx){
- Ext.Msg.alert('提示','列 '+value+' 已存在!');
- e.record.reject();
- }
- });
- }
- });
- }
- },
- 'gridpanel[id=index_column_grid]':{
- afterrender:function(grid){
- grid.plugins[0].on('edit',function(editor,e,Opts){
- /*if()
- e.originalValue!=e.value
- e.record.reject();*/
- var msg=me._checkIndex_col(e.value,e.record,e.rowIdx);
- if(msg){
- e.record.reject();
- Ext.Msg.alert('提示',msg);
- }
- });
- }
- },
- 'button[itemId=column_add]':{
- click:function(btn){
- var g=btn.ownerCt.ownerCt;
- g.getStore().insert(0,{data_type:'VARCHAR2',data_length:20,nullable:'Y'});
- }
- },
- 'button[itemId=add_index]':{
- click:function(btn){
- var list=btn.ownerCt.ownerCt.down('boundlist[name=tab_indexs]'),_s=list.store,maxNum=0,_index;
- Ext.Array.each(_s.data.items,function(record){
- _index=record.get('index_name');
- if(_index.indexOf(tablename+'_INDEX')>-1){
- var s=_index.split(tablename+'_INDEX')[1];
- if(s.length>0){
- if(Ext.isNumeric(s)){
- if(s>maxNum) maxNum=s;
- }
- }
- }
- });
- maxNum=parseInt(maxNum)+1;
- var data={
- index_name:tablename+'_INDEX'+maxNum,
- uniqueness:'NONUNIQUE',
- ind_columns:[]
- };
- _s.insert(_s.data.items.length,data);
- var _bound=Ext.ComponentQuery.query('boundlist')[0];
- _bound.select(_s.data.items.length-1);
- me.setIndexDisp(data);
- }
- },
- 'button[itemId=delete_index]':{
- click:function(btn){
- var list=btn.ownerCt.ownerCt.down('boundlist[name=tab_indexs]'),_s=list.store;
- _s.remove(list.getSelectionModel().getSelection());
- if(_s.data.items.length>0){
- list.select(0);
- me.setIndexDisp(_s.data.items[0].data);
- }
- }
- },
- 'button[itemId=add_ind_column]':{
- click:function(btn){
- var _g=Ext.getCmp('index_column_grid'),store=_g.getStore();
- var _col=me.getInd_column(store.collect('COLUMN_NAME'));
- store.insert(store.data.items.length,{
- COLUMN_NAME:_col,
- DESCEND:'ASC'
- });
- var arr=new Array();
- Ext.Array.each(store.data.items,function(item){
- arr.push(item.data);
- });
- me.isDirtyChange(arr, "ind_columns");
- }
- },
- 'button[itemId=delete_ind_column]':{
- click:function(btn){
- var _g=Ext.getCmp('index_column_grid'),store=_g.getStore();
- var selected=_g.getSelectionModel().getLastSelected();
- var arr=new Array();
- if(selected) store.remove(selected);
- Ext.Array.each(store.data.items,function(item){
- arr.push(item.data);
- });
- me.isDirtyChange(arr, "ind_columns");
- }
- },
- 'boundlist[name=tab_indexs]':{
- itemclick:function(view,record){
- me.setIndexDisp(record.data);
- },
- beforrender:function(list){
- list.multiSelect=false;
- },
- afterrender:function(c){
- Ext.defer(function(){
- var _bound=Ext.ComponentQuery.query('boundlist')[0],_store=_bound.getStore();
- if(_store.data.items.length>0 && _bound.getSelectedNodes().length==0){
- _bound.select(0);
- me.setIndexDisp(_store.data.items[0].data);
- }
- },200);
- }
- },
- 'erpSaveButton': {
- afterrender: function(){
- me.getDetail();
- },
- click: function(btn){
- me.save(btn);
- }
- },
- 'erpUpdateButton': {
- click: function(btn){
- var form = btn.up('form'),
- grid = form.ownerCt.down('grid'),
- table = form.down('#dd_tablename').value,
- key = form.down('#dd_primekey').value;
- grid.store.each(function(){
- if(this.get('ddd_id') == 0) {
- this.set('ddd_tablename', table);
- this.set('ddd_primekey', key);
- }
- });
- me.FormUtil.onUpdate(this);
- }
- },
- 'erpAddButton': {
- click: function(){
- me.FormUtil.onAdd('addDataDictionary', '新增数据字典', 'jsps/ma/dataDictionary.jsp');
- }
- },
- 'erpCloseButton': {
- click: function(btn){
- me.FormUtil.beforeClose(me);
- }
- },
- 'erpGridPanel2': {
- afterrender: function(g) {
- g.plugins[0].on('beforeedit', function(args){
- if(g.readOnly || (args.record.get('ddd_id') > 0 && args.field != 'ddd_description')) {// 已存在的,不允许直接界面修改
- return false;
- }
- });
- },
- itemclick: function(selModel, record) {
- if(record)
- selModel.ownerCt.down('erpAddDetailButton').setDisabled(false);// 可新增字段
- }
- },
- 'erpFormPanel textfield[name=dd_tablename]': {
- change: function(field){
- field.setValue(field.value.toUpperCase());
- var grid = Ext.getCmp('grid');
- Ext.each(grid.store.data.items, function(item){
- if(item.dirty == true){
- item.set('ddd_tablename', Ext.getCmp('dd_tablename').value);
- item.set('ddd_updatetime', Ext.getCmp('dd_updatetime').value);
- item.set('ddd_updateuser', Ext.getCmp('dd_updateuser').value);
- item.set('ddd_primekey', Ext.getCmp('dd_primekey').value);
- }
- });
- }
- },
- 'erpFormPanel textfield[name=dd_updatetime]': {
- change: function(){
- var grid = Ext.getCmp('grid');
- Ext.each(grid.store.data.items, function(item){
- if(item.dirty == true){
- item.set('ddd_tablename', Ext.getCmp('dd_tablename').value);
- item.set('ddd_updatetime', Ext.getCmp('dd_updatetime').value);
- item.set('ddd_updateuser', Ext.getCmp('dd_updateuser').value);
- item.set('ddd_primekey', Ext.getCmp('dd_primekey').value);
- }
- });
- }
- },
- 'erpFormPanel textfield[name=dd_updateuser]': {
- change: function(){
- var grid = Ext.getCmp('grid');
- Ext.each(grid.store.data.items, function(item){
- if(item.dirty == true){
- item.set('ddd_tablename', Ext.getCmp('dd_tablename').value);
- item.set('ddd_updatetime', Ext.getCmp('dd_updatetime').value);
- item.set('ddd_updateuser', Ext.getCmp('dd_updateuser').value);
- item.set('ddd_primekey', Ext.getCmp('dd_primekey').value);
- }
- });
- }
- }
- });
- },
- _checkIndex_col:function(value,record,rowIndex){
- var msg=null;
- Ext.Array.each(record.store.data.items,function(item,index){
- if(item.get('COLUMN_NAME')==value && index!=rowIndex){
- msg='列 '+value+' 在索引 '+Ext.getCmp('index_name').value+' 中只能使用一次';
- return false;
- }
- });
- return msg;
- },
- getForm: function(btn){
- return btn.ownerCt.ownerCt;
- },
- getTable:function(form,tablename){
- if(tablename){
- Ext.Ajax.request({
- url : basePath + '/common/getFieldsData.action',
- async: false,
- params: {
- caller: 'USER_OBJECTS LEFT JOIN User_Tab_Comments ON OBJECT_NAME=User_Tab_Comments.Table_Name',
- fields: 'object_name,object_id,comments',
- condition: "OBJECT_NAME='"+tablename+"' and OBJECT_TYPE='TABLE'"
- },
- method : 'post',
- callback : function(opt, s, res){
- var r = new Ext.decode(res.responseText);
- if(r.exceptionInfo){
- showError(r.exceptionInfo);return;
- } else if(r.success && r.data){
- form.getForm().setValues(r.data);
- }
- }
- });
- }
- },
- setIndexDisp:function(data){
- Ext.getCmp('uniqueness').setValue({uniqueness:data['uniqueness']});
- Ext.getCmp('index_name').setValue(data['index_name']);
- Ext.getCmp('index_column_grid').getStore().loadData(data['ind_columns']);
- },
- getSelectNode:function(_bound){
- if(!_bound) _bound=Ext.ComponentQuery.query('boundlist')[0];
- var selects=_bound.getSelectionModel().getSelection();
- if(selects.length>0) return selects[0];
- else return null;
- },
- isDirtyChange:function(newvalue,name,record){
- if(!record) record=this.getSelectNode();
- if(newvalue != record.get(name)){
- record.set(name,newvalue);
- }
- },
- getInd_column:function(arr){
- var store=Ext.getCmp('grid').getStore(),_column=null;
- Ext.Array.each(store.data.items,function(item){
- if(!Ext.Array.contains(arr,item.get('column_name'))){
- _column=item.get('column_name');
- return false;
- }
- });
- return _column;
- },
- checkTab_columns:function(){
- // var grid=Ext.getCmp('grid');
- },
- getColumnChanges:function(){
- var grid=Ext.getCmp('grid'),store=grid.getStore(),
- toUpdated=store.getUpdatedRecords();
- toCreated=store.getNewRecords();
- toRemoved=store.getRemovedRecords();
- var columparam=new Object();
- if(toUpdated.length>0){
- var updated=new Array();
- Ext.Array.each(toUpdated,function(item){
- if(item.get('column_name')!=null && item.get('column_name')!='' && item.get('data_type')!=null && item.get('comments')!=null && item.get('comments')!=''){
- updated.push(item.data);
- }
- });
- columparam['Col_update']=Ext.JSON.encode(updated);
- }
- if(toCreated.length>0){
- var created=new Array();
- Ext.Array.each(toCreated,function(item){
- 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')!=''){
- created.push(item.data);
- }
- });
- columparam['Col_create']=Ext.JSON.encode(created);
- }
- if(toRemoved.length>0){
- var removed=new Array();
- Ext.Array.each(toCreated,function(item){
- if(item.get('column_name')!=null && item.get('column_name')!=' ' && item.get('data_type')!=null){
- removed.push(item.data);
- }
- });
- columparam['Col_remove']=Ext.JSON.encode(removed);
- }
- return columparam;
- },
- getIndexChanges:function(){
- var _bound=Ext.ComponentQuery.query('boundlist[name=tab_indexs]')[0],store=_bound.getStore();
- toUpdated=store.getUpdatedRecords();
- toCreated=store.getNewRecords();
- toRemoved=store.getRemovedRecords();
- var indexparam=new Object();
- if(toUpdated.length>0){
- indexparam['Ind_update']=Ext.JSON.encode(toUpdated);
- }
- if(toCreated.length>0){
- var created=new Array();
- Ext.Array.each(toCreated,function(item){
- if(item.get('ind_columns').length>0){
- created.push(item.data);
- }
- });
- indexparam['Ind_create']=Ext.JSON.encode(created);
- }
- if(toRemoved.length>0){
- var remove=new Array();
- Ext.Array.each(toRemoved,function(item){
- remove.push(item.data);
- });
- indexparam['Ind_remove']=Ext.JSON.encode(remove);
- }
- return indexparam;
- },
- getRelations:function(tablename){
- var me=this;
- Ext.Ajax.request({
- url:basePath+'ma/getDatarelations.action',
- method:'get',
- params:{tablename:tablename},
- callback : function(opt, s, res){
- var r = new Ext.decode(res.responseText);
- if(r.exceptionInfo){
- showError(r.exceptionInfo);return;
- } else if(r.success && r.relations && r.relations.length>0 ){
- me.showRelTab(me.formatRelations(r));
- }
- }
- })
- },
- formatRelations:function(r){
- var arr=new Array(),o,groupname,relations=r.relations,col_comments=r.relations_col_comments,tab_comments=r.relations_tab_comments;
- Ext.Array.each(relations,function(item){
- Ext.Array.each(tab_comments,function(tab){
- if(tab.TABLE_NAME==item.table_name_y){
- groupname=item.table_name_y+'('+tab.COMMENTS+')';
- return false;
- }
- });
- if(item.col_x_1){
- o=new Object();
- o.col_x=item.col_x_1;
- o.col_y=item.col_y_1;
- Ext.Array.each(r.relations_col_comments,function(col){
- if(col.COLUMN_NAME==item.col_x_1 && col.TABLE_NAME==item.table_name_x){
- o.desc_x=col.COMMENTS;
- o.type_x=col.DATA_TYPE;
- }
- if(col.COLUMN_NAME==item.col_y_1 && col.TABLE_NAME==item.table_name_y){
- o.desc_y=col.COMMENTS;
- o.type_y=col.DATA_TYPE;
- }
- });
- o.tab_y=groupname;
- arr.push(o);
- }
- if(item.col_x_2){
- o=new Object();
- o.col_x=item.col_x_2;
- o.col_y=item.col_y_2;
- Ext.Array.each(r.relations_col_comments,function(col){
- if(col.COLUMN_NAME==item.col_x_2 && col.TABLE_NAME==item.table_name_x){
- o.desc_x=col.COMMENTS;
- o.type_x=col.DATA_TYPE;
- }
- if(col.COLUMN_NAME==item.col_y_2 && col.TABLE_NAME==item.table_name_y){
- o.desc_y=col.COMMENTS;
- o.type_y=col.DATA_TYPE;
- }
- });
- o.tab_y=groupname;
- arr.push(o);
- }
- });
- return arr;
- },
- showRelTab:function(data){
- var tabP=Ext.getCmp('dictab'),_m=this;
- tabP.insert(2,{
- title:'关联表',
- xtype:'gridpanel',
- id:'relationgrid',
- columnLines:true,
- columns:[{
- text:'基础表',
- cls: "x-grid-header-1",
- columns:[{
- text:'列名',
- dataIndex:'col_x',
- cls: "x-grid-header-2",
- width:150,
- fixed :true
- },{
- text:'类型',
- dataIndex:'type_x',
- //cls: "x-grid-header-1",
- width:80,
- fixed :true
- },{
- text:'注释',
- dataIndex:'desc_x',
- // cls: "x-grid-header-1",
- width:200,
- fixed :true
- }]
- },{
- text:'关联表',
- cls: "x-grid-header-1",
- columns:[{
- text:'字段',
- dataIndex:'col_y',
- // cls: "x-grid-header-1",
- width:150,
- fixed :true
- },{
- text:'类型',
- dataIndex:'type_y',
- //cls: "x-grid-header-1",
- width:80,
- fixed :true
- },{
- text:'注释',
- dataIndex:'desc_y',
- // cls: "x-grid-header-1",
- width:200,
- fixed :true
- }]
- },{
- dataIndex:'tab_y',
- cls: "x-grid-header-1",
- width:0
- }
- ],
- store:Ext.create('Ext.data.Store', {
- fields: [ {name: 'col_x'},{name:'desc_x'},{name:'type_x'},
- {name:'col_y'},{name:'desc_y'},{name:'type_y'},{name:'tablerelation'},{name:'tab_x'},{name:'tab_y'}],
- data:data,
- groupers:['tab_y']
- }),
- features: [{
- //id: 'group',
- ftype: 'grouping',
- groupHeaderTpl: '关联表:<a href="#">{name}</a>',
- getFeatureTpl: function(values, parent, x, xcount) {
- var me = this;
- return [
- '<tpl if="typeof rows !== \'undefined\'">',
- // group row tpl
- '<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>',
- // this is the rowbody
- '<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>',
- '</tpl>'
- ].join('');
- },
- onGroupClick: function(view, group, idx, foo, e) {
- var _table=idx.substring(0,idx.indexOf('('));
- _m.FormUtil.onAdd(_table,'系统数据字典',basePath+'jsps/ma/dataDictionary.jsp?formCondition=object_nameIS'+_table);
- },
- enableGroupingMenu: false
- }]
- });
- }
- });
|