zhangzengfei
2023-06-30 db5872786c1e1697a59af41386136ee002bb68ad
src/views/manageCenter/index.vue
@@ -26,7 +26,7 @@
        <div class="products">
          <div class="title">统计分析</div>
          <div class="productList">
            <p class="p-statis" style=" vertical-align: top">
            <p class="p-statis" style="vertical-align: top">
              <span>时间:</span>
              <el-date-picker
                size="mini"
@@ -64,7 +64,7 @@
              <span>部门:</span>
              <el-cascader
                size="mini"
                style="width:400px"
                style="width: 400px"
                v-model="searchTree"
                :options="menuTree"
                :props="{ value: 'id', label: 'name', checkStrictly: true }"
@@ -80,7 +80,7 @@
                clearable
                collapse-tags
                size="mini"
                style="width:140px"
                style="width: 140px"
                placeholder="请选择"
              >
                <el-option
@@ -132,7 +132,7 @@
        <div class="equipmentCard">
          <div class="label">处理率</div>
          <div class="number">
            {{ warningManage }}
            {{ disposeRate }}
            <div class="downIcon iconfont">&#xe651;</div>
          </div>
@@ -160,9 +160,9 @@
      <div class="hashRate">
        <div class="left">
          <div class="title">预警数据占比:</div>
          <div class="title">整改数据详情</div>
          <div class="info">
            <div class="equipmentInfo" style="margin-top:25px">
            <div class="equipmentInfo" style="margin-top: 25px">
              <div class="equipmentCard">
                <div class="label">整改总量</div>
                <div class="number">
@@ -198,7 +198,7 @@
                <el-table-column prop="count" align="center" label="整改数量" show-overflow-tooltip></el-table-column>
              </el-table>
              <el-pagination
              <!-- <el-pagination
                @current-change="refrash"
                @size-change="handleSizeChange"
                :current-page="page"
@@ -207,7 +207,7 @@
                :page-sizes="[5, 10, 15, 20, 25]"
                :total="solvedTotal"
                background
              ></el-pagination>
              ></el-pagination> -->
            </div>
          </div>
        </div>
@@ -246,11 +246,11 @@
      }
      return parseInt(this.solvedTotal / this.tableDataList.length)
    },
    warningManage() {
      if (this.warningChecked == 0 || this.warningTotal == 0) {
    disposeRate() {
      if (this.solvedTotal == 0 || this.warningTotal == 0) {
        return 0
      }
      return parseInt((this.warningChecked / this.warningTotal) * 100) + "%"
      return parseInt((this.solvedTotal / this.warningTotal) * 100) + "%"
    },
    permissionMenuList() {
      let user = JSON.parse(sessionStorage.getItem("userInfo"))
@@ -314,11 +314,27 @@
        },
        {
          name: "推送管理",
          name: "用户管理",
          icon: "/images/manageCenter/push.png",
          openPath: "/report",
          path: "/report",
          permission: "dataPushMng"
          openPath: "/subAccount",
          path: "/subAccount",
          permission: "accountMng"
        },
        {
          name: "数据上传",
          icon: "/images/manageCenter/push.png",
          openPath: "/dataPush",
          path: "/dataPush",
          permission: "reportMng"
        },
        {
          name: "数据报表",
          icon: "/images/manageCenter/push.png",
          openPath: "/dataReport",
          path: "/dataReport",
          permission: ""
        },
        {
@@ -327,6 +343,13 @@
          openPath: "/video",
          path: "/video",
          permission: "videoMng"
        },
        {
          name: "点位变更",
          icon: "/images/manageCenter/cam.png",
          openPath: "/invalidCamera",
          path: "/invalidCamera",
          permission: "positionMng"
        }
      ],
      cameraTree: [],
@@ -444,6 +467,10 @@
          "rgb(255, 124, 31)",
          "rgb(165, 96, 255)"
        ],
        tooltip: {
          trigger: "item",
          formatter: "{b} {d}%" //只要百分比
        },
        series: [
          {
            name: "Nightingale Chart",
@@ -456,7 +483,9 @@
            },
            label: {
              show: false
              //formatter: '{b} : {c} ({d}%)' //带当前图例名 + 百分比
            },
            data: []
          }
        ]
