Newer
Older
DH_Apicture / src / views / pictureOnMap / page / DrainageSystem / components / ShuiZhicharts.vue
@chenke chenke 13 days ago 8 KB 水质统计
<template>
  <!-- 实时水质 -->
  <div :id="id" style="width: 100%; height: 100%"></div>
</template>
<script setup>
import { guid } from "@/utils/ruoyi";
import { nextTick } from "vue";
import moment from "moment";

const id = guid();
const myChart = shallowRef("");
import * as echarts from "echarts";
import { nowSize } from "@/utils/util.js";

const { proxy } = getCurrentInstance();

const props = defineProps({
  data: {
    type: Object,
    default: () => [],
  },
  //刷新
  refresh: {
    type: Number,
  },

});

watch(
  () => props.refresh,
  (value) => {
    console.log("???????");
    //先销毁实例
    myChart.value && myChart.value.dispose();
    init();
  },
  {
    deep: true,
  }
);

function init() {
  let position = ["insideStartTop", "insideMiddleTop", "insideEndBottom"];
  myChart.value = echarts.init(document.getElementById(id));

  let option = {
      tooltip: {
        trigger: "axis",
        backgroundColor: "#004284",
        borderColor: "#0B9BFF",
        borderRadius: 6, // 设置圆角大小
        // 自定义提示框文本样
        textStyle: {
          // 字体颜色
          color: "white",
          // 字体大小
          fontSize: 14,
        },
      },
      legend: {
        data: [
          '氨氮',
          '溶解氧',
          '浊度',
          '电导率',
          'PH值',
        ],
        textStyle: {
          color: "#FFFFFF",
          fontSize: 12,
        },
      },
      grid: {
        top:52,
        left: 20,
        right: 20,
        bottom: 10,
        containLabel: true,
      },

      xAxis: {
        type: "category",
        boundaryGap: true,
        data: props.data.XAxis,
        axisLabel: {
          color: "rgba(255,255,255,1)",
          fontSize: 12,
          fontFamily: "AlibabaPuHuiTi",
          formatter: function (value) {
            return moment(value).format("HH时");
          },
        },
      },
      dataZoom: [
        {
          // show: true,
          show: false,
          height: 4,
          bottom: 10,
          start: 0,
          end: 60,
          handleSize: "100%",
          fillerColor: "#94FA41",
          borderColor: "transparent",
          backgroundColor: "rgba(148, 250, 65, 0.2)",
          handleStyle: {
            color: "#94FA41",
          },
          moveHandleSize: 0,
          textStyle: {
            color: "#fff",
          },
        },
        {
          type: "inside",
          show: true,
          height: 15,
          start: 0,
          end: 60,
        },
      ],
      yAxis: [
        {
          name: '氨氮',
          type: "value",
          // minInterval: 1,
          min: 0,
          axisLabel: {
            color: "#259543",
            show: true,
            // formatter: function (value) {
            //   return value.toFixed(2); // 保留两位小数
            // },
          },
          nameTextStyle: {
            color: "#259543",
          },
          splitLine: {
            lineStyle: {
              type: "dashed",
              color: "#2161a8",
            },
          },
          alignTicks: true,
          position: "left",
          inverse: true,
          nameLocation: "start",
          offset: 28,
        },
        {
          name: '溶解氧',
          type: "value",
          // minInterval: 1,
          min: 0,
          axisLabel: {
            color: "#b14de5",
            show: true,
            // formatter: function (value) {
            //   return value.toFixed(2); // 保留两位小数
            // },
          },
          nameTextStyle: {
            color: "#b14de5",
            
          },
          splitLine: {
            lineStyle: {
              type: "dashed",
              color: "#2161a8",
            },
          },
          alignTicks: true,
          position: "left",
          offset: -5,
        },
        {
          name: '浊度',
          type: "value",
          // minInterval: 1,
          min: 0,
          axisLabel: {
            color: "#99FF55",
            show: true,
            // formatter: function (value) {
            //   return value.toFixed(2); // 保留两位小数
            // },
          },
          nameTextStyle: {
            color: "#99FF55",
            padding: [0, 0, 0, 20],
          },
          splitLine: {
            lineStyle: {
              type: "dashed",
              color: "#2161a8",
            },
          },
          alignTicks: true,
          position: "right",
          offset: -5,
        },

        {
          name: '电导率',
          type: "value",
          // minInterval: 1,
          min: 0,
          axisLabel: {
            color: "#FFC155",
            show: true,
            // formatter: function (value) {
            //   return value.toFixed(2); // 保留两位小数
            // },
          },
          nameTextStyle: {
            color: "#FFC155",
            padding: [0, 0, 0, 25],
          },
          splitLine: {
            lineStyle: {
              type: "dashed",
              color: "#2161a8",
            },
          },
          alignTicks: true,
          position: "right",
          offset: 28,
        },
         {
          name: 'PH值',
          type: "value",
          // minInterval: 1,
          min: 0,
          axisLabel: {
            color: "#009BE9",
            show: true,
            // formatter: function (value) {
            //   return value.toFixed(2); // 保留两位小数
            // },
          },
          nameTextStyle: {
            color: "#009BE9",
            padding: [0, 0, 0, 30],
          },
          splitLine: {
            lineStyle: {
              type: "dashed",
              color: "#2161a8",
            },
          },
          alignTicks: true,
          position: "right",
          offset: 62,
        },
      ],
      series: [
        {
          name: '氨氮',
          type: "line",
          data: props.data.nh4n,
          yAxisIndex: 1,
          symbolSize: 7,
          // 修改折线颜色
          lineStyle: {
            color: "#259543", // 折线颜色
            width: 2, // 折线宽度
          },
          // 修改数据点颜色
          itemStyle: {
            color: "#259543", // 数据点颜色
            width: 4,
          },
        },
        {
          name: '溶解氧',
          type: "line",
          data: props.data.dO,
          yAxisIndex: 1,
          symbolSize: 7,
          // 修改折线颜色
          lineStyle: {
            color: "#b14de5", // 折线颜色
            width: 2, // 折线宽度
          },
          // 修改数据点颜色
          itemStyle: {
            color: "#b14de5", // 数据点颜色
            width: 4,
          },
        },
        {
          name: '浊度',
          type: "line",
          data:  props.data.turb,
          yAxisIndex: 2,
          // 修改折线颜色
          lineStyle: {
            color: "#99FF55", // 折线颜色
            width: 2, // 折线宽度
          },
          // 修改数据点颜色
          itemStyle: {
            color: "#99FF55", // 数据点颜色
          },
        },
        {
          name: '电导率',
          type: "line",
          data: props.data.cond,
          yAxisIndex: 3,
          // 修改折线颜色
          lineStyle: {
            color: "#FFC155", // 折线颜色
            width: 2, // 折线宽度
          },
          // 修改数据点颜色
          itemStyle: {
            color: "#FFC155", // 数据点颜色
          },
        },
        {
          name: 'PH值',
          type: "line",
          data: props.data.ph,
          yAxisIndex: 4,
          // 修改折线颜色
          lineStyle: {
            color: "#009BE9", // 折线颜色
            width: 2, // 折线宽度
          },
          // 修改数据点颜色
          itemStyle: {
            color: "#009BE9", // 数据点颜色
          },
        },
      ],
    };

  option && myChart.value.setOption(option);
}

function resizeTheChart() {
  if (myChart.value) {
    myChart.value.resize();
  }
}
onMounted(() => {
  nextTick(() => {
    init();
    window.addEventListener("resize", resizeTheChart);
  });
});
</script>