Просмотр исходного кода

Merge remote-tracking branch 'origin/dev' into dev

guq 7 лет назад
Родитель
Сommit
7e5c702520

+ 4 - 0
applications/purchase/purchase-server/pom.xml

@@ -69,6 +69,10 @@
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+            </plugin>
         </plugins>
     </build>
 </project>

+ 6 - 0
applications/purchase/purchase-server/src/main/docker/Dockerfile

@@ -0,0 +1,6 @@
+FROM frolvlad/alpine-oraclejdk8:slim
+VOLUME /tmp
+ADD purchase-server-1.0.0-SNAPSHOT.jar app.jar
+RUN sh -c 'touch /app.jar'
+ENV JAVA_OPTS=""
+ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

+ 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) {
+
     }
 });

+ 0 - 1
frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js

@@ -24,7 +24,6 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
                     if(field){
                         var val = record.get(item.from);
                         if(field.xtype=='dbfindtrigger'){
-                            field.setValue(val);
                             field.setRawValue(val);
                             field.lastTriggerValue=val;
                         }else{

+ 109 - 1
frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js

@@ -6,6 +6,10 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
     valueField: 'value',
     triggerCls: 'x-form-search-trigger',
     GridUtil: Ext.create('saas.util.GridUtil'),
+    BaseUtil: Ext.create('saas.util.BaseUtil'),
+    minChars:1, // 设置用户输入字符多少时触发查询
+    tpl: '',
+    enableKeyEvents:true,
     initComponent:function() {
         var me = this;
         this.displayField='display';	   
@@ -22,6 +26,86 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
 		}
         this.callParent();
     },
+    //输入值之后进行模糊查询
+    doQuery: function(queryString, forceAll, rawQuery) {
+    	queryString = queryString || '';
+    	var me = this;
+    	if(me.lastQueryValue!=queryString){
+    		var judge=me.judge(me);
+    		var field=[];
+    		var sfield='';
+            var dbfinds=me.dbfinds;
+            var dbtpls=me.dbtpls;
+    		var name=me.name;
+    		me.lastQueryValue=queryString;
+            if(queryString.trim()==''){
+                me.collapse( );
+            }else{
+                if(!dbfinds||!dbtpls){
+                    me.collapse( );
+                }else{                   
+                    //加载tpl模板
+                    if(dbtpls.length>0){
+                        var span="";
+                        var width=0;
+                        for(var i=0;i<dbtpls.length;i++){
+                            if(i==0){
+                                span=span+'<span style="width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;">{'+dbtpls[i].field+'}</span>';//display:block;
+                            }else{
+                                span=span+'<span style="width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;margin-left:10px;">{'+dbtpls[i].field+'}</span>';
+                            }
+                            if(dbtpls[i].dbField=="true"){
+                                me.searchFieldArray=dbtpls[i].field;
+                            }
+                            width=width+dbtpls[i].width+20;
+                            field.push(dbtpls[i].field);
+                            sfield=sfield+dbtpls[i].field+',';
+                        }
+                        me.defaultListConfig.minWidth=width+10;
+                        me.defaultListConfig.maxHeight=210;
+                        me.defaultListConfig.autoScroll=true;
+                        me.searchField=sfield.substring(0,sfield.length-1);
+                        me.tpl=Ext.create('Ext.XTemplate',
+                                '<ul style="padding-left: 0px;"><tpl for=".">',
+                                '<li role="option" class="x-boundlist-item" style="list-style:none;">' ,
+                                '<div style="height:30px;">',
+                                ''+span+'',
+                                '</li>',
+                            '</tpl></ul>'
+                        );
+                        me.store=Ext.create('Ext.data.Store', {
+                            fields: field,
+                            data : []
+                        });
+                    }
+                }
+                //加载数据
+                var data;
+                var url = 'resources/json/purchase/vendorDataDbfind.json';
+                Ext.Ajax.request({
+                    url: url,
+                    params: '',
+                    async:false,
+                    success: function(response, opts) {
+                        data = Ext.decode(response.responseText);
+                    },
+                    failure: function(response, opts) {
+                        console.log('server-side failure with status code ' + response.status);
+                        return reject(response);
+                    }
+                });                
+                if(data!=null && data.length>2 && me.store && field.length>0){
+                    me.store.loadData(data,false);
+                    me.expand();
+                }else{
+                    me.collapse( );
+                }
+            }
+            return true;
+    	}else{
+    		return false;
+    	}
+    },
     onTriggerClick:function(f){
         //判断dbfindtrigger归属
         f.judge(f);
@@ -50,7 +134,31 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
 
     judge:function(f){
         if(f.ownerCt.xtype.indexOf('FormPanel')>-1){
-            f.belong = 'form'
+            f.belong = 'form';
+            return 'form'
+        }
+    },
+
+    listeners: {
+		select:function(combo,record,eOpts){
+            var me = combo;
+            var dbfinds = me.dbfinds;
+            if(dbfinds&&dbfinds.length>0){
+                for (let index = 0; index < dbfinds.length; index++) {
+                    var item = dbfinds[index];
+                    var field = me.ownerCt.down('[name='+item.to+']');
+                    if(field){
+                        var val = record.get(item.from);
+                        if(field.xtype=='dbfindtrigger'){
+                            field.setRawValue(val);
+                            field.value = val;
+                            field.lastTriggerValue=val;
+                        }else{
+                            field.setValue(val);
+                        }    
+                    }
+                }
+            }
         }
     }
 

+ 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,

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

@@ -8,6 +8,20 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     margin: '0 5 5 0', // formpanel的fieldDefaults未生效
     height: 300,
 
+    requires: [
+        'Ext.selection.CellModel'
+    ],
+
+    selModel: {
+        type: 'cellmodel'
+    },
+    plugins: {
+        cellediting: {
+            clicksToEdit: 1
+        }
+    },
+
+
     store: {
         data: []
     },
@@ -36,13 +50,14 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                 }]
             }]
         });
