Browse Source

12月项目跟进分析

xiaohaizhao 6 months ago
parent
commit
27e8f237a2

+ 1 - 1
salesPanel/dataOverview/Client/followUpAnalysis.js

@@ -66,7 +66,7 @@ Component({
                         name: getMapText('同比增长率'),
                         type: 'line',
                         yAxisIndex: 2,
-                        data: data.tbzzl.map(v => (v.value * 100).toFixed(2)),
+                        data: data.tbzzl.map(v => v.value),
                         smooth: true
                     }
                 ]

+ 170 - 0
salesPanel/dataOverview/Project/followUpAnalysis.js

@@ -0,0 +1,170 @@
+const _Http = getApp().globalData.http;
+import * as echarts from '../../ec-canvas/echarts';
+Component({
+    options: {
+        addGlobalClass: true
+    },
+    lifetimes: {
+        attached: function () {
+            getApp().globalData.Language.getLanguagePackage(this)
+        }
+    },
+    data: {
+        year: new Date().getFullYear().toString(),
+        "content": {
+            dataid: wx.getStorageSync('userMsg').userid,
+            username: wx.getStorageSync('userMsg').name,
+            enddate: new Date().toISOString().split('T')[0],
+            where: {}
+        }
+    },
+    methods: {
+        async getList(init = false) {
+            let content = this.data.content
+            const {
+                dataid,
+                type,
+                username,
+                isleave
+            } = getCurrentPages()[getCurrentPages().length - 1].data;
+            if (content.dataid != dataid || content.type != type || isleave != isleave) init = true
+            content.dataid = dataid;
+            content.type = type;
+            content.username = username;
+            content.where.isleave = isleave;
+
+            _Http.basic({
+                "id": 20231018163004,
+                content
+            }).then(res => {
+                if (res.code != '1') return wx.showToast({
+                    title: res.data,
+                    icon: "none"
+                })
+                this.initChart(res.data)
+            })
+        },
+        initChart(data) {
+            console.log("data", data)
+            const colors = ['#6CD2A1', '#5F9DFC', '#ECB937', '#F69240'],
+                getMapText = getApp().globalData.Language.getMapText;
+            let legend = [getMapText('去年同期跟进'), getMapText('本期跟进'), `${getMapText('同比增长率')}`],
+                series = [{
+                        name: getMapText('去年同期跟进'),
+                        type: 'bar',
+                        data: data.followup.filter(v => v.key == '去年同期跟进').map(v => v.value),
+                        smooth: true
+                    },
+                    {
+                        name: getMapText('本期跟进'),
+                        type: 'bar',
+                        yAxisIndex: 1,
+                        data: data.followup.filter(v => v.key == '本期跟进').map(v => v.value),
+                        smooth: true
+                    },
+                    {
+                        name: getMapText('同比增长率'),
+                        type: 'line',
+                        yAxisIndex: 2,
+                        data: data.tbzzl.map(v => v.value),
+                        smooth: true
+                    }
+                ]
+            const option = {
+                color: colors,
+                tooltip: {
+                    trigger: 'axis',
+                    confine: true, // Ensure tooltip stays within the chart area
+                    formatter: function (params) {
+                        let tooltipText = '';
+                        params.forEach((item, index) => {
+                            tooltipText += `${index==0?item.axisValue+'\n':''}${item.marker}${item.seriesName}: ${item.value}${item.seriesName == getMapText('同比增长率')||item.seriesName == getMapText('准交率') ? '%' : ''}\n`;
+                        });
+                        return tooltipText;
+                    },
+                    textStyle: {
+                        fontSize: 10, // Reduced font size
+                        lineHeight: 14 // Adjusted line height for smaller tooltip height
+                    }
+                },
+                legend: {
+                    data: legend
+                },
+                xAxis: [{
+                    type: 'category',
+                    axisTick: {
+                        alignWithLabel: true
+                    },
+                    data: data.tbzzl.map(v => v.date),
+                    axisLabel: {
+                        interval: 0,
+                        rotate: 45
+                    }
+                }],
+                yAxis: [{
+                        type: 'value',
+                        name: '',
+                        position: 'right',
+                        offset: 80,
+                        alignTicks: true,
+                        axisLine: {
+                            show: true,
+                        },
+                        axisLabel: {
+                            formatter: '{value}'
+                        }
+                    },
+                    {
+                        type: 'value',
+                        name: '',
+                        position: 'left',
+                        alignTicks: true,
+                        axisLine: {
+                            show: false,
+                        },
+                        axisLabel: {
+                            formatter: '{value}',
+                            rotate: 45
+                        }
+                    },
+                    {
+                        type: 'value',
+                        name: '',
+                        position: 'right',
+                        alignTicks: true,
+                        offset: 80,
+                        axisLine: {
+                            show: false,
+                            lineStyle: {
+                                color: colors[1]
+                            }
+                        },
+                        axisLabel: {
+                            formatter: '{value}'
+                        }
+                    },
+
+                ],
+                series
+            };
+            this.chartComponent = this.selectComponent('#mychart');
+            this.chartComponent.init((canvas, width, height, dpr) => {
+                const chart = echarts.init(canvas, null, {
+                    width,
+                    height,
+                    devicePixelRatio: dpr
+                });
+                chart.setOption(option);
+                return chart;
+            });
+        },
+        changeDate({
+            detail
+        }) {
+            this.setData({
+                "content.enddate": detail
+            })
+            this.getList(true)
+        },
+    }
+})

