loulijun2021
2023-09-13 2bf7aff3435c9abcb38b9ced5b6fa56957aeae89
src/utils/myEcharts.js
@@ -1745,7 +1745,7 @@
          textBorderColor: '#000',
          textBorderWidth: 1,
          textShadowBlur: 1,
          textShadowColor: colorY,
          textShadowColor: colorX,
          textShadowOffsetX: 0,
          textShadowOffsetY: 0,
          paddingTop: 10,
@@ -1797,7 +1797,7 @@
        splitLine: { // 分隔线
          length: 10, // 属性length控制线长
          lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式
            color: colorY
            color: colorX
          }
        },
        axisLabel: {
@@ -1829,7 +1829,7 @@
          textBorderColor: '#000',
          textBorderWidth: 1,
          textShadowBlur: 1,
          textShadowColor: colorY,
          textShadowColor: colorX,
          textShadowOffsetX: 0,
          textShadowOffsetY: 0,
          paddingTop: 10,
@@ -1853,3 +1853,846 @@
  }
  return option
}
// 车间质量
export function cjzl01(scaleData) {
  var rich = {
    white: {
      color: colorX,
      align: 'center',
      padding: [3, 0],
      fontSize: 20
    }
  }
  var data = []
  var color = ['#00ffff', '#ff5b00', '#006ced', '#ffe000', '#ffa800', '#ff3000']
  for (var i = 0; i < scaleData.length; i++) {
    data.push({
      value: scaleData[i].value,
      name: scaleData[i].name,
      itemStyle: {
        normal: {
          borderWidth: 5,
          shadowBlur: 20,
          borderColor: color[i],
          shadowColor: color[i]
        }
      }
    }
    )
  }
  var seriesObj = [{
    name: '',
    type: 'pie',
    clockWise: false,
    radius: [60, 65],
    hoverAnimation: false,
    top: '10%',
    itemStyle: {
      normal: {
        label: {
          show: true,
          position: 'outside',
          color: colorX,
          fontSize: 20,
          formatter: function(params) {
            if (params.name !== '') {
              return params.name + '\n{white|' + params.value + '}'
            } else {
              return ''
            }
          },
          rich: rich
        },
        labelLine: {
          length: 10,
          length2: 10,
          show: true,
          color: '#00ffff'
        }
      }
    },
    data: data
  }]
  const option = {
    backgroundColor: 'transparent',
    tooltip: {
      show: false
    },
    legend: {
      show: false
    },
    toolbox: {
      show: false
    },
    title: {
      text: '总和',
      left: '49%',
      top: '45%',
      textAlign: 'center',
      textStyle: {
        color: '#00ffff',
        fontSize: '20',
        fontWeight: 'bolder'
      },
      subtext: scaleData.length > 0 ? scaleData.map(i => parseFloat(i.value)).reduce((pre, curr) => {
        return pre + curr
      }) : [0],
      subtextStyle: {
        color: '#00ffff',
        fontSize: '20',
        fontWeight: 'bolder'
      }
    },
    series: seriesObj
  }
  return option
}
export function cjzl02(title, scaleData) {
  var rich = {
    white: {
      color: '#ddd',
      align: 'center',
      padding: [5, 0],
      fontSize: 20
    }
  }
  var data = []
  var color = ['#00ffff', '#ff3000', '#ffe000', '#ffa800', '#ff5b00']
  for (var i = 0; i < scaleData.length; i++) {
    data.push({
      value: scaleData[i].value,
      name: scaleData[i].name,
      itemStyle: {
        normal: {
          borderWidth: 5,
          shadowBlur: 20,
          borderColor: color[i],
          shadowColor: [i]
        }
      }
    }
    )
  }
  var seriesObj = [{
    name: '',
    type: 'pie',
    clockWise: false,
    radius: [60, 65],
    top: '10%',
    hoverAnimation: false,
    itemStyle: {
      normal: {
        label: {
          fontSize: 20,
          show: true,
          position: 'outside',
          color: colorX,
          formatter: function(params) {
            // var percent = 0
            // var total = 0
            // for (var i = 0; i < scaleData.length; i++) {
            //   total += scaleData[i].value
            // }
            // percent = ((params.value / total) * 100).toFixed(0)
            if (params.name !== '') {
              return params.name + '\n{white|' + '' + params.value + '}'
            } else {
              return ''
            }
          },
          rich: rich
        },
        labelLine: {
          length: 10,
          length2: 20,
          show: true,
          color: '#00ffff'
        }
      }
    },
    data: data
  }]
  const option = {
    backgroundColor: 'transparent',
    tooltip: {
      show: false
    },
    top: 'middle',
    title: {
      text: title,
      left: '49%',
      top: '45%',
      textAlign: 'center',
      textStyle: {
        // color: colorX,
        color: '#00ffff',
        fontSize: '20',
        fontWeight: 'bolder'
      },
      subtext: scaleData.length > 0 ? scaleData.map(i => parseFloat(i.value)).reduce((pre, curr) => {
        return pre + curr
      }) : [0],
      subtextStyle: {
        color: '#00ffff',
        fontSize: '20',
        fontWeight: 'bolder'
      }
    },
    legend: {
      show: false
    },
    toolbox: {
      show: false
    },
    series: seriesObj
  }
  return option
}
export function cjzl03(xData, legendData, yData) { // 左侧
  return {
    backgroundColor: 'transparent',
    tooltip: {},
    grid: {
      left: '2%',
      right: '2%',
      bottom: '20%',
      top: '10%',
      containLabel: true
    },
    legend: {
      data: legendData,
      textStyle: { fontSize: 16, color: '#fff' },
      itemWidth: 25,
      itemHeight: 10,
      itemGap: 15,
      bottom: '5%',
      selectedMode: false
    },
    xAxis: [{
      type: 'category',
      boundaryGap: true,
      axisLabel: {
        interval: 0,
        formatter: '{value}',
        fontSize: 16,
        margin: 20,
        textStyle: {
          color: colorX
        }
      },
      axisLine: {
        lineStyle: {
          color: '#032c58'
        }
      },
      splitLine: {
        show: false,
        lineStyle: {
          color: '#032c58'
        }
      },
      axisTick: {
        show: false
      },
      data: xData
    }],
    yAxis: [
      {
        // max: 800,
        boundaryGap: false,
        splitNumber: 4,
        type: 'value',
        axisLabel: {
          textStyle: {
            fontSize: 16,
            color: colorX
          }
        },
        // name: '单',
        // nameTextStyle: {
        //   color: colorY,
        //   fontSize: 14,
        //   lineHeight: 20
        // },
        splitLine: {
          show: true,
          lineStyle: {
            color: '#032c58'
          }
        },
        axisLine: {
          show: true,
          lineStyle: {
            color: '#032c58'
          }
        },
        axisTick: {
          show: true
        }
      }
    ],
    series: [
      {
        name: legendData[0],
        type: 'line',
        // smooth: true, //是否平滑曲线显示
        //          symbol:'circle',  // 默认是空心圆(中间是白色的),改成实心圆
        showAllSymbol: true,
        symbol: 'emptyCircle',
        symbolSize: 6,
        lineStyle: {
          normal: {
            color: '#00ffff' // 线条颜色
          },
          borderColor: '#00ffff'
        },
        // label: {
        //   show: true,
        //   position: 'top',
        //   textStyle: {
        //     color: '#fff'
        //   }
        // },
        itemStyle: {
          normal: {
            color: '#00ffff'
          }
        },
        tooltip: {
          show: false
        },
        // areaStyle: { // 区域填充样式
        //   normal: {
        //     // 线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。
        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
        //       offset: 0,
        //       color: 'rgba(0,154,120,1)'
        //     },
        //     {
        //       offset: 1,
        //       color: 'rgba(0,0,0, 0)'
        //     }
        //     ], false),
        //     shadowColor: 'rgba(53,142,215, 0.9)', // 阴影颜色
        //     shadowBlur: 20 // shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。
        //   }
        // },
        data: yData[0]
      },
      {
        name: legendData[1],
        type: 'line',
        // smooth: true, //是否平滑曲线显示
        //          symbol:'circle',  // 默认是空心圆(中间是白色的),改成实心圆
        showAllSymbol: true,
        symbol: 'emptyCircle',
        symbolSize: 6,
        lineStyle: {
          normal: {
            color: '#ff3000' // 线条颜色
          },
          borderColor: '#ff3000'
        },
        // label: {
        //   show: true,
        //   position: 'top',
        //   textStyle: {
        //     color: '#fff'
        //   }
        // },
        itemStyle: {
          normal: {
            color: '#ff3000'
          }
        },
        tooltip: {
          show: false
        },
        // areaStyle: { // 区域填充样式
        //   normal: {
        //     // 线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。
        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
        //       offset: 0,
        //       color: 'rgba(0,154,120,1)'
        //     },
        //     {
        //       offset: 1,
        //       color: 'rgba(0,0,0, 0)'
        //     }
        //     ], false),
        //     shadowColor: 'rgba(53,142,215, 0.9)', // 阴影颜色
        //     shadowBlur: 20 // shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。
        //   }
        // },
        data: yData[1]
      },
      {
        name: legendData[2],
        type: 'line',
        // smooth: true, //是否平滑曲线显示
        //          symbol:'circle',  // 默认是空心圆(中间是白色的),改成实心圆
        showAllSymbol: true,
        symbol: 'emptyCircle',
        symbolSize: 6,
        lineStyle: {
          normal: {
            color: '#ffe000' // 线条颜色
          },
          borderColor: '#ffe000'
        },
        // label: {
        //   show: true,
        //   position: 'top',
        //   textStyle: {
        //     color: '#fff'
        //   }
        // },
        itemStyle: {
          normal: {
            color: '#ffe000'
          }
        },
        tooltip: {
          show: false
        },
        // areaStyle: { // 区域填充样式
        //   normal: {
        //     // 线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。
        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
        //       offset: 0,
        //       color: 'rgba(0,154,120,1)'
        //     },
        //     {
        //       offset: 1,
        //       color: 'rgba(0,0,0, 0)'
        //     }
        //     ], false),
        //     shadowColor: 'rgba(53,142,215, 0.9)', // 阴影颜色
        //     shadowBlur: 20 // shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。
        //   }
        // },
        data: yData[2]
      },
      {
        name: legendData[3],
        type: 'line',
        // smooth: true, //是否平滑曲线显示
        //          symbol:'circle',  // 默认是空心圆(中间是白色的),改成实心圆
        showAllSymbol: true,
        symbol: 'emptyCircle',
        symbolSize: 6,
        lineStyle: {
          normal: {
            color: '#ffa800' // 线条颜色
          },
          borderColor: '#ffa800'
        },
        // label: {
        //   show: true,
        //   position: 'top',
        //   textStyle: {
        //     color: '#fff'
        //   }
        // },
        itemStyle: {
          normal: {
            color: '#ffa800'
          }
        },
        tooltip: {
          show: false
        },
        // areaStyle: { // 区域填充样式
        //   normal: {
        //     // 线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。
        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
        //       offset: 0,
        //       color: 'rgba(0,154,120,1)'
        //     },
        //     {
        //       offset: 1,
        //       color: 'rgba(0,0,0, 0)'
        //     }
        //     ], false),
        //     shadowColor: 'rgba(53,142,215, 0.9)', // 阴影颜色
        //     shadowBlur: 20 // shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。
        //   }
        // },
        data: yData[3]
      },
      {
        name: legendData[4],
        type: 'line',
        // smooth: true, //是否平滑曲线显示
        //          symbol:'circle',  // 默认是空心圆(中间是白色的),改成实心圆
        showAllSymbol: true,
        symbol: 'emptyCircle',
        symbolSize: 6,
        lineStyle: {
          normal: {
            color: '#ff5b00' // 线条颜色
          },
          borderColor: '#ff5b00'
        },
        // label: {
        //   show: true,
        //   position: 'top',
        //   textStyle: {
        //     color: '#fff'
        //   }
        // },
        itemStyle: {
          normal: {
            color: '#ff5b00'
          }
        },
        tooltip: {
          show: false
        },
        // areaStyle: { // 区域填充样式
        //   normal: {
        //     // 线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。
        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
        //       offset: 0,
        //       color: 'rgba(0,154,120,1)'
        //     },
        //     {
        //       offset: 1,
        //       color: 'rgba(0,0,0, 0)'
        //     }
        //     ], false),
        //     shadowColor: 'rgba(53,142,215, 0.9)', // 阴影颜色
        //     shadowBlur: 20 // shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。
        //   }
        // },
        data: yData[4]
      }
    ]
  }
}
export function cjzl04(xData, data1, data2, data3) { // 右侧
  const option = {
    backgroundColor: 'transparent',
    grid: {
      left: '2%',
      top: '12%',
      right: '2%',
      bottom: '20%',
      containLabel: true
    },
    legend: {
      // show: true,
      // itemGap: 20,
      // data: ['注册总量', '最新注册量'],
      // textStyle: {
      //   color: '#f9f9f9',
      //   borderColor: '#fff'
      // }
      data: ['完成数', '任务数', '完成率'],
      textStyle: { fontSize: 16, color: '#fff' },
      itemWidth: 25,
      itemHeight: 10,
      itemGap: 15,
      bottom: '5%',
      selectedMode: false
    },
    xAxis: {
      type: 'category',
      boundaryGap: true,
      axisLabel: {
        interval: 0,
        formatter: '{value}',
        fontSize: 16,
        margin: 20,
        textStyle: {
          color: colorX
        }
      },
      axisLine: {
        lineStyle: {
          color: '#032c58'
        }
      },
      splitLine: {
        show: false,
        lineStyle: {
          color: '#032c58'
        }
      },
      axisTick: {
        show: false
      },
      data: xData
    },
    yAxis: [
      {
        boundaryGap: false,
        // splitNumber: 4,
        type: 'value',
        // max: 100,
        axisLabel: {
          textStyle: {
            fontSize: 16,
            color: colorX
          }
        },
        nameTextStyle: {
          color: '#fff',
          fontSize: 14,
          lineHeight: 40
        },
        splitLine: {
          show: true,
          lineStyle: {
            color: '#032c58'
          }
        },
        axisLine: {
          show: true,
          lineStyle: {
            color: '#032c58'
          }
        },
        axisTick: {
          show: false
        }
      },
      {
        boundaryGap: false,
        // splitNumber: 4,
        max: 100,
        type: 'value',
        axisLabel: {
          textStyle: {
            fontSize: 16,
            color: colorX
          }
        },
        nameTextStyle: {
          color: '#fff',
          fontSize: 16,
          lineHeight: 40
        },
        splitLine: {
          show: false,
          lineStyle: {
            color: '#032c58'
          }
        },
        axisLine: {
          show: false,
          lineStyle: {
            color: '#032c58'
          }
        },
        axisTick: {
          show: false
        }
      }
    ],
    series: [
      { // 三个最底下的圆片
        'name': '完成数',
        'type': 'pictorialBar',
        'symbolSize': [45, 25],
        'symbolOffset': [0, 10],
        'z': 12,
        color: `rgb(37,196,238)`,
        itemStyle: {
          opacity: 1,
          color: function(params) {
            return new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
              offset: 0,
              color: `rgb(37,196,238)` // 0% 处的颜色
            }, {
              offset: 1,
              color: `rgb(37,196,238)`// 100% 处的颜色
            }], false)
          }
        },
        'data': [1, 1, 1, 1, 1]
      },
      // 下半截柱状图
      {
        name: '',
        type: 'bar',
        barWidth: 45,
        barGap: '-100%',
        itemStyle: { // lenged文本
          opacity: 1,
          color: function(params) {
            return new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
              offset: 0,
              color: `rgb(35,131,180)` // 0% 处的颜色
            }, {
              offset: 1,
              color: `rgb(35,131,180)`// 100% 处的颜色
            }], false)
          }
        },
        data: data1
      },
      { // 替代柱状图 默认不显示颜色,是最下方柱图(邮件营销)的value值 - 20
        type: 'bar',
        barWidth: 45,
        barGap: '-100%',
        stack: '广告',
        itemStyle: {
          color: 'transparent'
        },
        label: {
          normal: {
            show: true,
            position: 'left',
            fontSize: 16,
            color: colorX,
            zIndex: 10
          }
        },
        data: data1
      },
      {
        'name': '', // 头部
        'type': 'pictorialBar',
        'symbolSize': [45, 25],
        'symbolOffset': [0, -10],
        'z': 12,
        'symbolPosition': 'end',
        itemStyle: {
          color: '#163F7A',
          opacity: 1
        },
        'data': data2
      },
      {
        'name': '',
        'type': 'pictorialBar',
        'symbolSize': [45, 25],
        'symbolOffset': [0, -10],
        'z': 12,
        itemStyle: {
          opacity: 1,
          color: function(params) {
            return new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
              offset: 0,
              color: `rgb(37,196,238)` // 0% 处的颜色
            }, {
              offset: 1,
              color: `rgb(37,196,238)`// 100% 处的颜色
            }], false)
          }
        },
        'symbolPosition': 'end',
        'data': data1
      },
      {
        name: '任务数',
        type: 'bar',
        barWidth: 45,
        barGap: '-100%',
        z: 0,
        itemStyle: {
          color: '#163F7A',
          opacity: 0.7
        },
        label: {
          normal: {
            show: true,
            position: 'top',
            fontSize: 16,
            color: colorX,
            offset: [0, -5]
          }
        },
        data: data2
      },
      {
        name: '完成率',
        type: 'line',
        yAxisIndex: 1,
        showSymbol: true,
        showAllSymbol: true,
        symbolSize: 6,
        barWidth: 14,
        zlevel: 3,
        lineStyle: {
          normal: {
            width: 2,
            color: `rgb(108,237,100)`
          }
        },
        // areaStyle: {
        //   normal: {
        //     color: {
        //       type: 'linear',
        //       x: 0,
        //       y: 0,
        //       x2: 0,
        //       y2: 1,
        //       colorStops: [
        //         {
        //           offset: 0,
        //           color: `rgba(72,226,198, 0.3)`// 0% 处的颜色
        //         },
        //         {
        //           offset: 1,
        //           color: `rgba(72,226,198, 0.2)` // 100% 处的颜色
        //         }
        //       ],
        //       globalCoord: false // 缺省为 false
        //     } // 渐变颜色
        //   }
        // },
        itemStyle: {
          normal: {
            color: {
              type: 'linear',
              x: 0,
              y: 0,
              x2: 0,
              y2: 1,
              colorStops: [
                {
                  offset: 0,
                  color: `rgb(108,237,100)`// 0% 处的颜色
                },
                {
                  offset: 1,
                  color: `rgb(108,237,100)` // 100% 处的颜色
                }
              ],
              globalCoord: false // 缺省为 false
            } // 渐变颜色
          }
        },
        label: {
          normal: {
            show: true,
            position: 'top',
            fontSize: 14,
            color: colorX,
            formatter: params => {
              return `${params.value}%`
            }
            // offset: [0, -5]
          }
        },
        data: data3
      }
    ]
  }
  return option
}