Browse Source

单据复制

zhuth 7 years ago
parent
commit
bf3efc960e

+ 15 - 4
frontend/saas-web/app/util/FormUtil.js

@@ -227,9 +227,9 @@ Ext.define('saas.util.FormUtil', {
                         var o = {};
                         o[form._codeField] = code;
 
-                        var formData = form.initData || {main: {}};
+                        var formData = {main: {}};
                         Ext.apply(formData.main, o);
-                        form.initData || Ext.Array.each(detailGrids, function(grid, index) {
+                        Ext.Array.each(detailGrids, function(grid, index) {
                             var detno = 0;
                             var detnoColumn = grid.detnoColumn;
                             var datas = [];
@@ -243,10 +243,21 @@ Ext.define('saas.util.FormUtil', {
                             formData['detail' + index] = datas;
                         });
 
-                        form.initFormData(formData);
+                        return formData;
+                    }else {
+                        throw new Error('请求单据编号错误');
                     }
                 }
-            }).catch(function() {
+            }).then(function(formData) {
+                var initData = form.initData;
+                if(initData) {
+                    Ext.apply(initData.main, formData.main);
+                    form.setFormData(initData);
+                }else {
+                    form.initFormData(formData);
+                }
+            }).catch(function(res) {
+                showToast(res.message);
                 form.setLoading(false);
             })
         }

+ 41 - 8
frontend/saas-web/app/view/core/form/FormPanel.js

@@ -287,27 +287,41 @@ Ext.define('saas.view.core.form.FormPanel', {
 
         viewModel.setData(main);
 
+        viewModel.notify();
+
+        var detailGrids = me.query('detailGridField');
+
         for (var i = 0; i < detailCount; i++) {
             var detailData = formData['detail' + i] || [],
                 detail = viewData['detail' + i],
+                grid = detailGrids[i],
+                detnoColumn = grid.detnoColumn,
                 store = detail.detailStore;
 
-            if (detailData) {
-                store.removeAll();
-                store.add(detailData);
+            if (detailData.length > 0) {
+
+                for(var j = 0; j < detailData.length; j++) {
+                    var d = detailData[j];
+                    var o = {};
+                    o[detnoColumn] = j + 1;
+                    var r = store.getAt(j) || store.add(o)[0];
+                    for(var k in d) {
+                        r.set(k, d[k]);
+                    }
+                }
+
+            }else {
+                // store.
             }
         }
-
+        
         me.isValid();
     },
 
     initFormData: function(data) {
         var me = this;
         me.setFormData(data);
-        var fields = me.getForm().getFields().items;
-        Ext.Array.each(fields, function(f) {
-            f.resetOriginalValue ? f.resetOriginalValue() : '';
-        });
+        me.clearDirty();
     },
 
     /**
@@ -360,6 +374,21 @@ Ext.define('saas.view.core.form.FormPanel', {
         });
         viewModel.set('base.bindFields', bindFields);
     },
+
+    clearDirty: function() {
+        var me = this;
+        var detailGrids = me.query('detailGridField');
+        var fields = me.getForm().getFields().items;
+        
+        Ext.Array.each(fields, function(f) {
+            f.resetOriginalValue ? f.resetOriginalValue() : '';
+        });
+        Ext.Array.each(detailGrids, function(g) {
+            g.clearDirty();
+        });
+        console.log(me.getForm().getFields().items[1].dirty);
+    },
+
     setEditable: function(able) {
         var me = this,
         viewModel = me.getViewModel(),
@@ -399,4 +428,8 @@ Ext.define('saas.view.core.form.FormPanel', {
 
         return dirty;
     },
+
+    getDirtyData: function() {
+        return this.getForm().getDirtyData();
+    }
 });

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

@@ -57,9 +57,11 @@ Ext.define('saas.view.core.form.FormPanelController', {
                 var d = detail[x];
 
                 for(var k in d) {
+                    // 从表id清空
+                    delete d['id'];
                     // 从表日期清空
-                    if(isDateString(main[k])) {
-                        main[k] = '';
+                    if(isDateString(d[k])) {
+                        d[k] = '';
                     }
                 }
             }

+ 15 - 3
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -192,7 +192,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         store.insert(store.indexOf(selectedRecord) + 1, datas);
     },
 
-    addDetail: function(v) {
+    addDetail: function(v, d) {
         var me = this;
         var me = this;
         if(!me.editable) {
@@ -217,10 +217,11 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                 }
             });
         }
-        var data = {};
+        var data = d || {};
         data[detnoColumn] = detno + 1;
-        store.insert(store.indexOf(selectedRecord) + 1, data);
+        var r = store.insert(store.indexOf(selectedRecord) + 1, data);
         me.fireEvent('validChange');
+        return r;
     },
 
     deleteDetail: function(v) {
@@ -320,6 +321,17 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         }
         me.fireEvent('validChange');
     },
+
+    clearDirty: function() {
+        var me = this,
+        store = me.store,
+        count = store.getCount();
+
+        for(var x = 0; x < count; x++) {
+            store.getAt(x).commit();
+        }
+    },
+
     setGridDisabled: function(able) {
         var me = this,
         columns = me.columns;

+ 1 - 1
frontend/saas-web/app/view/core/query/QueryGridPanel.js

@@ -64,7 +64,7 @@ Ext.define('saas.view.core.query.QueryGridPanel', {
                                 }
                             }else {
                                 console.error('exception: ', response.responseJson);
-                                showToast('请求错误:' + response.responseJson);
+                                showToast('请求错误:' + response.responseJson.message);
                             }
                         }
                     }

+ 4 - 0
frontend/saas-web/app/view/document/bom/FormPanel.js

@@ -123,6 +123,10 @@ Ext.define('saas.view.document.bom.FormPanel', {
                 text : "物料ID", 
                 hidden : true, 
                 dataIndex : "bd_sonid", 
+            },{
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
             }, {
                 text : "物料名称", 
                 dataIndex : "pr_detail",

+ 4 - 0
frontend/saas-web/app/view/purchase/purchase/FormPanel.js

@@ -141,6 +141,10 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                 renderer: function (v, m, r) {
                     return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:v;
                 }
+            },{
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
             },
             {
                 text : "规格", 

+ 4 - 0
frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js

@@ -145,6 +145,10 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                     valueField : "value", 
                     xtype : "multidbfindtrigger"
                 }
+            },{
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
             },
             {
                 text : "名称", 

+ 4 - 0
frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js

@@ -137,6 +137,10 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                     valueField : "value", 
                     xtype : "multidbfindtrigger"
                 }
+            },{
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
             },
             {
                 text : "名称", 

+ 4 - 0
frontend/saas-web/app/view/sale/sale/FormPanel.js

@@ -96,6 +96,10 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                     valueField : "value", 
                     xtype : "multidbfindtrigger"
                 }
+            },{
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
             }, {
                 text : "名称", 
                 dataIndex : "pr_detail",

+ 4 - 0
frontend/saas-web/app/view/sale/saleIn/FormPanel.js

@@ -88,6 +88,10 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                     valueField : "value", 
                     xtype : "multidbfindtrigger"
                 }
+            },{
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
             }, {
                 text : "名称", 
                 dataIndex : "pr_detail",

+ 4 - 0
frontend/saas-web/app/view/sale/saleOut/FormPanel.js

@@ -98,6 +98,10 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
                     valueField : "value", 
                     xtype : "multidbfindtrigger"
                 }
+            },{
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
             }, {
                 text : "名称", 
                 dataIndex : "pr_detail",

+ 4 - 0
frontend/saas-web/app/view/stock/appropriationInOut/FormPanel.js

@@ -142,6 +142,10 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanel', {
                     valueField : "value", 
                     xtype : "multidbfindtrigger"
                 }
+            },{
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
             },
             {
                 text : "名称", 

+ 4 - 0
frontend/saas-web/app/view/stock/make/FormPanel.js

@@ -152,6 +152,10 @@ Ext.define('saas.view.stock.make.FormPanel', {
                     valueField : "value", 
                     xtype : "multidbfindtrigger"
                 }
+            },{
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
             },
             {
                 text : "名称", 

+ 4 - 0
frontend/saas-web/app/view/stock/otherIn/FormPanel.js

@@ -138,6 +138,10 @@ Ext.define('saas.view.stock.otherIn.FormPanel', {
                     valueField : "value", 
                     xtype : "multidbfindtrigger"
                 }
+            },{
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
             },
             {
                 text : "名称", 

+ 4 - 0
frontend/saas-web/app/view/stock/otherOut/FormPanel.js

@@ -134,6 +134,10 @@ Ext.define('saas.view.stock.otherOut.FormPanel', {
                     valueField: "value",
                     xtype: "multidbfindtrigger"
                 }
+            },{
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
             },
             {
                 text: "名称",

+ 10 - 0
frontend/saas-web/overrides/form/Basic.js

@@ -0,0 +1,10 @@
+Ext.define('saas.override.form.Basic', {
+    override: 'Ext.form.Basic',
+
+    getDirtyData: function () {
+        return this.getFields().items.filter(function(f) {
+            return f.isDirty();
+        });
+    }
+
+});