zhengjinyi 1 рік тому
батько
коміт
530fd66ed8

+ 10 - 0
src/main/java/com/caimei/www/controller/authorized/AccountController.java

@@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 public class AccountController extends BaseController {
     /** 登录 */
     private static final String LOGIN_PATH = "account/login";
+    private static final String LOGIN_FAST = "account/login-fast";
     private static final String SUPPLIER_LOGIN_PATH = "account/supplierTologin";
     private static final String REGISTER_SUPPLIER_LOGIN = "supplier_login/index";
     private static final String REGISTER_SUPPLIER_LOGIN_MORE = "supplier_login/more";
@@ -32,6 +33,7 @@ public class AccountController extends BaseController {
     /** 供应商编辑资料 */
     private static final String SUPPLIER_INFORMATION = "account/supplier-information";
 
+
     /**
      * 登录页
      */
@@ -40,6 +42,14 @@ public class AccountController extends BaseController {
         return LOGIN_PATH;
     }
 
+    /**
+     * 供应商快捷登录
+     */
+    @GetMapping("/login-fast.html")
+    public String loginFast() {
+        return LOGIN_FAST;
+    }
+
     /**
      * supplier登录页
      */

+ 8 - 0
src/main/java/com/caimei/www/controller/authorized/supplier/SupplierPageController.java

@@ -102,6 +102,8 @@ public class SupplierPageController extends BaseController {
     private static final String ENCYCLOPEDIA_EDIT = "supplier-center/encyclopedia/edit";
     /** 供应商采美百科词条预览页面 */
     private static final String ENCYCLOPEDIA_PREVIEW = "supplier-center/encyclopedia/preview";
+    /** 供应商采美百科词条预览页面 */
+    private static final String SHOP_CHART = "supplier-center/encyclopedia/chart";
 
     /** 我的采美 */
     @GetMapping("/supplier/dashboard.html")
@@ -340,6 +342,12 @@ public class SupplierPageController extends BaseController {
         return ENCYCLOPEDIA_PREVIEW;
     }
 
+    /** 意向客户数据汇总 */
+    @GetMapping("/supplier/chart.html")
+    public String shopChart(){
+        return SHOP_CHART;
+    }
+
     /*
     // 供应商采美百科商品列表页面
     @GetMapping("/supplier/encyclopedia/product-list.html")

+ 61 - 0
src/main/resources/static/css/supplier-center/encyclopedia/chart.css

@@ -0,0 +1,61 @@
+/*PC端**/
+ @media screen and (min-width:768px) {
+  body{background-color: #F5F5F5;}
+  header{box-shadow: none;}
+  table, td, th{border: none;}
+  .baseHeadCenter.account .wrap{padding-top: 10px;}
+  .baseHeadCenter.account{border-bottom: none;}
+  .header-title{float: left;}
+  .header-title p{line-height: 76px;font-size: 24px;color: #333333;font-weight: bold;}
+  .header-title span{line-height: 76px;font-size: 16px;color: #333333;font-weight: normal;}
+  .chart-content{width: 1200px;margin: 0 auto;}
+  .chart-content .chart-title{ width: 100%;float: left; line-height: 80px;font-size: 24px;color: #333333;font-weight: bold;}
+  .chart-content .chart-title span{line-height: 80px;font-size: 16px;color: #333333;font-weight: normal;}
+  .chart-content-text{ min-height: 248px;width: 100%;box-sizing: border-box;padding: 24px;background: #FFFFFF;float: left;margin-bottom: 100px; }
+  .chart-content-text h1,.chart-content-text p{font-size: 14px;color: #666666;line-height: 28px;}
+  .chart-content-main{width: 100%;height: auto;float: left;margin-bottom: 16px;}
+  .chart-main-top{width: 100%;height: 676px; margin-top: 16px;}
+  .chart-main-top img{width: 100%;height: 676px;}
+  .chart-main-box{width: 592px;height: 420px;background: #FFFFFF;box-sizing: border-box;padding: 24px;}
+  .chart-main-box.le{float: left;}
+  .chart-main-box.ri{float: right;}
+  .chart-main-min{width: 592px;height: 320px;background: #FFFFFF;box-sizing: border-box;padding: 24px;}
+  .chart-main-min-title{width: 100%;line-height: 28px;font-size: 18px;font-weight: bold;color: #666666;margin-bottom: 30px;}
+  .chart-main-max{width: 100%;height: 485px;background: #FFFFFF;box-sizing: border-box;padding: 24px;}
+  .chart-main-min.le{float: left;}
+  .chart-main-min.ri{float: right;}
+  .chart-main-468{width: 468px;height: 360px;background: #FFFFFF;box-sizing: border-box;padding: 24px;float: left;}
+  .chart-main-568{width: 568px;height: 360px;background: #FFFFFF;box-sizing: border-box;padding: 24px;float: left;}
+  .chart-main-568 img{width: 100%;height: 100%;display: block;}
+  .chart-main-300{width: 300px;height: 360px;background: #FFFFFF;box-sizing: border-box;padding: 24px;float: right;margin-left: 16px;}
+  .chart-main-400{width: 400px;height: 360px;background: #FFFFFF;box-sizing: border-box;padding: 24px;float: right;margin-left: 16px;}
+  .chart-main-390{width: 390px;height: 360px;background: #FFFFFF;box-sizing: border-box;padding: 24px;float: left;margin-right: 15px;}
+  .chart-main-390.none{margin-right: 0;}
+}
+
+/*移动端**/
+ @media screen and (max-width:768px){
+  body{background-color: #F5F5F5;}
+  header{box-shadow: none;}
+  table, td, th{border: none;}
+  .baseHeadCenter.account .wrap{padding-top: 10px;}
+  .baseHeadCenter.account{border-bottom: none;}
+  .header-title{display: none;}
+  .chart-content{width: 100%;margin: 0 auto;box-sizing: border-box;padding: 3vw;}
+  .chart-title{ width: 100%;float: left; line-height: 8vw;font-size: 4vw;color: #333333;font-weight: bold;}
+  .chart-title span{line-height: 8vw;font-size: 16px;color: #333333;font-weight: normal;}
+  .chart-content-text{ min-height: 60vw;width: 100%;box-sizing: border-box;padding: 3vw;background: #FFFFFF;float: left;margin-bottom: 10vw; }
+  .chart-content-text h1,.chart-content-text p{font-size: 3.4vw;color: #666666;line-height: 6vw;}
+  .chart-content-main{width: 100%;height: auto;float: left;margin-bottom: 16px;}
+  .chart-main-box{width: 100%;height: 86vw;background: #FFFFFF;box-sizing: border-box;padding: 3vw;}
+  .chart-main-box.le{float: left;margin-bottom: 16px;}
+  .chart-main-box.ri{float: left;}
+  .chart-main-min{width: 100%;height: 42vw;background: #FFFFFF;box-sizing: border-box;padding: 3vw;}
+  .chart-main-max{width: 100%;height: 86vw;background: #FFFFFF;box-sizing: border-box;padding: 3vw;}
+  .chart-main-min.le{float: left;margin-bottom: 16px;}
+  .chart-main-min.ri{float: left;}
+  .chart-main-568{width: 100%;height: 86vw;background: #FFFFFF;box-sizing: border-box;padding: 3vw;float: left;margin-bottom: 16px;}
+  .chart-main-468{width: 100%;height: 86vw;background: #FFFFFF;box-sizing: border-box;padding: 3vw;float: left;margin-bottom: 16px;}
+  .chart-main-400{width: 100%;height: 86vw;background: #FFFFFF;box-sizing: border-box;padding: 3vw;float: left;margin-bottom: 16px;}
+  .chart-main-300{width: 100%;height: 60vw;background: #FFFFFF;box-sizing: border-box;padding: 3vw;float: left;margin-bottom: 16px;}
+}

+ 929 - 0
src/main/resources/static/js/supplier-center/encyclopedia/chart.js

@@ -0,0 +1,929 @@
+/**
+ * Created by xw on 2023/10/31.
+ */
+const chartContent = new Vue({
+    el:"#chartContent",
+    data: {
+        isEfficacy:false,
+        form:{
+            shareCode:'',
+            shopOrderId:''
+        },
+        rules: {
+            shareCode: [{required: true,message: '请输入分享码',trigger: 'blur'}]
+        },
+        dataList:[
+            {
+                title:"首页",
+                image:'https://img.caimei365.com/group1/M00/04/99/rB-lGGUuN0eAcDtxAADrNCU9O4U716.jpg',
+                number:500
+            },
+            {
+                title:"信息中心",
+                image:'https://img.caimei365.com/group1/M00/04/99/rB-lGGUvPuWAfzMPAAGWyta6MgU076.jpg',
+                number:800
+            }
+        ]
+    },
+    computed: {
+        disabled() {
+            // 分享码长度是否符合要求
+            return this.form.shareCode.trim().length < 4
+        }
+    },
+    methods: {
+        chartWordCloud(){// 词云
+            let myChart = echarts.init(document.getElementById('myChart0'));
+            let keywords = [
+                {name:"西班牙ROSS",value:121},
+                {name:"ROSS肌肉抗衰",value:2},
+                {name:"ROSS发烧疗法",value:13},
+                {name:"ROSS智能体疗",value:8},
+                {name:"ROSS发烧之星",value:5},
+                {name:"ROSS BODY",value:25},
+                {name:"西班牙ROSS",value:121},
+                {name:"ROSS肌肉抗衰",value:2},
+                {name:"ROSS发烧疗法",value:13},
+                {name:"ROSS智能体疗",value:8},
+                {name:"ROSS发烧之星",value:5},
+                {name:"ROSS BODY",value:25},
+                {name:"西班牙ROSS",value:121},
+                {name:"ROSS肌肉抗衰",value:2},
+                {name:"ROSS发烧疗法",value:13},
+                {name:"ROSS智能体疗",value:8},
+                {name:"ROSS发烧之星",value:5},
+                {name:"ROSS BODY",value:25},
+                {name:"西班牙ROSS",value:121},
+                {name:"ROSS肌肉抗衰",value:2},
+                {name:"ROSS发烧疗法",value:13},
+                {name:"ROSS智能体疗",value:8},
+                {name:"ROSS发烧之星",value:5},
+                {name:"ROSS BODY",value:25},
+                {name:"西班牙ROSS",value:121},
+                {name:"ROSS肌肉抗衰",value:2},
+                {name:"ROSS发烧疗法",value:13},
+                {name:"ROSS智能体疗",value:8},
+                {name:"ROSS发烧之星",value:5},
+                {name:"ROSS BODY",value:25},
+                {name:"西班牙ROSS",value:121},
+                {name:"ROSS肌肉抗衰",value:2},
+                {name:"ROSS发烧疗法",value:13},
+                {name:"ROSS智能体疗",value:8},
+                {name:"ROSS发烧之星",value:5},
+                {name:"ROSS BODY",value:25},
+                {name:"西班牙ROSS",value:121},
+                {name:"ROSS肌肉抗衰",value:2},
+                {name:"ROSS发烧疗法",value:13},
+                {name:"ROSS智能体疗",value:8},
+                {name:"ROSS发烧之星",value:5},
+                {name:"ROSS BODY",value:25},
+                {name:"西班牙ROSS",value:121},
+                {name:"ROSS肌肉抗衰",value:2},
+                {name:"ROSS发烧疗法",value:13},
+                {name:"ROSS智能体疗",value:8},
+                {name:"ROSS发烧之星",value:5},
+                {name:"ROSS BODY",value:25},
+            ]
+            let option = {
+                title: {text: '关键词云图'},
+                tooltip: {trigger: 'item'},
+                series: [{
+                    type: 'wordCloud',
+                    shape: 'circle',
+                    keepAspect: false,
+                    maskImage: '',
+                    left: 'center',
+                    top: 'center',
+                    width: '90%',
+                    height: '85%',
+                    right: null,
+                    bottom: null,
+                    sizeRange: [12, 60],
+                    rotationRange: [-90, 90],
+                    rotationStep: 45,
+                    gridSize: 10,
+                    drawOutOfBound: false,
+                    shrinkToFit: false,
+                    layoutAnimation: true,
+                    textStyle: {
+                        fontFamily: 'sans-serif',
+                        fontWeight: 'bold',
+                        color: function () {
+                            // Random color
+                            return 'rgb(' + [
+                                Math.round(Math.random() * 160),
+                                Math.round(Math.random() * 160),
+                                Math.round(Math.random() * 160)
+                            ].join(',') + ')';
+                        }
+                    },
+                    emphasis: {
+                        focus: 'self',
+                        textStyle: {
+                            textShadowBlur: 10,
+                            textShadowColor: '#333'
+                        }
+                    },
+                    data:keywords
+                }]
+            }
+            myChart.setOption(option)
+            window.addEventListener("resize", function() {
+                myChart.resize()
+            })
+        },
+        //公众号推文
+        chartWechats(){
+            let myChart = echarts.init(document.getElementById('myChart1'))
+            let option = {
+                title: {
+                    text: '公众号推文数据'
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow'
+                    }
+                },
+                legend: {},
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '3%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'category',
+                    data: ['供应商动态','供应商动态','科普推荐','科普推荐','专题报道','品牌推荐','美业动态','优惠活动','新品推荐']
+                },
+                yAxis: {
+                    type: 'value',
+                    boundaryGap: [0, 0.01],
+                },
+                series: [
+                    {
+                        name: '阅读量',
+                        type: 'line',
+                        color:['#A294FF'],
+                        data: [480, 610, 1139, 1513, 987, 1516,592,355,564]
+                    },
+                    {
+                        name: '触达量',
+                        type: 'line',
+                        color:['#45CCF8'],
+                        data: [12663, 12677, 12587, 12766, 12806, 12823,13020,13046,13115]
+                    }
+                ]
+            };
+            myChart.setOption(option);  // 将选项应用到图表实例上,生成图表
+        },
+        chartIntention(){ // 采美全渠道展现量
+            let myChart = echarts.init(document.getElementById('myChart2'))
+            let option = {
+                title: {
+                    text: '采美全渠道展现量'
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow' //
+                    }
+                },
+                legend: {
+                    orient: 'horizontal',
+                    right: '0%',
+                    top:'0%',
+                    itemGap: 10, // 这里可以设置图例每项之间的间隔
+                    itemWidth: 20, // 这里可以设置图例标记的宽度
+                    itemHeight: 14, // 这里可以设置图例标记的高度
+                    textStyle: {
+                        fontSize: 12,
+                    },
+                    data: ['官网', '公众号', '微博', '小红书','其他渠道']
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '3%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'category',
+                    data: ['6月', '7月', '8月', '9月']
+                },
+                yAxis: {
+                    type: 'value',
+                },
+                series: [
+                    {
+                        name: '官网',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [21032, 21362, 21726, 22204]
+                    },
+                    {
+                        name: '公众号',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [25340, 25572, 25739, 26066]
+                    },
+                    {
+                        name: '微博',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [13482, 26996, 27016, 60975]
+                    },
+                    {
+                        name: '小红书',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [1425, 998, 2665, 6968]
+                    },
+                    {
+                        name: '其他渠道',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [11649, 6546, 37160, 58557]
+                    }
+                ]
+            };
+            myChart.setOption(option);  // 将选项应用到图表实例上,生成图表
+        },
+        // 全渠道访问用户数量
+        chartAllVisits(){
+            let myChart = echarts.init(document.getElementById('myChart3'))
+            let option = {
+                title: {
+                    text: '采美全渠道访问量'
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow' //
+                    }
+                },
+                legend: {
+                    orient: 'horizontal',
+                    right: '0%',
+                    top:'0%',
+                    itemGap: 10, // 这里可以设置图例每项之间的间隔
+                    itemWidth: 20, // 这里可以设置图例标记的宽度
+                    itemHeight: 14, // 这里可以设置图例标记的高度
+                    textStyle: {
+                        fontSize: 12,
+                    },
+                    data: ['信息中心', '公众号', '微博', '小红书','其他渠道']
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '3%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'category',
+                    data: ['6月', '7月', '8月', '9月']
+                },
+                yAxis: {
+                    type: 'value',
+                },
+                series: [
+                    {
+                        name: '信息中心',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [1163, 1167, 1112, 719]
+                    },
+                    {
+                        name: '公众号',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [1086, 2485, 2155, 941]
+                    },
+                    {
+                        name: '微博',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [3472, 6814, 8909, 11106]
+                    },
+                    {
+                        name: '小红书',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [393, 336, 754, 798]
+                    },
+                    {
+                        name: '其他渠道',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [655, 399, 1362, 1634]
+                    }
+                ]
+            };
+            myChart.setOption(option);  // 将选项应用到图表实例上,生成图表
+        },
+        chartProportion(){ // 渠道来源占比
+            let myChart = echarts.init(document.getElementById('myChart4'))
+            let option = {
+                title: {
+                    text: '访问用户渠道来源占比'
+                },
+                legend: {
+                    orient: 'horizontal',
+                    right: '0%',
+                    top:'0%',
+                    itemGap: 10, // 这里可以设置图例每项之间的间隔
+                    itemWidth: 20, // 这里可以设置图例标记的宽度
+                    itemHeight: 14, // 这里可以设置图例标记的高度
+                    textStyle: {
+                        fontSize: 12,
+                    },
+                    data: ['商城', '公众号', '小红书']
+
+                },
+                xAxis: {
+                    type: 'category',
+                    data: ['6月', '7月', '8月', '9月']
+                },
+                yAxis: {
+                    type: 'value',
+                },
+                series: [
+                    {
+                        name: '商城',
+                        type: 'line',
+                        data: [ { value:61},{ value:50},{ value:33},{ value:35}],
+                        label: {
+                            show: true,
+                            formatter(param) {
+                                // correct the percentage
+                                return param.value + '%'
+                            }
+                        }
+                    },
+                    {
+                        name: '公众号',
+                        type: 'line',
+                        data: [ { value:25},{ value:41},{ value:46},{ value:43}],
+                        label: {
+                            show: true,
+                            formatter(param) {
+                                // correct the percentage
+                                return param.value + '%'
+                            }
+                        }
+                    },
+                    {
+                        name: '小红书',
+                        type: 'line',
+                        data: [ { value:14},{ value:9},{ value:21},{ value:22}],
+                        label: {
+                            show: true,
+                            formatter(param) {
+                                // correct the percentage
+                                return param.value + '%'
+                            }
+                        }
+                    }
+                ]
+            };
+            myChart.setOption(option);  // 将选项应用到图表实例上,生成图表
+        },
+        // 采美站内访问量
+        chartStationVisits(){
+            let myChart = echarts.init(document.getElementById('myChart5'))
+            let option = {
+                title: {
+                    text: '品牌整体访问量'
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow' //
+                    }
+                },
+                legend: {
+                    orient: 'horizontal',
+                    right: '0%',
+                    top:'0%',
+                    itemGap: 10, // 这里可以设置图例每项之间的间隔
+                    itemWidth: 20, // 这里可以设置图例标记的宽度
+                    itemHeight: 14, // 这里可以设置图例标记的高度
+                    textStyle: {
+                        fontSize: 12,
+                    },
+                    data: ['游客访问量', '机构访问量']
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '3%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'category',
+                    data: ['6月', '7月', '8月', '9月']
+                },
+                yAxis: {
+                    type: 'value',
+                },
+                series: [
+                    {
+                        name: '游客访问量',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [164, 172, 206, 168]
+                    },
+                    {
+                        name: '机构访问量',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        data: [27, 43, 31, 43]
+                    }
+                ]
+            };
+            myChart.setOption(option);  // 将选项应用到图表实例上,生成图表
+        },
+        chartVisitTimes(){ // 页面平均访问时长top5
+            let myChart = echarts.init(document.getElementById('myChart6'))
+            let option = {
+                title: {
+                    text: '访问页面平均时长top5(单位:秒)',
+                    left: 'left'
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    color:'#FE8645',
+                    formatter: function(params) { // 格式化 tooltip 内容
+                        return '访问时长:'+ params[0].value + 's'
+                    },
+                    axisPointer: {
+                        type: 'shadow'
+                    }
+                },
+                legend: {
+                    show:false,
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '3%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'category',
+                    data: ['采美推荐','品牌介绍','品牌活动','品牌动态','采美科普','品牌新品','ROSS店铺页','商品3.0详情页','商品4.0详情页']
+                },
+                yAxis: {
+                    type: 'value',
+                    splitLine:{
+                        show: true,
+                        lineStyle:{
+                            opacity:0.8,
+                            color:'#E1E1E1',
+                            type:'dashed'
+                        }
+                    },
+                    boundaryGap: [0, 0.01],
+                    axisLabel:{
+                        show: true,
+                        textStyle:{
+                            color: '#999999',  //更改坐标轴文字颜色
+                            fontSize : 14,      //更改坐标轴文字大小
+                        }
+                    },
+                    axisTick: {//轴网格,在xAxis或yAxis根下
+                        lineStyle:{
+                            width:1,
+                            color:'#E1E1E1',
+                            type:'dashed'
+                        }
+                    }
+                },
+                series: [
+                    {
+                        type: 'line',
+                        name: '访问时长',
+                        data: [156,348,28,203,113,148,167,33,79],
+                        color:'#FF5B00',
+                        label: {
+                            show: true
+                        },
+                        areaStyle: {
+                            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                                {
+                                    offset: 0,
+                                    color: 'rgb(255, 158, 68)'
+                                },
+                                {
+                                    offset: 1,
+                                    color: 'rgb(255, 70, 131)'
+                                }
+                            ])
+                        }
+                    }
+                ]
+            };
+            myChart.setOption(option);  // 将选项应用到图表实例上,生成图表
+        },
+        // 线索用户月度分布
+        chartLeadUserMonthly(){
+            let myChart = echarts.init(document.getElementById('myChart7'))
+            let option = {
+                title: {
+                    text: '线索用户月度分布(单位:个)'
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow' //
+                    }
+                },
+                legend: {
+                    orient: 'horizontal',
+                    right: '0%',
+                    top:'0%',
+                    itemGap: 10, // 这里可以设置图例每项之间的间隔
+                    itemWidth: 20, // 这里可以设置图例标记的宽度
+                    itemHeight: 14, // 这里可以设置图例标记的高度
+                    textStyle: {
+                        fontSize: 12,
+                    },
+                    data: ['6月', '7月', '8月', '9月']
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '3%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'category',
+                    data: ['6月', '7月', '8月', '9月']
+                },
+                yAxis: {
+                    type: 'value',
+                },
+                series: [
+                    {
+                        name: '线索用户月度分布',
+                        type: 'bar',
+                        stack: 'total',
+                        label: {
+                            show: true
+                        },
+                        emphasis: {
+                            focus: 'series'
+                        },
+                        barGap:'60%',
+                        barCategoryGap:'60%',
+                        color:'#07c160',
+                        data: [19,31,22,26]
+                    }
+                ]
+            };
+            myChart.setOption(option);  // 将选项应用到图表实例上,生成图表
+        },
+        chartChannels(){// 线索用户地狱分布
+            let myChart = echarts.init(document.getElementById('myChart8'))
+            let option = {
+                title: {
+                    text: '线索用户地域分布'
+                },
+                tooltip: {
+                    trigger: 'item'
+                },
+                visualMap: {
+                    min: 0,
+                    max: 1000,
+                    left: 'left',
+                    top: 'bottom',
+                    text: ['高', '低'], // 文本,默认为数值文本
+                    calculable: true,
+                    inRange: {
+                        color: ['#e0ffff', '#006edd']
+                    }
+                },
+                series: [
+                    {
+                        name: '中国',
+                        type: 'map',
+                        mapType: 'china', // 设置地图类型为中国省份地图
+                        roam: false, // 禁止缩放和平移操作
+                        label: {
+                            show: true // 显示省份标签
+                        },
+                        data: [ // 设置地图数据,可以根据需要自定义数据
+                            {name: '北京', value: 176},
+                            {name: '山东', value: 33},
+                            {name: '福建', value: 15},
+                            {name: '台湾', value: 2},
+                            {name: '河南', value: 16},
+                            {name: '河北', value: 16},
+                            {name: '重庆', value: 10},
+                            {name: '湖北', value: 25},
+                            {name: '湖南', value: 12},
+                            {name: '江西', value: 16},
+                            {name: '海南', value: 5},
+                            {name: '天津', value: 8},
+                            {name: '贵州', value: 11},
+                            {name: '陕西', value: 15},
+                            {name: '新疆', value: 11},
+                            {name: '澳门', value: 1},
+                            {name: '江苏', value: 37},
+                            {name: '安徽', value: 9},
+                            {name: '西藏', value: 3},
+                            {name: '上海', value: 37},
+                            {name: '吉林', value: 6},
+                            {name: '宁夏', value: 6},
+                            {name: '山西', value: 10},
+                            {name: '香港', value: 3},
+                            {name: '甘肃', value: 3},
+                            {name: '四川', value: 41},
+                            {name: '浙江', value: 53},
+                            {name: '广西', value: 7},
+                            {name: '云南', value: 10},
+                            {name: '辽宁', value: 13},
+                            {name: '广东', value: 210},
+                            {name: '青海', value: 2},
+                            {name: '黑龙江', value: 18},
+                            {name: '内蒙古', value: 9}
+                        ],
+                        itemStyle:{
+                            fontSize: 14,
+                            color:'#FE8645'
+                        }
+                    }
+                ]
+            };
+            myChart.setOption(option);  // 将选项应用到图表实例上,生成图表
+        },
+        chartUrbanize(){ // 用户类型分布
+            let myChart = echarts.init(document.getElementById('myChart9'))
+            let option = {
+                title: {
+                    text: '用户类型分布',
+                    left: 'left'
+                },
+                tooltip: {
+                    trigger: 'item'
+                },
+                legend: {
+                    orient: 'horizontal',
+                    top:'bottom'
+                },
+                series: [
+                    {
+                        name: '',
+                        color:['#45CCF8','#4880FF','#FE8645'],
+                        type: 'pie',
+                        radius: ['35%', '25%'],
+                        center: ['50%', '50%'],
+                        avoidLabelOverlap: false,
+                        label: {
+                            show: true,
+                            formatter(param) {
+                                // correct the percentage
+                                return param.name + ' (' + param.value + '%)';
+                            }
+                        },
+                        emphasis: {
+                            itemStyle: {
+                                shadowBlur: 10,
+                                shadowOffsetX: 0,
+                                shadowColor: 'rgba(0, 0, 0, 0.5)'
+                            }
+                        },
+                        data: [
+                            { value: 30, name: '生美机构' },
+                            { value: 56, name: '双美机构' },
+                            { value: 14, name: '项目公司' },
+                        ]
+                    }
+                ]
+            };
+            myChart.setOption(option);  // 将选项应用到图表实例上,生成图表
+        },
+        chartUserIdentity(){ // 用户身份分布
+            let myChart = echarts.init(document.getElementById('myChart10'))
+            let option = {
+                title: {
+                    text: '用户身份分布',
+                    left: 'left'
+                },
+                tooltip: {
+                    trigger: 'item'
+                },
+                legend: {
+                    orient: 'horizontal',
+                    top:'bottom'
+                },
+                series: [
+                    {
+                        name: '',
+                        color:['#45CCF8','#4880FF','#1CC170'],
+                        type: 'pie',
+                        radius: ['35%', '25%'],
+                        center: ['50%', '50%'],
+                        avoidLabelOverlap: false,
+                        label: {
+                            show: true,
+                            formatter(param) {
+                                // correct the percentage
+                                return param.name + ' (' + param.value + '%)';
+                            }
+                        },
+                        emphasis: {
+                            itemStyle: {
+                                shadowBlur: 10,
+                                shadowOffsetX: 0,
+                                shadowColor: 'rgba(0, 0, 0, 0.5)'
+                            }
+                        },
+                        data: [
+                            { value: 70, name: '老板' },
+                            { value: 24, name: '采购' },
+                            { value: 6, name: '运营' },
+                        ]
+                    }
+                ]
+            };
+            myChart.setOption(option);  // 将选项应用到图表实例上,生成图表
+        },
+        chartIntentions(){ // 用户意向分布
+            let myChart = echarts.init(document.getElementById('myChart11'))
+            let option = {
+                title: {
+                    text: '用户意向分布',
+                    left: 'left'
+                },
+                tooltip: {
+                    trigger: 'item'
+                },
+                legend: {
+                    orient: 'horizontal',
+                    top:'bottom'
+                },
+                series: [
+                    {
+                        name: '',
+                        color:['#45CCF8','#4880FF','#1CC170','#FF726E'],
+                        type: 'pie',
+                        radius: ['35%', '25%'],
+                        center: ['50%', '50%'],
+                        avoidLabelOverlap: false,
+                        label: {
+                            show: true,
+                            formatter(param) {
+                                // correct the percentage
+                                return param.name + ' (' + param.value + '%)';
+                            }
+                        },
+                        emphasis: {
+                            itemStyle: {
+                                shadowBlur: 10,
+                                shadowOffsetX: 0,
+                                shadowColor: 'rgba(0, 0, 0, 0.5)'
+                            }
+                        },
+                        data: [
+                            { value: 46, name: '意向普通' },
+                            { value: 43, name: '意向强烈' },
+                            { value: 9, name: '已报备' },
+                            { value: 5, name: '已购机' }
+                        ]
+                    }
+                ]
+            };
+            myChart.setOption(option);  // 将选项应用到图表实例上,生成图表
+        },
+        // 订单分享码校验
+        handleCheckOrderShareCode(params){
+            const _self = this;
+            SupplierApi.checkShopOrderShareCode(params,function (response) {
+                if(response.code===0){
+                    window.location.href = '/order-share-details.html?shopOrderId='+response.data
+                }else{
+                    _self.$message.error(response.msg)
+                }
+            })
+        },
+
+    },
+    created: function () {
+
+    },
+    mounted: function () {
+        // this.form.shopOrderId = getUrlParam("shopOrderId");
+        this.chartWordCloud()
+        this.chartWechats()
+        this.chartAllVisits()
+        this.chartProportion()
+        this.chartStationVisits()
+        this.chartIntention()
+        this.chartUrbanize()
+        this.chartVisitTimes()
+        this.chartLeadUserMonthly()
+        this.chartIntentions()
+        this.chartUserIdentity()
+        this.chartChannels()
+
+    }
+});
+

Різницю між файлами не показано, бо вона завелика
+ 44 - 0
src/main/resources/static/lib/china.js


Різницю між файлами не показано, бо вона завелика
+ 1 - 0
src/main/resources/static/lib/echarts-wordcloud.min.js


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
src/main/resources/static/lib/echarts.min.js


+ 2 - 0
src/main/resources/templates/account/login-fast.html

@@ -4,6 +4,8 @@
 <head>
     <title>采美365网</title>
     <template th:replace="components/head-link"></template>
+    <!--禁止抓取本页,禁止抓取和跟踪本页的其它链接-->
+    <meta name='robots' content='noindex,nofollow' />
     <link th:href="@{/css/base/form.css(v=${version})}" rel="stylesheet" type="text/css">
     <link th:href="@{/css/account/login-fast.css(v=${version})}" rel="stylesheet" type="text/css">
     <template th:replace="components/analysis"></template>

+ 2 - 1
src/main/resources/templates/single-page/topic.html

@@ -17,6 +17,7 @@
 <div id="topicPage"
      :class="bgClass"
      :style="{backgroundColor:pageInfo.backgroundColour,backgroundImage:'url('+pageInfo.backgroundImage+')'}"
+     v-cloak
 >
     <div class="pageTop">
         <img th:src="${pageData.image}">
@@ -26,7 +27,7 @@
         <div class="pageFloor" v-for="(floor,index) in floorDatas" :index="index">
             <div class="title">
                 <span v-text="floor.title"></span>
-                <a class="talk_link" v-if="index == 0 && buttonName!=null && buttonName!=''" :href="buttonLink" target="_blank">{{ buttonName }}</a>
+                <a class="talk_link" v-if="index == 0 && buttonName!=null && buttonName!=''" :href="buttonLink" target="_blank" v-text="buttonName"></a>
             </div>
             <ul class="content clear">
                 <li v-for="item in floor.floorData">

+ 111 - 0
src/main/resources/templates/supplier-center/encyclopedia/chart.html

@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://www.thymeleaf.org ">
+<head>
+  <title>意向用户数据汇总</title>
+  <template th:replace="components/head-link"></template>
+  <link th:href="@{/css/supplier-center/encyclopedia/chart.css(v=${version})}" rel="stylesheet" type="text/css">
+  <template th:replace="components/analysis"></template>
+</head>
+<body>
+<!-- 引用头部 -->
+<header id="globalHead" xmlns:th="http://www.w3.org/1999/xhtml">
+  <div class="baseHeadCenter account">
+    <div class="wrap clear">
+      <a href="/" class="logo">
+        <img class="pcOnly" src="/img/base/logo.png" alt="采美 生美/医美采购服务平台"/>
+        <img class="h5Only" src="/img/base/logo_m.png" alt="采美 生美/医美采购服务平台"/>
+      </a>
+      <div class="header-title">
+        <p>意向用户数据汇总<span>(2023.06 - 2023.09)</span></p>
+      </div>
+    </div>
+  </div>
+  <input type="hidden" th:value="${coreServer}" id="coreServer">
+  <input type="hidden" th:value="${agent}" id="userAgent">
+</header>
+<!-- 机构信息 -->
+<div id="chartContent" v-cloak>
+  <div class="chart-content">
+    <div class="chart-content-main">
+      <div class="chart-main-top">
+        <img src="https://admin.caimei365.com/userfiles/1/images/photo/2023/11/loudou.png" alt="漏斗模型">
+      </div>
+    </div>
+    <div class="chart-title">
+      <p>品牌推广阶段</p>
+    </div>
+    <div class="chart-content-main">
+      <div class="chart-main-max ri" id="myChart1">
+
+      </div>
+    </div>
+    <div class="chart-content-main">
+      <div class="chart-main-box le" id="myChart2">
+
+      </div>
+      <div class="chart-main-box ri" id="myChart3">
+
+      </div>
+    </div>
+    <div class="chart-title">
+      <p>潜客运营阶段</p>
+    </div>
+    <div class="chart-content-main">
+      <div class="chart-main-468" id="myChart4"></div>
+      <div class="chart-main-300">
+        <div class="chart-main-min-title">访问用户全商城点击量</div>
+        <el-table ref="table" :data="dataList" height="200px" border>
+          <el-table-column prop="title" label="广告位置" align="center"></el-table-column>
+          <el-table-column prop="image" label="广告图" align="center">
+            <template slot-scope="{ row }">
+              <img :src="row.image" :alt="row.name" style="width: 50px;height: 50px;">
+            </template>
+          </el-table-column>
+          <el-table-column prop="number" label="点击量" align="center"></el-table-column>
+        </el-table>
+      </div>
+      <div class="chart-main-400" id="myChart5"></div>
+    </div>
+    <div class="chart-content-main">
+      <div class="chart-main-max" id="myChart0"></div>
+    </div>
+    <div class="chart-content-main">
+      <div class="chart-main-max" id="myChart6"></div>
+    </div>
+    <div class="chart-title">
+      <p>销售转化阶段</p>
+    </div>
+    <div class="chart-content-main">
+      <div class="chart-main-box le" id="myChart7"></div>
+      <div class="chart-main-box ri" id="myChart8"></div>
+    </div>
+    <div class="chart-content-main">
+      <div class="chart-main-390" id="myChart9"></div>
+      <div class="chart-main-390" id="myChart10"></div>
+      <div class="chart-main-390 none" id="myChart11"></div>
+    </div>
+    <div class="chart-content-text">
+      <h1>数据总结:</h1>
+      <p>ROSS在9月份的体用户访问数量相对不高,因此意向客户数量偏少。对此有以下点因素综合影响:</p>
+      <p>①缺少专业内容在公域进行传播;</p>
+      <p>②部分渠道无法发送短内容,或传播营销内容;</p>
+      <h1>后续建议:</h1>
+      <p>①加大对小红书、采美信息平台的内容传播;</p>
+      <p>②拓展视频渠道传播;</p>
+      <p>③供应商提供专业文章,采美进行切片传播;</p>
+      <p>2. 9月意向用户虽然数量偏,但用户质量普遍偏高。52%的用户意向强烈,其中一半的用户是主动填写的广告表单。一方面说明,大健康市场持续看好;另一方面说明,品牌在市场上已有一定知名度,获取了市场的认可。后续还需要加强品牌的形象的提升;</p>
+      <p>3.从用户访问仪器详情页的时长来看,用户更为关注BINARY4.0私密仪器,说明‘私密’是当前美容们较为关注的项目。因此在后续推广中可适当加大对[私密健康疗法]的宣传。</p>
+    </div>
+  </div>
+</div>
+<!-- 引入底部 -->
+<template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" th:src="@{/lib/echarts.min.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/lib/china.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/lib/echarts-wordcloud.min.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/user.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/supplier.service.js(v=${version})}"></script>
+<script charset="UTF-8" type="text/javascript" th:src="@{/js/supplier-center/encyclopedia/chart.js(v=${version})}"></script>
+</body>
+</html>

Деякі файли не було показано, через те що забагато файлів було змінено