管道基础大数据平台系统开发-【前端】-新系統界面
TreeWish
2023-02-28 db5aed78bc305815558e97f9a1110cc2fa993bc9
src/components/chart/BaseLineChart.vue
@@ -8,6 +8,12 @@
  countCountryDimension,
  countProvinceDimension,
  GetServicesVisitsCount,
  countZhPipeMapLength,
  countLargeCategories,
  countProjectType,
  countProjectDown,
  countProjectTypeNumber,
  countStorageByProject,
} from "@/api/screen.js"
export default {
  props: {
@@ -35,6 +41,18 @@
      type: String,
      default: "全国项目",
    },
    params: {
      type: Object,
      default: () => null,
    },
    project: {
      type: String,
      default: "全国项目",
    },
    title: {
      type: String,
      default: "",
    },
  },
  data() {
    return {
@@ -46,11 +64,21 @@
    option() {
      let xAxis = []
      let yAxis = []
      this.dataList.forEach(item => {
        xAxis.push(item.type)
        yAxis.push(item.count)
      })
      const proObj = this.dataList.find(item => item.项目名称 == this.project)
      if (proObj) {
        Object.keys(proObj).forEach(item => {
          if (item.toString() != '项目名称') {
            xAxis.push(item)
            yAxis.push(proObj[item])
          }
        })
      } else {
        this.dataList.forEach(item => {
          let type = item.type || item.projtype
          xAxis.push(type)
          yAxis.push(item.count)
        })
      }
      // let data = [220, 182, 191, 234, 290, 330, 310]
      // const sideData = data.map(item => {
@@ -66,10 +94,10 @@
        },
        grid: {
          right: "5%",
          top: '10%',
          top: "10%",
          left: "5%",
          bottom: "17%",
          containLabel: true
          containLabel: true,
        },
        xAxis: {
@@ -79,9 +107,11 @@
            lineStyle: {
              color: "#fff",
            },
            show: false,
          },
          nameRotate: 45,
          axisTick: {
            show: false,
            alignWithLabel: true,
          },
          axisLabel: {
@@ -114,7 +144,7 @@
        },
        series: [
          {
            name: "服务访问次数",
            name: this.title,
            type: "line",
            showAllSymbol: false,
            lineStyle: {
@@ -141,26 +171,35 @@
    },
    project: {
      deep: true,
      immediate: true,
      handler(newVal) {
        let requsetFn = null
        switch (newVal) {
          case "全球项目":
            requsetFn = countCountryDimension
            requsetFn = countProjectTypeNumber
            break
          case "全国项目":
            requsetFn = countProvinceDimension
            requsetFn = countProjectTypeNumber
            break
          case "全球管网图":
            requsetFn = countZhPipeMapLength
            break
          case "全国管网图":
            requsetFn = countZhPipeMapLength
            break
          default:
            requsetFn = countStorageByProject
            break
        }
        this.initData(requsetFn)
        requsetFn && this.initData(requsetFn)
        this.setOptions(this.option)
      },
    },
  },
  mounted() {
    this.initData()
    // this.initData()
    this.initChart()
    if (this.autoResize) {
      window.addEventListener("resize", this.resizeHandler)
@@ -178,7 +217,7 @@
  },
  methods: {
    resizeHandler() {
      this.chart.resize()
      this.chart && this.chart.resize()
    },
    initChart() {
      this.chart = echarts.init(this.$refs.chart, "", {
@@ -204,7 +243,7 @@
      this.chart && this.chart.clear()
    },
    async initData(requsetFn = GetServicesVisitsCount) {
      const res = await requsetFn()
      const res = await requsetFn(this.params)
      if (res.code == 200) {
        this.dataList = res.result
        console.log("requsetFn", res)