Browse Source

提交代码

hy 7 years ago
parent
commit
94a19a77fe

+ 28 - 4
frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js

@@ -1,19 +1,43 @@
 Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
     extend: 'saas.view.core.grid.GridPanel',
     xtype: 'dbfindgridpanel',
-
     GridUtil: Ext.create('saas.util.GridUtil'),
-
-    configUrl: '',
+    BaseUtil: Ext.create('saas.util.BaseUtil'),
     dataUrl: '',
 
     initComponent: function() {
         var me = this;
-        me.configUrl && me.GridUtil.setColumns(me, me.configUrl);
+        if(me.columns){
+            var fields = me.columns.map(column => column.dataIndex);
+            Ext.apply(me, {
+                store:Ext.create('Ext.data.Store', {
+                    fields:fields
+                })
+            });
+        }
         me.callParent(arguments);
     },
 
+    loadData: function(grid, url) {
+        this.BaseUtil.request({url})
+        .then(function(response) {
+            var data = Ext.decode(response.responseText);
+                grid.getStore().loadData(data.data);
+                grid.fireEvent('afterLoadData', grid, data.data);
+                grid.setLoading(false);
+        })
+        .catch(function(response) {
+            // something...
+        });
+    },
+
     listeners:{
+        afterrender:function(grid){
+            if(grid.dataUrl){
+                grid.setLoading(true);
+                grid.loadData(grid, grid.dataUrl);
+            }
+        },
         itemClick: function(view,record) {
             var me = this;
             var dbfinds = me.dbfinds;

+ 96 - 39
frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js

@@ -12,18 +12,13 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
     enableKeyEvents:true,
     initComponent:function() {
         var me = this;
-        this.displayField='display';	   
-		this.valueField='value';
-        this.queryMode='local';
-		if(me.value){
-			me.store=Ext.create('Ext.data.Store', {
-				   fields: ['display','value'],
-				   data : [{
-					   'display':me.value,
-					   'value':me.value
-				   }]
-			});
-        }
+        me.store=Ext.create('Ext.data.Store', {
+            fields: ['display','value'],
+            data : [{
+                'display':me.value,
+                'value':me.value
+            }]
+        });
         this.callParent();
     },
     //输入值之后进行模糊查询
@@ -73,33 +68,29 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
                                 '</li>',
                             '</tpl></ul>'
                         );
-                        me.store=Ext.create('Ext.data.Store', {
-                            fields: field,
-                            data : []
-                        });
+                        me.store.setFields(field);
                     }
                 }
                 //加载数据
                 var data;
-                var url = 'resources/json/purchase/vendorDataDbfind.json';
                 Ext.Ajax.request({
-                    url: url,
+                    url: me.dataUrl,
                     params: '',
-                    async:false,
                     success: function(response, opts) {
                         data = Ext.decode(response.responseText);
+                        data = data.data;
+                        if(data!=null && data.length>0 && me.store && field.length>0){
+                            me.store.loadData(data,false);
+                            me.expand();
+                        }else{
+                            me.collapse( );
+                        }
                     },
                     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{
@@ -124,7 +115,7 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
             renderTo:Ext.getCmp('main-tab-panel').getActiveTab().getEl(),
             items:[{
                 xtype:'dbfindgridpanel',
-                configUrl: f.configUrl,
+                columns: f.dbColumns,
                 dataUrl: f.dataUrl,
                 dbfinds: f.dbfinds
             }]
@@ -144,22 +135,43 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
     },
 
     listeners: {
+        focus: function(f) {
+            return true;
+		},
 		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);
-                        }    
+                if(me.belong=='grid'){
+                    for (let index = 0; index < dbfinds.length; index++) {
+                        var item = dbfinds[index];
+                        debugger
+                        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);
+                            }    
+                        }
+                    }
+                }else if(me.belong=='form'){
+                    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);
+                            }    
+                        }
                     }
                 }
             }
@@ -170,6 +182,51 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
         var me = this,val = me.rawToValue(me.processRawValue(me.getRawValue()));
         me.value = val;
         return val;
