Browse Source

主从表初始化逻辑

zhuth 7 years ago
parent
commit
87a5792818

+ 29 - 7
frontend/saas-web/app/util/FormUtil.js

@@ -13,9 +13,10 @@ Ext.define('saas.util.FormUtil', {
      * @param url: url
      */
     setItems: function(form) {
+        console.log(form);
         var me = this,
         viewName = form.viewName,
-        defaultItems = form.defaultItems,
+        defaultItems = form.defaultItems.map(function(a) {return a;}),
         formModel = form.getViewModel(),
         url = me.baseUrl.replace(me.urlRe, '$1' + viewName);
         
@@ -33,8 +34,29 @@ Ext.define('saas.util.FormUtil', {
                         Ext.apply(item, cusItem);
                     });
                     Ext.Array.each(items, function(item) {
+                        var bind = item.bind,
+                        bindName = bind,
+                        defaultValue = item.defaultValue;
+                        
+                        if(bindName && !Ext.isString(bindName)) {
+                            bindName = bindName.value;
+                        }
+                        if(bindName) {
+                            bindName = bindName.replace(/[{|}]/g, '');
+                        }
+
+                        // 设置初始值
+                        if(defaultValue) {
+                            formModel.set(bindName, defaultValue);
+                        }
+
+                        // 设置必填
+                        if(1==1) {
+                            item.fieldLabel += '*';
+                        }
+
+                        // 如果是从表为其绑定store
                         if(item.xtype == 'detailGridField') {
-                            var storeName = item.name || item.xtype + Ext.id();
                             item.bind = {
                                 store: '{_detailStore}'
                             };           
@@ -76,15 +98,15 @@ Ext.define('saas.util.FormUtil', {
         var me = this;
         
         if(form.initId && form.initId!=0) {
-            var url = form._dataModelUrl + form.initId,async=false;
+            var url = form._readUrl + form.initId,async=false;
             me.BaseUtil.request({url,async })
             .then(function(response) {
                 var res = Ext.decode(response.responseText);
                 if(res.success) {
-                    var viewModel = form.getViewModel();
-                    viewModel.setData(res.data.main);
-                    var detailStore = viewModel.get('_detailStore');
-                    detailStore.loadData(res.data.items);
+                    form.setFormData({
+                        main: res.data.main,
+                        detail: res.data.items
+                    });
                 }
             })
             .catch(function(response) {

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

@@ -36,6 +36,7 @@ Ext.define('saas.view.core.form.FormPanel', {
     initComponent: function() {
 
         var me = this;
+        me.initViewModel();
         me.FormUtil.setItems(me);
 
         Ext.apply(me, {
@@ -63,14 +64,46 @@ Ext.define('saas.view.core.form.FormPanel', {
                     handler: 'delete'
                 }, {
                     xtype: 'button',
-                    text: '审核',
-                    handler: "audit"
+                    bind: {
+                        text: '{auditBtnText}'
+                    },
+                    handler: "auditBtnClick",
+                    
                 }]))
             }]
         });
         me.callParent(arguments);
     },
 
+    /**
+     * 一些初始化viewModel的方法
+     */
+    initViewModel: function() {
+        var me = this,
+        statusField = me._statusField,
+        statusCodeField = me._statusCodeField,
+        viewModel = me.getViewModel();
+        
+        viewModel.set('createTime', '');
+        viewModel.set('updateTime', '');
+        statusCodeField && viewModel.set(statusCodeField, "UNAUDITED");
+
+        var o = {};
+        o[statusField] = {
+            bind: '{' + statusCodeField + '}',
+            get: function(value) {
+                return value == 'AUDITED' ? '已审核' : '未审核'
+            }
+        };
+        o['auditBtnText'] = {
+            bind: '{' + statusCodeField + '}',
+            get: function(value) {
+                return value == 'AUDITED' ? '反审核' : '审核'
+            }
+        };
+        viewModel.setFormulas(o);
+    },
+
     addItems: function(items) {
         var me = this;
         me.setBindFields(items);
@@ -80,7 +113,7 @@ Ext.define('saas.view.core.form.FormPanel', {
     /**
      * 获取form数据
      */
-    getFormData: function() {
+    getFormData: function(ignore) {
         var me = this,
         viewModel = me.getViewModel(),
         allData = viewModel.getData(),
@@ -93,9 +126,14 @@ Ext.define('saas.view.core.form.FormPanel', {
         for(k in allData) {
             var d = allData[k];
             // 主表数据
-            if(bindFields.indexOf(k) != -1) {
+            if(ignore) {
                 formData.main[k] = d;
+            }else {
+                if(bindFields.indexOf(k) != -1) {
+                    formData.main[k] = d;
+                }
             }
+
             // 从表数据
             if(k == '_detailStore') {
                 storeData = d.getData().items;
@@ -106,6 +144,17 @@ Ext.define('saas.view.core.form.FormPanel', {
         return formData;
     },
 
+    setFormData: function(formData) {
+        var me = this,
+        main = formData.main,
+        detail = formData.detail,
+        viewModel = me.getViewModel(),
+        detailStore = viewModel.get('_detailStore');
+
+        viewModel.setData(main);
+        detailStore.loadData(detail);
+    },
+
     /**
      * 设置需要绑定的字段
      */

+ 14 - 0
frontend/saas-web/app/view/core/form/FormPanelController.js

@@ -5,6 +5,16 @@ Ext.define('saas.view.core.form.FormPanelController', {
     BaseUtil: Ext.create('saas.util.BaseUtil'),
     FormUtil: Ext.create('saas.util.FormUtil'),
 
+    auditBtnClick: function() {
+        var me = this,
+        form = me.getView(),
+        statusField = form._statusField,
+        viewModel = me.getViewModel(),
+        status = viewModel.get(statusField);
+
+        status == 'AUDIT' ? me.unAudit() : me.audit();
+    },
+
     add: function(btn){
         var form = btn.ownerCt.ownerCt;
         var mainTab = Ext.getCmp('main-tab-panel');
@@ -155,4 +165,8 @@ Ext.define('saas.view.core.form.FormPanelController', {
             }
         });
     },
+    unAudit: function() {
+        console.log('反审核');
+        return;
+    }
 });

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

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

+ 1 - 0
frontend/saas-web/app/view/test/order/FormModel.js

@@ -2,4 +2,5 @@ Ext.define('saas.view.test.order.FormModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.test-order-formmodel',
 
+    
 });

+ 3 - 3
frontend/saas-web/app/view/test/order/FormPanel.js

@@ -39,7 +39,7 @@ Ext.define('saas.view.test.order.FormPanel', {
         xtype : "textfield", 
         name : "pu_code", 
         bind : "{pu_code}", 
-        fieldLabel : "采购单号", 
+        fieldLabel : "采购单号",
         allowBlank : true, 
         columnWidth : 0.25
     }, {
@@ -212,8 +212,8 @@ Ext.define('saas.view.test.order.FormPanel', {
         xtype : "textfield", 
         readOnly : true, 
         editable : false, 
-        name : "puStatus", 
-        bind : "{puStatus}", 
+        name : "pu_status", 
+        bind : "{pu_status}", 
         fieldLabel : "单据状态", 
         allowBlank : true, 
         columnWidth : 0.25