Browse Source

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

zhoudw 7 years ago
parent
commit
39e7d297aa

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

@@ -94,8 +94,8 @@ public class PurchaseController {
      */
     @PostMapping("/audit")
     public Result audit(@RequestBody PurchaseFormDTO formData) {
-        Long id = purchaseService.audit(formData);
-        return Result.success(id);
+        DocSavedDTO audit = purchaseService.audit(formData);
+        return Result.success(audit);
     }
 
     /**

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

@@ -72,7 +72,7 @@ public interface PurchaseService extends CommonBaseService<PurchaseMapper, Purch
      * @param formData
      * @return
      */
-    Long audit(PurchaseFormDTO formData);
+    DocSavedDTO audit(PurchaseFormDTO formData);
 
     /**
     * @Description 批量审核

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

@@ -108,7 +108,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         //判断更新与保存动作
         if (!StringUtils.isEmpty(pu_id)) {
             //更新主表
-            purchaseMapper.updateByPrimaryKey(purchase);
+            purchaseMapper.updateByPrimaryKeySelective(purchase);
             //添加从表传输对象
             for (PurchaseItemDTO item : items) {
                 PurchaseItem detail = BeanMapper.map(item, PurchaseItem.class);
@@ -161,8 +161,9 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     }
 
     @Override
-    public Long audit(PurchaseFormDTO formData) {
+    public DocSavedDTO audit(PurchaseFormDTO formData) {
         Long id = null;
+        DocSavedDTO savedDTO = new DocSavedDTO();
         if (null != formData) {
             id = formData.getMain().getId();
             if (StringUtils.isEmpty(id)) {
@@ -171,7 +172,8 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
             }
             singleAudit(id);
         }
-        return id;
+        savedDTO.setId(id);
+        return savedDTO;
     }
 
     @Override

+ 12 - 2
frontend/saas-web/app/util/FormUtil.js

@@ -13,12 +13,16 @@ Ext.define('saas.util.FormUtil', {
      * @param url: url
      */
     setItems: function(form) {
+        
         var me = this,
         viewName = form.viewName,
         defaultItems = form.defaultItems,
+        brr = [],
         formModel = form.getViewModel(),
         url = me.baseUrl.replace(me.urlRe, '$1' + viewName);
         
+        brr = brr.concat(form.defaultItems);
+
         this.BaseUtil.request({url, async: false})
         .then(function(response) {
             var res = Ext.decode(response.responseText);
@@ -33,6 +37,9 @@ Ext.define('saas.util.FormUtil', {
                         Ext.apply(item, cusItem);
                     });
                     Ext.Array.each(items, function(item) {
+                        if(item.allowBlank==false){
+                            //item.fieldLabel = "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>"+item.fieldLabel;
+                        }
                         if(item.xtype == 'detailGridField') {
                             var storeName = item.name || item.xtype + Ext.id();
                             item.bind = {
@@ -74,9 +81,8 @@ Ext.define('saas.util.FormUtil', {
 
     loadData: function(form) {
         var me = this;
-        
         if(form.initId && form.initId!=0) {
-            var url = form._dataModelUrl + form.initId,async=false;
+            var url = form._readUrl + form.initId,async=false;
             me.BaseUtil.request({url,async })
             .then(function(response) {
                 var res = Ext.decode(response.responseText);
@@ -90,6 +96,10 @@ Ext.define('saas.util.FormUtil', {
             .catch(function(response) {
                 console.error(response);
             });
+        }else{
+            var viewModel = form.getViewModel();
+            var detailStore = viewModel.get('_detailStore');
+            detailStore.loadData([{},{},{},{},{},{},{},{},{},{}]);
         }
     }
 });

+ 10 - 1
frontend/saas-web/app/util/QueryUtil.js

@@ -104,7 +104,16 @@ Ext.define('saas.util.QueryUtil', {
 						});
 						condition += _a + ')';
 					}
-				}  else {
+				} else if(f.xtype == 'multicombo' ){
+				    if(f.value){
+                        if(condition == ''){
+                            condition += f.name + " in (" + f.value+")";
+                        } else {
+                            condition += ' AND ' +  f.name + " in (" + f.value+")";
+                        }
+                    }
+
+                } else {
                     if(!Ext.isEmpty(f.value)){
                         if(me.contains(f.value.toString(), 'BETWEEN', true) && me.contains(f.value.toString(), 'AND', true)){
                             if(condition == ''){

+ 0 - 32
frontend/saas-web/app/view/core/form/DateField.js

@@ -1,32 +0,0 @@
-Ext.define('saas.view.core.form.DateField', {
-    extend: 'Ext.form.field.Date',
-    alias: 'widget.datetimefield',
-
-    setValue: function(v) {
-        var me = this,
-            utilDate = Ext.Date,
-            rawDate;
-        me.lastValue = me.rawDateText;
-        me.lastDate = me.rawDate;
-        if (Ext.isDate(v)) {
-            rawDate = me.rawDate = v;
-            me.rawDateText = me.formatDate(v);
-        } else {
-            rawDate = me.rawDate = me.rawToValue(v);
-            me.rawDateText = me.formatDate(v);
-            if (rawDate === v) {
-                if(v&&v.indexOf('.')>-1&&v.indexOf('T')>-1){
-                     v = v.substring(0,v.indexOf('T'));
-                    rawDate = null;
-                }else{
-                    rawDate = me.rawDate = null;
-                    me.rawDateText = '';
-                }     
-            }
-        }
-        if (rawDate && !utilDate.formatContainsHourInfo(me.format)) {
-            me.rawDate = utilDate.clearTime(rawDate, true);
-        }
-        me.callParent(arguments);
-    }
-});

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

@@ -56,7 +56,8 @@ Ext.define('saas.view.core.form.FormPanel', {
                 }, {
                     xtype: 'button',
                     text: '保存',
-                    handler: 'save'
+                    handler: 'save',
+                    formBind: true
                 }, {
                     xtype: 'button',
                     text: '删除',
@@ -110,6 +111,7 @@ Ext.define('saas.view.core.form.FormPanel', {
      * 设置需要绑定的字段
      */
     setBindFields: function(items) {
+        debugger
         var me = this,
         viewModel = me.getViewModel(),
         bindFields = [];

+ 60 - 72
frontend/saas-web/app/view/core/form/FormPanelController.js

@@ -11,9 +11,7 @@ Ext.define('saas.view.core.form.FormPanelController', {
         var title = '新增' + btn.ownerCt.ownerCt._title;
         var id = form.xtype + '_add';
         existingItem = mainTab.down('[id=' + id + ']');
-
         lastView = mainTab.getActiveTab();
-
         if (!existingItem) {
             var form = {
                 id,
@@ -27,26 +25,25 @@ Ext.define('saas.view.core.form.FormPanelController', {
     },
     
     delete: function(btn){
+        var me = this;
         var form = btn.ownerCt.ownerCt;
         var id = form.getForm().findField(form._idField);
         if(id&&id.value!=0){
-            Ext.Ajax.request({
+            me.BaseUtil.request({
                 url: form._deleteUrl+id.value,
-                params: '',
-                headers: {
-                    'Access-Control-Allow-Origin': '*',
-                    "Content-Type": 'application/json;charset=UTF-8' 
-                },
-                success: function (response, opts) {
+                method: 'GET',
+            })
+            .then(function(res) {
+                var localJson = new Ext.decode(res.responseText);
+                if(localJson.success){
                     var mainTab = Ext.getCmp('main-tab-panel');
                     mainTab.getActiveTab().close();
                     //解析参数
                     Ext.Msg.alert('提示','删除成功');
-                },
-                failure: function (response, opts) {
-                    //失败
-                    Ext.Msg.alert('提示','删除失败');
                 }
+            })
+            .catch(function() {
+                Ext.Msg.alert('提示','删除失败');
             });
         }
     },
@@ -63,96 +60,87 @@ Ext.define('saas.view.core.form.FormPanelController', {
             return false;
         }
         //form里面数据
-        var formData = form.viewModel.data;
-        var gridData = [];
-        var newGridData = [];
-        if(formData.detailGridField){
-            gridData = formData.detailGridField;
-        }
-
-        var grid = form.query('detailGridField')[0];
-        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 = '';
-                            newGridData.push(data);
-                            return false;
-                        }
-                    });
+        var formData = form.getFormData();
+        var gridData = formData.detail?formData.detail:[];
+        var dirtyGridData = [];
+        if(gridData.length>0){
+            Ext.each(gridData, function(item,index){
+                if(item.dirty){
+                    if((typeof item.data.id) != "number" && item.data.id.indexOf('extMode')>-1){
+                        item.data.id = '';
+                    }
+                    item.data[form._detnoColumn] = index + 1;
+                    dirtyGridData.push(item.data)
                 }
             });
         }   
         var params = {
-            main:formData,
-            items:newGridData
+            main:formData.main,
+            items:dirtyGridData
         }
         me.BaseUtil.request({
             url: form._saveUrl,
             params: JSON.stringify(params),
             method: 'POST',
         })
-        .then(function() {
-            Ext.Msg.alert('提示','保存成功');
+        .then(function(res) {
+            var localJson = new Ext.decode(res.responseText);
+            if(localJson.success){
+                Ext.Msg.alert('提示','保存成功');
+                form.initId = localJson.data.id;
+                form.FormUtil.loadData(form);
+            }
         })
         .catch(function() {
             Ext.Msg.alert('提示','保存失败');
         });
     },
+
     audit: function(btn){
+        var me = this;
         var form = btn.ownerCt.ownerCt;
+        if(form.getForm().wasDirty==false){
+            Ext.Msg.alert('提示','未修改数据,请修改后保存');
+            return false;
+        }
         if(form.getForm().wasValid==false){
             Ext.Msg.alert('提示','表单校验有误,请检查');
             return false;
         }
         //form里面数据
-        var formData = form.viewModel.data;
-        var gridData = [];
-        var newGridData = [];
-        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){
-                            data.id = '';
-                            data[form._detnoColumn] = index + 1;
-                        }
-                        newGridData.push(data);
+        var formData = form.getFormData();
+        var gridData = formData.detail?formData.detail:[];
+        var dirtyGridData = [];
+        if(gridData.length>0){
+            Ext.each(gridData, function(item,index){
+                if(item.dirty){
+                    if((typeof item.data.id) != "number" && item.data.id.indexOf('extMode')>-1){
+                        item.data.id = '';
                     }
-                });
+                    item.data[form._detnoColumn] = index + 1;
+                    dirtyGridData.push(item.data)
+                }
             });
         }   
         var params = {
-            main:formData,
-            items:newGridData
+            main:formData.main,
+            items:dirtyGridData
         }
-        Ext.Ajax.request({
+        me.BaseUtil.request({
             url: form._auditUrl,
             params: JSON.stringify(params),
             method: 'POST',
-            headers: {
-                'Access-Control-Allow-Origin': '*',
-                "Content-Type": 'application/json;charset=UTF-8' 
-            },
-            success: function (response, opts) {
-                //解析参数
+        })
+        .then(function(res) {
+            var localJson = new Ext.decode(res.responseText);
+            if(localJson.success){
+                debugger
                 Ext.Msg.alert('提示','审核成功');
-            },
-            failure: function (response, opts) {
-                //失败
-                Ext.Msg.alert('提示','审核失败');
+                form.FormUtil.loadData(form);
             }
+        })
+        .catch(function() {
+            Ext.Msg.alert('提示','审核失败');
         });
-    },
+    }
 });

+ 100 - 0
frontend/saas-web/app/view/core/form/MultiCombo.js

@@ -0,0 +1,100 @@
+/**
+ * Created by zhouy on 2018/10/17.
+ */
+Ext.define('saas.view.core.form.MultiCombo', {
+    extend: 'Ext.form.field.Trigger',
+    alias: 'widget.multicombo',
+    editable : false,
+    displayField:'display',
+    valueField:'value',
+    matchFieldWidth: true,
+    cachedConfig: {
+        menuAlign: 'tl-bl?',
+        destroyMenu: true
+    },
+    initComponent: function() {
+        var me = this;
+        me.callParent(arguments);
+    },
+    onTriggerClick:function(f){
+        this.showMenu();
+    },
+    getMenu: function() {
+        var me = this;
+
+        if (!me.menu) {
+
+            me.menu = Ext.create('Ext.menu.Menu',{
+                hideOnParentHide: false,
+                items: me.getMenuItems()
+                //listners
+            });
+            me.fireEvent('menucreate', me, me.menu);
+        }
+        return me.menu;
+    },
+    getMenuItems:function(){
+        var me = this,
+            i = 0,
+            item,
+            items = me.datas;
+        itemsLn = me.datas.length,
+            menuItems = [];
+        for (; i < itemsLn; i++) {
+            item = items[i];
+            menuItem = new Ext.menu.CheckItem({
+                text: item[1],
+                checked: item.checked,
+                checkValue:item[0],
+                hideOnClick: false,
+                checkHandler: this.onCheckChange,
+                scope: this
+            });
+            menuItems.push(menuItem);
+        }
+        return menuItems.length ? menuItems : null;
+    },
+    onCheckChange:function(checkItem, checked){
+        var items=this.menu.items.items,
+            rawV,v;
+        Ext.Array.each(items,function(item){
+            if(item.checked){
+                rawV=rawV?rawV+','+item.text:item.text;
+                v=v?v+","+"'"+item.checkValue+"'":"'"+item.checkValue+"'";
+            }
+        });
+        this.setRawValue(rawV);
+        this.value=v;
+    },
+
+    showMenu: function (e, menu) {
+        var isPointerEvent = !e || e.pointerType;
+
+        menu = menu || this.getMenu();
+        /**
+         * menu上边框样式待处理
+         * */
+        if (menu) {
+            if (menu.isVisible()) {
+                // Click/tap toggles the menu visibility.
+                if (isPointerEvent) {
+                    menu.hide();
+                } else {
+                    menu.focus();
+                }
+            } else {
+                menu.autoFocus = !isPointerEvent;
+                if(this.matchFieldWidth){
+                    menu.setWidth(this.bodyEl.getWidth());
+                }
+                if (menu.isMenu) {
+                    menu.showBy(this.inputEl, this.getMenuAlign(),[-1, 0]);
+                } else if (menu.isViewportMenu) {
+                    menu.setDisplayed(!menu.getDisplayed());
+                } else {
+                    menu.show();
+                }
+            }
+        }
+    }
+});

+ 1 - 3
frontend/saas-web/app/view/main/MainController.js

@@ -21,9 +21,7 @@ Ext.define('saas.view.main.MainController', {
             mainTab = refs.mainTabPanel,
             // existingItem = mainTab.child(type),
             newView,
-            id = 'maintab-' + nodeData.id 
-
-,
+            id = 'maintab-' + nodeData.id,
             title = nodeData.text;
             existingItem = mainTab.down('[id=' + id + ']'),
             lastView = mainTab.getActiveTab();

+ 4 - 11
frontend/saas-web/app/view/purchase/purchase/QueryPanel.js

@@ -108,7 +108,7 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
         queryMode: 'local',
             displayField: 'pr_status',
             valueField: 'pr_statuscode',
-        store: Ext.create('Ext.data.ArrayStore', {
+            store: Ext.create('Ext.data.ArrayStore', {
             fields: ['pr_statuscode', 'pr_status'],
             data: [
                 ["$ALL", "全部"],
@@ -117,24 +117,17 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
             ]
         })
     }, {
-        xtype: 'combobox',
+        xtype: 'multicombo',
         name: 'pu_acceptstatuscode',
-        bind: '{pu_acceptstatuscode}',
+       // bind: '{pu_acceptstatuscode}',
         fieldLabel: '入库状态',
         allowBlank: true,
         columnWidth: 0.25,
-        queryMode: 'local',
-        displayField: 'pu_acceptstatus',
-        valueField: 'pu_acceptstatuscode',
-        store: Ext.create('Ext.data.ArrayStore', {
-            fields: ['pu_acceptstatuscode', 'pu_acceptstatus'],
-            data: [
-                ["$ALL", "全部"],
+        datas: [
                 ["TURNOUT", "已入库"],
                 ["NOOUT", "未入库"],
                 ["PARTOUT", "部分入库"]
             ]
-        })
     }],
     moreQueryFormItems: [{
         xtype: 'textfield',

+ 51 - 26
frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js

@@ -123,7 +123,7 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
         columns : [
             {
                 text : "序号", 
-                dataIndex : "pdDetno", 
+                dataIndex : "pd_pdno", 
                 width : 80.0, 
                 xtype : "rownumberer"
             }, {
@@ -163,53 +163,78 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
             }, 
             {
                 text : "数量", 
-                dataIndex : "pd_yqty", 
+                dataIndex : "pd_inqty", 
                 width : 120.0, 
                 xtype : "numbercolumn", 
                 items : null
             }, 
+            {
+                text : "仓库", 
+                dataIndex : "pd_whname", 
+                width : 120.0, 
+                xtype : "numbercolumn", 
+                items : null,
+                editor : {
+                    displayField : "display", 
+                    editable : true, 
+                    format : "", 
+                    hideTrigger : false, 
+                    maxLength : 100.0, 
+                    minValue : null, 
+                    positiveNum : false, 
+                    queryMode : "local", 
+                    store : null, 
+                    valueField : "value", 
+                    xtype : "dbfindtrigger"
+                }
+            },
             {
                 text : "单价", 
-                dataIndex : "pd_price", 
+                dataIndex : "pd_orderprice", 
                 width : 120.0, 
                 xtype : "numbercolumn", 
                 items : null
             }, 
-            {
+           {
+                text : "含税金额", 
+                dataIndex : "pd_total", 
+                width : 120.0, 
+                xtype : "numbercolumn"
+            }, {
                 text : "税率", 
                 dataIndex : "pd_taxrate", 
                 width : 120.0, 
                 xtype : "numbercolumn", 
                 items : null
             },
-            {
-                text : "含税金额", 
-                dataIndex : "pd_total", 
-                width : 120.0, 
-                xtype : "numbercolumn"
-            }, 
             {
                 text : "未税金额", 
-                dataIndex : "pd_taxtotal", 
+                dataIndex : "pd_nettotal", 
                 xtype : "numbercolumn"
-            },{
-                text : "需求日期", 
-                dataIndex : "pd_delivery", 
-                flex : 1.0, 
-                xtype:'datecolumn',
-                format : "Y-m-d H:i:s", 
-                editor : {
-                    xtype : "datetimefield",
-                    editable : true, 
-                    format : "Y-m-d H:i:s", 
-                    hideTrigger : false
-                }
             },
             {
-                text : "关联销售单号", 
-                dataIndex : "pd_salecode", 
+                text : "采购单号", 
+                dataIndex : "pd_ordercode", 
                 width : 120.0,
-                flex : 1.0
+                flex : 1.0,
+                editor : {
+                    displayField : "display", 
+                    editable : true, 
+                    format : "", 
+                    hideTrigger : false, 
+                    maxLength : 100.0, 
+                    minValue : null, 
+                    positiveNum : false, 
+                    queryMode : "local", 
+                    store : null, 
+                    valueField : "value", 
+                    xtype : "dbfindtrigger"
+                }
+            },{
+                text : "采购序号", 
+                dataIndex : "pd_orderdetno", 
+                xtype : "numbercolumn",
+                flex:1
             }
         ]
     }, {

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

@@ -47,8 +47,9 @@ Ext.define('saas.view.test.order.FormPanel', {
         name : "pu_date", 
         bind : "{pu_date}", 
         fieldLabel : "采购日期", 
-        allowBlank : true, 
-        columnWidth : 0.25
+        allowBlank : false, 
+        columnWidth : 0.25,
+        format:'Y-m-d'
     }, {
         xtype : "hidden", 
         name : "pu_vendid", 
@@ -126,7 +127,7 @@ Ext.define('saas.view.test.order.FormPanel', {
         columns : [
             {
                 text : "序号", 
-                dataIndex : "pdDetno", 
+                dataIndex : "pd_detno", 
                 width : 80.0, 
                 xtype : "rownumberer"
             }, 
@@ -185,23 +186,18 @@ Ext.define('saas.view.test.order.FormPanel', {
                 dataIndex : "pd_taxtotal", 
                 flex : 1.0, 
                 xtype : "numbercolumn"
-            }, 
-            {
-                text : "id", 
-                dataIndex : "id", 
-                flex : 1.0, 
-                xtype : "numbercolumn"
             }
         ]
     }, {
         format : "Y-m-d", 
-        xtype : "datetimefield", 
+        xtype : "datefield", 
         name : "createTime", 
         bind : "{createTime}", 
         fieldLabel : "创建时间", 
         allowBlank : true, 
         columnWidth : 0.25
     }, {
+        format : "Y-m-d",
         xtype : "datefield", 
         name : "updateTime", 
         bind : "{updateTime}", 
@@ -212,19 +208,29 @@ Ext.define('saas.view.test.order.FormPanel', {
         xtype : "textfield", 
         readOnly : true, 
         editable : false, 
-        name : "puStatus", 
-        bind : "{puStatus}", 
+        name : "pu_status", 
+        bind : "{pu_status}", 
         fieldLabel : "单据状态", 
         allowBlank : true, 
         columnWidth : 0.25
-    }, {
-        xtype : "hidden", 
-        readOnly : true, 
-        editable : false, 
+    }, 
+    // {
+    //     xtype : "hidden", 
+    //     readOnly : true, 
+    //     editable : false, 
+    //     name : "pu_statuscode", 
+    //     bind : "{pu_statuscode}", 
+    //     fieldLabel : "单据状态码", 
+    //     allowBlank : true, 
+    //     columnWidth : 0.0
+    // },
+    {
+        xtype : "textfield", 
         name : "pu_statuscode", 
         bind : "{pu_statuscode}", 
-        fieldLabel : "单据状态码", 
+        fieldLabel : "忽略字段", 
+        ignore:true,
         allowBlank : true, 
-        columnWidth : 0.0
+        columnWidth : 0.25
     }]
 });

+ 6 - 0
frontend/saas-web/ext/build/ext-all-rtl-debug.js

@@ -206312,6 +206312,12 @@ Ext.define('Ext.form.field.Date', {
             rawDate;
         me.lastValue = me.rawDateText;
         me.lastDate = me.rawDate;
+        //解析后台日期格式为 Y-m-d
+        if(v&&(typeof v) == "string"&&v.indexOf('.')==19&&v.indexOf('T')==10){
+            var d = new Date(v);
+            var times=d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate(); //+ ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds(); 
+            v = times;
+        }
         if (Ext.isDate(v)) {
             rawDate = me.rawDate = v;
             me.rawDateText = me.formatDate(v);