-    }
+    },
+
+    autoSetValue: function(data, dbfinds) {
+		var trigger = this;
+		var triggerV = null;
+		if (!trigger.ownerCt || trigger.column) { //如果是grid的dbfind
+			var grid = trigger.owner;
+			var record = grid.lastSelectedRecord || trigger.record || grid.getSelectionModel().selected.items[0] || grid.selModel.lastSelected; //detailgrid里面selected
+			Ext.Array.each(Ext.Object.getKeys(data),
+					function(k) {
+				Ext.Array.each(dbfinds,
+						function(ds) {
+					if (ds.trigger == trigger.name || Ext.isEmpty(ds.trigger)) {
+						if (Ext.Array.contains(ds.dbGridField.split(';'), k)) { //k == ds.dbGridField//支持多dbgrid的字段对应grid同一字段
+							if (ds.field == trigger.name) {
+								triggerV = data[k]; //trigger所在位置赋值
+							}
+							record.set(ds.field, data[k]);
+						}
+					}
+				});
+			});
+		} else {
+			var ff;
+			Ext.Array.each(Ext.Object.getKeys(data),
+					function(k) {
+				Ext.Array.each(dbfinds,
+						function(ds) {
+					if (k == ds.dbGridField) {
+							if (trigger.name == ds.field||trigger.name.substring(0,trigger.name.indexOf('-new'))==ds.field) {
+								triggerV = data[k];
+							} else {
+								ff = Ext.getCmp(ds.field);
+								if (ff && ff.setValue) ff.setValue(data[k]);
+							}
+					}
+				});
+			});
+		}
+		trigger.setValue(triggerV);
+		data.data = data;
+		trigger.lastTriggerValue='';
+		trigger.fireEvent('aftertrigger', trigger, data);
+		trigger.lastTriggerId = null;
+		trigger.lastQueryValue='';
+	}
 
 });

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

