Explorar o código

主从表日期类型取值赋值format设置/从表取数逻辑优化

zhuth %!s(int64=7) %!d(string=hai) anos
pai
achega
a30776b40e

+ 23 - 5
frontend/saas-web/app/util/FormUtil.js

@@ -35,6 +35,11 @@ Ext.define('saas.util.FormUtil', {
                         Ext.apply(item, cusItem);
                     });
                     Ext.Array.each(items, function(item) {
+
+                        if(item.xtype == 'datefield') {
+                            item.format = 'Y-m-d H:i:s'
+                        }
+
                         if(item.xtype == 'numberfield') {
                             Ext.applyIf(item, {
                                 hideTrigger: true, // 隐藏trigger
@@ -62,6 +67,7 @@ Ext.define('saas.util.FormUtil', {
 
                             Ext.Array.each(columns, function(c) {
 
+
                                 // 不可锁定
                                 Ext.applyIf(c, {
                                     lockable: false
@@ -71,13 +77,25 @@ Ext.define('saas.util.FormUtil', {
                                 if(c.logic=='necessaryField'){
                                     c.cls = 'x-grid-necessary';
                                 }
+
+                                if(c.xtype == 'datecolumn') {
+                                    Ext.apply(c.xtype, {
+                                        format: 'Y-m-d H:i:s'
+                                    });
+                                }
                                 
                                 var editor = c.editor;
-                                if(editor && editor.xtype == 'numberfield') {
-                                    Ext.applyIf(editor, {
-                                        hideTrigger: true, // 隐藏trigger
-                                        mouseWheelEnabled: false // 取消滚轮事件
-                                    });
+                                if(editor) {
+                                    if(editor.xtype == 'numberfield') {
+                                        Ext.applyIf(editor, {
+                                            hideTrigger: true, // 隐藏trigger
+                                            mouseWheelEnabled: false // 取消滚轮事件
+                                        });
+                                    }else if(editor.xtype == 'datefield') {
+                                        Ext.apply(editor, {
+                                            format: 'Y-m-d H:i:s'
+                                        });
+                                    }
                                 }
                             });
 

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

@@ -169,10 +169,15 @@ Ext.define('saas.view.core.form.FormPanel', {
             allData = viewModel.getData(),
             bindFields = allData.base.bindFields,
             detailCount = me.detailCount,
-            formData = {};
+            formData = {},
+            detailGrids = me.query('detailGridField');
 
         Ext.Array.each(bindFields, function(field) {
-            formData[field] = allData[field];
+            var v = allData[field];
+            if(Ext.isDate(v)) {
+                v = Ext.Date.format(v, 'Y-m-d H:i:s');
+            }
+            formData[field] = v;
         });
 
         var data = {
@@ -180,10 +185,21 @@ Ext.define('saas.view.core.form.FormPanel', {
         };
 
         for (var i = 0; i < detailCount; i++) {
-            var detail = allData['detail' + i],
-                store = detail.detailStore;
+            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];
+                    }
+                }
+            });
+            
 
-            data['detail' + i] = store.getData().items;
+            data['detail' + i] = gridDirtyData;
         }
 
         return data;

+ 2 - 44
frontend/saas-web/app/view/core/form/FormPanelController.js

@@ -77,28 +77,7 @@ Ext.define('saas.view.core.form.FormPanelController', {
         };
 
         for(var i = 0; i < detailCount; i++) {
-            var detailData = formData['detail' + i];
-            var modelDetail = modelData['detail' + i];
-            var dirtyGridData = [];
-            var detailBindFields = modelDetail.detailBindFields;
-
-            Ext.Array.each(detailData, function(item){
-                var d = Object.assign({}, item.data),
-                dirty = item.dirty;
-
-                if(dirty){
-                    if((typeof d.id) != "number" && d.id.indexOf('-')>-1){
-                        d.id = 0;
-                    }
-                    for(k in d) {
-                        if(!Ext.Array.contains(detailBindFields, k)) {
-                            delete d[k];
-                        }
-                    }
-                    dirtyGridData.push(d);
-                }
-            });
-            params['items' + ( i + 1)] = dirtyGridData;
+            params['items' + ( i + 1)] = formData['detail' + i];
         }
 
         // 只有一个从表时从表字段改为items
@@ -147,28 +126,7 @@ Ext.define('saas.view.core.form.FormPanelController', {
         };
 
         for(var i = 0; i < detailCount; i++) {
-            var detailData = formData['detail' + i];
-            var modelDetail = modelData['detail' + i];
-            var dirtyGridData = [];
-            var detailBindFields = modelDetail.detailBindFields;
-
-            Ext.Array.each(detailData, function(item){
-                var d = Object.assign({}, item.data),
-                dirty = item.dirty;
-
-                if(dirty){
-                    if((typeof d.id) != "number" && d.id.indexOf('-')>-1){
-                        d.id = 0;
-                    }
-                    for(k in d) {
-                        if(!Ext.Array.contains(detailBindFields, k)) {
-                            delete d[k];
-                        }
-                    }
-                    dirtyGridData.push(d);
-                }
-            });
-            params['items' + ( i + 1)] = dirtyGridData;
+            params['items' + ( i + 1)] = formData['detail' + i];
         }
 
         // 只有一个从表时从表字段改为items

+ 43 - 0
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -114,6 +114,12 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                 '</div>';
             },
         };
+
+        Ext.Array.each(columns, function(c) {
+            Ext.applyIf(c, {
+                allowBlank: true
+            });
+        });
         if (detnoField) {
             Ext.apply(me, { columns: [indexColumn].concat(columns) });
         }
@@ -287,6 +293,43 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                 typeof e.setDisabled == 'function' && e.setDisabled(!able);
             }
         });
+    },
+    isValid: function() {
+        var me = this,
+        columns = me.columns;
+
+        // 判断列必填
+        Ext.Array.each(columns, function(c) {
+            var allowBlank = c.allowBlank;
+            if(!allowBlank) {
+                
+            }
+        });
+    },
+
+    getDirtyData: function() {
+        var me = this,
+        store = me.getStore(),
+        allData = store.getData().items,
+        dirtyData = [];
+
+        Ext.Array.each(allData, function(item){
+            var d = Object.assign({}, item.data),
+            dirty = item.dirty;
+
+            if(dirty){
+                if((typeof d.id) != "number" && d.id.indexOf('-')>-1){
+                    d.id = 0;
+                }
+                for(k in d) {
+                    if(Ext.isDate(d[k])) {
+                        d[k] = Ext.Date.format(d[k], 'Y-m-d H:i:s');
+                    }
+                }
+                dirtyData.push(d);
+            }
+        });
+        return dirtyData;
     }
 
 });

+ 0 - 6
frontend/saas-web/ext/build/ext-all-rtl-debug.js

@@ -206312,12 +206312,6 @@ Ext.define('Ext.form.field.Date', {
             rawDate;
         me.lastValue = me.rawDateText;
         me.lastDate = me.rawDate;
-        //解析后台日期格式为 Y-m-d
-        if(v&&(typeof v) == "string"&&v.indexOf('.')==19&&v.indexOf('T')==10){
-            var d = new Date(v);
-            var times=d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate(); //+ ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds(); 
-            v = times;
-        }
         if (Ext.isDate(v)) {
             rawDate = me.rawDate = v;
             me.rawDateText = me.formatDate(v);