Browse Source

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

rainco 7 years ago
parent
commit
611f2c2ce6

+ 10 - 8
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseController.java

@@ -3,9 +3,10 @@ package com.usoftchina.saas.purchase.controller;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.common.dto.BatchDealBaseDTO;
-import com.usoftchina.saas.document.api.ProductApi;
+import com.usoftchina.saas.common.dto.DocSavedDTO;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.purchase.dto.*;
+import com.usoftchina.saas.purchase.po.PurchaseList;
 import com.usoftchina.saas.purchase.service.PurchaseService;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,8 +33,8 @@ public class PurchaseController {
      * @return
      */
     @GetMapping("/list")
-    public Result<PageInfo<PurchaseListDTO>> getListData(PageRequest page, PurchaseReqDTO req) {
-        PageInfo<PurchaseListDTO> listData = purchaseService.getListData(page, req);
+    public Result<PageInfo<PurchaseList>> getListData(PageRequest page, PurchaseReqDTO req) {
+        PageInfo<PurchaseList> listData = purchaseService.getListData(page, req);
         return Result.success(listData);
     }
 
@@ -42,8 +43,8 @@ public class PurchaseController {
      *
      * @return
      */
-    @GetMapping("/read")
-    public Result<PurchaseFormDTO> getFormData(@RequestParam Long id) {
+    @GetMapping("/read/{id}")
+    public Result<PurchaseFormDTO> getFormData(@PathVariable("id") Long id) {
         PurchaseFormDTO data = purchaseService.getFormData(id);
         return Result.success(data);
     }
@@ -54,10 +55,11 @@ public class PurchaseController {
      * @param
      * @return
      */
-    @PostMapping(value = "/save")
+    @PostMapping("/save")
     public Result<Long> saveFormData(@RequestBody PurchaseFormDTO data) {
-        Long id = purchaseService.saveFormData(data);
-        return Result.success(id);
+        DocSavedDTO savedDTO = purchaseService.saveFormData(data);
+        return Result.success(savedDTO);
+
     }
 
     /**

+ 4 - 3
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseService.java

@@ -3,12 +3,13 @@ package com.usoftchina.saas.purchase.service;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.service.CommonBaseService;
 import com.usoftchina.saas.common.dto.BatchDealBaseDTO;
+import com.usoftchina.saas.common.dto.DocSavedDTO;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.purchase.dto.PurchaseFormDTO;
-import com.usoftchina.saas.purchase.dto.PurchaseListDTO;
 import com.usoftchina.saas.purchase.dto.PurchaseReqDTO;
 import com.usoftchina.saas.purchase.mapper.PurchaseMapper;
 import com.usoftchina.saas.purchase.po.Purchase;
+import com.usoftchina.saas.purchase.po.PurchaseList;
 
 import java.util.List;
 
@@ -31,7 +32,7 @@ public interface PurchaseService extends CommonBaseService<PurchaseMapper, Purch
      * @param page,req
      * @return
      */
-    PageInfo<PurchaseListDTO> getListData(PageRequest page, PurchaseReqDTO req);
+    PageInfo<PurchaseList> getListData(PageRequest page, PurchaseReqDTO req);
 
     /**
      * 采购订单列表查询
@@ -47,7 +48,7 @@ public interface PurchaseService extends CommonBaseService<PurchaseMapper, Purch
      * @param formdata
      * @return
      */
-    Long saveFormData(PurchaseFormDTO formdata);
+    DocSavedDTO saveFormData(PurchaseFormDTO formdata);
 
     /**
      * 删除

+ 18 - 12
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java

@@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.common.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.common.dto.DocBaseDTO;
+import com.usoftchina.saas.common.dto.DocSavedDTO;
 import com.usoftchina.saas.document.api.ProductApi;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
@@ -43,7 +44,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     private ProductApi productApi;
 
     @Override
-    public PageInfo<PurchaseListDTO> getListData(PageRequest page, PurchaseReqDTO req) {
+    public PageInfo<PurchaseList> getListData(PageRequest page, PurchaseReqDTO req) {
         //设置默认分页
         if (null == page || page.getSize() == 0 || page.getNumber() == 0) {
             page = new PageRequest();
@@ -53,14 +54,8 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         PageHelper.startPage(page.getNumber(), page.getSize());
         //查询数据
         List<PurchaseList> lists = getListByMode(req);
-        //转换成传输对象
-        List<PurchaseListDTO> purchaseListDTOS = new ArrayList<>();
-        for (PurchaseList list : lists) {
-            purchaseListDTOS.add(BeanMapper.map(list, PurchaseListDTO.class));
-        }
         //取分页信息
-        PageInfo<PurchaseListDTO> pageInfo = new PageInfo<PurchaseListDTO>(purchaseListDTOS);
-        pageInfo.getTotal();
+        PageInfo<PurchaseList> pageInfo = new PageInfo<PurchaseList>(lists);
         return pageInfo;
     }
 
@@ -84,22 +79,29 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     }
 
     @Override
-    public Long saveFormData(PurchaseFormDTO formdata) {
+    public DocSavedDTO saveFormData(PurchaseFormDTO formdata) {
         if (null == formdata || null == formdata.getMain()){
             throw new BizException(500, "数据为空,请填写后再保存");
         }
+
         //获取主表信息
         PurchaseDTO main = formdata.getMain();
         List<PurchaseItemDTO> items = formdata.getItems();
+        //插入从表数据
         List<PurchaseItem> insertDetails = new ArrayList<>();
+        //更新从表数据
         List<PurchaseItem> updateDetails = new ArrayList<>();
+        DocSavedDTO saveDTO = new DocSavedDTO();
         Long pu_id = main.getId();
         String pu_code = main.getPu_code();
         Purchase purchase = BeanMapper.map(main, Purchase.class);
+
         //编号获取
         if (!StringUtils.hasText(pu_code)) {
             pu_code = "PU" + Math.random() * 1000;
+            purchase.setPu_code(pu_code);
         }
+        saveDTO.setCode(pu_code);
         //判断更新与保存动作
         if (StringUtils.hasText(pu_id)) {
             //更新主表
@@ -123,8 +125,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
             if (updateDetails.size() > 0) {
                 purchasedetailMapper.batchUpdate(updateDetails);
             }
-            return pu_id;
+            saveDTO.setId(pu_id);
+            return saveDTO;
         }
+
         //插入操作
         purchaseMapper.insertSelective(purchase);
         pu_id = purchase.getId();
@@ -139,7 +143,8 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         if (insertDetails.size() > 0) {
             purchasedetailMapper.batchInsert(insertDetails);
         }
-        return pu_id;
+        saveDTO.setId(pu_id);
+        return saveDTO;
     }
 
     @Override
@@ -158,7 +163,8 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         if (null != formData) {
             id = formData.getMain().getId();
             if (!StringUtils.hasText(id)) {
-                id = saveFormData(formData);
+                DocSavedDTO saveDTO = saveFormData(formData);
+                id = saveDTO.getId();
             }
             singleAudit(id);
         }

+ 1 - 1
applications/purchase/purchase-server/src/main/resources/mapper/PurchasedetailMapper.xml

@@ -356,7 +356,7 @@
       PD_PRODCODE = #{item.pd_prodcode},
       PD_UNIT = #{item.pd_unit},
       PD_QTY = #{item.pd_qty},
-      PD_PRICE = #{item.pd_pice},
+      PD_PRICE = #{item.pd_price},
       PD_TOTAL = #{item.pd_total},
       PD_TAXTOTAL = #{item.pd_taxtotal},
       PD_ACCEPTQTY = #{item.pd_acceptqty},

+ 13 - 23
frontend/saas-web/app/util/FormUtil.js

@@ -36,33 +36,23 @@ Ext.define('saas.util.FormUtil', {
                         if(item.xtype == 'detailGridField') {
                             var storeName = item.name || item.xtype + Ext.id();
                             item.bind = {
-                                store: '{' + storeName + '}'
+                                store: {
+                                    data : '{' + storeName + '}'
+                                }
+                            };           
+
+                            item.store = {
+                                fields: item.columns ? item.columns.filter(function(c) {
+                                    return !!c.dataIndex;
+                                }).map(function(c) {
+                                    return c.dataIndex;
+                                }) : [],
+                                data: []
                             };
-                            
-                            formModel.set(storeName, Ext.create('Ext.data.Store', {
-                                id: storeName,
-                                autoLoad: true,
-                                model: Ext.create('Ext.data.Model', {
-                                    fields: item.columns ? item.columns.filter(function(c) {
-                                        return !!c.dataIndex;
-                                    }).map(function(c) {
-                                        return {
-                                            name: c.dataIndex
-                                        }
-                                    }) : [],
-                                }),
-                                data: [{
-                                    pdUnit: '34'
-                                }, {
-                                    pdUnit: ''
-                                }]
-                            }));
                         }
                     });
-                    return items;
-                }else {
-                    return []
                 }
+                form.addItems(items);
             }else {
                 return []
             }

+ 23 - 11
frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js

@@ -42,17 +42,29 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
             var me = this;
             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.belong.down('[name='+item.to+']');
-                    if(field){
-                        var val = record.get(item.from);
-                        if(field.xtype=='dbfindtrigger'){
-                            field.setRawValue(val);
-                            field.lastTriggerValue=val;
-                        }else{
-                            field.setValue(val);
-                        }    
+                if(me.belong=='grid'){
+                    for (let index = 0; index < dbfinds.length; index++) {
+                        var item = dbfinds[index];
+                        var rec = me.dbfindtrigger.column.ownerCt.ownerCt.selModel.getLastSelected();
+                        if(rec){
+                            var nowRec = me.dbfindtrigger.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
+                            nowRec.set(item.to,record.get(item.from));
+                            //me.column.getEditor().setValue(record.get(item.from));
+                        }
+                    }
+                }else if(me.belong=='form'){
+                    for (let index = 0; index < dbfinds.length; index++) {
+                        var item = dbfinds[index];
+                        var field = me.ownerCt.belong.down('[name='+item.to+']');
+                        if(field){
+                            var val = record.get(item.from);
+                            if(field.xtype=='dbfindtrigger'){
+                                field.setValue(val);
+                                field.lastTriggerValue=val;
+                            }else{
+                                field.setValue(val);
+                            }    
+                        }
                     }
                 }
             }

+ 8 - 134
frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js

@@ -1,101 +1,17 @@
 Ext.define('saas.view.core.dbfind.DbfindTrigger', {
-    extend: 'Ext.form.ComboBox',
+    extend: 'Ext.form.field.Trigger',
     xtype: 'dbfindtrigger',
-    queryMode: 'local',
-    displayField: 'dispaly',
-    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;
-        me.store=Ext.create('Ext.data.Store', {
-            fields: ['display','value'],
-            data : [{
-                'display':me.value,
-                'value':me.value
-            }]
-        });
-        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.setFields(field);
-                    }
-                }
-                //加载数据
-                var data;
-                Ext.Ajax.request({
-                    url: me.dataUrl,
-                    params: '',
-                    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);
-                    }
-                });                
-            }
-            return true;
-    	}else{
-    		return false;
-    	}
+        this.callParent(arguments);
     },
     onTriggerClick:function(f){
         //判断dbfindtrigger归属
@@ -117,7 +33,9 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
                 xtype:'dbfindgridpanel',
                 columns: f.dbColumns,
                 dataUrl: f.dataUrl,
-                dbfinds: f.dbfinds
+                dbfinds: f.dbfinds,
+                belong: f.belong,
+                dbfindtrigger:f
             }]
         });
         win.show();
@@ -137,51 +55,7 @@ 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){
-                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);
-                            }    
-                        }
-                    }
-                }
-            }
-        }
-    },
-
-    getValue: function(f) {
-        var me = this,val = me.rawToValue(me.processRawValue(me.getRawValue()));
-        me.value = val;
-        return val;
+		}
     },
 
     autoSetValue: function(data, dbfinds) {

+ 232 - 0
frontend/saas-web/app/view/core/dbfind/DbfindTrigger2.js

@@ -0,0 +1,232 @@
+Ext.define('saas.view.core.dbfind.DbfindTrigger2', {
+    extend: 'Ext.form.ComboBox',
+    xtype: 'dbfindtrigger2',
+    queryMode: 'local',
+    displayField: 'dispaly',
+    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;
+        me.store=Ext.create('Ext.data.Store', {
+            fields: ['display','value'],
+            data : [{
+                'display':me.value,
+                'value':me.value
+            }]
+        });
+        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.setFields(field);
+                    }
+                }
+                //加载数据
+                var data;
+                Ext.Ajax.request({
+                    url: me.dataUrl,
+                    params: '',
+                    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);
+                    }
+                });                
+            }
+            return true;
+    	}else{
+    		return false;
+    	}
+    },
+    onTriggerClick:function(f){
+        //判断dbfindtrigger归属
+        var belong = f.judge(f);
+        var win = Ext.create('Ext.window.Window', {   
+            trigger:f,
+            belong:f.ownerCt,  
+            modal:true,
+            height: '80%',
+            width: '80%',
+            title: '查找',
+            scrollable: true,
+            bodyPadding: 10,
+            constrain: true,
+            closable: true,
+            layout:'fit',
+            renderTo:Ext.getCmp('main-tab-panel').getActiveTab().getEl(),
+            items:[{
+                xtype:'dbfindgridpanel',
+                columns: f.dbColumns,
+                dataUrl: f.dataUrl,
+                dbfinds: f.dbfinds
+            }]
+        });
+        win.show();
+    },
+
+    judge:function(f){
+        if(f.ownerCt.xtype.trim().toUpperCase().indexOf('FORMPANEL')>-1){
+            f.belong = 'form';
+            return 'form'
+        }
+        else if(f.column){
+            f.belong = 'grid';
+            return 'grid'
+        }
+    },
+
+    listeners: {
+        focus: function(f) {
+            return true;
+		},
+		select:function(combo,record,eOpts){
+            var me = combo;
+            var dbfinds = me.dbfinds;
+            if(dbfinds&&dbfinds.length>0){
+                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);
+                            }    
+                        }
+                    }
+                }
+            }
+        }
+    },
+
+    getValue: function(f) {
+        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='';
+	}
+
+});

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

@@ -36,30 +36,31 @@ Ext.define('saas.view.core.form.FormPanel', {
     initComponent: function() {
 
         var me = this;
-        me.FormUtil.setItems(me);
+        //me.FormUtil.setItems(me);
+
         //判断是否加载数据
+
         if(me.initId&&me.initId!=0){
-            var url = me._dataModelUrl,async=false;
-            url = url.replace(/(.*){id}(.*)/g, '$1' + me.initId);
+            var url = me._dataModelUrl + me.initId,async=false;
             me.BaseUtil.request({url,async })
             .then(function(response) {
                 var res = Ext.decode(response.responseText);
                 if(res.success) {
                     viewModel = me.getViewModel();
-                    viewModel.data = res.data.main;
-                    viewModel._data = res.data.main;
-                    viewModel.data.detailGridStore = res.data.items;                   
-                    viewModel._data.detailGridStore = res.data.items;
+                    viewModel.setData(res.data.main);
+                    viewModel.setData({'detailGridField':res.data.items});                   
                 }
             })
             .catch(function(response) {
                 console.error(response);
             });
+        }else{
+            viewModel = me.getViewModel();
+            viewModel.setData({'detailGridField':[{},{}]});     
         }
 
         Ext.apply(me, {
-            remoteConfig: me.remoteConfig,
-            items:me._baseItems,
+            items:me.defaultItems,
             dockedItems: [{
                 xtype: 'toolbar',
                 dock: 'top',

+ 19 - 16
frontend/saas-web/app/view/core/form/FormPanelController.js

@@ -31,17 +31,15 @@ Ext.define('saas.view.core.form.FormPanelController', {
         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"},
+                url: form._deleteUrl+id.value,
+                params: '',
                 headers: {
                     'Access-Control-Allow-Origin': '*',
                     "Content-Type": 'application/json;charset=UTF-8' 
                 },
                 success: function (response, opts) {
+                    var mainTab = Ext.getCmp('main-tab-panel');
+                    mainTab.getActiveTab().close();
                     //解析参数
                     Ext.Msg.alert('提示','删除成功');
                 },
@@ -71,19 +69,24 @@ Ext.define('saas.view.core.form.FormPanelController', {
         if(formData.detailGridField){
             gridData = formData.detailGridField;
         }
+
         var grid = form.query('detailGridField')[0];
-        var updRecords = grid.store.getUpdatedRecords();
-        if(updRecords.length>0){
-            Ext.each(updRecords, function(rec){
-                Ext.each(gridData, function(data,index){
-                    if(data.id==rec.id){
-                        if(data.id.indexOf('extMode')>-1){
+        var items = grid.store.data.items;
+        if(items.length>0){
+            Ext.each(items, function(rec){
+                if(rec.dirty==true){
+                    Ext.each(gridData, function(data,index){
+                        data[form._detnoColumn] = index + 1;
+                        if(rec.id == data.id){
+                            newGridData.push(data);
+                            return false;
+                        }else if ((typeof data.id) != 'number'&&data.id.indexOf('extMode')>-1){
                             data.id = '';
-                            data[form._detnoColumn] = index + 1;
+                            newGridData.push(data);
+                            return false;
                         }
-                        newGridData.push(data);
-                    }
-                });
+                    });
+                }
             });
         }   
         var params = {

+ 3 - 5
frontend/saas-web/app/view/core/form/RemoteCombo.js

@@ -15,15 +15,14 @@ Ext.define('saas.view.core.form.RemoteCombo', {
 
     setStore:function(v){
        var me=this;
-       me.url='resources/json/combotest.json';
        var store=Ext.create('Ext.data.Store',{
-           fields:['value','text'],
+           fields:['display','value'],
            autoLoad: true,
            proxy: {
                type: 'ajax',
-               url: me.url,
+               url: me.storeUrl,
                reader: {
-                   type: 'array',
+                   type: 'json',
                    rootProperty: 'data'
                }
            }
@@ -32,7 +31,6 @@ Ext.define('saas.view.core.form.RemoteCombo', {
 
     },
     createPicker: function() {
-
         var me = this,
             picker,
             pickerCfg = Ext.apply({

+ 30 - 9
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -18,7 +18,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     },
     plugins: {
         cellediting: {
-            clicksToEdit: 2
+            clicksToEdit: 1
         }
     },
 
@@ -64,19 +64,19 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     },
 
     listeners: {
-        afterrender:function(grid){
-            var count = grid.store.getCount();
-            if(count==0){
-                grid.add10EmptyRow();
-            }
-        },
+        // 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,
                 count = store.getCount();
 
             if(index == count - 1) {
-                grid.add10EmptyRow();
+                //grid.add10EmptyRow();
             }
         }
     },
@@ -106,7 +106,28 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             store = me.getStore(),
             selectedRecord = me.selModel.lastSelected;
 
-        store.remove(selectedRecord);
+        var id = selectedRecord.data.id;
+        var form = me.ownerGrid.ownerCt;
+        if(id&&id!=0&&(typeof id) == 'number'){
+            Ext.Ajax.request({
+                url: form._deleteDetailUrl+id,
+                params: '',
+                headers: {
+                    'Access-Control-Allow-Origin': '*'
+                },
+                success: function (response, opts) {
+                    store.remove(selectedRecord);
+                    //解析参数
+                    Ext.Msg.alert('提示','删除成功');
+                },
+                failure: function (response, opts) {
+                    //失败
+                    Ext.Msg.alert('提示','删除失败');
+                }
+            });
+        }else{
+            store.remove(selectedRecord);
+        }
     },
 
     swapUp: function() {

+ 17 - 14
frontend/saas-web/app/view/test/order/FormController.js

@@ -12,45 +12,48 @@ Ext.define('saas.view.test.order.FormController', {
                 }
             },
             //放大镜赋值关系 以及 tpl模板
-            'dbfindtrigger[name=puVendcode]':{
+            'dbfindtrigger[name=pu_vendcode]':{
                 beforerender:function(f){
                     Ext.apply(f,{
-                        conditionCode:'ve_code',
-                        dataUrl:'http://192.168.253.41:8800/purchase/component/dbfind/vendor',
+                        dataUrl:'http://192.168.253.41:9480/api/document/vendor/getVendorsByCondition',
                         dbfinds:[{
-                            from:'vendCode',to:'puVendcode'
+                            from:'ve_code',to:'pu_vendcode'
                         },{
-                            from:'vendName',to:'puVendname'
+                            from:'ve_name',to:'pu_vendname'
                         }],
                         dbtpls:[{
-                            field:'vendCode',width:100
+                            field:'ve_code',width:100
                         },{
-                            field:'vendName',width:100
+                            field:'ve_name',width:100
                         }],
                         dbColumns:[{
+                            conditionCode:'ve_id',
                             "text": "供应商ID",
                             "flex": 0,
-                            "dataIndex": "vendId",
+                            "dataIndex": "ve_id",
                             "width": 0,
                             "xtype": "",
                             "items": null
                         },{
+                            conditionCode:'ve_code',
                             "text": "供应商编号",
                             "flex": 1,
-                            "dataIndex": "vendCode",
+                            "dataIndex": "ve_code",
                             "width": 100,
                             "xtype": "",
                             "items": null
                         }, {
+                            conditionCode:'ve_name',
                             "text": "供应商名称",
                             "flex": 1,
-                            "dataIndex": "vendName",
+                            "dataIndex": "ve_name",
                             "xtype": "",
                             "items": null
                         }, {
+                            conditionCode:'ve_type',
                             "text": "供应商类型",
                             "flex": 0,
-                            "dataIndex": "vendType",
+                            "dataIndex": "ve_type",
                             "width": 200,
                             "xtype": "",
                             "items": null
@@ -60,13 +63,13 @@ Ext.define('saas.view.test.order.FormController', {
                 }
             },
             //放大镜赋值关系 以及 tpl模板
-            'dbfindtrigger[name=pdProdcode]':{
+            'dbfindtrigger[name=pd_prodcode]':{
                 beforerender:function(f){
                     Ext.apply(f,{
                         conditionCode:'pr_code',
-                        dataUrl:'http://192.168.253.41:8800/purchase/component/dbfind/product',
+                        dataUrl:'http://192.168.253.41:9480/api/document/product/getProductsByCondition',
                         dbfinds:[{
-                            from:'pr_code',to:'pdVendcode'
+                            from:'pr_code',to:'pd_prodcode'
                         }],
                         dbtpls:[{
                             field:'pr_code',width:100

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

@@ -6,14 +6,15 @@ Ext.define('saas.view.test.order.FormPanel', {
     viewModel: 'test-order-formmodel',
     
     _title:'采购单',
-    _codeField: 'puCode',
-    _statusField: 'puStatuscode',
+    _codeField: 'pu_ode',
+    _statusField: 'pu_statuscode',
     _idField: 'id',
-    _detnoColumn:  'pdDetno',
-    _dataModelUrl:'http://192.168.253.58:8800/purchase/form?id={id}',
-    _saveUrl:'http://192.168.253.58:8800/purchase/form',
+    _detnoColumn:  'pd_detno',
+    _dataModelUrl:'http://192.168.253.58:8800/purchase/read/',
+    _saveUrl:'http://192.168.253.58:8800/purchase/save',
     _auditUrl:'http://192.168.253.58:8800/purchase/audit',
-    _deleteUrl:'http://192.168.253.58:8800/purchase/detele',
+    _deleteUrl:'http://192.168.253.58:8800/purchase/delete/',
+    _deleteDetailUrl:'http://192.168.253.58:8800/purchase/deleteItem/',
     initId:0,
 
     toolBtns: [{
@@ -33,63 +34,97 @@ Ext.define('saas.view.test.order.FormPanel', {
         columnWidth: 0
     }, {
         xtype : "textfield", 
-        name : "puCode", 
-        bind : "{puCode}", 
+        name : "pu_code", 
+        bind : "{pu_code}", 
         fieldLabel : "采购单号", 
         allowBlank : true, 
         columnWidth : 0.25
     }, {
         xtype : "datefield", 
-        name : "puDate", 
-        bind : "{puDate}", 
+        name : "pu_date", 
+        bind : "{pu_date}", 
         fieldLabel : "采购日期", 
         allowBlank : true, 
         columnWidth : 0.25
     }, {
         xtype : "hidden", 
-        name : "puVendid", 
-        bind : "{puVendid}", 
+        name : "pu_vendid", 
+        bind : "{pu_vendid}", 
         fieldLabel : "供应商ID", 
         allowBlank : true, 
         columnWidth : 0.0
     }, {
         xtype : "dbfindtrigger", 
-        name : "puVendcode", 
-        bind : "{puVendcode}", 
+        name : "pu_vendcode", 
+        bind : "{pu_vendcode}", 
         fieldLabel : "供应商编号", 
         allowBlank : true, 
         columnWidth : 0.25, 
     }, {
         xtype : "textfield", 
-        name : "puVendname", 
-        bind : "{puVendname}", 
+        name : "pu_vendname", 
+        bind : "{pu_vendname}", 
         fieldLabel : "供应商名称", 
         allowBlank : true, 
         columnWidth : 0.25
     }, {
         xtype : "hidden", 
-        name : "puBuyerid", 
-        bind : "{puBuyerid}", 
+        name : "pu_buyerid", 
+        bind : "{pu_buyerid}", 
         fieldLabel : "采购员ID", 
         allowBlank : true, 
         columnWidth : 0.0
     }, {
         xtype : "dbfindtrigger", 
-        name : "puBuyercode", 
-        bind : "{puBuyercode}", 
+        name : "pu_buyercode", 
+        bind : "{pu_buyercode}", 
         fieldLabel : "采购员编号", 
         allowBlank : true, 
         columnWidth : 0.25
     }, {
         xtype : "textfield", 
-        name : "puBuyername", 
-        bind : "{puBuyername}", 
+        name : "pu_buyername", 
+        bind : "{pu_buyername}", 
         fieldLabel : "采购员名称", 
         allowBlank : true, 
         columnWidth : 0.25
+    },{
+        xtype : "combo", 
+        name : "pu_total", 
+        bind : "{pu_total}", 
+        fieldLabel : "下拉框", 
+        allowBlank : true, 
+        queryMode: 'local',
+        displayField: 'display',
+        valueField: 'value',
+        store:{
+            fields: ['display', 'value'],
+            data : [
+                {"display":"1", "value":"1"},
+                {"display":"2", "value":"2"},
+                {"display":"3", "value":"3"}
+            ]
+        },
+        columnWidth : 0.25
+    },{
+        xtype : "remotecombo", 
+        storeUrl:"http://192.168.253.41:9480/api/document/product/getProdUnit",
+        name : "pu_text1", 
+        bind : "{pu_text1}", 
+        fieldLabel : "物料下拉框", 
+        allowBlank : true, 
+        queryMode: 'local',
+        displayField: 'display',
+        valueField: 'value',
+        columnWidth : 0.25
     }, {
         name : "detailGridField", 
         xtype : "detailGridField", 
+        bind: {
+            store:{
+                data:'{detailGridField}'
+            }
+        },
         columns : [
             {
                 text : "序号", 
@@ -113,7 +148,7 @@ Ext.define('saas.view.test.order.FormPanel', {
                 }, 
                 text : "物料编号", 
                 width : 200.0, 
-                dataIndex : "pdProdcode", 
+                dataIndex : "pd_prodcode", 
                 xtype : "", 
                 items : null
             }, 
@@ -122,34 +157,34 @@ Ext.define('saas.view.test.order.FormPanel', {
                 editor : {
                     xtype : "textfield"
                 }, 
-                dataIndex : "pdUnit", 
+                dataIndex : "pd_unit", 
                 width : 120.0, 
                 xtype : "", 
                 items : null
             }, 
             {
                 text : "数量", 
-                dataIndex : "pdQty", 
+                dataIndex : "pd_yqty", 
                 width : 120.0, 
                 xtype : "", 
                 items : null
             }, 
             {
                 text : "单价", 
-                dataIndex : "pdPrice", 
+                dataIndex : "pd_price", 
                 width : 120.0, 
                 xtype : "numbercolumn", 
                 items : null
             }, 
             {
                 text : "总额", 
-                dataIndex : "pdTotal", 
+                dataIndex : "pd_total", 
                 width : 120.0, 
                 xtype : "numbercolumn"
             }, 
             {
                 text : "税额", 
-                dataIndex : "pdTaxtotal", 
+                dataIndex : "pd_taxtotal", 
                 flex : 1.0, 
                 xtype : "numbercolumn"
             }, 
@@ -188,8 +223,8 @@ Ext.define('saas.view.test.order.FormPanel', {
         xtype : "hidden", 
         readOnly : true, 
         editable : false, 
-        name : "puStatuscode", 
-        bind : "{puStatuscode}", 
+        name : "pu_statuscode", 
+        bind : "{pu_statuscode}", 
         fieldLabel : "单据状态码", 
         allowBlank : true, 
         columnWidth : 0.0

+ 37 - 3
frontend/saas-web/app/view/test/query/QueryPanel.js

@@ -3,7 +3,7 @@ Ext.define('saas.view.test.query.QueryPanel', {
     xtype: 'test-query-querypanel',
 
     // controller: 'test-query-formcontroller',
-    // viewModel: 'test-query-formmodel',
+    viewModel: 'test-query-querypanel',
     viewName: 'test-query-formpanel',
     _baseVastUrl:'http://192.168.253.58:8800/purchase/',
     _idField:'pu_id',
@@ -22,8 +22,42 @@ Ext.define('saas.view.test.query.QueryPanel', {
         fieldLabel: '单据编号',
         allowBlank: true,
         columnWidth: 0.25,
-        configUrl: 'resources/json/purchase/vendorColumnsDbfind.json',
-        dataUrl: 'resources/json/purchase/vendorDataDbfind.json'
+        dataUrl:'http://192.168.253.41:9480/api/document/vendor/getVendorsByCondition',
+        dbfinds:[{
+            from:'ve_code',to:'pu_code'
+        }],
+        dbColumns:[{
+            conditionCode:'ve_id',
+            "text": "供应商ID",
+            "flex": 0,
+            "dataIndex": "ve_id",
+            "width": 0,
+            "xtype": "",
+            "items": null
+        },{
+            conditionCode:'ve_code',
+            "text": "供应商编号",
+            "flex": 1,
+            "dataIndex": "ve_code",
+            "width": 100,
+            "xtype": "",
+            "items": null
+        }, {
+            conditionCode:'ve_name',
+            "text": "供应商名称",
+            "flex": 1,
+            "dataIndex": "ve_name",
+            "xtype": "",
+            "items": null
+        }, {
+            conditionCode:'ve_type',
+            "text": "供应商类型",
+            "flex": 0,
+            "dataIndex": "ve_type",
+            "width": 200,
+            "xtype": "",
+            "items": null
+        }]
     }, {
         xtype: 'condatefield',
         name: 'pu_date',

+ 5 - 0
frontend/saas-web/app/view/test/query/QueryPanelModel.js

@@ -1,4 +1,9 @@
 Ext.define('saas.view.test.query.QueryPanelModel', {
     extend: 'saas.view.core.query.QueryPanelModel',
     alias: 'viewmodel.test-query-querypanel',
+
+    data: {
+        pu_total: '3333',
+        pu_code: '4'
+    }
 });