@@ -584,31 +613,34 @@
        if (rsp && rsp.success) {
          this.decodeWarningRate(rsp.data.warningRate)
          this.decodeWarningChartRate(rsp.data.warningChartRate)
          this.decodeWarningStatics(rsp.data.warningTable)
          this.decodeWarningTable(rsp.data.warningStatics)
          this.decodeWarningStatics(rsp.data.warningStatics)
          this.decodeWarningTable(rsp.data.warningTable)
        }
      })
    },
    decodeWarningTable(b64data) {
    // 整改列表
    decodeWarningStatics(b64data) {
      this.solvedTotal = 0
      this.tableDataList = []
      if (b64data) {
        let decodeString = Base64.decode(b64data)
        if (decodeString != "") {
          let decodeResult = JSON.parse(decodeString)
          decodeResult = []
          if (decodeResult) {
            // console.log("decodeResult", decodeResult)
            // console.log("warningStatics", decodeResult)
            decodeResult.forEach((element) => {
              this.solvedTotal = this.solvedTotal + element.doc_count
              this.tableDataList.push({ date: element.key_as_string, count: element.doc_count })
              this.tableDataList.push({
                date: element.key_as_string,
                count: element.doc_count
              })
            })
          }
        }
      }
    },
    // 折线图
    decodeWarningStatics(b64data) {
    decodeWarningTable(b64data) {
      this.lineChart.clear()
      this.barOption.xAxis.data = []
      this.barOption.series[0].data = []
@@ -637,7 +669,10 @@
          let decodeResult = JSON.parse(decodeString)
          if (decodeResult) {
            decodeResult.forEach((element) => {
              this.pieOption.series[0].data.push({ value: element.doc_count, name: element.key })
              this.pieOption.series[0].data.push({
                value: element.doc_count,
                name: element.key
              })
            })
          }
        }
@@ -648,17 +683,20 @@
    //key 1=误报数据,2=已整改,3=未整改,4=已排查 doc_count=数量 total=总量
    decodeWarningRate(b64data) {
      if (b64data) {
        this.warningTotal = 0
        this.warningSolved = 0
        this.warningChecked = 0
        this.warningTotal = 0 // 总量
        this.warningSolved = 0 // 已整改
        this.warningChecked = 0 //已排查
        let falseAlarm = 0 // 误报
        let decodeString = Base64.decode(b64data)
        if (decodeString != "") {
          let decodeResult = JSON.parse(decodeString)
          if (decodeResult && decodeResult.total > 0) {
            this.warningTotal = decodeResult.total
            decodeResult.buckets.forEach((element) => {
              switch (element.key) {
                case 1:
                  falseAlarm += element.doc_count
                  break
                case 2:
                  this.warningSolved += element.doc_count
                  break
@@ -669,6 +707,10 @@
                  break
              }
            })
            // 2023/4/12 修改, 预警总量不统计误报
            // this.warningTotal = decodeResult.total - falseAlarm
            this.warningTotal = decodeResult.total
          }
          // console.log("WarningRate:", decodeResult)
        }
@@ -739,23 +781,10 @@
      this.pieChart.setOption(this.pieOption)
    },
    jump(route) {
      const userInfo = JSON.parse(sessionStorage.getItem("userInfo"))
      const val = userInfo.permissions.find((item) => {
        return item == route.permission
      const { href } = this.$router.resolve({
        path: route.path
      })
      if (val) {
        if (route.path === "/search" || route.path === "/dataView") {
          const { href } = this.$router.resolve({
            path: route.path
          })
          window.open(href, "_blank")
          return
        }
        this.$router.push(route.path)
      } else if (!userInfo.parentId) {
        this.$router.push(route.openPath)
      }
      window.open(href, "_blank")
    },
    refrash() {},
    handleSizeChange() {},
@@ -849,7 +878,7 @@
      display: flex;
      .productItem {
        margin-right: 20px;
        margin: 0px 10px;
        width: 190px;
        height: 90px;
        display: flex;