|
|
@@ -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);
|
|
|
}
|
|
|
- },
|
|
|
+ }
|
|
|
|
|
|
});
|