zhangzengfei
2022-08-16 d3fbd83787573e9e67067b7b65ae9d5ce8ecb0b8
添加统计分析大屏
32个文件已添加
10个文件已修改
868 ■■■■ 已修改文件
public/images/data-v/bg.jpg 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/center.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/d-total.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/data-m.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/data08.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/head.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/jcdsj_logo.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/jzxz1.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/jzxz2.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh31.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh32.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh33.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh34.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh35.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh36.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh37.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh38.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh39.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh40.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh41.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh42.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh43.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh44.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/ksh45.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/lineup.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/offline.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/online.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/top10.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/type.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/week.png 补丁 | 查看 | 原始文档 | blame | 历史
public/index.html 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Footer.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/IndexHeader.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataView/fonts/yjsz.TTF 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataView/index.vue 578 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipmentManagement/equipmentList/components/FormList.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipmentManagement/equipmentList/index.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hashrate/hashrateDetail/index.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/manageCenter/index.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/report/index.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/video/index.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/images/data-v/bg.jpg
public/images/data-v/center.png
public/images/data-v/d-total.png
public/images/data-v/data-m.png
public/images/data-v/data08.png
public/images/data-v/head.png
public/images/data-v/jcdsj_logo.png
public/images/data-v/jzxz1.png
public/images/data-v/jzxz2.png
public/images/data-v/ksh31.png
public/images/data-v/ksh32.png
public/images/data-v/ksh33.png
public/images/data-v/ksh34.png
public/images/data-v/ksh35.png
public/images/data-v/ksh36.png
public/images/data-v/ksh37.png
public/images/data-v/ksh38.png
public/images/data-v/ksh39.png
public/images/data-v/ksh40.png
public/images/data-v/ksh41.png
public/images/data-v/ksh42.png
public/images/data-v/ksh43.png
public/images/data-v/ksh44.png
public/images/data-v/ksh45.png
public/images/data-v/lineup.png
public/images/data-v/offline.png
public/images/data-v/online.png
public/images/data-v/top10.png
public/images/data-v/type.png
public/images/data-v/week.png
public/index.html
@@ -1,25 +1,24 @@
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
    <link rel="stylesheet" href="/fonts/iconfont.css" />
    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
    <title>sass智慧监控管理中心</title>
    <style></style>
  </head>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <link rel="icon" href="<%= BASE_URL %>favicon.ico">
  <link rel="stylesheet" href="/fonts/iconfont.css">
  <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
  <title>sass</title>
  <style>
  </style>
</head>
<body>
  <noscript>
    <strong>We're sorry but system-2.0 doesn't work properly without JavaScript enabled. Please enable it to
      continue.</strong>
  </noscript>
  <div id="app"></div>
  <!-- built files will be auto injected -->
</body>
</html>
  <body>
    <noscript>
      <strong
        >We're sorry but system-2.0 doesn't work properly without JavaScript enabled. Please enable it to
        continue.</strong
      >
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>
src/components/Footer.vue
@@ -1,5 +1,5 @@
<template>
  <div class="Footer" :class="{ isBlack: isBlack }">
  <div class="Footer">
    <!--  <div class="left">
      © 2009-2019 smartai.com 版权所有 ICP证:45456566 公网安备 436435455号
    </div>
@@ -19,18 +19,18 @@
  props: {
    isBlack: {
      type: Boolean,
      default: false,
    },
      default: false
    }
  },
  methods: {
    jump() {
      window.open("http://www.smartai.com/about");
      window.open("http://www.smartai.com/about")
    },
    jump2() {
      window.open("http://www.smartai.com/consult");
    },
  },
};
      window.open("http://www.smartai.com/consult")
    }
  }
}
</script>
<style lang="scss" scoped>
@@ -39,8 +39,8 @@
  justify-content: space-between;
  align-items: center;
  box-sizing: border-box;
  padding: 26px 20px;
  height: 100px;
  // padding: 26px 20px;
  height: 10px;
  min-width: 1280px;
  background: #f3f5f8;
