|
|
@@ -443,7 +443,45 @@ Ext.define('saas.view.core.form.FormPanel', {
|
|
|
},
|
|
|
|
|
|
getDirtyData: function() {
|
|
|
- return this.getForm().getDirtyData();
|
|
|
+ var me = this,
|
|
|
+ viewModel = me.getViewModel(),
|
|
|
+ allData = viewModel.getData(),
|
|
|
+ bindFields = allData.base.bindFields,
|
|
|
+ detailCount = me.detailCount,
|
|
|
+ formData = {},
|
|
|
+ detailGrids = me.query('detailGridField');
|
|
|
+
|
|
|
+ Ext.Array.each(bindFields, function(field) {
|
|
|
+ var v = allData[field];
|
|
|
+ if(Ext.isDate(v)) {
|
|
|
+ v = Ext.Date.format(v, 'Y-m-d H:i:s');
|
|
|
+ }
|
|
|
+ formData[field] = v;
|
|
|
+ });
|
|
|
+
|
|
|
+ var dirtyData = {
|
|
|
+ main: formData,
|
|
|
+ };
|
|
|
+
|
|
|
+ for (var i = 0; i < detailCount; i++) {
|
|
|
+ var g = detailGrids[i];
|
|
|
+ var gridDirtyData = g.getDirtyData();
|
|
|
+ var modelDetail = allData['detail' + i];
|
|
|
+ var detailBindFields = modelDetail.detailBindFields;
|
|
|
+
|
|
|
+ Ext.Array.each(gridDirtyData, function(d) {
|
|
|
+ for(k in d) {
|
|
|
+ if(!Ext.Array.contains(detailBindFields, k)) {
|
|
|
+ delete d[k];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ dirtyData['detail' + i] = gridDirtyData;
|
|
|
+ }
|
|
|
+
|
|
|
+ return dirtyData;
|
|
|
},
|
|
|
|
|
|
beforeSave: function() {
|