zhangzengfei
2022-08-28 3834d30a6d56ad7c4d4f5fe630af649ab6826428
src/views/manageCenter/index.vue
@@ -15,7 +15,7 @@
      <div class="products">
        <div class="title">全部产品</div>
        <div class="productList">
          <div class="productItem" v-for="(item, index) in productList" :key="index" @click="jump(item)">
          <div class="productItem" v-for="(item, index) in permissionMenuList" :key="index" @click="jump(item)">
            <img :src="item.icon" alt="" />
            <div class="name">{{ item.name }}</div>
          </div>
@@ -250,7 +250,17 @@
      if (this.warningChecked == 0 || this.warningTotal == 0) {
        return 0
      }
      return parseInt(this.warningChecked / this.warningTotal) * 100 + "%"
      return parseInt((this.warningChecked / this.warningTotal) * 100) + "%"
    },
    permissionMenuList() {
      let user = JSON.parse(sessionStorage.getItem("userInfo"))
      if (user.username == "Administrator") {
        return this.productList
      }
      return this.productList.filter((item) => {
        return user.permissions.indexOf(item.permission) >= 0
      })
    }
  },
  data() {
@@ -295,13 +305,28 @@
          path: "/search",
          permission: "statisticMng"
        },
        {
          name: "统计分析",
          icon: "/images/manageCenter/datav.png",
          openPath: "/dataView",
          path: "/dataView",
          permission: "dataViewMng"
        },
        {
          name: "推送管理",
          icon: "/images/manageCenter/manage2.png",
          icon: "/images/manageCenter/push.png",
          openPath: "/report",
          path: "/report",
          permission: "statisticMng"
          permission: "dataPushMng"
        },
        {
          name: "实时监控",
          icon: "/images/manageCenter/video.png",
          openPath: "/video",
          path: "/video",
          permission: "videoMng"
        }
      ],
      cameraTree: [],
@@ -442,17 +467,18 @@
      solvedTotal: 0,
      warningTotal: 0,
      warningChecked: 0,
      warningSolved: 0
      warningSolved: 0,
      authorizedCameras: []
    }
  },
  created() {
    this.getInfo()
  },
  mounted() {
  async mounted() {
    await this.getCameras()
    this.searchHandler()
    this.initBar()
    this.initPie()
    this.getCameras()
  },
  methods: {
    async getCameras() {
@@ -466,9 +492,30 @@
      let camereReq = await getLocalCameraTree({ clusterId: clusterId })
      if (camereReq && camereReq.success) {
        this.cameraTree = camereReq.data.treeMenu
        let tmpTree = JSON.parse(JSON.stringify(camereReq.data.treeMenu))
        let userInfo = JSON.parse(sessionStorage.getItem("userInfo"))
        // 管理员权限
        if (userInfo.username != "Administrator") {
          // 清理没有权限管理的摄像机, 后端修复后删除
          let checkedCameras = userInfo.email
          // basic 为子账户默认的空字段,表示可管理的摄像机目录为空
          if (checkedCameras == "basic") {
            this.cameraTree = ["basic"]
            this.authorizedCameras = ["basic"]
          } else {
            let cameraIds = checkedCameras.split(",")
            this.authorizedCameras = cameraIds
            this.TreeDataPool.removeNoAuthorizedNode(this.cameraTree, cameraIds)
          }
        }
        let tmpTree = JSON.parse(JSON.stringify(this.cameraTree))
        for (let i = 0; i < tmpTree.length; i++) this.clearNode(tmpTree[i])
        this.menuTree = tmpTree
        // console.log(this.cameraTree)
      }
    },
    clearNode(tree) {
@@ -488,14 +535,13 @@
      let selectedNode = {}
      let orgNodeIds = []
      if (this.selectedOrg == "") {
        return orgNodeIds
      if (this.selectedOrg == "" || this.selectedOrg == null) {
        return this.authorizedCameras
      }
      function findNode(node) {
        if (node.id == selectedNodeId) {
          selectedNode = node
          return
        }
@@ -538,20 +584,21 @@
        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("warningStatics", decodeResult)
            decodeResult.forEach((element) => {
              this.solvedTotal = this.solvedTotal + element.doc_count
              this.tableDataList.push({ date: element.key_as_string, count: element.doc_count })
@@ -561,7 +608,7 @@
      }
    },
    // 折线图
    decodeWarningStatics(b64data) {
    decodeWarningTable(b64data) {
      this.lineChart.clear()
      this.barOption.xAxis.data = []
      this.barOption.series[0].data = []
@@ -628,6 +675,12 @@
      }
    },
    handleTreeChange(value) {
      // console.log("change:", value)
      if (value == null) {
        this.selectedOrg = ""
        return
      }
      this.selectedOrg = value[value.length - 1]
    },
    getInfo() {
@@ -692,9 +745,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