@@ -68,4 +68,4 @@
    }
  }
}
</style>
</style>
src/components/IndexHeader.vue
@@ -10,6 +10,8 @@
        <div class="label" @click="$router.push('/')">首页</div>
        <!-- <div class="label">云服务</div> -->
        <div class="label" @click="$router.push('/manageCenter')">管理中心</div>
        <div class="label" @click="$router.push('/dataView')">数据分析</div>
        <!-- <div class="label" @click="dataView">数据分析</div> -->
        <div class="label" @click="$router.push('/product')">应用商城</div>
      </div>
@@ -23,28 +25,16 @@
        >
          <div class="iconList" slot="suffix">
            <i class="search iconfont" v-if="!isShow">&#xe607;</i>
            <i class="search iconfont" @click="search" v-if="isShow"
              >&#xe607;</i
            >
            <i class="del iconfont" v-if="isShow" @click="showInputBox(false)"
              >&#xe60f;</i
            >
            <i class="search iconfont" @click="search" v-if="isShow">&#xe607;</i>
            <i class="del iconfont" v-if="isShow" @click="showInputBox(false)">&#xe60f;</i>
          </div>
        </el-input>
        <!-- 未登录情况 -->
        <div
          class="headerLogin"
          v-if="!userInfo"
          @click="$router.push('/login')"
        >
        <div class="headerLogin" v-if="!userInfo" @click="$router.push('/login')">
          登录
        </div>
        <div
          class="register"
          v-if="!userInfo"
          @click="$router.push('/register')"
        >
        <div class="register" v-if="!userInfo" @click="$router.push('/register')">
          免费注册
        </div>
@@ -62,12 +52,7 @@
    </div>
    <!-- 用户下拉框 -->
    <div
      class="userBox"
      v-if="userInfo && isShowUserBox"
      @mouseenter="showUserBox"
      @mouseleave="hiddenUserBox"
    >
    <div class="userBox" v-if="userInfo && isShowUserBox" @mouseenter="showUserBox" @mouseleave="hiddenUserBox">
      <div class="userName">{{ userInfo.username }}</div>
      <ul>
        <!--   <li class="money">
@@ -83,9 +68,7 @@
            <router-link to="/personalCenter">个人中心</router-link>
          </div>
          <div class="content">
            <span class="iconfont">&#xe605;</span> 已实名认证
          </div>
          <div class="content"><span class="iconfont">&#xe605;</span> 已实名认证</div>
        </li>
        <li>
@@ -118,12 +101,7 @@
      <div class="hotKey">
        <div class="title">热门搜索</div>
        <ul class="keyCard">
          <li
            class="keyItem"
            @click="jumpToSearch(item)"
            v-for="(item, index) in hotKeyArr"
            :key="index"
          >
          <li class="keyItem" @click="jumpToSearch(item)" v-for="(item, index) in hotKeyArr" :key="index">
            {{ item }}
          </li>
        </ul>
