Browse Source

从表忽略字段定义

zhuth 7 years ago
parent
commit
9d73717f02

+ 10 - 1
frontend/saas-web/app/util/FormUtil.js

@@ -60,9 +60,16 @@ Ext.define('saas.util.FormUtil', {
 
                         // 如果是从表为其绑定store
                         if(item.xtype == 'detailGridField') {
+                            var columns = item.columns,
+                            cnames = columns.filter(function(c) {
+                                return c.dataIndex && !c.ignore;
+                            }).map(function(c) {
+                                return c.dataIndex
+                            });
+                            formModel.set('_detailBindFields', cnames);
                             item.bind = {
                                 store: '{_detailStore}'
-                            };           
+                            };       
                             formModel.set('_detailStore', Ext.create('Ext.data.Store', {
                                 fields: item.columns ? item.columns.filter(function(c) {
                                     return !!c.dataIndex;
@@ -77,6 +84,8 @@ Ext.define('saas.util.FormUtil', {
                                 }) : [],
                                 data: []
                             }));
+
+
                         }
                     });
                 }

+ 5 - 4
frontend/saas-web/app/view/core/form/FormPanel.js

@@ -113,12 +113,13 @@ Ext.define('saas.view.core.form.FormPanel', {
 
     /**
      * 获取form数据
+     * @param all: true:取全部数据,false:排除忽视字段
      */
-    getFormData: function(ignore) {
+    getFormData: function(all) {
         var me = this,
         viewModel = me.getViewModel(),
         allData = viewModel.getData(),
-        bindFields = allData.bindFields,
+        bindFields = allData._bindFields,
         formData = {
             main: {},
             detail: []
@@ -127,7 +128,7 @@ Ext.define('saas.view.core.form.FormPanel', {
         for(k in allData) {
             var d = allData[k];
             // 主表数据
-            if(ignore) {
+            if(all) {
                 formData.main[k] = d;
             }else {
                 if(bindFields.indexOf(k) != -1) {
@@ -179,7 +180,7 @@ Ext.define('saas.view.core.form.FormPanel', {
                 }
             }
         });
-        viewModel.set('bindFields', bindFields);
+        viewModel.set('_bindFields', bindFields);
     },
 
     initFormData: function(formData) {

+ 17 - 7
frontend/saas-web/app/view/core/form/FormPanelController.js

@@ -60,8 +60,12 @@ Ext.define('saas.view.core.form.FormPanelController', {
     },
 
     save:function(){
-        var me = this;
-        var form = this.getView();
+        var me = this,
+        form = this.getView(),
+        viewModel = me.getViewModel(),
+        modelData = viewModel.getData(),
+        detailBindFields = modelData._detailBindFields;
+
         if(form.getForm().wasDirty==false){
             Ext.Msg.alert('提示','未修改数据,请修改后保存');
             return false;
@@ -76,15 +80,21 @@ Ext.define('saas.view.core.form.FormPanelController', {
         var dirtyGridData = [];
         if(gridData.length>0){
             Ext.each(gridData, function(item,index){
-                if(item.dirty){
-                    if((typeof item.data.id) != "number" && item.data.id.indexOf('extMode')>-1){
-                        item.data.id = '';
+                var d = Object.assign({}, item.data),
+                dirty = item.dirty;
+                if(dirty){
+                    if((typeof d.id) != "number" && d.id.indexOf('extMode')>-1){
+                        delete d.id;
                     }
-                    dirtyGridData.push(item.data)
+                    for(k in d) {
+                        if(!Ext.Array.contains(detailBindFields, k)) {
+                            delete d[k];
+                        }
+                    }
+                    dirtyGridData.push(d);
                 }
             });
         }  
-        debugger 
         var params = {
             main:formData.main,
             items:dirtyGridData

+ 2 - 1
frontend/saas-web/app/view/core/form/FormPanelModel.js

@@ -3,7 +3,8 @@ Ext.define('saas.view.core.form.FormPanelModel', {
     alias: 'viewmodel.core-form-formpanel',
 
     data: {
-        bindFields: [], // 请求绑定字段,绑定到formfield并且未设置ignore为true
+        _bindFields: [], // 主表绑定字段,绑定到formfield并且未设置ignore为true
+        _detailBindeFields: [], // 从表绑定列
         _detailStore: null, // 从表store
     },
 });