@@ -31,7 +31,6 @@ Ext.define('saas.view.core.form.FormPanel', {
     items: [],
 
     remoteConfig: true, // 是否需要从远端读取form配置
-    bindFields: [], // 已绑定字段(需要保存到数据库)
     toolBtns: [], // 自定义按钮
 
     initComponent: function() {
@@ -40,7 +39,7 @@ Ext.define('saas.view.core.form.FormPanel', {
 
         //判断是否加载数据
         if(me.initId&&me.initId!=0){
-            var url = 'http://192.168.253.58:8800/purchase/form?id={id}',async=false;
+            var url = me._dataModelUrl,async=false;
             url = url.replace(/(.*){id}(.*)/g, '$1' + me.initId);
             me.BaseUtil.request({url,async })
             .then(function(response) {
@@ -49,18 +48,17 @@ Ext.define('saas.view.core.form.FormPanel', {
                     viewModel = me.getViewModel();
                     viewModel.data = res.data.main;
                     viewModel._data = res.data.main;
-                    viewModel.data.detailGridField = res.data.items;                   
-                    viewModel._data.detailGridField = res.data.items;
+                    viewModel.data.detailGridStore = res.data.items;                   
+                    viewModel._data.detailGridStore = res.data.items;
                 }
             })
             .catch(function(response) {
             });
-        }else if(me.initId==0){
-            me.getViewModel().setData({detailGridField:[{},{},{},{},{},{},{},{},{},{}]})
         }
 
         Ext.apply(me, {
             remoteConfig: me.remoteConfig,
+            items:me._baseItems,
             dockedItems: [{
                 xtype: 'toolbar',
                 dock: 'top',
@@ -68,7 +66,7 @@ Ext.define('saas.view.core.form.FormPanel', {
                     'border-bottom': '1px solid #35baf6 !important'
                 },
                 items: ['->'].concat(me.toolBtns.map(function(btn){
-                    btn.cls += ' x-formpanel-btn-blue';
+                    btn.cls = btn.cls ? btn.cls + ' x-formpanel-btn-blue':'x-formpanel-btn-blue';
                     return btn;
                 }).concat([{
                     cls:'x-formpanel-btn-orange',
@@ -91,7 +89,7 @@ Ext.define('saas.view.core.form.FormPanel', {
             }]
         });
         
-        me.remoteConfig && me.FormUtil.setItems(me);
+        //me.remoteConfig && me.FormUtil.setItems(me);
         me.callParent(arguments);
     },
 

+ 31 - 3
frontend/saas-web/app/view/core/form/FormPanelController.js

@@ -20,9 +20,37 @@ Ext.define('saas.view.core.form.FormPanelController', {
                 xtype:form.xtype
             };
             mainTab.setActiveTab(mainTab.add(form));
+        }else{
+            mainTab.setActiveTab(existingItem);
+        }
+    },
+    
+    delete: function(btn){
+        var form = btn.ownerCt.ownerCt;
+        var id = form.getForm().findField(form._idField);
+        if(id&&id.value!=0){
+            Ext.Ajax.request({
+                url: form._deleteUrl,
+                params: {
+                    id:id.value
+                },
+                method: 'POST',
+                data:{_method:"DELETE"},
+                headers: {
+                    'Access-Control-Allow-Origin': '*',
+                    "Content-Type": 'application/json;charset=UTF-8' 
+                },
+                success: function (response, opts) {
+                    //解析参数
+                    Ext.Msg.alert('提示','删除成功');
+                },
+                failure: function (response, opts) {
+                    //失败
+                    Ext.Msg.alert('提示','删除失败');
+                }
+            });
         }
     },
-    delete: Ext.emptyFn,
     save:function(btn){
         var form = btn.ownerCt.ownerCt;
         if(form.getForm().wasDirty==false){
@@ -60,7 +88,7 @@ Ext.define('saas.view.core.form.FormPanelController', {
             items:newGridData
         }
         Ext.Ajax.request({
-            url: 'http://192.168.253.58:8800/purchase/form',
+            url: form._saveUrl,
             params: JSON.stringify(params),
             method: 'POST',
             headers: {
@@ -110,7 +138,7 @@ Ext.define('saas.view.core.form.FormPanelController', {
             items:newGridData
         }
         Ext.Ajax.request({
-            url: 'http://192.168.253.58:8800/purchase/audit',
+            url: form._auditUrl,
             params: JSON.stringify(params),
             method: 'POST',
             headers: {

+ 6 - 5
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -21,11 +21,6 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         }
     },
 
-
-    store: {
-        data: []
-    },
-
     showIndex: true,
     configUrl: '',
 
@@ -62,6 +57,12 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     },
 
     listeners: {
+        afterrender:function(grid){
+            var count = grid.store.getCount();
+            if(count==0){
+                grid.add10EmptyRow();
+            }
+        },
         itemClick: function(tableView, record, item, index, e, eOpts) {
             var grid = tableView.up('grid'),
                 store = grid.store,

+ 17 - 1
frontend/saas-web/app/view/main/Main.scss

@@ -107,6 +107,22 @@ $treelist-nav-ui: (
     border: 1px solid #ccc;
 }
 
+.x-btn-default-toolbar-small{
+    border-radius: 5px !important;
+}
+
 .x-formpanel-btn-orange {
-    background:#b36c1b !important;
+    background: linear-gradient(to bottom,#da7101 0,#f67f00 100%) !important;
+}
+
+.x-formpanel-btn-orange .x-btn-inner-default-toolbar-small{
+    color:#fff !important;
+}
+
+.x-formpanel-btn-blue {
+    background: linear-gradient(to bottom,#3876c3 0,#346fb9 100%) !important;
+}
+
+.x-formpanel-btn-blue .x-btn-inner-default-toolbar-small{
+    color:#fff !important;
 }

+ 81 - 5
frontend/saas-web/app/view/test/order/FormController.js

@@ -12,18 +12,94 @@ Ext.define('saas.view.test.order.FormController', {
                 }
             },
             //放大镜赋值关系 以及 tpl模板
-            'dbfindtrigger[name=pu_vendorcode]':{
+            'dbfindtrigger[name=puVendcode]':{
                 beforerender:function(f){
                     Ext.apply(f,{
+                        conditionCode:'ve_code',
+                        dataUrl:'http://192.168.253.41:8800/purchase/component/dbfind/vendor',
                         dbfinds:[{
-                            from:'pu_vendorcode',to:'pu_vendorcode'
+                            from:'vendCode',to:'puVendcode'
                         },{
-                            from:'pu_vendorname',to:'pu_vendorname'
+                            from:'vendName',to:'puVendname'
                         }],
                         dbtpls:[{
-                            field:'pu_vendorcode',width:100
+                            field:'vendCode',width:100
                         },{
-                            field:'pu_vendorname',width:100
+                            field:'vendName',width:100
+                        }],
+                        dbColumns:[{
+                            "text": "供应商ID",
+                            "flex": 0,
+                            "dataIndex": "vendId",
+                            "width": 0,
+                            "xtype": "",
+                            "items": null
+                        },{
+                            "text": "供应商编号",
+                            "flex": 1,
+                            "dataIndex": "vendCode",
+                            "width": 100,
+                            "xtype": "",
+                            "items": null
+                        }, {
+                            "text": "供应商名称",
+                            "flex": 1,
+                            "dataIndex": "vendName",
+                            "xtype": "",
+                            "items": null
+                        }, {
+                            "text": "供应商类型",
+                            "flex": 0,
+                            "dataIndex": "vendType",
+                            "width": 200,
+                            "xtype": "",
+                            "items": null
+                        }]
+                    }) ;   
+
+                }
+            },
+            //放大镜赋值关系 以及 tpl模板
+            'dbfindtrigger[name=pdProdcode]':{
+                beforerender:function(f){
+                    Ext.apply(f,{
+                        conditionCode:'pr_code',
+                        dataUrl:'http://192.168.253.41:8800/purchase/component/dbfind/product',
+                        dbfinds:[{
+                            from:'pr_code',to:'pdVendcode'
+                        }],
+                        dbtpls:[{
+                            field:'pr_code',width:100
+                        },{
+                            field:'pr_detail',width:100
+                        }],
+                        dbColumns:[{
+                            "text": "物料ID",
+                            "flex": 0,
+                            "dataIndex": "pr_id",
+                            "width": 0,
+                            "xtype": "",
+                            "items": null
+                        },{
+                            "text": "物料编号",
+                            "flex": 1,
+                            "dataIndex": "pr_code",
+                            "width": 100,
+                            "xtype": "",
+                            "items": null
+                        }, {
+                            "text": "物料名称",
+                            "flex": 1,
+                            "dataIndex": "pr_detail",
+                            "xtype": "",
+                            "items": null
+                        }, {
+                            "text": "物料规格",
+                            "flex": 0,
+                            "dataIndex": "pr_spec",
+                            "width": 200,
+                            "xtype": "",
+                            "items": null
                         }]
                     }) ;   
 

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

@@ -10,8 +10,205 @@ Ext.define('saas.view.test.order.FormPanel', {
     _statusField: 'puStatuscode',
     _idField: 'id',
     _detnoColumn:  'pdDetno',
+    _dataModelUrl:'http://192.168.253.58:8800/purchase/form?id={id}',
+    _saveUrl:'http://192.168.253.58:8800/purchase/form',
+    _auditUrl:'http://192.168.253.58:8800/purchase/audit',
+    _deleteUrl:'http://192.168.253.58:8800/purchase/detele',
     initId:0,
 
+    _baseItems:[{
+        "xtype": "hidden",
+        "name": "id",
+        "bind": "{id}",
+        "fieldLabel": "ID",
+        "allowBlank": true,
+        "columnWidth": 0.0
+    },
+    {
+        "xtype": "textfield",
+        "name": "puCode",
+        "bind": "{puCode}",
+        "fieldLabel": "采购单号",
+        "allowBlank": true,
+        "columnWidth": 0.25
+    },
+    {
+        "xtype": "datefield",
+        "name": "puDate",
+        "bind": "{puDate}",
+        "fieldLabel": "采购日期",
+        "allowBlank": true,
+        "columnWidth": 0.25
+    },
+    {
+        "xtype": "hidden",
+        "name": "puVendid",
+        "bind": "{puVendid}",
+        "fieldLabel": "供应商ID",
+        "allowBlank": true,
+        "columnWidth": 0.0
+    },
+    {
+        "xtype": "dbfindtrigger",
+        "name": "puVendcode",
+        "bind": "{puVendcode}",
+        "fieldLabel": "供应商编号",
+        "allowBlank": true,
+        "columnWidth": 0.25,
+        "configUrl": "resources/json/purchase/vendorColumnsDbfind.json",
+        "dataUrl": "resources/json/purchase/vendorDataDbfind.json"
+    },
+    {
+        "xtype": "textfield",
+        "name": "puVendname",
+        "bind": "{puVendname}",
+        "fieldLabel": "供应商名称",
+        "allowBlank": true,
+        "columnWidth": 0.25
+    },
+    {
+        "xtype": "hidden",
+        "name": "puBuyerid",
+        "bind": "{puBuyerid}",
+        "fieldLabel": "采购员ID",
+        "allowBlank": true,
+        "columnWidth": 0.0
+    },
+    {
+        "xtype": "dbfindtrigger",
+        "name": "puBuyercode",
+        "bind": "{puBuyercode}",
+        "fieldLabel": "采购员编号",
+        "allowBlank": true,
+        "columnWidth": 0.25
+    },
+    {
+        "xtype": "textfield",
+        "name": "puBuyername",
+        "bind": "{puBuyername}",
+        "fieldLabel": "采购员名称",
+        "allowBlank": true,
+        "columnWidth": 0.25
+    },
+    {
+        "name": "detailGridField",
+        "xtype": "detailGridField",
+        "columnWidth": 1.0,
+        "frame": true,
+        "bind": {
+            "store": "{detailGridStore}"
+        },
+        "margin": 3.0,
+        "columns": [
+        {
+            "text": "序号",
+            "dataIndex": "pdDetno",
+            "width": 80.0,
+            "xtype": "rownumberer"
+        },
+        {
+            "editor": {
+            "displayField": "display",
+            "editable": true,
+            "format": "",
+            "hideTrigger": false,
+            "maxLength": 100.0,
+            "minValue": null,
+            "positiveNum": false,
+            "queryMode": "local",
+            "store": null,
+            "valueField": "value",
+            "xtype": "dbfindtrigger"
+            },
+            "text": "物料编号",
+            "width": 200.0,
+            "dataIndex": "pdProdcode",
+            "xtype": "",
+            "items": null
+        },
+        {
+            "text": "单位",
+            "editor": {
+            "xtype": "textfield"
+            },
+            "dataIndex": "pdUnit",
+            "width": 120.0,
+            "xtype": "",
+            "items": null
+        },
+        {
+            "text": "数量",
+            "dataIndex": "pdQty",
+            "width": 120.0,
+            "format":'0',
+            "xtype": "numbercolumn",
+            "items": null
+        },
+        {
+            "text": "单价",
+            "dataIndex": "pdPrice",
+            "width": 120.0,
+            "xtype": "numbercolumn",
+            "items": null
+        },
+        {
+            "text": "总额",
+            "dataIndex": "pdTotal",
+            "width": 120.0,
+            "xtype": "numbercolumn"
+        },
+        {
+            "text": "税额",
+            "dataIndex": "pdTaxtotal",
+            "flex": 1.0,
+            "xtype": "numbercolumn"
+        },
+        {
+            "text": "id",
+            "dataIndex": "id",
+            "flex": 1.0,
+            "xtype": "numbercolumn"
+        }
+        ]
+    },
+    {
+        "format": "Y-m-d",
+        "xtype": "datetimefield",
+        "name": "createTime",
+        "bind": "{createTime}",
+        "fieldLabel": "创建时间",
+        "allowBlank": true,
+        "columnWidth": 0.25
+    },
+    {
+        "xtype": "datefield",
+        "name": "updateTime",
+        "bind": "{updateTime}",
+        "fieldLabel": "更新时间",
+        "allowBlank": true,
+        "columnWidth": 0.25
+    },
+    {
+        "xtype": "textfield",
+        "readOnly": true,
+        "editable": false,
+        "name": "puStatus",
+        "bind": "{puStatus}",
+        "fieldLabel": "单据状态",
+        "allowBlank": true,
+        "columnWidth": 0.25
+    },
+    {
+        "xtype": "hidden",
+        "readOnly": true,
+        "editable": false,
+        "name": "puStatuscode",
+        "bind": "{puStatuscode}",
+        "fieldLabel": "单据状态码",
+        "allowBlank": true,
+        "columnWidth": 0.0
+    }],
+
     toolBtns: [{
         xtype: 'button',
         text: '转单按钮',