Browse Source

主从表配置逻辑

zhuth 7 years ago
parent
commit
7ca01b466e

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

@@ -2,32 +2,50 @@ Ext.define('saas.util.FormUtil', {
 
     BaseUtil: Ext.create('saas.util.BaseUtil'),
 
-    /**
-     * 请求页面组件接口模板
-     */
+    // 请求页面组件接口模板
     baseUrl: 'http://192.168.0.181:8560/api/ui/co_view/config?name={xtype}',
+    // 模板替换正则
+    urlRe: /(.*){xtype}(.*)/g,
     
     /**
      * 获得form的字段配置
      * @param form: form组件
      * @param url: url
      */
-    getFormItems: function(form) {
+    setItems: function(form) {
         var me = this,
             xtype = form.xtype,
-            reg = /(.*){xtype}(.*)/g,
-            url = me.baseUrl.replace(reg, '$1' + xtype);
+            url = me.baseUrl.replace(me.urlRe, '$1' + xtype);
         
-        this.BaseUtil.request({url})
+        this.BaseUtil.request({url, })
         .then(function(response) {
             var res = Ext.decode(response.responseText);
             if(res.success) {
-                var config = res.data;
-                form.add(config.items);
+
+                var config = res.data, items = [];
+                if(config) {
+                    items = config.items,
+                    bindFields = items.filter(function(item) {
+                        return !!item.bind;
+                    }).map(function(item) {
+                        return item.bind.replace(/[{ | }]/g, '');
+                    }),
+                    viewModel = form.getViewModel();
+    
+                    form.bindFields = bindFields;
+                    form.add(items);
+                }
+
+                form.fireEvent('afterSetItems', form, items);
             }
         })
         .catch(function(response) {
-            console.log(response);
+            console.error(response);
         });
+
+    },
+
+    loadData: function(form) {
+
     }
 });

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

@@ -46,6 +46,15 @@ Ext.define('saas.view.core.form.FormPanel', {
 
     items: [],
 
-    remoteConfig: true // 是否需要从远端读取form配置
+    remoteConfig: true, // 是否需要从远端读取form配置
+    bindFields: [], // 已绑定字段(需要保存到数据库)
+
+    initComponent: function() {
+        var me = this,
+        remoteConfig = me.remoteConfig;
+        
+        remoteConfig && me.FormUtil.setItems(me);
+        me.callParent(arguments);
+    }
     
 });

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

@@ -4,14 +4,6 @@ Ext.define('saas.view.core.form.FormPanelController', {
 
     FormUtil: Ext.create('saas.util.FormUtil'),
 
-    init: function() {
-        var me = this,
-        form = me.getView(),
-        remoteConfig = form.remoteConfig;
-        
-        remoteConfig && me.FormUtil.getFormItems(form);
-    },
-
     add: Ext.emptyFn,
     save: Ext.emptyFn,
     audit: Ext.emptyFn,

+ 20 - 1
frontend/saas-web/app/view/core/grid/GridPanelController.js

@@ -4,7 +4,8 @@ Ext.define('saas.view.core.grid.GridPanelController', {
 
     control: {
         'grid': {
-            afterSetColumns: '_initLoadData'
+            afterSetColumns: '_initLoadData',
+            // itemClick: '_openDetail',
         }
     },
 
@@ -15,5 +16,23 @@ Ext.define('saas.view.core.grid.GridPanelController', {
             dataUrl = grid.dataUrl;
         
         dataUrl && GridUtil.loadData(grid, dataUrl);
+    },
+
+    _openDetail: function(record) {
+        // console.log('grid1: click.....');
+        // var id = record.get('id');
+        // var mainTab = Ext.getCmp('main-tab-panel');
+        // var title = '采购单明细',
+        // existingItem = mainTab.down('[id=' + id + ']');
+
+        // lastView = mainTab.getActiveTab();
+
+        // if (!existingItem) {
+        //     var form = Ext.create('saas.view.purchase.panel.FormPanel', {
+        //         id,
+        //         title
+        //     });
+        //     mainTab.setActiveTab(mainTab.add(form));
+        // }
     }
 });

+ 1 - 2
frontend/saas-web/app/view/purchase/list/ListController.js

@@ -16,8 +16,7 @@ Ext.define('saas.view.purchase.list.ListController', {
                 if (!existingItem) {
                     var form = Ext.create('saas.view.purchase.panel.FormPanel', {
                         id,
-                        title,
-                        viewModel: Ext.create('Ext.app.ViewModel')
+                        title
                     });
                     mainTab.setActiveTab(mainTab.add(form));
                 }

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

@@ -2,7 +2,6 @@ Ext.define('saas.view.purchase.panel.FormPanel', {
     extend: 'saas.view.core.form.FormPanel',
     xtype: 'purchase-panel-FormPanel',
     controller: 'purchase-panel-FormPanelController',
-    viewModel: Ext.create('Ext.app.ViewModel'),
 
     frame: true,
     resizable: true,

+ 0 - 2
frontend/saas-web/app/view/test/myform/FormPanel.js

@@ -7,6 +7,4 @@ Ext.define('saas.view.test.myform.FormPanel',{
     viewModel: {
         type: 'test-myform-formpanel'
     },
-
-    configUrl: 'http://192.168.0.181:8560/api/ui/co_view/config?name=purchase.list',
 });

+ 19 - 1
frontend/saas-web/app/view/test/myform/FormPanelController.js

@@ -1,5 +1,23 @@
 Ext.define('saas.view.test.myform.FormPanelController', {
     extend: 'saas.view.core.form.FormPanelController',
-    alias: 'controller.test-myform-formpanel'
+    alias: 'controller.test-myform-formpanel',
 
+    control: {
+        'form': {
+            afterSetItems: function(form) {
+                // debugger;
+                // viewModel.notify();
+                // formPanel.getForm().getFields().each(function(field) {
+                //     field.resetOriginalValue();
+                // });
+            }
+        }
+    },
+
+    save: function() {
+        var me = this,
+        form = me.getView(),
+        viewModel = me.getViewModel();
+            
+    }
 });

+ 1 - 0
frontend/saas-web/app/view/test/myform/FormPanelModel.js

@@ -3,6 +3,7 @@ Ext.define('saas.view.test.myform.FormPanelModel', {
     alias: 'viewmodel.test-myform-formpanel',
     
     data: {
+        company: '深圳市优软科技有限公司',
         name: 'saas'
     }