1169 lines
		
	
	
		
			37 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			1169 lines
		
	
	
		
			37 KiB
		
	
	
	
		
			Vue
		
	
	
	
<template>
 | 
						|
  <div class="dashboard-editor-container"> 
 | 
						|
    <panel-group :topData="topAreaOptions"/>
 | 
						|
    <el-row>
 | 
						|
        <el-col :span="18">
 | 
						|
            <sub-group :topData="subTopAreaOptions"/>
 | 
						|
 | 
						|
        </el-col>
 | 
						|
        <el-col :span="6">
 | 
						|
          <div style="background: #fff;padding: 10px;margin: 5px;margin-bottom: 10px;border-radius: 4px;">
 | 
						|
            <div style="display: flex;justify-content: space-between;align-items: center;">
 | 
						|
              <div style="border-left: 4px solid #00594F;padding-left: 10px;font-weight: 600">设备状态数据分析</div>
 | 
						|
            </div>
 | 
						|
            <div style="display: flex;flex-direction: row-reverse;">
 | 
						|
              <el-date-picker
 | 
						|
                  v-model="dateRange1"
 | 
						|
                  type="daterange"
 | 
						|
                  align="right"
 | 
						|
                  size="mini"
 | 
						|
                  unlink-panels
 | 
						|
                  range-separator="至"
 | 
						|
                  start-placeholder="开始日期"
 | 
						|
                  end-placeholder="结束日期"
 | 
						|
                  format="yyyy-MM-dd" style="width: 220px"
 | 
						|
                  :picker-options="pickerOptions" @change="changDate1">
 | 
						|
              </el-date-picker>
 | 
						|
            </div>
 | 
						|
            <div id="barChartOne" style="width: 100%;height: 350px;margin-bottom: 20px;"></div>  
 | 
						|
          </div>
 | 
						|
          <div style="background: #fff;padding: 10px;margin: 5px;margin-bottom: 10px;border-radius: 4px;">
 | 
						|
            <div style="display: flex;justify-content: space-between;align-items: center;">
 | 
						|
              <div style="border-left: 4px solid #00594F;padding-left: 10px;font-weight: 600">留样数据分析</div>
 | 
						|
            </div>
 | 
						|
            <div style="display: flex;flex-direction: row-reverse;">
 | 
						|
              <el-date-picker
 | 
						|
                  v-model="dateRange2"
 | 
						|
                  type="daterange"
 | 
						|
                  align="right"
 | 
						|
                  size="mini"
 | 
						|
                  unlink-panels
 | 
						|
                  range-separator="至"
 | 
						|
                  start-placeholder="开始日期"
 | 
						|
                  end-placeholder="结束日期"
 | 
						|
                  format="yyyy-MM-dd" style="width: 220px"
 | 
						|
                  :picker-options="pickerOptions" @change="changDate2">
 | 
						|
              </el-date-picker>
 | 
						|
            </div>
 | 
						|
            <div id="barChartTwo" style="width: 100%;height: 350px;margin-bottom: 20px;"></div>  
 | 
						|
          </div>
 | 
						|
        </el-col>
 | 
						|
    </el-row>
 | 
						|
    <el-row>
 | 
						|
       <el-col :span="8">
 | 
						|
          <div style="background: #fff;padding: 10px;margin: 5px;margin-bottom: 10px;border-radius: 4px;"> 
 | 
						|
            <div style="border-left: 4px solid #00594F;padding-left: 10px;font-weight: 600;height: 24px;">报警数据分析</div> 
 | 
						|
            <div style="width: 100%;text-align: center;position: relative;">
 | 
						|
              <span>员工违规</span>
 | 
						|
              <span style="position: absolute;right: 10px;font-size: 14px;color: #00D9CB;">查看详情></span>
 | 
						|
            </div> 
 | 
						|
            <div id="lineChartThree" style="width: 100%;height: 200px;margin-bottom: 20px;"></div>  
 | 
						|
          </div>
 | 
						|
       </el-col>
 | 
						|
       <el-col :span="8">
 | 
						|
          <div style="background: #fff;padding: 10px;margin: 5px;margin-bottom: 10px;border-radius: 4px;"> 
 | 
						|
            <div style="width: 100%;text-align: center;position: relative;margin-top: 24px;">
 | 
						|
              <span>员工违规</span>
 | 
						|
              <span style="position: absolute;right: 10px;font-size: 14px;color: #FFBD57;">查看详情></span>
 | 
						|
            </div>  
 | 
						|
            <div id="lineChartFour" style="width: 100%;height: 200px;margin-bottom: 20px;"></div>  
 | 
						|
          </div>
 | 
						|
       </el-col>
 | 
						|
       <el-col :span="8">
 | 
						|
          <div style="background: #fff;padding: 10px;margin: 5px;margin-bottom: 10px;border-radius: 4px;"> 
 | 
						|
            <div style="width: 100%;text-align: center;position: relative;margin-top: 24px;">
 | 
						|
              <span>环境告警</span>
 | 
						|
              <span style="position: absolute;right: 10px;font-size: 14px;color: #F35C5C;">查看详情></span>
 | 
						|
            </div>  
 | 
						|
            <div id="lineChartFive" style="width: 100%;height: 200px;margin-bottom: 20px;"></div>  
 | 
						|
          </div>
 | 
						|
       </el-col>
 | 
						|
    </el-row>
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
 | 
						|
