管道基础大数据平台系统开发-【前端】-新系統界面
TreeWish
2023-02-28 f508815da0100bfd926274ed3cb4c779324e2c95
src/components/Screen/right.vue
@@ -1,44 +1,84 @@
<template>
  <div class="current">
    <div class="rightContainer" v-if="ChartDisplay">
    <div class="rightContainer" v-if="currentDisplay == '大屏' && ChartDisplay">
      <div class="current1">
        <div class="aside-title">工程种类</div>
        <div class="aside-title">项目统计</div>
        <project-category></project-category>
      </div>
      <div class="" style="height: 60%">
        <div class="aside-title">文件格式</div>
        <div class="content" style="height: calc(100% - 30px)">
      <div class="current1">
        <div class="aside-title">数据统计</div>
        <visit-count></visit-count>
      </div>
      <div class="current1">
        <div class="aside-title">服务访问次数</div>
        <Service-Get></Service-Get>
      </div>
    </div>
    <!-- 全球、全国项目 -->
    <div class="rightContainer" v-if="currentDisplay == '项目'">
      <div class="current1">
        <div class="aside-title">项目柱状图</div>
        <!-- <country-dimension-bar ref="barRef"></country-dimension-bar> -->
        <base-bar-chart :project="currentProject"></base-bar-chart>
      </div>
      <div class="current1">
        <div class="aside-title">项目饼状图</div>
        <!-- <base-pie-chart :project="currentProject"></base-pie-chart> -->
        <country-dimension-pie
          v-if="currentProject == '全球项目'"
          ref="pieRef"
        ></country-dimension-pie>
        <province-dimension-pie v-else ref="pieRef"></province-dimension-pie>
      </div>
      <div class="current1">
        <div class="aside-title">项目数据使用情况</div>
        <dv-capsule-chart :config="config" style="width: 360px; height: 85%" />
      </div>
    </div>
    <!-- 全国、全球管网 -->
    <div class="rightContainer" v-if="currentDisplay == '管网'">
      <div class="current1">
        <div class="aside-title">站场座数</div>
        <!-- <country-dimension-bar ref="barRef"></country-dimension-bar> -->
        <base-bar-chart :project="currentProject"></base-bar-chart>
      </div>
      <div class="current1">
        <div class="aside-title">阀室座数</div>
        <dv-active-ring-chart
          :config="pieconfig"
          style="width: 377px; height: 85%"
        />
      </div>
      <div class="current1">
        <div class="aside-title">不同输送介质管道条数</div>
        <dv-conical-column-chart
          :config="config"
          style="width: 377px; height: 85%"
        />
      </div>
    </div>
    <!-- 单个工程 -->
    <div class="rightContainer" v-if="currentDisplay == '工程'">
      <div class="current1">
        <div class="aside-title">数据存储量</div>
        <base-line-chart :project="currentProject"></base-line-chart>
      </div>
      <div class="current1">
        <div class="aside-title">数据下载次数</div>
        <base-pie-chart height="90%" :project="currentProject"></base-pie-chart>
      </div>
      <div class="current1">
        <div class="aside-title">统计不同输送介质管道条数</div>
        <div class="content" style="height: 30px">
          <div class="header">
            <div>格式</div>
            <div>数量</div>
          </div>
          <file-format></file-format>
        </div>
        <file-format></file-format>
      </div>
    </div>
    <div
      class="rightContainer2"
      v-if="CourtyDisplay && currentProject =='全球项目'"
    >
      <div class="current1">
        <div class="aside-title">项目数量柱状图</div>
        <country-dimension-bar ref="barRef"></country-dimension-bar>
      </div>
      <div class="current1">
        <div class="aside-title">项目数量饼状图</div>
        <country-dimension-pie ref="pieRef"></country-dimension-pie>
      </div>
    </div>
    <div class="rightContainer2" v-if="CourtyDisplay && currentProject =='全国项目'">
      <div class="current1">
        <div class="aside-title">项目数量柱状图</div>
        <province-dimension-bar ref="barRef"></province-dimension-bar>
      </div>
      <div class="current1">
        <div class="aside-title">项目数量饼状图</div>
        <province-dimension-pie ref="pieRef"></province-dimension-pie>
      </div>
    </div>
    <div class="rightarrow">
      <img :src="RightImg" @click="ChangeRight" />
    </div>
