Просмотр исходного кода

从表新增删除可用性控制

zhuth 7 лет назад
Родитель
Сommit
d7a736aa70

+ 2 - 7
frontend/saas-web/app/view/core/form/FormPanel.js

@@ -261,13 +261,8 @@ Ext.define('saas.view.core.form.FormPanel', {
         var detailGrids = me.query('detailGridField');
 
         Ext.Array.each(detailGrids, function(g) {
-            var columns = g.columns;
-            Ext.Array.each(columns, function(c) {
-                var e = c.getEditor();
-                if(e) {
-                    typeof e.setDisabled == 'function' && e.setDisabled(!able);
-                }
-            });
+
+            g.setGridDisabled(able);
         });
 
         Ext.Array.each(items, function(item) {

+ 51 - 14
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -25,6 +25,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
 
     showIndex: true,
     configUrl: '',
+    editable: true,
 
     initComponent: function() {
         var me = this;
@@ -33,7 +34,9 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
 
         addRows = function(id) {
             var grid = Ext.getCmp(id);
-            grid.addDetail(0);
+            if(grid.editable) {
+                grid.addDetail(0);
+            }
         };
 
         Ext.apply(me, {
@@ -46,8 +49,11 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                 emptyText: '<div style="width: 100%; text-align: center; cursor: pointer; color: green;" class="fa fa-plus" title="新增行" onclick="addRows(\'' + me.id + '\')"></div>',
             },
             listeners: {
-                itemmouseenter: function(grid, record, item, index, e, eOpts) {
-                    var lockedItems = grid.el.dom.parentElement.parentElement.getElementsByClassName('x-grid-scrollbar-clipper-locked')[0].getElementsByClassName('x-grid-item');
+                itemmouseenter: function(view, record, item, index, e, eOpts) {
+                    if(!view.up('detailGridField').editable) {
+                        return;
+                    }
+                    var lockedItems = view.el.dom.parentElement.parentElement.getElementsByClassName('x-grid-scrollbar-clipper-locked')[0].getElementsByClassName('x-grid-item');
                     var currentLockedItem = lockedItems[index];
                     var textItem = currentLockedItem.getElementsByClassName('text')[0];
                     var iconsItem = currentLockedItem.getElementsByClassName('icons')[0];
@@ -55,8 +61,11 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                     textItem.style.display = 'none';
                     iconsItem.style.display = 'flex';
                 },
-                itemmouseleave: function(grid, record, item, index, e, eOpts) {
-                    var lockedItems = grid.el.dom.parentElement.parentElement.getElementsByClassName('x-grid-scrollbar-clipper-locked')[0].getElementsByClassName('x-grid-item');
+                itemmouseleave: function(view, record, item, index, e, eOpts) {
+                    if(!view.up('detailGridField').editable) {
+                        return;
+                    }
+                    var lockedItems = view.el.dom.parentElement.parentElement.getElementsByClassName('x-grid-scrollbar-clipper-locked')[0].getElementsByClassName('x-grid-item');
                     var currentLockedItem = lockedItems[index];
                     var textItem = currentLockedItem.getElementsByClassName('text')[0];
                     var iconsItem = currentLockedItem.getElementsByClassName('icons')[0];
@@ -64,7 +73,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                     textItem.style.display = 'block';
                     iconsItem.style.display = 'none';
                 },
-                cellclick: function(grid, td, cellIndex, record, tr, rowIndex, e, eOpts) {
+                cellclick: function(view, td, cellIndex, record, tr, rowIndex, e, eOpts) {
                     var target = e.target;
                     var detno = record.get(me.detnoColumn);
 
@@ -151,8 +160,12 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     },
 
     addDetail: function(v) {
-        var me = this,
-        detnoColumn = me.detnoColumn,
+        var me = this;
+        var me = this;
+        if(!me.editable) {
+            return;
+        }
+        var detnoColumn = me.detnoColumn,
         store = me.getStore(),
         records = store.getData().items,
         selectedRecord = records.find(function(r) {
@@ -177,8 +190,11 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     },
 
     deleteDetail: function(v) {
-        var me = this,
-        detnoColumn = me.detnoColumn,
+        var me = this;
+        if(!me.editable) {
+            return;
+        }
+        var detnoColumn = me.detnoColumn,
         store = me.getStore(),
         records = store.getData().items,
         selectedRecord = records.find(function(r) {
@@ -210,8 +226,12 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     },
 
     swapUp: function() {
-        var me = this,
-        store = me.getStore(),
+        var me = this;
+        var me = this;
+        if(!me.editable) {
+            return;
+        }
+        var store = me.getStore(),
         record = me.selModel.lastSelected,
         selectedIdx = store.indexOf(record);
 
@@ -219,8 +239,12 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     },
 
     swapDown: function() {
-        var me = this,
-        store = me.getStore(),
+        var me = this;
+        var me = this;
+        if(!me.editable) {
+            return;
+        }
+        var store = me.getStore(),
         record = me.selModel.lastSelected,
         selectedIdx = store.indexOf(record);
         
@@ -250,6 +274,19 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             //聚焦目标行
             me.selModel.select(to);
         }
+    },
+    setGridDisabled: function(able) {
+        var me = this,
+        columns = me.columns;
+
+        me.editable = able;
+
+        Ext.Array.each(columns, function(c) {
+            var e = c.getEditor();
+            if(e) {
+                typeof e.setDisabled == 'function' && e.setDisabled(!able);
+            }
+        });
     }
 
 });