<script>
 | 
						|
import PanelGroup from './dashboard/PanelGroup'
 | 
						|
import SubGroup from './dashboard/SubGroup'
 | 
						|
import * as echarts from 'echarts' 
 | 
						|
import {  getThisMonthSDishSalesRankingApi,
 | 
						|
          getProportionOfOrderTypesApi 
 | 
						|
        } from "@/api/index";
 | 
						|
import {  getHomePageInfoApi } from "@/api/kitchen/index";
 | 
						|
export default { 
 | 
						|
  name: 'Index',
 | 
						|
  components: {
 | 
						|
    PanelGroup,
 | 
						|
    SubGroup
 | 
						|
  },
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      topAreaOptions:[
 | 
						|
        {
 | 
						|
          "num": 0,
 | 
						|
          "rate": "0.00",
 | 
						|
          "name": "人员总数",
 | 
						|
          "lastDate": "2025-05-15"
 | 
						|
        },{
 | 
						|
          "num": 0,
 | 
						|
          "rate": "0.00",
 | 
						|
          "name": "设备总数(个)",
 | 
						|
          "lastDate": "2025-05-15"
 | 
						|
        },
 | 
						|
        {
 | 
						|
          "num": 0,
 | 
						|
          "rate": "0.00",
 | 
						|
          "name": "今日预警数(个)",
 | 
						|
          "lastDate": "2025-05-15"
 | 
						|
        },
 | 
						|
        {
 | 
						|
          "num": 0,
 | 
						|
          "rate": "0.00",
 | 
						|
          "name": "历史预警数(个)",
 | 
						|
          "lastDate": "2025-05-15"
 | 
						|
        }
 | 
						|
      ],
 | 
						|
      subTopAreaOptions:{  
 | 
						|
          "num1": 1, 
 | 
						|
          "num2": 2, 
 | 
						|
          "num3": 3, 
 | 
						|
          "num4": 4, 
 | 
						|
        },
 | 
						|
      dateRange1:[new Date(),new Date()],
 | 
						|
      dateRange2:[new Date(),new Date()],
 | 
						|
      pickerOptions: {
 | 
						|
        shortcuts: [{
 | 
						|
            text: '最近一周',
 | 
						|
            onClick(picker) {
 | 
						|
            const start = new Date();
 | 
						|
            const end = new Date();
 | 
						|
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 6);
 | 
						|
            picker.$emit('pick', [start, end]);
 | 
						|
            }
 | 
						|
        },{
 | 
						|
            text: '最近一个月',
 | 
						|
            onClick(picker) {
 | 
						|
            const start = new Date();
 | 
						|
            const end = new Date();
 | 
						|
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
 | 
						|
            picker.$emit('pick', [start, end]);
 | 
						|
            }
 | 
						|
        },{
 | 
						|
            text: '最近三个月',
 | 
						|
            onClick(picker) {
 | 
						|
            const start = new Date();
 | 
						|
            const end = new Date();
 | 
						|
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 91);
 | 
						|
            picker.$emit('pick', [start, end]);
 | 
						|
            }
 | 
						|
        }]
 | 
						|
      },
 | 
						|
      myCharts1:null,
 | 
						|
      myCharts2:null,
 | 
						|
      myCharts3:null,
 | 
						|
      myCharts4:null,
 | 
						|
      myCharts5:null,
 | 
						|
    }
 | 
						|
  },
 | 
						|
  mounted(){
 | 
						|
    this.getTopData()
 | 
						|
    this.InitEChartsOne()
 | 
						|
    this.InitEChartsTwo()
 | 
						|
    this.InitEChartsThree()
 | 
						|
    this.InitEChartsFour()
 | 
						|
    this.InitEChartsFive()
 | 
						|
    window.addEventListener('transitionend', this.$_sidebarResizeHandler) 
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    $_sidebarResizeHandler(e) {
 | 
						|
      if (e.propertyName === 'width') {
 | 
						|
        console.log(e)
 | 
						|
        setTimeout(() => {
 | 
						|
          this.myCharts1.resize();
 | 
						|
          this.myCharts2.resize();
 | 
						|
          this.myCharts3.resize();
 | 
						|
          this.myCharts4.resize();
 | 
						|
          this.myCharts5.resize();
 | 
						|
        }, 500);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    getTopData(){ 
 | 
						|
      getHomePageInfoApi({}).then((response) => {
 | 
						|
          // this.topAreaOptions = response.data.data; 
 | 
						|
      }); 
 | 
						|
    },
 | 
						|
    changDate1(){ 
 | 
						|
      this.InitEChartsOne()
 | 
						|
      this.myCharts1.resize();
 | 
						|
    },
 | 
						|
    InitEChartsOne() {
 | 
						|
      console.log(this.dateRange1)
 | 
						|
      console.log(this.formatDate(this.dateRange1[0]))
 | 
						|
      var chartData=[]
 | 
						|
      // getProportionOfOrderTypesApi({type:this.type3}).then((response) => {
 | 
						|
          // chartData = response.data;
 | 
						|
          var m2R2Data = []
 | 
						|
          var sumNum = 0
 | 
						|
          // chartData.forEach((item,index)=>{
 | 
						|
          //   let obj = {}
 | 
						|
          //   sumNum=sumNum+item.num
 | 
						|
          //   if(index==0){
 | 
						|
          //     obj = {
 | 
						|
          //       value: item.num,
 | 
						|
          //       legendname: item.name,
 | 
						|
          //       name: item.name+' '+  item.num,
 | 
						|
          //       itemStyle: { color: "#5085f2" },
 | 
						|
          //     }
 | 
						|
          //   }
 | 
						|
          //   if(index==1){
 | 
						|
          //     obj = {
 | 
						|
          //       value: item.num,
 | 
						|
          //       legendname: item.name,
 | 
						|
          //       name: item.name+' '+  item.num,
 | 
						|
          //       itemStyle: { color: "#f2719a" },
 | 
						|
          //     }
 | 
						|
          //   }
 | 
						|
          //   if(index==2){
 | 
						|
          //     obj = {
 | 
						|
          //       value: item.num,
 | 
						|
          //       legendname: item.name,
 | 
						|
          //       name: item.name+' '+  item.num,
 | 
						|
          //       itemStyle: { color: "#fdb301" },
 | 
						|
          //     }
 | 
						|
          //   }
 | 
						|
          //   m2R2Data.push(obj)
 | 
						|
          // }) 
 | 
						|
 | 
						|
          var m2R2Data = [
 | 
						|
            {
 | 
						|
              value: 240,
 | 
						|
              legendname: "正常",
 | 
						|
              name: "正常  240",
 | 
						|
              itemStyle: { color: "#69ADF8" },
 | 
						|
            },
 | 
						|
            {
 | 
						|
              value: 120,
 | 
						|
              legendname: "离线",
 | 
						|
              name: "离线  120",
 | 
						|
              itemStyle: { color: "#F3A56D" },
 | 
						|
            }
 | 
						|
          ];
 | 
						|
 | 
						|
          var option = {
 | 
						|
            title: [
 | 
						|
              {
 | 
						|
                text: sumNum + "个",
 | 
						|
                subtext: "设备总数",
 | 
						|
                textStyle: {
 | 
						|
                  fontSize: 22,
 | 
						|
                  color: "black",
 | 
						|
                },
 | 
						|
                subtextStyle: {
 | 
						|
                  fontSize: 14,
 | 
						|
                  color: "black",
 | 
						|
                },
 | 
						|
                textAlign: "center",
 | 
						|
                x: "48%",
 | 
						|
                y: "44%",
 | 
						|
              },
 | 
						|
            ],
 | 
						|
            tooltip: {
 | 
						|
              trigger: "item",
 | 
						|
              formatter: function (parms) {
 | 
						|
                var str =
 | 
						|
                  parms.seriesName +
 | 
						|
                  "</br>" +
 | 
						|
                  parms.marker +
 | 
						|
                  "" +
 | 
						|
                  parms.data.legendname +
 | 
						|
                  "</br>" +
 | 
						|
                  "数量:" +
 | 
						|
                  parms.data.value +
 | 
						|
                  "</br>" +
 | 
						|
                  "占比:" +
 | 
						|
                  parms.percent +
 | 
						|
                  "%";
 | 
						|
                return str;
 | 
						|
              },
 | 
						|
            },
 | 
						|
            legend: {
 | 
						|
              type: "scroll", 
 | 
						|
              align: "left",
 | 
						|
              bottom: "2%",
 | 
						|
              let:"middle",
 | 
						|
              textStyle: {
 | 
						|
                color: "#8C8C8C",
 | 
						|
              },
 | 
						|
              height: 50,
 | 
						|
              width:300,
 | 
						|
              formatter: function (name) {
 | 
						|
                let data = option.series[0].data; 
 | 
						|
                let total = 0;
 | 
						|
                let tarValue;
 | 
						|
                for (let i = 0; i < data.length; i++) {
 | 
						|
                  total += data[i].value;
 | 
						|
                  if (data[i].name == name) {
 | 
						|
                    tarValue = data[i].value;
 | 
						|
                  }
 | 
						|
                }
 | 
						|
                let v = tarValue;
 | 
						|
                let p = Math.round((tarValue / total) * 100); //占比
 | 
						|
                return `${name} (${p}%)`;
 | 
						|
              }
 | 
						|
            },
 | 
						|
            series: [
 | 
						|
              {
 | 
						|
                name: "标题",
 | 
						|
                type: "pie",
 | 
						|
                center: ["50%", "50%"],
 | 
						|
                // radius: ["55%", "75%"],
 | 
						|
                radius: [90, 120],
 | 
						|
                clockwise: false, //饼图的扇区是否是顺时针排布
 | 
						|
                avoidLabelOverlap: false,
 | 
						|
                roseType: "radius",
 | 
						|
                label: {
 | 
						|
                  normal: {
 | 
						|
                    show: false,
 | 
						|
                    position: "outter",
 | 
						|
                    formatter: function (parms) {
 | 
						|
                      return parms.data.legendname;
 | 
						|
                    },
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                labelLine: {
 | 
						|
                  normal: {
 | 
						|
                    length: 5,
 | 
						|
                    length2: 3,
 | 
						|
                    smooth: true,
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                data: m2R2Data,
 | 
						|
              },
 | 
						|
            ],
 | 
						|
          }; 
 | 
						|
          this.myCharts1 = echarts.init(document.querySelector('#barChartOne'));
 | 
						|
          this.myCharts1.setOption(option)  
 | 
						|
          // 根据页面大小自动响应图表大小
 | 
						|
          // window.addEventListener("resize4", function () {
 | 
						|
          //     myCharts1.resize();
 | 
						|
          // });
 | 
						|
      // });
 | 
						|
    },
 | 
						|
    changDate2(){
 | 
						|
      this.InitEChartsTwo()
 | 
						|
      this.myCharts2.resize();
 | 
						|
    },
 | 
						|
    InitEChartsTwo() {
 | 
						|
      console.log(this.dateRange2)
 | 
						|
       var chartData=[]
 | 
						|
      // getProportionOfOrderTypesApi({type:this.type3}).then((response) => {
 | 
						|
          // chartData = response.data;
 | 
						|
          var m2R2Data = []
 | 
						|
          var sumNum = 0
 | 
						|
          // chartData.forEach((item,index)=>{
 | 
						|
          //   let obj = {}
 | 
						|
          //   sumNum=sumNum+item.num
 | 
						|
          //   if(index==0){
 | 
						|
          //     obj = {
 | 
						|
          //       value: item.num,
 | 
						|
          //       legendname: item.name,
 | 
						|
          //       name: item.name+' '+  item.num,
 | 
						|
          //       itemStyle: { color: "#5085f2" },
 | 
						|
          //     }
 | 
						|
          //   }
 | 
						|
          //   if(index==1){
 | 
						|
          //     obj = {
 | 
						|
          //       value: item.num,
 | 
						|
          //       legendname: item.name,
 | 
						|
          //       name: item.name+' '+  item.num,
 | 
						|
          //       itemStyle: { color: "#f2719a" },
 | 
						|
          //     }
 | 
						|
          //   }
 | 
						|
          //   if(index==2){
 | 
						|
          //     obj = {
 | 
						|
          //       value: item.num,
 | 
						|
          //       legendname: item.name,
 | 
						|
          //       name: item.name+' '+  item.num,
 | 
						|
          //       itemStyle: { color: "#fdb301" },
 | 
						|
          //     }
 | 
						|
          //   }
 | 
						|
          //   m2R2Data.push(obj)
 | 
						|
          // }) 
 | 
						|
 | 
						|
          var m2R2Data = [
 | 
						|
            {
 | 
						|
              value: 310,
 | 
						|
              legendname: "合格",
 | 
						|
              name: "合格  310",
 | 
						|
              itemStyle: { color: "#5085f2" },
 | 
						|
            },
 | 
						|
            {
 | 
						|
              value: 335,
 | 
						|
              legendname: "不合格",
 | 
						|
              name: "不合格  335",
 | 
						|
              itemStyle: { color: "#fdb301" },
 | 
						|
            }
 | 
						|
          ];
 | 
						|
 | 
						|
          var option = {
 | 
						|
            title: [
 | 
						|
              {
 | 
						|
                text: "留样总数",
 | 
						|
                subtext: sumNum + "个",
 | 
						|
                textStyle: {
 | 
						|
                  fontSize: 20,
 | 
						|
                  color: "black",
 | 
						|
                },
 | 
						|
                subtextStyle: {
 | 
						|
                  fontSize: 20,
 | 
						|
                  color: "black",
 | 
						|
                },
 | 
						|
                textAlign: "center",
 | 
						|
                x: "48%",
 | 
						|
                y: "44%",
 | 
						|
              },
 | 
						|
            ],
 | 
						|
            tooltip: {
 | 
						|
              trigger: "item",
 | 
						|
              formatter: function (parms) {
 | 
						|
                var str =
 | 
						|
                  parms.seriesName +
 | 
						|
                  "</br>" +
 | 
						|
                  parms.marker +
 | 
						|
                  "" +
 | 
						|
                  parms.data.legendname +
 | 
						|
                  "</br>" +
 | 
						|
                  "数量:" +
 | 
						|
                  parms.data.value +
 | 
						|
                  "</br>" +
 | 
						|
                  "占比:" +
 | 
						|
                  parms.percent +
 | 
						|
                  "%";
 | 
						|
                return str;
 | 
						|
              },
 | 
						|
            },
 | 
						|
            legend: {
 | 
						|
              type: "scroll", 
 | 
						|
              align: "left",
 | 
						|
              bottom: "2%",
 | 
						|
              let:"middle",
 | 
						|
              textStyle: {
 | 
						|
                color: "#8C8C8C",
 | 
						|
              },
 | 
						|
              height: 50,
 | 
						|
              width:300,
 | 
						|
              formatter: function (name) {
 | 
						|
                let data = option.series[0].data; 
 | 
						|
                let total = 0;
 | 
						|
                let tarValue;
 | 
						|
                for (let i = 0; i < data.length; i++) {
 | 
						|
                  total += data[i].value;
 | 
						|
                  if (data[i].name == name) {
 | 
						|
                    tarValue = data[i].value;
 | 
						|
                  }
 | 
						|
                }
 | 
						|
                let v = tarValue;
 | 
						|
                let p = Math.round((tarValue / total) * 100); //占比
 | 
						|
                return `${name} (${p}%)`;
 | 
						|
              }
 | 
						|
            },
 | 
						|
            series: [
 | 
						|
              {
 | 
						|
                name: "标题",
 | 
						|
                type: "pie",
 | 
						|
                center: ["50%", "50%"],
 | 
						|
                radius: ["55%", "75%"],
 | 
						|
                clockwise: false, //饼图的扇区是否是顺时针排布
 | 
						|
                avoidLabelOverlap: false,
 | 
						|
                label: {
 | 
						|
                  normal: {
 | 
						|
                    show: false,
 | 
						|
                    position: "outter",
 | 
						|
                    formatter: function (parms) {
 | 
						|
                      return parms.data.legendname;
 | 
						|
                    },
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                 
 | 
						|
                labelLine: {
 | 
						|
                  normal: {
 | 
						|
                    length: 5,
 | 
						|
                    length2: 3,
 | 
						|
                    smooth: true,
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                data: m2R2Data,
 | 
						|
              },
 | 
						|
            ],
 | 
						|
          }; 
 | 
						|
          this.myCharts2 = echarts.init(document.querySelector('#barChartTwo'));
 | 
						|
          this.myCharts2.setOption(option)  
 | 
						|
          // 根据页面大小自动响应图表大小
 | 
						|
          // window.addEventListener("resize4", function () {
 | 
						|
          //     myCharts2.resize();
 | 
						|
          // });
 | 
						|
      // });
 | 
						|
    },
 | 
						|
    InitEChartsThree() { 
 | 
						|
      var getName = [];
 | 
						|
      var getValue = [];
 | 
						|
      var chartData=[]
 | 
						|
      getThisMonthSDishSalesRankingApi().then((response) => {
 | 
						|
          chartData = response.data;
 | 
						|
          chartData.forEach((item,index)=>{
 | 
						|
            getName.push(item.name)
 | 
						|
            getValue.push(item.num) 
 | 
						|
          })  
 | 
						|
          var max = Math.max.apply(null, getValue);
 | 
						|
          var getMax = [];
 | 
						|
          for (var i = 0; i < getName.length; i++) {
 | 
						|
            getMax.push(max+20);
 | 
						|
          } 
 | 
						|
          var option = {
 | 
						|
            backgroundColor: "#fff",
 | 
						|
            grid: {
 | 
						|
              left: "10%",
 | 
						|
              right: "2%",
 | 
						|
              bottom: "2%",
 | 
						|
              top: "10%",
 | 
						|
              containLabel: true,
 | 
						|
            },
 | 
						|
            tooltip: {
 | 
						|
              trigger: "axis",
 | 
						|
              axisPointer: {
 | 
						|
                type: "none",
 | 
						|
              },
 | 
						|
              formatter: function (params) {
 | 
						|
                return params[0].name + " : " + params[0].value;
 | 
						|
              },
 | 
						|
            },
 | 
						|
            xAxis: {
 | 
						|
              show: false,
 | 
						|
              type: "value",
 | 
						|
            },
 | 
						|
            yAxis: [
 | 
						|
              {
 | 
						|
                type: "category",
 | 
						|
                inverse: true,
 | 
						|
                offset: 100, 
 | 
						|
                axisLabel: {
 | 
						|
                  show: true,
 | 
						|
                  align: "left",
 | 
						|
                  textStyle: {
 | 
						|
                    color: "#66cc00",
 | 
						|
                  },
 | 
						|
                  formatter: function (value, index) {
 | 
						|
                    var num = "";
 | 
						|
                    var str = "";
 | 
						|
                    var no = "NO.";
 | 
						|
                    num = index + 1;
 | 
						|
                    if (index === 0) {
 | 
						|
                      str = " {num1|" + num + "} {title1|" + value + "}";
 | 
						|
                    } else if (index === 1) {
 | 
						|
                      str = " {num2|" + num + "} {title2|" + value + "}";
 | 
						|
                    } else if (index === 2) {
 | 
						|
                      str = " {num3|" + num + "} {title3|" + value + "}";
 | 
						|
                    } else {
 | 
						|
                      str = " {num|" + num + "} {title|" + value + "}";
 | 
						|
                    }
 | 
						|
                    return str;
 | 
						|
                  },
 | 
						|
                  rich: {
 | 
						|
                    no: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    no1: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    no2: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    no3: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    num: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#5281F8",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    num1: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#EDA54F",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    num2: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#EDA54F",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    num3: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#EDA54F",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    title: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                    title1: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                    title2: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                    title3: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                splitLine: {
 | 
						|
                  show: false,
 | 
						|
                },
 | 
						|
                axisTick: {
 | 
						|
                  show: false,
 | 
						|
                },
 | 
						|
                axisLine: {
 | 
						|
                  show: false,
 | 
						|
                },
 | 
						|
                data: getName,
 | 
						|
              },
 | 
						|
              {
 | 
						|
                type: "category",
 | 
						|
                inverse: true,
 | 
						|
                offset: -50,
 | 
						|
                axisTick: "none",
 | 
						|
                axisLine: "none",
 | 
						|
                show: true,
 | 
						|
                axisLabel: {
 | 
						|
                  interval: 0,
 | 
						|
                  color: "#666",
 | 
						|
                  align: "left",
 | 
						|
                  margin: 20,
 | 
						|
                  fontSize: 13,
 | 
						|
                  formatter: function (value, index) {
 | 
						|
                    return (
 | 
						|
                      getValue[index]
 | 
						|
                    );
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                data: getValue,
 | 
						|
              },
 | 
						|
            ],
 | 
						|
            series: [
 | 
						|
              {
 | 
						|
                name: "值",
 | 
						|
                type: "bar",
 | 
						|
                zlevel: 1,
 | 
						|
                itemStyle: {
 | 
						|
                  normal: {
 | 
						|
                    barBorderRadius: 30,
 | 
						|
                    color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
 | 
						|
                      {
 | 
						|
                        offset: 0,
 | 
						|
                        color: "rgb(0, 217, 203, 1)",
 | 
						|
                      },
 | 
						|
                      {
 | 
						|
                        offset: 1,
 | 
						|
                        color: "rgb(0, 217, 203, 1)",
 | 
						|
                      },
 | 
						|
                    ]),
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                barWidth: 14,
 | 
						|
                data: getValue,
 | 
						|
              },
 | 
						|
              {
 | 
						|
                name: "背景",
 | 
						|
                type: "bar",
 | 
						|
                barWidth: 14,
 | 
						|
                barGap: "-100%",
 | 
						|
                data: getMax,
 | 
						|
                itemStyle: {
 | 
						|
                  normal: {
 | 
						|
                    color: "rgba(242, 252, 250, 1)",
 | 
						|
                    barBorderRadius: 30,
 | 
						|
                  },
 | 
						|
                },
 | 
						|
              },
 | 
						|
            ],
 | 
						|
          };   
 | 
						|
          this.myCharts3 = echarts.init(document.querySelector('#lineChartThree'));
 | 
						|
          this.myCharts3.setOption(option)  
 | 
						|
          // // 根据页面大小自动响应图表大小
 | 
						|
          // window.addEventListener("resize3", function () {
 | 
						|
          //     myCharts3.resize();
 | 
						|
          // });
 | 
						|
      }); 
 | 
						|
    }, 
 | 
						|
    InitEChartsFour() {
 | 
						|
      var getName = [];
 | 
						|
      var getValue = [];
 | 
						|
      var chartData=[]
 | 
						|
      getThisMonthSDishSalesRankingApi().then((response) => {
 | 
						|
          chartData = response.data;
 | 
						|
          chartData.forEach((item,index)=>{
 | 
						|
            getName.push(item.name)
 | 
						|
            getValue.push(item.num) 
 | 
						|
          })  
 | 
						|
          var max = Math.max.apply(null, getValue);
 | 
						|
          var getMax = [];
 | 
						|
          for (var i = 0; i < getName.length; i++) {
 | 
						|
            getMax.push(max+20);
 | 
						|
          } 
 | 
						|
          var option = {
 | 
						|
            backgroundColor: "#fff",
 | 
						|
            grid: {
 | 
						|
              left: "10%",
 | 
						|
              right: "2%",
 | 
						|
              bottom: "2%",
 | 
						|
              top: "10%",
 | 
						|
              containLabel: true,
 | 
						|
            },
 | 
						|
            tooltip: {
 | 
						|
              trigger: "axis",
 | 
						|
              axisPointer: {
 | 
						|
                type: "none",
 | 
						|
              },
 | 
						|
              formatter: function (params) {
 | 
						|
                return params[0].name + " : " + params[0].value;
 | 
						|
              },
 | 
						|
            },
 | 
						|
            xAxis: {
 | 
						|
              show: false,
 | 
						|
              type: "value",
 | 
						|
            },
 | 
						|
            yAxis: [
 | 
						|
              {
 | 
						|
                type: "category",
 | 
						|
                inverse: true,
 | 
						|
                offset: 100, 
 | 
						|
                axisLabel: {
 | 
						|
                  show: true,
 | 
						|
                  align: "left",
 | 
						|
                  textStyle: {
 | 
						|
                    color: "#66cc00",
 | 
						|
                  },
 | 
						|
                  formatter: function (value, index) {
 | 
						|
                    var num = "";
 | 
						|
                    var str = "";
 | 
						|
                    var no = "NO.";
 | 
						|
                    num = index + 1;
 | 
						|
                    if (index === 0) {
 | 
						|
                      str = " {num1|" + num + "} {title1|" + value + "}";
 | 
						|
                    } else if (index === 1) {
 | 
						|
                      str = " {num2|" + num + "} {title2|" + value + "}";
 | 
						|
                    } else if (index === 2) {
 | 
						|
                      str = " {num3|" + num + "} {title3|" + value + "}";
 | 
						|
                    } else {
 | 
						|
                      str = " {num|" + num + "} {title|" + value + "}";
 | 
						|
                    }
 | 
						|
                    return str;
 | 
						|
                  },
 | 
						|
                  rich: {
 | 
						|
                    no: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    no1: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    no2: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    no3: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    num: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#5281F8",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    num1: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#EDA54F",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    num2: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#EDA54F",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    num3: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#EDA54F",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    title: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                    title1: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                    title2: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                    title3: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                splitLine: {
 | 
						|
                  show: false,
 | 
						|
                },
 | 
						|
                axisTick: {
 | 
						|
                  show: false,
 | 
						|
                },
 | 
						|
                axisLine: {
 | 
						|
                  show: false,
 | 
						|
                },
 | 
						|
                data: getName,
 | 
						|
              },
 | 
						|
              {
 | 
						|
                type: "category",
 | 
						|
                inverse: true,
 | 
						|
                offset: -50,
 | 
						|
                axisTick: "none",
 | 
						|
                axisLine: "none",
 | 
						|
                show: true,
 | 
						|
                axisLabel: {
 | 
						|
                  interval: 0,
 | 
						|
                  color: "#666",
 | 
						|
                  align: "left",
 | 
						|
                  margin: 20,
 | 
						|
                  fontSize: 13,
 | 
						|
                  formatter: function (value, index) {
 | 
						|
                    return (
 | 
						|
                      getValue[index]
 | 
						|
                    );
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                data: getValue,
 | 
						|
              },
 | 
						|
            ],
 | 
						|
            series: [
 | 
						|
              {
 | 
						|
                name: "值",
 | 
						|
                type: "bar",
 | 
						|
                zlevel: 1,
 | 
						|
                itemStyle: {
 | 
						|
                  normal: {
 | 
						|
                    barBorderRadius: 30,
 | 
						|
                    color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
 | 
						|
                      {
 | 
						|
                        offset: 0,
 | 
						|
                        color: "rgb(255, 179, 63, 1)",
 | 
						|
                      },
 | 
						|
                      {
 | 
						|
                        offset: 1,
 | 
						|
                        color: "rgb(255, 179, 63, 1)",
 | 
						|
                      },
 | 
						|
                    ]),
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                barWidth: 14,
 | 
						|
                data: getValue,
 | 
						|
              },
 | 
						|
              {
 | 
						|
                name: "背景",
 | 
						|
                type: "bar",
 | 
						|
                barWidth: 14,
 | 
						|
                barGap: "-100%",
 | 
						|
                data: getMax,
 | 
						|
                itemStyle: {
 | 
						|
                  normal: {
 | 
						|
                    color: "rgba(255, 247, 234, 1)",
 | 
						|
                    barBorderRadius: 30,
 | 
						|
                  },
 | 
						|
                },
 | 
						|
              },
 | 
						|
            ],
 | 
						|
          }; 
 | 
						|
          this.myCharts4 = echarts.init(document.querySelector('#lineChartFour'));
 | 
						|
          this.myCharts4.setOption(option)  
 | 
						|
          // // 根据页面大小自动响应图表大小
 | 
						|
          // window.addEventListener("resize3", function () {
 | 
						|
          //     myCharts4.resize();
 | 
						|
          // });
 | 
						|
      }); 
 | 
						|
    },
 | 
						|
    InitEChartsFive() {
 | 
						|
      var getName = [];
 | 
						|
      var getValue = [];
 | 
						|
      var chartData=[]
 | 
						|
      getThisMonthSDishSalesRankingApi().then((response) => {
 | 
						|
          chartData = response.data;
 | 
						|
          chartData.forEach((item,index)=>{
 | 
						|
            getName.push(item.name)
 | 
						|
            getValue.push(item.num) 
 | 
						|
          })  
 | 
						|
          var max = Math.max.apply(null, getValue);
 | 
						|
          var getMax = [];
 | 
						|
          for (var i = 0; i < getName.length; i++) {
 | 
						|
            getMax.push(max+20);
 | 
						|
          } 
 | 
						|
          var option = {
 | 
						|
            backgroundColor: "#fff",
 | 
						|
            grid: {
 | 
						|
              left: "10%",
 | 
						|
              right: "2%",
 | 
						|
              bottom: "2%",
 | 
						|
              top: "10%",
 | 
						|
              containLabel: true,
 | 
						|
            },
 | 
						|
            tooltip: {
 | 
						|
              trigger: "axis",
 | 
						|
              axisPointer: {
 | 
						|
                type: "none",
 | 
						|
              },
 | 
						|
              formatter: function (params) {
 | 
						|
                return params[0].name + " : " + params[0].value;
 | 
						|
              },
 | 
						|
            },
 | 
						|
            xAxis: {
 | 
						|
              show: false,
 | 
						|
              type: "value",
 | 
						|
            },
 | 
						|
            yAxis: [
 | 
						|
              {
 | 
						|
                type: "category",
 | 
						|
                inverse: true,
 | 
						|
                offset: 100, 
 | 
						|
                axisLabel: {
 | 
						|
                  show: true,
 | 
						|
                  align: "left",
 | 
						|
                  textStyle: {
 | 
						|
                    color: "#66cc00",
 | 
						|
                  },
 | 
						|
                  formatter: function (value, index) {
 | 
						|
                    var num = "";
 | 
						|
                    var str = "";
 | 
						|
                    var no = "NO.";
 | 
						|
                    num = index + 1;
 | 
						|
                    if (index === 0) {
 | 
						|
                      str = " {num1|" + num + "} {title1|" + value + "}";
 | 
						|
                    } else if (index === 1) {
 | 
						|
                      str = " {num2|" + num + "} {title2|" + value + "}";
 | 
						|
                    } else if (index === 2) {
 | 
						|
                      str = " {num3|" + num + "} {title3|" + value + "}";
 | 
						|
                    } else {
 | 
						|
                      str = " {num|" + num + "} {title|" + value + "}";
 | 
						|
                    }
 | 
						|
                    return str;
 | 
						|
                  },
 | 
						|
                  rich: {
 | 
						|
                    no: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    no1: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    no2: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    no3: {
 | 
						|
                      color: "#333",
 | 
						|
                      fontSize: 14,
 | 
						|
                    },
 | 
						|
                    num: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#5281F8",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    num1: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#EDA54F",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    num2: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#EDA54F",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    num3: {
 | 
						|
                      color: "#fff",
 | 
						|
                      backgroundColor: "#EDA54F",
 | 
						|
                      width: 20,
 | 
						|
                      height: 20,
 | 
						|
                      fontSize: 14,
 | 
						|
                      align: "center",
 | 
						|
                      borderRadius: 100,
 | 
						|
                    },
 | 
						|
                    title: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                    title1: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                    title2: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                    title3: {
 | 
						|
                      color: "#333333",
 | 
						|
                    },
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                splitLine: {
 | 
						|
                  show: false,
 | 
						|
                },
 | 
						|
                axisTick: {
 | 
						|
                  show: false,
 | 
						|
                },
 | 
						|
                axisLine: {
 | 
						|
                  show: false,
 | 
						|
                },
 | 
						|
                data: getName,
 | 
						|
              },
 | 
						|
              {
 | 
						|
                type: "category",
 | 
						|
                inverse: true,
 | 
						|
                offset: -50,
 | 
						|
                axisTick: "none",
 | 
						|
                axisLine: "none",
 | 
						|
                show: true,
 | 
						|
                axisLabel: {
 | 
						|
                  interval: 0,
 | 
						|
                  color: "#666",
 | 
						|
                  align: "left",
 | 
						|
                  margin: 20,
 | 
						|
                  fontSize: 13,
 | 
						|
                  formatter: function (value, index) {
 | 
						|
                    return (
 | 
						|
                      getValue[index]
 | 
						|
                    );
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                data: getValue,
 | 
						|
              },
 | 
						|
            ],
 | 
						|
            series: [
 | 
						|
              {
 | 
						|
                name: "值",
 | 
						|
                type: "bar",
 | 
						|
                zlevel: 1,
 | 
						|
                itemStyle: {
 | 
						|
                  normal: {
 | 
						|
                    barBorderRadius: 30,
 | 
						|
                    color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
 | 
						|
                      {
 | 
						|
                        offset: 0,
 | 
						|
                        color: "rgb(255, 97, 97, 1)",
 | 
						|
                      },
 | 
						|
                      {
 | 
						|
                        offset: 1,
 | 
						|
                        color: "rgb(255, 97, 97, 1)",
 | 
						|
                      },
 | 
						|
                    ]),
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                barWidth: 14,
 | 
						|
                data: getValue,
 | 
						|
              },
 | 
						|
              {
 | 
						|
                name: "背景",
 | 
						|
                type: "bar",
 | 
						|
                barWidth: 14,
 | 
						|
                barGap: "-100%",
 | 
						|
                data: getMax,
 | 
						|
                itemStyle: {
 | 
						|
                  normal: {
 | 
						|
                    color: "rgba(255, 238, 238, 1)",
 | 
						|
                    barBorderRadius: 30,
 | 
						|
                  },
 | 
						|
                },
 | 
						|
              },
 | 
						|
            ],
 | 
						|
          }; 
 | 
						|
          this.myCharts5 = echarts.init(document.querySelector('#lineChartFive'));
 | 
						|
          this.myCharts5.setOption(option)  
 | 
						|
          // // 根据页面大小自动响应图表大小
 | 
						|
          // window.addEventListener("resize3", function () {
 | 
						|
          //     myCharts5.resize();
 | 
						|
          // });
 | 
						|
      }); 
 | 
						|
    },
 | 
						|
 | 
						|
    //日期
 | 
						|
    formatDate(date) {
 | 
						|
        // 格式化为 YYYY-MM-DD
 | 
						|
        const year = date.getFullYear();
 | 
						|
        const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始
 | 
						|
        const day = String(date.getDate()).padStart(2, '0');
 | 
						|
        return `${year}-${month}-${day}`;
 | 
						|
    } 
 | 
						|
  }
 | 
						|
}
 | 
						|
</script>
 | 
						|
 | 
						|
<style lang="scss" scoped>
 | 
						|
.dashboard-editor-container {
 | 
						|
  padding: 15px;
 | 
						|
  background-color: rgb(240, 242, 245);
 | 
						|
  position: relative;
 | 
						|
 | 
						|
  .chart-wrapper {
 | 
						|
    background: #fff;
 | 
						|
    padding: 16px 16px 0;
 | 
						|
    margin-bottom: 32px;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
@media (max-width:1024px) {
 | 
						|
  .chart-wrapper {
 | 
						|
    padding: 8px;
 | 
						|
  }
 | 
						|
}
 | 
						|
</style>
 |