@@ -150,19 +128,19 @@
</template>
<script>
import { logout } from "@/api/login";
import { logout } from "@/api/login"
export default {
  props: {
    opacity: {
      type: Boolean,
      default: true,
    },
      default: true
    }
  },
  name: "Header",
  created() {
    //尝试从session中拿用户信息
    this.userInfo = JSON.parse(sessionStorage.getItem("userInfo"));
    this.userInfo = JSON.parse(sessionStorage.getItem("userInfo"))
    /*  document.addEventListener("click", () => {
      this.showUserBox = false;
    }); */
@@ -176,82 +154,88 @@
      isShowBox: false, //输入下拉框
      userInfo: null, //用户信息
      isShowUserBox: false, //用户信息弹层
      UserTimer: null, // 控制弹层的定时器
    };
      UserTimer: null // 控制弹层的定时器
    }
  },
  methods: {
    dataView() {
      const { href } = this.$router.resolve({
        path: "/dataView"
      })
      window.open(href, "_blank")
    },
    // 控制输入框box
    showInputBox(toggle) {
      this.isShow = toggle;
      this.isShowBox = toggle;
      this.keyWord = "";
      this.$emit("showInputBox", toggle);
      this.isShow = toggle
      this.isShowBox = toggle
      this.keyWord = ""
      this.$emit("showInputBox", toggle)
    },
    //控制用户信息box
    showUserBox() {
      if (this.UserTimer) {
        clearTimeout(this.UserTimer);
        this.UserTimer = null;
        clearTimeout(this.UserTimer)
        this.UserTimer = null
      }
      this.isShowUserBox = true;
      this.isShowUserBox = true
    },
    hiddenUserBox() {
      const _this = this;
      const _this = this
      this.UserTimer = setTimeout(() => {
        _this.isShowUserBox = false;
      }, 200);
        _this.isShowUserBox = false
      }, 200)
    },
    logOut() {
      logout().then(() => {
        sessionStorage.removeItem("loginedInfo");
        sessionStorage.removeItem("expires_in");
        sessionStorage.removeItem("userInfo");
        sessionStorage.removeItem("loginedInfo")
        sessionStorage.removeItem("expires_in")
        sessionStorage.removeItem("userInfo")
        this.$router.push({
          path: "/login",
        });
          path: "/login"
        })
        this.$notify({
          title: "提示",
          type: "success",
          message: "退出成功!",
          duration: 2500,
          offset: 57,
        });
      });
          offset: 57
        })
      })
    },
    jump(id, type) {
      if (type) {
        sessionStorage.setItem("type", type);
        sessionStorage.setItem("type", type)
      }
      this.$router.push({
        path: "/personalCenter",
        query: {
          id: id,
        },
      });
          id: id
        }
      })
    },
    search() {
      this.$router.push({
        path: "/product",
        query: {
          keyWord: this.keyWord,
        },
      });
          keyWord: this.keyWord
        }
      })
    },
    jumpToSearch(keyWord) {
      this.$router.push({
        path: "/product",
        query: {
          keyWord,
        },
      });
    },
  },
};
          keyWord
        }
      })
    }
  }
}
</script>
<style lang="scss" scoped>
@@ -534,4 +518,4 @@
    }
  }
}
</style>
</style>
src/router/index.js
@@ -118,6 +118,12 @@
    path: "/video",
    name: "video",
    component: () => import(/* webpackChunkName: "about" */ "../views/video")
  },
  {
    // 数据可视化
    path: "/dataView",
    name: "dataView",
    component: () => import(/* webpackChunkName: "about" */ "../views/dataView")
  }
]
src/views/dataView/fonts/yjsz.TTF
Binary files differ
src/views/dataView/index.vue
New file
@@ -0,0 +1,578 @@
<template>
  <div class="data-view">
    <div id="load" v-show="loading">
      <div class="load_img">
        <!-- 加载动画 -->
        <img class="jzxz1" src="/images/data-v/jzxz1.png" />
        <img class="jzxz2" src="/images/data-v/jzxz2.png" />
      </div>
    </div>
    <div class="head_top"><span>智慧工厂可视化驾驶舱</span></div>
    <div class="visual">
      <div class="left-top10">
        <div class="title">
          <span>部门告警数量 TOP10</span>
        </div>
      </div>
      <div class="center">
        <div class="center-left">
          <div class="center-count">
            <b>219</b>
            <p style="margin-top:2px">当前监测点总量</p>
            <p style="margin-top:35px">场景总量: 800</p>
            <p style="margin-top:5px">算法总量: 11</p>
          </div>
        </div>
      </div>
      <div class="right-week">
        <div class="title">
          <span>近7日整改数量统计</span>
        </div>
        <div id="barChart" style="width: 100%;height:100%"></div>
      </div>
      <div class="right-device">
        <div class="title">
          <span>数据监控</span>
        </div>
        <div class="device-count">
          <img src="/images/data-v/d-total.png" alt="" />
          <div
            style="position: absolute;
    top: 43%;
    left: 36%;
    font-size: 26px;
    color: #d9d6d6;"
          >
            设备总量
          </div>
          <div
            style="position: absolute;
    top: 59%;
    left: 45%;
    font-size: 26px;
    color: #ffffff;"
          >
            6
          </div>
          <div
            class="online"
            style="position: absolute;
    right: 23%;
    top: 17%;"
          >
            <img src="/images/data-v/online.png" alt="" />
          </div>
          <div
            class="offline"
            style="position: absolute;
    right: 23%;
    top: 58%;"
          >
            <img src="/images/data-v/offline.png" alt="" />
          </div>
        </div>
      </div>
      <div class="right-type">
        <div class="title">
          <span>告警类型占比</span>
        </div>
        <div id="pieChart" style="width: 100%;height:100%"></div>
      </div>
      <div class="bottom-line">
        <div class="title">
          <span>告警数量趋势</span>
        </div>
        <div id="lineChart" style="width: 100%;height:100%"></div>
      </div>
      <div class="clear"></div>
    </div>
  </div>
