Browse Source

主从表序号列调整

zhuth 7 years ago
parent
commit
2fa88167a1
1 changed files with 56 additions and 49 deletions
  1. 56 49
      frontend/saas-web/app/view/core/form/field/DetailGridField.js

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

@@ -31,47 +31,40 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         me.initColumns();
         me.setSummary();
         Ext.apply(me, {
-            dockedItems: [{
-                xtype: 'toolbar',
-                dock: 'bottom',
-                items: [{
-                    iconCls: 'x-fa fa-plus-circle',
-                    handler: function() {
-                        me.addDetail();
-                    }
-                }, {
-                    iconCls: 'x-fa fa-trash',
-                    handler: function() {
-                        me.deleteDetail();
-                    }
-                }, {
-                    iconCls: 'x-fa fa-arrow-up',
-                    handler: function() {
-                        me.swapUp();
-                    }
-                }, {
-                    iconCls: 'x-fa fa-arrow-down',
-                    handler: function() {
-                        me.swapDown();
+            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');
+                    var currentLockedItem = lockedItems[index];
+                    var textItem = currentLockedItem.getElementsByClassName('text')[0];
+                    var iconsItem = currentLockedItem.getElementsByClassName('icons')[0];
+
+                    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');
+                    var currentLockedItem = lockedItems[index];
+                    var textItem = currentLockedItem.getElementsByClassName('text')[0];
+                    var iconsItem = currentLockedItem.getElementsByClassName('icons')[0];
+
+                    textItem.style.display = 'block';
+                    iconsItem.style.display = 'none';
+                },
+                cellclick: function(grid, td, cellIndex, record, tr, rowIndex, e, eOpts) {
+                    var target = e.target;
+                    var detno = record.get(me.detnoColumn);
+
+                    if(target.classList.contains('fa-minus')) {
+                        me.deleteDetail(detno);
+                    }else if(target.classList.contains('fa-plus')) {
+                        me.addDetail(detno);
                     }
-                }]
-            }]
+                }
+            }
         });
         me.callParent(arguments);
     },
 
-    listeners: {
-        itemClick: function(tableView, record, item, index, e, eOpts) {
-            var grid = tableView.up('grid'),
-                store = grid.store,
-                count = store.getCount();
-
-            if(index == count - 1) {
-                grid.add10EmptyRow();
-            }
-        }
-    },
-
     initColumns: function() {
         // 构造序号列
         var me = this,
@@ -89,10 +82,17 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             summaryRenderer: function(value, summaryData, dataIndex) {
                 return Ext.String.format('合计', value);
             },
+            renderer: function(value, a, record, index) {
+                return '<div class="text">' + value + '</div>' +
+                '<div class="icons" style="height: 19px; display: none;">' + 
+                    '<div style="line-height: 19px; flex: 1; color: green; cursor: pointer; margin-right: 2px;" class="x-row-insert fa fa-plus" title="插入"></div>'+
+                    '<div style="line-height: 19px; flex: 1; color: red; cursor: pointer; margin-left: 2px;" class="x-row-delete fa fa-minus" title="删除"></div>'+
+                '</div>';
+            },
+            emptyCellText: 'null'
         };
         if (detnoField) {
-            columns.unshift(indexColumn);
-            Ext.apply(me, { columns: columns });
+            Ext.apply(me, { columns: [indexColumn].concat(columns) });
         }
     },
 
@@ -134,12 +134,15 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         store.insert(store.indexOf(selectedRecord) + 1, datas);
     },
 
-    addDetail: function() {
+    addDetail: function(v) {
         var me = this,
-            detnoColumn = me.detnoColumn,
-            store = me.getStore(),
-            selectedRecord = me.selModel.lastSelected,
-            detno = 0;
+        detnoColumn = me.detnoColumn,
+        store = me.getStore(),
+        records = store.getData().items,
+        selectedRecord = records.find(function(r) {
+            return r.get(detnoColumn) == v;
+        }),
+        detno = 0;
 
         //当前行后序号全部加1
         if(selectedRecord){
@@ -157,10 +160,14 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         store.insert(store.indexOf(selectedRecord) + 1, data);
     },
 
-    deleteDetail: function() {
+    deleteDetail: function(v) {
         var me = this,
-            store = me.getStore(),
-            selectedRecord = me.selModel.lastSelected;
+        detnoColumn = me.detnoColumn,
+        store = me.getStore(),
+        records = store.getData().items,
+        selectedRecord = records.find(function(r) {
+            return r.get(detnoColumn) == v;
+        });
 
         var id = selectedRecord.data.id;
         if(id&&id!=0&&(typeof id) == 'number'){
@@ -174,11 +181,11 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                 success: function (response, opts) {
                     store.remove(selectedRecord);
                     //解析参数
-                    Ext.Msg.alert('提示','删除成功');
+                    Ext.toast('删除成功');
                 },
                 failure: function (response, opts) {
                     //失败
-                    Ext.Msg.alert('提示','删除失败');
+                    Ext.toast('删除失败');
                 }
             });
         }else{
@@ -227,6 +234,6 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             //聚焦目标行
             me.selModel.select(to);
         }
-    },
+    }
 
 });