+ 6 - 0
salesPanel/dataOverview/Project/followUpAnalysis.json

@@ -0,0 +1,6 @@
+{
+    "component": true,
+    "usingComponents": {
+        "ec-canvas": "../../ec-canvas/ec-canvas"
+    }
+}

+ 7 - 0
salesPanel/dataOverview/Project/followUpAnalysis.scss

@@ -0,0 +1,7 @@
+@import "../../customerBlance/index.scss";
+
+.chart2 {
+	ec-canvas {
+		top: -590rpx;
+	}
+}

+ 7 - 0
salesPanel/dataOverview/Project/followUpAnalysis.wxml

@@ -0,0 +1,7 @@
+<viewDate title='分析日期' bind:onChange='changeDate' />
+<view class="global-card">
+	<view class="chart"></view>
+</view>
+<view class="chart2">
+	<ec-canvas id="mychart" canvas-id="chart" ec="{{ ec }}"></ec-canvas>
+</view>

+ 3 - 0
salesPanel/dataOverview/list/Project.js

@@ -22,6 +22,9 @@ Component({
         }, {
             label: "近12月项目报价分析",
             model: "#ProjectQuotationQuantity"
+        }, {
+            label: "近12月项目跟进分析",
+            model: "#followUpAnalysis"
         }],
         init: false
     },

+ 2 - 1
salesPanel/dataOverview/list/Project.json

@@ -2,6 +2,7 @@
     "component": true,
     "usingComponents": {
         "DataOverview": "../Project/dataOverview",
-        "ProjectQuotationQuantity": "../Project/ProjectQuotationQuantity"
+        "ProjectQuotationQuantity": "../Project/ProjectQuotationQuantity",
+        "followUpAnalysis": "../Project/followUpAnalysis"
     }
 }

+ 1 - 0
salesPanel/dataOverview/list/Project.wxml

@@ -1,4 +1,5 @@
 <Yl_FunTabs id='Yl_FunTabs' safety='{{false}}' list='{{tabsList}}' mode='buts' active='{{tabsActive}}' bind:onChenge="tabsChange">
     <DataOverview slot='数据概况' id='DataOverview' />
     <ProjectQuotationQuantity slot='近12月项目报价分析' id='ProjectQuotationQuantity' />
+    <followUpAnalysis slot='近12月项目跟进分析' id='followUpAnalysis' />
 </Yl_FunTabs>