Browse Source

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

hy 7 years ago
parent
commit
dce578591c
1 changed files with 49 additions and 16 deletions
  1. 49 16
      frontend/saas-web/app/view/core/form/field/DetailGridField.js

+ 49 - 16
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -37,16 +37,24 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                 dock: 'bottom',
                 items: [{
                     iconCls: 'x-fa fa-plus-circle',
-                    handler: me.addDetail
+                    handler: function() {
+                        me.addDetail();
+                    }
                 }, {
                     iconCls: 'x-fa fa-trash',
-                    handler: me.deleteDetail
+                    handler: function() {
+                        me.deleteDetail();
+                    }
                 }, {
                     iconCls: 'x-fa fa-arrow-up',
-                    handler: me.swapUp
+                    handler: function() {
+                        me.swapUp();
+                    }
                 }, {
                     iconCls: 'x-fa fa-arrow-down',
-                    handler: me.swapDown
+                    handler: function() {
+                        me.swapDown();
+                    }
                 }]
             }]
         });
@@ -78,31 +86,56 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     },
 
     addDetail: function() {
-        var grid = this.up('grid'),
-            store = grid.getStore(),
-            selectedRecord = grid.selModel.lastSelected;
+        var me = this,
+            store = me.getStore(),
+            selectedRecord = me.selModel.lastSelected;
 
         store.insert(store.indexOf(selectedRecord) + 1, {});
     },
 
     deleteDetail: function() {
-        var grid = this.up('grid'),
-            store = grid.getStore(),
-            selectedRecord = grid.selModel.lastSelected;
+        var me = this,
+            store = me.getStore(),
+            selectedRecord = me.selModel.lastSelected;
 
         store.remove(selectedRecord);
     },
 
     swapUp: function() {
-        var grid = this.up('grid'),
-            store = grid.getStore(),
-            record = grid.selModel.lastSelected,
-            selectedIdx = store.indexOf(record),
-            to = store.getAt(selectedIdx - 1);
-
+        var me = this,
+            store = me.getStore(),
+            record = me.selModel.lastSelected,
+            selectedIdx = store.indexOf(record);
+            
+            me.swap(record, selectedIdx, -1);
     },
 
     swapDown: function() {
+        var me = this,
+        store = me.getStore(),
+        record = me.selModel.lastSelected,
+        selectedIdx = store.indexOf(record);
+        
+        me.swap(record, selectedIdx, 1);
+    },
 
+    swap: function(from, index, dir) {
+        var me = this,
+        store = me.getStore(),
+        to = store.getAt(index + dir);
+
+        if(from && to) {
+            var keys = me.getColumns().map(function(c) { return c.dataIndex }),
+            data = from.getData(),
+            toData = to.getData();
+
+            Ext.each(keys, function(key, index) {
+                to.set(key, null);
+                from.set(key, toData[key]);
+                to.set(key, data[key]);
+            });
+            //聚焦目标行
+            me.selModel.select(to);
+        }
     }
 });