-        me.configUrl && me.GridUtil.setColumns(me, me.configUrl);
         me.callParent(arguments);
     },
 
     listeners: {
-        afterSetColumns: function(grid) {
-            grid.add10EmptyRow();
+        afterrender: function(grid) {
+            if(grid.store.count()==0){
+                grid.add10EmptyRow();
+            }
         },
         itemClick: function(tableView, record, item, index, e, eOpts) {
             var grid = tableView.up('grid'),

+ 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,

+ 6 - 1
frontend/saas-web/app/view/purchase/panel/FormPanelController.js

@@ -3,7 +3,7 @@ Ext.define('saas.view.purchase.panel.FormPanelController', {
     alias: 'controller.purchase-panel-FormPanelController',
 
     control: {
-        //放大镜赋值关系
+        //放大镜赋值关系 以及 tpl模板
         'dbfindtrigger[name=pu_vendorcode]':{
             beforerender:function(f){
                 Ext.apply(f,{
@@ -11,6 +11,11 @@ Ext.define('saas.view.purchase.panel.FormPanelController', {
                         from:'pu_vendorcode',to:'pu_vendorcode'
                     },{
                         from:'pu_vendorname',to:'pu_vendorname'
+                    }],
+                    dbtpls:[{
+                        field:'pu_vendorcode',width:100
+                    },{
+                        field:'pu_vendorname',width:120
                     }]
                 }) ;   
 

+ 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'
     }
 

+ 6 - 1
frontend/saas-web/app/view/test/order/FormController.js

@@ -11,7 +11,7 @@ Ext.define('saas.view.test.order.FormController', {
 
                 }
             },
-            //放大镜赋值关系
+            //放大镜赋值关系 以及 tpl模板
             'dbfindtrigger[name=pu_vendorcode]':{
                 beforerender:function(f){
                     Ext.apply(f,{
@@ -19,6 +19,11 @@ Ext.define('saas.view.test.order.FormController', {
                             from:'pu_vendorcode',to:'pu_vendorcode'
                         },{
                             from:'pu_vendorname',to:'pu_vendorname'
+                        }],
+                        dbtpls:[{
+                            field:'pu_vendorcode',width:100
+                        },{
+                            field:'pu_vendorname',width:100
                         }]
                     }) ;   
 

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

@@ -2,14 +2,4 @@ Ext.define('saas.view.test.order.FormModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.test-order-formmodel',
 
-    data: {
-        num1:2,
-        id: 'TC-1032301'
-    },
-
-    formulas: {
-        sum: function(get) {
-            return get('num1') + get('num2');
-        }
-    }
 });

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

@@ -5,6 +5,4 @@ Ext.define('saas.view.test.order.FormPanel', {
     controller: 'test-order-formcontroller',
     viewModel: 'test-order-formmodel',
 
-    configUrl: 'resources/json/formItems.json',
-
 });