</template>
<script>
import * as echarts from "echarts"
export default {
  components: {},
  data() {
    return {
      loading: false,
      lineChart: {},
      pieChart: {},
      barChart: {},
      lineChartOption: {
        grid: {
          left: "3%",
          right: "3%",
          bottom: "20%",
          containLabel: true
        },
        legend: {
          x: "right",
          y: "top",
          itemHeight: 2,
          itemWidth: 2,
          icon: "circle"
        },
        tooltip: {},
        xAxis: {
          type: "category",
          boundaryGap: false,
          axisTick: {
            show: false
          },
          axisLabel: {
            color: "#666"
          },
          data: ["1", "2", "3", "4", "5", "6", "7"]
        },
        yAxis: {
          axisTick: {
            show: false
          },
          axisLine: {
            //y轴
            show: false
          },
          axisLabel: {
            color: "#666"
          },
          splitLine: {
            //网格线
            lineStyle: {
              color: "rgb(230, 230, 230)",
              type: "dashed" //设置网格线类型 dotted:虚线   solid:实线
            },
            show: false //隐藏或显示
          }
        },
        // Declare several bar series, each will be mapped
        // to a column of dataset.source by default.
        series: [
          {
            type: "line",
            data: [55, 33, 22, 33, 55, 43, 11],
            areaStyle: {
              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                {
                  offset: 0,
                  color: "#0066FF"
                },
                {
                  offset: 1,
                  color: "rgba(0, 102, 255, 0.25)"
                }
              ])
            },
            color: {
              type: "linear",
              x: 0.02,
              y: 0.02,
              x2: 1,
              y2: 1,
              colorStops: [
                {
                  offset: 0,
                  color: "#0066FF" // 0% 处的颜色
                  // radius: ["50%", "80%"]
                },
                {
                  offset: 1,
                  color: "rgba(0, 102, 255, 0.25)" // 100% 处的颜色
                }
              ],
              global: false // 缺省为 false
            },
            itemStyle: {
              //柱形图圆角,鼠标移上去效果,如果只是一个数字则说明四个参数全部设置为那么多
              normal: {
                //柱形图圆角,初始化效果
                barBorderRadius: [15, 15, 0, 0]
              }
            }
          }
        ]
      },
      barChartOption: {
        grid: {
          left: "10%",
          right: "20%",
          bottom: "20%",
          containLabel: true
        },
        legend: {
          x: "right",
          y: "top",
          itemHeight: 2,
          itemWidth: 2,
          icon: "circle"
        },
        tooltip: {},
        xAxis: {
          type: "category",
          boundaryGap: false,
          axisTick: {
            show: false
          },
          axisLabel: {
            color: "#666"
          },
          data: ["烟雾", "明火", "离岗", "聚集"]
        },
        yAxis: {
          axisTick: {
            show: false
          },
          axisLine: {
            //y轴
            show: false
          },
          axisLabel: {
            color: "#666"
          },
          splitLine: {
            //网格线
            lineStyle: {
              color: "rgb(230, 230, 230)",
              type: "dashed" //设置网格线类型 dotted:虚线   solid:实线
            },
            show: false //隐藏或显示
          }
        },
        // Declare several bar series, each will be mapped
        // to a column of dataset.source by default.
        series: [
          {
            type: "bar",
            data: [55, 33, 22, 33],
            areaStyle: {
              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                {
                  offset: 0,
                  color: "#0066FF"
                },
                {
                  offset: 1,
                  color: "rgba(0, 102, 255, 0.25)"
                }
              ])
            },
            color: {
              type: "linear",
              x: 0.02,
              y: 0.02,
              x2: 1,
              y2: 1,
              colorStops: [
                {
                  offset: 0,
                  color: "#0066FF" // 0% 处的颜色
                  // radius: ["50%", "80%"]
                },
                {
                  offset: 1,
                  color: "rgba(0, 102, 255, 0.25)" // 100% 处的颜色
                }
              ],
              global: false // 缺省为 false
            },
            itemStyle: {
              //柱形图圆角,鼠标移上去效果,如果只是一个数字则说明四个参数全部设置为那么多
              normal: {
                //柱形图圆角,初始化效果
                barBorderRadius: [15, 15, 0, 0]
              }
            }
          }
        ]
      },
      pieChartOption: {
        legend: {
          top: "bottom"
        },
        color: [
          "rgb(54, 60, 231)",
          "rgb(54, 178, 74)",
          "rgb(255, 178, 36)",
          "rgb(240, 190, 231)",
          "rgb(255, 124, 31)",
          "rgb(165, 96, 255)"
        ],
        series: [
          {
            name: "Nightingale Chart",
            type: "pie",
            radius: [20, 160],
            center: ["50%", "50%"],
            roseType: "area",
            itemStyle: {
              borderRadius: 8
            },
            label: {
              show: false
            },
            data: [23, 55, 11, 33, 22, 66]
          }
        ]
      }
    }
  },
  mounted() {
    setTimeout(() => {
      this.loading = false
    }, 3000)
    this.$nextTick(() => {
      this.initLineChart()
      this.initPieChart()
      this.initBarChart()
    })
  },
  methods: {
    initLineChart() {
      console.log("lineChart")
      let chartDom = document.getElementById("lineChart")
      this.lineChart = echarts.init(chartDom)
      this.lineChart.setOption(this.lineChartOption)
      this.lineChart.resize()
      console.log(this.lineChart)
    },
    initPieChart() {
      console.log("pieChart")
      let chartDom = document.getElementById("pieChart")
      this.pieChart = echarts.init(chartDom)
      this.pieChart.setOption(this.pieChartOption)
      this.pieChart.resize()
      console.log(this.pieChart)
    },
    initBarChart() {
      console.log("barChart")
      let chartDom = document.getElementById("barChart")
      this.barChart = echarts.init(chartDom)
      this.barChart.setOption(this.barChartOption)
      this.barChart.resize()
      console.log(this.barChart)
    }
  }
}
</script>
<style scoped>
@font-face {
  font-family: yjsz;
  src: url("./fonts/yjsz.TTF"); /* IE9+,可以是具体的实际链接 */
}
ul {
  padding: 0;
  margin: 0;
}
a {
  text-decoration: none !important;
}
.clear {
  clear: both;
}
.title {
  margin-top: 27px;
  margin-left: 25px;
  font-size: 15px;
  font-weight: 700;
  color: #fff;
}
.data-view {
  width: 100%;
  height: 100%;
  /* padding: 15px; */
  background: #0c194d;
  /* background: url(/images/data-v/bg.jpg); */
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-size: cover;
  overflow: hidden;
  position: absolute;
  z-index: -2;
}
/* 加载旋转动画 */
#load {
  width: 100%;
  height: 100%;
  position: absolute;
  background: url(/images/data-v/data08.png) no-repeat #061537;
  background-size: cover;
  top: 0;
  left: 0;
  z-index: 999;
}
#load .load_img {
  position: absolute;
  left: calc(50% - 182px);
  top: calc(50% - 182px);
}
.load_img img {
  position: absolute;
  left: 0;
  top: 0;
}
.load_img .jzxz1 {
  animation: xz1 8s infinite linear;
}
@keyframes xz1 {
  from {
    transform: rotate(0deg);
  }
  50% {
    transform: rotate(180deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.load_img .jzxz2 {
  animation: xz2 7s infinite linear;
}
@keyframes xz2 {
  from {
    transform: rotate(0deg);
  }
  50% {
    transform: rotate(-180deg);
  }
  to {
    transform: rotate(-360deg);
  }
}
.head_top {
  position: relative;
  background: url(/images/data-v/head.png) no-repeat center center;
  height: 120px;
  line-height: 120px;
  font-style: italic;
}
.head_top span {
  text-align: center;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 55px;
  font-weight: 700;
  background: linear-gradient(0deg, #fff, #fff);
  background-size: cover;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  /* text-fill-color: transparent; font-weight: bolder; cursor: text; */
}
.head_top img {
  width: 90%;
  margin: auto;
}
.head_top p {
  width: 100%;
  text-align: center;
  color: #55bfff;
  position: absolute;
  bottom: -18px;
  left: -10px;
}
.head_top p span {
  font-family: "yjsz";
  font-size: 20px;
}
.left-top10 {
  background: url(/images/data-v/top10.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  height: 53%;
  width: 20%;
  position: absolute;
  top: 12%;
  left: 2%;
}
.center {
  /* background: #edeef1; */
  width: 46%;
  height: 52%;
  position: absolute;
  left: 23%;
  top: 11%;
}
.center .center-left {
  background: url(/images/data-v/center.png) no-repeat center center;
  width: 75%;
  height: 100%;
  text-align: center;
}
.center .center-count {
  position: relative;
  top: 60%;
  color: #fff;
}
.right-week {
  background: url(/images/data-v/week.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  height: 33%;
  width: 28%;
  position: absolute;
  top: 8%;
  right: 2%;
}
.right-device {
  background: url(/images/data-v/data-m.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  height: 23%;
  width: 28%;
  position: absolute;
  top: 43%;
  right: 2%;
}
.right-type {
  background: url(/images/data-v/type.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  height: 30%;
  width: 28%;
  position: absolute;
  bottom: 2%;
  right: 2%;
}
.bottom-line {
  background: url(/images/data-v/lineup.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  /* height: 31%;
  width: 66%; */
  height: 309px;
  width: 1268px;
  position: absolute;
  bottom: 2%;
  left: 2%;
}
.device-count {
  width: 50%;
  margin-top: 35px;
  margin-left: 68px;
}
</style>
src/views/equipmentManagement/equipmentList/components/FormList.vue
@@ -53,7 +53,7 @@
        <el-table-column label="序号" width="80" class-name="index">
          <template slot-scope="scope">{{ scope.$index + 1 + (page - 1) * size }}</template>
        </el-table-column>
        <el-table-column prop="devId" label="设备ID" min-width="185" show-overflow-tooltip></el-table-column>
        <el-table-column prop="devId" label="设备ID" min-width="210" show-overflow-tooltip></el-table-column>
        <el-table-column prop="devName" label="设备名称" min-width="140" show-overflow-tooltip></el-table-column>
        <el-table-column prop="devIp" label="IP地址" min-width="150"></el-table-column>
        <el-table-column label="安装时间" min-width="159">
@@ -393,10 +393,6 @@
        Temp = document.createElement("a")
      Temp.href = window.URL.createObjectURL(blob)
      console.log(result)
      console.log(result.fileName)
      Temp.download = window.decodeURI(result.fileName)
      Temp.setAttribute("download", result.fileName)
@@ -421,7 +417,7 @@
  .search {
    display: flex;
    justify-content: space-between;
    padding: 60px 0 30px 0;
    padding: 20px 0 30px 0;
    font-size: 14px;
    border-bottom: 1px solid #e9ebee;
    background-color: #fff;
@@ -531,6 +527,10 @@
    }
  }
  .table-area {
    min-height: 600px;
  }
  .btns {
    display: flex;
    margin: 30px 0;
src/views/equipmentManagement/equipmentList/index.vue
@@ -3,13 +3,11 @@
    <!-- 页头 -->
    <IndexHeader :opacity="false"></IndexHeader>
    <!-- 面包屑 -->
    <div class="heart">
      <el-breadcrumb separator=">">
        <el-breadcrumb-item :to="{ path: '/manageCenter' }"
          >管理中心</el-breadcrumb-item
        >
    <div class="breadcrumb">
      <!-- <el-breadcrumb separator=">">
        <el-breadcrumb-item :to="{ path: '/manageCenter' }">管理中心</el-breadcrumb-item>
        <el-breadcrumb-item>设备管理</el-breadcrumb-item>
      </el-breadcrumb>
      </el-breadcrumb> -->
    </div>
    <!-- 主要内容 -->
@@ -21,23 +19,25 @@
</template>
<script>
import IndexHeader from "@/components/IndexHeader";
import Content from "@/views/equipmentManagement/equipmentList/components/Content";
import Footer from "@/components/Footer";
import IndexHeader from "@/components/IndexHeader"
import Content from "@/views/equipmentManagement/equipmentList/components/Content"
import Footer from "@/components/Footer"
export default {
  components: {
    IndexHeader,
    Content,
    Footer,
  },
};
    Footer
  }
}
</script>
<style lang="scss" scoped>
.equipmentList {
  background-color: rgb(243, 245, 248);
  .breadcrumb {
    height: 10px;
  }
  .el-breadcrumb {
    margin-top: 48px;
    margin-bottom: 24px;
@@ -47,4 +47,4 @@
    }
  }
}
</style>
</style>
src/views/hashrate/hashrateDetail/index.vue
@@ -5,11 +5,12 @@
    <!-- 全屏版心 -->
    <div class="fullScreenheart">
      <!-- 面包屑 -->
      <el-breadcrumb separator=">">
        <el-breadcrumb-item :to="{ path: '/manageCenter' }">管理中心</el-breadcrumb-item>
        <el-breadcrumb-item>算力管理</el-breadcrumb-item>
      </el-breadcrumb>
      <div class="breadcrumb">
        <!-- <el-breadcrumb separator=">">
          <el-breadcrumb-item :to="{ path: '/manageCenter' }">管理中心</el-breadcrumb-item>
          <el-breadcrumb-item>算力管理</el-breadcrumb-item>
        </el-breadcrumb> -->
      </div>
      <!-- tab栏 -->
      <div class="tabs">
        <div
@@ -67,7 +68,9 @@
  .fullScreenheart {
    min-height: calc(100vh - 210px);
  }
  .breadcrumb {
    height: 10px;
  }
  .el-breadcrumb {
    margin-top: 48px;
    margin-bottom: 24px;
src/views/manageCenter/index.vue
@@ -295,6 +295,13 @@
          path: "/search",
          permission: "statisticMng"
        },
        {
          name: "统计分析",
          icon: "/images/manageCenter/search.png",
          openPath: "/dataView",
          path: "/dataView",
          permission: "statisticMng"
        },
        {
          name: "推送管理",
@@ -700,9 +707,9 @@
        return item == route.permission
      })
      if (val) {
        if (route.path === "/search") {
        if (route.path === "/search" || route.path === "/dataView") {
          const { href } = this.$router.resolve({
            path: "/search"
            path: route.path
          })
          window.open(href, "_blank")
          return
src/views/report/index.vue
@@ -1,13 +1,13 @@
<template>
  <div class="GB28181">
  <div class="data-report">
    <!-- 页头 -->
    <IndexHeader :opacity="false"></IndexHeader>
    <!-- 面包屑 -->
    <div class="heart">
      <el-breadcrumb separator=">">
    <div class="breadcrumb">
      <!-- <el-breadcrumb separator=">">
        <el-breadcrumb-item :to="{ path: '/manageCenter' }">管理中心</el-breadcrumb-item>
        <el-breadcrumb-item>推送管理</el-breadcrumb-item>
      </el-breadcrumb>
      </el-breadcrumb> -->
    </div>
    <!-- 主要内容 -->
@@ -35,11 +35,14 @@
</script>
<style lang="scss" scoped>
.GB28181 {
.data-report {
  background-color: rgb(243, 245, 248);
  position: relative;
  min-height: 200vh;
  min-height: 50vh;
  .breadcrumb {
    height: 10px;
  }
  .el-breadcrumb {
    margin-top: 48px;
    margin-bottom: 24px;
src/views/video/index.vue
@@ -4,12 +4,13 @@
    <IndexHeader :opacity="false"></IndexHeader>
    <!-- 全屏版心 -->
    <div class="fullScreenheart">
      <!-- 面包屑 -->
      <el-breadcrumb separator=">">
        <el-breadcrumb-item :to="{ path: '/manageCenter' }">管理中心</el-breadcrumb-item>
        <el-breadcrumb-item>实时监控</el-breadcrumb-item>
      </el-breadcrumb>
      <div class="breadcrumb">
        <!-- 面包屑 -->
        <!-- <el-breadcrumb separator=">">
          <el-breadcrumb-item :to="{ path: '/manageCenter' }">管理中心</el-breadcrumb-item>
          <el-breadcrumb-item>实时监控</el-breadcrumb-item>
        </el-breadcrumb> -->
      </div>
      <!-- tab栏 -->
      <Video></Video>
    </div>
@@ -45,6 +46,9 @@
  .fullScreenheart {
    min-height: calc(100vh - 210px);
    .breadcrumb {
      height: 10px;
    }
  }
  .el-breadcrumb {