@@ -54,6 +94,12 @@
import CountryDimensionPie from "../chart/CountryDimensionPie.vue"
import ProvinceDimensionBar from "../chart/CountryProvinceBar.vue"
import ProvinceDimensionPie from "../chart/CountryProvincePie.vue"
import ServiceGet from "../chart/ServiceGet.vue"
import BaseBarChart from "../chart/BaseBarChart.vue"
import BaseLineChart from "../chart/BaseLineChart.vue"
import BasePieChart from "../chart/BasePieChart .vue"
import VisitCount from "../chart/VisitCount.vue"
import { countCountryDimension, countProvinceDimension } from "@/api/screen.js"
export default {
@@ -66,46 +112,91 @@
    CountryDimensionBar,
    CountryDimensionPie,
    ProvinceDimensionBar,
    ProvinceDimensionPie
    ProvinceDimensionPie,
    ServiceGet,
    BaseBarChart,
    BaseLineChart,
    BasePieChart,
    VisitCount,
  },
  data() {
    return {
      ChartDisplay: true,
      CourtyDisplay: false,
      PipeDisPlay: false,
      RightImg: require("../../assets/img/Screen/leftArrow.png"),
      leftMessage: "init",
      currentProject: "全球项目",
      currentDisplay: "大屏",
      countryData: [],
      provinceData: [],
      config: {
        data: [
          {
            name: "南阳",
            value: 167,
          },
          {
            name: "周口",
            value: 123,
          },
          {
            name: "漯河",
            value: 98,
          },
          {
            name: "郑州",
            value: 75,
          },
          {
            name: "西峡",
            value: 66,
          },
        ],
        showValue: true,
      },
      pieconfig: {
        data: [
          {
            name: "周口",
            value: 55,
          },
          {
            name: "南阳",
            value: 120,
          },
          {
            name: "西峡",
            value: 78,
          },
          {
            name: "驻马店",
            value: 66,
          },
          {
            name: "新乡",
            value: 80,
          },
        ],
        lineWidth: 10,
      },
    }
  },
  created() {
    // this.getCountryData()
    // this.getProvinceData()
  },
  mounted() {
    // const countryData = this.countryData
    // const provinceData = this.provinceData
    // this.$refs.barRef.initChart(countryData)
    // this.$refs.pieRef.initChart(countryData)
  mounted() {
    this.OpenLeftInit()
    this.$bus.$on("changeProject", name => {
      if (name.includes("全球管网") || name.includes("全国管网")) {
        this.currentDisplay = "管网"
      } else if (name.includes("全球项目") || name.includes("全国项目")) {
        this.currentDisplay = "项目"
      } else {
        this.currentDisplay = "工程"
      }
      this.currentProject = name
    })
  },
  methods: {
    async getCountryData() {
      const res = await countCountryDimension()
      if (res.code == 200) {
        this.countryData = res.result
      }
    },
    async getProvinceData() {
      const res = await countProvinceDimension()
      if (res.code == 200) {
        this.provinceData = res.result
      }
    },
    ChangeRight() {
      if (this.leftMessage == "init") {
        if (this.ChartDisplay) {
@@ -116,34 +207,35 @@
        this.ChartDisplay = !this.ChartDisplay
      }
      if (this.leftMessage == "projectree") {
        if (this.ProjectreeDisplay) {
          this.RightImg = require("../../assets/img/Screen/leftArrow.png")
        } else {
          this.RightImg = require("../../assets/img/Screen/rightArrow.png")
        }
        this.ProjectreeDisplay = !this.ProjectreeDisplay
      }
      // if (this.leftMessage == "projectree") {
      //   if (this.CourtyDisplay) {
      //     this.RightImg = require("../../assets/img/Screen/leftArrow.png")
      //   } else {
      //     this.RightImg = require("../../assets/img/Screen/rightArrow.png")
      //   }
      //   this.CourtyDisplay = !this.CourtyDisplay
      // }
      this.ChartDisplay = !this.ChartDisplay
      // this.ChartDisplay = !this.ChartDisplay
      this.$parent.ChangeWidth("right")
    },
    //打开大屏左侧界面
    OpenLeftInit() {
      this.currentDisplay = "大屏"
      this.ChartDisplay = true
      this.CourtyDisplay = false
      this.leftMessage = "init"
      // this.OpenLeftInitChart();
      this.$parent.ChangeWidth("leftTree")
      // this.$parent.ChangeWidth("leftTree")
    },
    //打开工程树
    OpenLeftProjectTree() {
      this.ChartDisplay = false
      this.CourtyDisplay = true
      this.leftMessage = "projectree"
      this.$parent.ChangeWidth("leftTree")
    },
    // OpenLeftProjectTree() {
    //   this.ChartDisplay = false
    //   this.CourtyDisplay = true
    //   this.leftMessage = "projectree"
    //   this.$parent.ChangeWidth("leftTree")
    // },
  },
}
</script>
@@ -155,6 +247,7 @@
  flex-direction: row;
  align-items: center;
  justify-content: center;
  .rightarrow {
    width: 36px;
    height: 100%;
@@ -169,8 +262,7 @@
  }
  .rightContainer {
    height: 100%;
    width: calc(100% - 7px);
    width: calc(100% - 45px);
    display: flex;
    flex-direction: column;
    align-items: center;
@@ -185,7 +277,7 @@
  }
  .rightContainer2 {
    height: 100%;
    width: calc(100% - 7px);
    width: calc(100% - 45px);
    display: flex;
    flex-direction: column;
@@ -193,27 +285,27 @@
    .current1 {
      margin-top: 10px;
      margin-bottom: 30px;
      height: 32%;
      height: 30%;
      width: 100%;
      background: url(../../assets/img/Screen/chartbg.png);
      background-size: 100% 100%;
      background-repeat: no-repeat;
    }
  }
}
.content {
  width: 377px;
  background: url(../../assets/img/Screen/contentBg.png);
  background-size: 100% 100%;
  background-repeat: no-repeat;
  .header {
    margin: 0px auto;
    padding: 10px 0;
    width: 80%;
    display: flex;
    justify-content: space-between;
    color: #fff;
    font-size: 13px;
  .content {
    width: 100%;
    background: url(../../assets/img/Screen/contentBg.png);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    .header {
      margin: 0px auto;
      padding: 10px 0;
      width: 80%;
      display: flex;
      justify-content: space-between;
      color: #fff;
      font-size: 13px;
    }
  }
}
</style>