zhuth пре 7 година
родитељ
комит
7d8b359121

+ 2 - 2
frontend/saas-web/app/model/chart/DataXY.js

@@ -3,10 +3,10 @@ Ext.define('saas.model.chart.DataXY', {
 
     fields: [
         {
-            name: 'xvalue'
+            name: 'x'
         },
         {
-            name: 'yvalue'
+            name: 'y'
         }
     ]
 });

+ 52 - 42
frontend/saas-web/app/view/core/chart/Pie.js

@@ -1,6 +1,6 @@
 Ext.define('saas.view.core.chart.Pie', {
     extend: 'saas.view.core.chart.ChartBase',
-    xtype: 'core-chart-pie',
+    xtype: 'month_sale',
 
     requires: [
         'Ext.chart.PolarChart',
@@ -11,45 +11,55 @@ Ext.define('saas.view.core.chart.Pie', {
 
     iconCls: 'x-fa fa-pie-chart',
 
-    items: [{
-        xtype: 'polar',
-        colors: [
-            '#aed581',
-            '#6aa5db',
-            '#ee929c',
-            '#61A0A8',
-            '#D48265',
-            '#91C7AE',
-            '#CA8622',
-            '#BDA29A'
-        ],
-        bind: '{pieData}',
-        // series: [{
-        //     type: 'pie',
-        //     angleField: 'yvalue',
-        //     label: {
-        //         field: 'xvalue',
-        //         display: 'rotate',
-        //         contrast: true,
-        //         font: '12px Open Sans',
-        //     },
-        //     // xField: 'yvalue'
-        // }],
-        series: [{
-            type: 'pie',
-            angleField: 'yvalue',
-            label: {
-                field: 'xvalue',
-            },
-            highlight: true,
-            tooltip: {
-                trackMouse: true,
-                renderer: 'onSeriesTooltipRender'
-            }
-        }],
-        // legend: {
-        //     docked: 'bottom'
-        // },
-        interactions: 'rotate'
-    }]
+    initComponent: function() {
+        var me = this;
+
+        Ext.apply(me, {
+            items: [{
+                xtype: 'polar',
+                width: '100%',
+                height: 500,
+                innerPadding: me.innerPadding || 20,
+                interactions: ['rotate', 'itemhighlight'],
+                donut: 30,
+                colors: [
+                    '#2C82BE',
+                    '#27A7FF',
+                    '#82CCFF',
+                    '#53A8E2',
+                    '#76DDFB',
+                    '#DBECF8',
+                ],
+                bind: {
+                    store: '{month_sale}',
+                },
+                style: {
+                    border: 'none'
+                },
+                series: [{
+                    type: 'pie',
+                    angleField: me.yfield || 'yvalue',
+                    label: {
+                        field: me.xfield || 'xvalue',
+                        display: 'rotate'
+                    },
+                    donut: 55,
+                    highlight: true,
+                    tooltip: {
+                        trackMouse: true,
+                        renderer: me.onSeriesTooltipRender
+                    }
+                }],
+                // legend: {
+                //     docked: 'bottom'
+                // },
+            }]
+        });
+
+        me.callParent(arguments);
+    },
+
+    onSeriesTooltipRender: function (tooltip, record, item) {
+        tooltip.setHtml(record.get('xvalue') + ': ' + record.get('data1') + '%');
+    }
 });

+ 42 - 22
frontend/saas-web/app/view/core/form/FormPanelController.js

@@ -12,7 +12,7 @@ Ext.define('saas.view.core.form.FormPanelController', {
         viewModel = me.getViewModel(),
         status = viewModel.get(statusCodeField);
 
-        status == 'AUDITED' ? me.unAudit() : me.audit();
+        status == 'AUDITED' ? me.onUnAudit() : me.onAudit();
     },
 
     add: function(){
@@ -179,13 +179,11 @@ Ext.define('saas.view.core.form.FormPanelController', {
         });
     },
 
-    audit: function(){
+    onAudit: function(){
         var me = this,
         form = this.getView(),
-        detailCount = form.detailCount,
         viewModel = me.getViewModel(),
-        id = viewModel.get(form._idField),
-        modelData = viewModel.getData();
+        id = viewModel.get(form._idField);
 
         var dirty = form.isDirty();
 
@@ -209,7 +207,17 @@ Ext.define('saas.view.core.form.FormPanelController', {
         if(!form.beforeAudit()) {
             return false;
         }
-        
+
+        me.audit();
+    },
+
+    audit: function() {
+        var me = this,
+        form = me.getView(),
+        viewModel = me.getViewModel(),
+        detailCount = form.detailCount,
+        modelData = viewModel.getData();
+
         //form里面数据
         var formData = form.getFormData();
         var params = {
@@ -269,7 +277,8 @@ Ext.define('saas.view.core.form.FormPanelController', {
             form.fireEvent('afteraudit', false, form, res);
         });
     },
-    unAudit: function() {
+
+    onUnAudit: function() {
         var me = this;
         var form = this.getView();
         var viewModel = me.getViewModel();
@@ -281,23 +290,34 @@ Ext.define('saas.view.core.form.FormPanelController', {
                 return false;
             }
 
-            me.BaseUtil.request({
-                url: form._unAuditUrl+id,
-                method: 'POST',
-            })
-            .then(function(localJson) {
-                if(localJson.success){
-                    //解析参数
-                    showToast('反审核成功');
-                    form.FormUtil.loadData(form);
-                }
-            })
-            .catch(function(res) {
-                console.error(res);
-                showToast('反审核失败: ' + res.message);
-            });
+            me.unAudit();
         }
     },
+
+    unAudit: function() {
+        var me = this;
+        var form = this.getView();
+        var viewModel = me.getViewModel();
+        var id = viewModel.get(form._idField);
+        var code = viewModel.get(form._codeField);
+
+        me.BaseUtil.request({
+            url: form._unAuditUrl+id,
+            method: 'POST',
+        })
+        .then(function(localJson) {
+            if(localJson.success){
+                //解析参数
+                showToast('反审核成功');
+                form.FormUtil.loadData(form);
+            }
+        })
+        .catch(function(res) {
+            console.error(res);
+            showToast('反审核失败: ' + res.message);
+        });
+    },
+
     codeEditorBlur: function(e) {
         var me = this,
         viewModel = me.getViewModel(),

+ 14 - 19
frontend/saas-web/app/view/home/Home.js

@@ -32,25 +32,20 @@ Ext.define('saas.view.home.Home', {
         xtype: 'panel',
         title: '2018年11月经营分析',
         latyout: 'responsivecolumn',
-        // items: [{
-        //     xtype: 'core-chart-pie',
-        //     userCls: 'big-33 small-50',
-        //     chartConfig: {
-        //         captions: {
-        //             credits: {
-        //                 text: 'Data: IDC Predictions - 2017\n' +
-        //                     'Source: Internet',
-        //                 align: 'left'
-        //             }
-        //         },
-        //     }
-        // }, {
-        //     xtype: 'core-chart-bar',
-        //     userCls: 'big-33 small-50',
-        // }, {
-        //     xtype: 'core-chart-gauge',
-        //     userCls: 'big-33 small-50',
-        // }]
+        defaults: {
+            cls: 'x-home-chart',
+            margin: '0 0 0 14'
+        },
+        items: [{
+            xtype: 'month-sale',
+            userCls: 'big-33 small-50',
+        }, {
+            xtype: 'month-purchase',
+            userCls: 'big-33 small-50',
+        }, {
+            xtype: 'core-chart-gauge',
+            userCls: 'big-33 small-100',
+        }]
     }, {
         title: '2018年11月经营分析',
         latyout: 'column',

+ 19 - 0
frontend/saas-web/app/view/home/Home.scss

@@ -132,6 +132,19 @@ $unaudit-purc-container-color: dynamic(#e91e63);
     }
 }
 
+.x-home-chart {
+    box-shadow: none;
+
+    .x-panel-header-default {
+        background-color: #fff;
+
+        .x-panel-header-title-default > .x-title-icon-wrap-default > .x-title-icon-default,
+        .x-panel-header-title-default > .x-title-text-default {
+            color: #485465;
+        }
+    }
+}
+
 .x-responsivecolumn {
     padding: 0;
 }
@@ -147,21 +160,25 @@ $unaudit-purc-container-color: dynamic(#e91e63);
 }
 
 .big-50 {
+    float: left;
     // width: 50%;
     @include responsivecolumn-item(50%);
 }
 
 .big-40 {
+    float: left;
     // width: 40%;
     @include responsivecolumn-item(40%);
 }
 
 .big-33 {
+    float: left;
     // width: 33.33%;
     @include responsivecolumn-item(33.33%);
 }
 
 .big-20 {
+    float: left;
     // width: 20%;
     @include responsivecolumn-item(20%);
 }
@@ -171,11 +188,13 @@ $unaudit-purc-container-color: dynamic(#e91e63);
 
  .x-responsivecolumn-small {
      > .small-100 {
+        float: left;
         // width: 100%;
         @include responsivecolumn-item(100%);
      }
 
      > .small-50 {
+        float: left;
         // width: 50%;
         @include responsivecolumn-item(50%);
      }

+ 4 - 3
frontend/saas-web/app/view/home/HomeController.js

@@ -2,7 +2,8 @@ Ext.define('saas.view.home.HomeController', {
     extend: 'Ext.app.ViewController',
     alias: 'controller.home',
 
-    onSeriesTooltipRender: function (tooltip, record, item) {
-        tooltip.setHtml(record.get('os') + ': ' + record.get('data1') + '%');
-    }
+    onDataRender: function (v) {
+        return v + '%';
+    },
+    
 });

+ 44 - 13
frontend/saas-web/app/view/home/HomeModel.js

@@ -3,7 +3,8 @@ Ext.define('saas.view.home.HomeModel', {
     alias: 'viewmodel.home',
 
     data: {
-        month_sale_sum: '0'
+        month_sale_amount: '0',
+        month_purchase_amount: '0'
     },
 
     stores: {
@@ -36,6 +37,47 @@ Ext.define('saas.view.home.HomeModel', {
                 }
             }
         },
+
+        month_sale: {
+            model: 'saas.model.chart.DataXY',
+            // url: 'http://192.168.253.58:8920/homePage/liveData',
+            data: [{
+                "xvalue": "无",
+                "yvalue": 1
+            }],
+            listeners: {
+                load: function() {
+                    console.log();
+                }
+            }
+        },
+
+        month_purchase: {
+            model: 'saas.model.chart.DataXY',
+            autoLoad: true,
+            proxy: {
+                type: 'ajax',
+                url: 'http://192.168.253.58:8920/homePage/purchaseData?sixMonths=false',
+                // url: '/api/commons/homePage/liveData',
+                reader: {
+                    type: 'json'
+                },
+                listeners: {
+                    exception: function(proxy, response, operation, eOpts) {
+                        Ext.getCmp('month-purchase').setLoading(false);
+                    }
+                }
+            },
+            listeners: {
+                beforeload: function() {
+                    Ext.getCmp('month-purchase').setLoading(true);
+                },
+                load: function(s, d) {
+                    Ext.getCmp('month-purchase').setLoading(false);
+                }
+            }
+        },
+
         barData: {
             model: 'saas.model.chart.DataXY',
             data: [
@@ -284,18 +326,7 @@ Ext.define('saas.view.home.HomeModel', {
             ]
         },
 
-        pieData: {
-            model: 'saas.model.chart.DataXY',
-            data: [{
-                "xvalue": "无",
-                "yvalue": 1
-            }],
-            listeners: {
-                load: function() {
-                    console.log();
-                }
-            }
-        },
+        
 
         areaData: {
             model: 'saas.model.chart.MultiDataXY',

+ 0 - 2
frontend/saas-web/app/view/home/InfoCard.js

@@ -113,8 +113,6 @@ Ext.define('saas.view.home.InfoCard', {
             datas.push(d);
         }
 
-        console.log(datas);
-
         Ext.Array.each(datas, function(d, i) {
 
             var store = Ext.create('Ext.data.Store', {

+ 72 - 0
frontend/saas-web/app/view/home/charts/MonthPurchase.js

@@ -0,0 +1,72 @@
+Ext.define('saas.view.home.charts.MonthPurchase', {
+    extend: 'saas.view.core.chart.ChartBase',
+    xtype: 'month-purchase',
+
+    requires: [
+        'Ext.chart.CartesianChart',
+        'Ext.chart.axis.Category',
+        'Ext.chart.axis.Numeric',
+        'Ext.chart.interactions.PanZoom',
+        'Ext.chart.series.Bar'
+    ],
+
+    id: 'month-purchase',
+
+    iconCls: 'x-fa fa-bar-chart',
+
+    bind: {
+        title: '本月采购额(万元):{month_purchase_amount}',
+    },
+
+    items: [{
+        xtype: 'cartesian',
+        colors: [
+            '#34BAF6'
+        ],
+        bind: '{month_purchase}',
+        axes: [{
+            type: 'category',
+            fields: [
+                'x'
+            ],
+            hidden: true,
+            position: 'bottom'
+        },{
+            type: 'numeric',
+            fields: [
+                'y'
+            ],
+            grid: {
+                odd: {
+                    fill: '#e8e8e8'
+                }
+            },
+            hidden: true,
+            position: 'left'
+        }],
+        series: [{
+            type: 'bar',
+            xField: 'x',
+            yField: [
+                'y'
+            ]
+        }],
+        platformConfig: {
+            phone: {
+                // On a phone the whole view becomes a vertical strip of charts,
+                // which makes it impossible to scroll the view if touch action
+                // started on a chart. So we use a custom touchAction config.
+                touchAction: {
+                    panX: true,
+                    panY: true
+                }
+            },
+            '!phone': {
+                interactions: {
+                    type: 'panzoom',
+                    zoomOnPanGesture: true
+                }
+            }
+        }
+    }]
+});

+ 71 - 0
frontend/saas-web/app/view/home/charts/MonthSale.js

@@ -0,0 +1,71 @@
+Ext.define('saas.view.home.charts.MonthSale', {
+    extend: 'saas.view.core.chart.ChartBase',
+    xtype: 'month-sale',
+
+    requires: [
+        'Ext.chart.PolarChart',
+        'Ext.chart.interactions.Rotate',
+        'Ext.chart.series.Pie',
+        'Ext.chart.series.sprite.PieSlice'
+    ],
+
+    id: 'month_sale',
+
+    iconCls: 'x-fa fa-pie-chart',
+
+    bind: {
+        title: '本月销售额(万元):{month_sale_amount}',
+    },
+
+    initComponent: function() {
+        var me = this;
+
+        Ext.apply(me, {
+            items: [{
+                xtype: 'polar',
+                width: '100%',
+                height: 500,
+                innerPadding: me.innerPadding || 20,
+                interactions: ['rotate', 'itemhighlight'],
+                donut: 30,
+                colors: [
+                    '#2C82BE',
+                    '#27A7FF',
+                    '#82CCFF',
+                    '#53A8E2',
+                    '#76DDFB',
+                    '#DBECF8',
+                ],
+                bind: {
+                    store: '{month_sale}',
+                },
+                style: {
+                    border: 'none'
+                },
+                series: [{
+                    type: 'pie',
+                    angleField: me.yfield || 'yvalue',
+                    label: {
+                        field: me.xfield || 'xvalue',
+                        display: 'rotate'
+                    },
+                    donut: 55,
+                    highlight: true,
+                    tooltip: {
+                        trackMouse: true,
+                        renderer: me.onSeriesTooltipRender
+                    }
+                }],
+                // legend: {
+                //     docked: 'bottom'
+                // },
+            }]
+        });
+
+        me.callParent(arguments);
+    },
+
+    onSeriesTooltipRender: function (tooltip, record, item) {
+        tooltip.setHtml(record.get('xvalue') + ': ' + record.get('data1') + '%');
+    }
+});

+ 36 - 1
frontend/saas-web/app/view/money/payBalance/FormPanel.js

@@ -373,5 +373,40 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
         xtype: 'hidden',
         name: 'pb_text5',
         fieldLabel: '自定义字段5'
-    }]
+    }],
+
+    beforeAudit: function() {
+        var form = this,
+        idField = form._idField,
+        controller = form.getController(),
+        viewModel = form.getViewModel(),
+        id = viewModel.get(idField);
+        store1 = viewModel.get('detail0').detailStore,
+        store2 = viewModel.get('detail1').detailStore;
+
+        // 已保存过的单据不进行此项校验
+        if(id) {
+            return true;
+        }
+
+        var sum_pd_amount = store1.sum('pd_amount'); // 付款金额合计
+        var pb_discounts = viewModel.get('pb_discounts'); // 折扣金额
+        var sum_pbd_nowbalance = store2.sum('pbd_nowbalance'); // 本次核销金额合计
+
+        var flag = sum_pd_amount + pb_discounts - sum_pbd_nowbalance;
+         viewModel.set("pb_preamount",flag);
+        if(flag != 0) {
+            var t = flag > 0 ? '大' : '小';
+
+            showConfirm('提示', '付款金额' + t + '于本次折扣后核销金额,是否仍要保存并审核?')
+            .then(function(y) {
+                if(y == 'yes') {
+                    controller.audit();
+                }
+            });
+        }else {
+            controller.audit();
+        }
+        return false;
+    }
 });

+ 0 - 2
frontend/saas-web/app/view/money/payBalance/FormPanelController.js

@@ -335,7 +335,5 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
             c ='';
         }
         dbfindtrigger.defaultCondition = "sl_vendid<>0 and sl_kind in ('期初余额','采购验收单','采购验退单') and sl_namount<>0" + c;
-        console.log(dbfindtrigger.defaultCondition);
-
     }
 });

+ 37 - 1
frontend/saas-web/app/view/money/recBalance/FormPanel.js

@@ -334,5 +334,41 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         name: "rb_recorddate",
         fieldLabel: "录入日期",
         hidden: true
-    }]
+    }],
+
+    beforeAudit: function() {
+        var form = this,
+        idField = form._idField,
+        controller = form.getController(),
+        viewModel = form.getViewModel(),
+        id = viewModel.get(idField);
+        store1 = viewModel.get('detail0').detailStore,
+        store2 = viewModel.get('detail1').detailStore;
+
+        // 已保存过的单据不进行此项校验
+        if(id) {
+            return true;
+        }
+
+        var sum_rd_amount = store1.sum('rd_amount'); // 付款金额合计
+        var rb_discounts = viewModel.get('rb_discounts'); // 折扣金额
+        var sum_rbd_nowbalance = store2.sum('rbd_nowbalance'); // 本次核销金额合计
+
+        var flag = sum_rd_amount + rb_discounts - sum_rbd_nowbalance;
+
+        viewModel.set("rb_preamount",flag);
+        if(flag != 0) {
+            var t = flag > 0 ? '大' : '小';
+
+            showConfirm('提示', '付款金额' + t + '于本次折扣后核销金额,是否仍要保存并审核?')
+            .then(function(y) {
+                if(y == 'yes') {
+                    controller.audit();
+                }
+            });
+        }else {
+            controller.audit();
+        }
+        return false;
+    }
 });