管道基础大数据平台系统开发-【前端】-新系統界面
surprise
2024-03-29 98a2b24c89e81a5aacdcbd6b739fef422adf17dd
src/views/datamanage/dataStatistics.vue
@@ -1,170 +1,255 @@
<template>
  <div class="dataStatistics">
    <My-bread
      :list="[
        `${$t('dataManage.dataManage')}`,
        `${$t('dataManage.dataStatistics')}`,
      ]"
    ></My-bread>
  <div class="box_div dataStatistics">
    <My-bread :list="[
      `${$t('dataManage.dataManage')}`,
      `${$t('dataManage.dataStatistics')}`,
    ]"></My-bread>
    <el-divider />
    <div class="contentBox">
      <div class="content_Left subpage_Div">
        <el-tree
          :data="treeData"
          @node-click="handleNodeClick"
          node-key="id"
          ref="tree"
          highlight-current
          :props="defaultProps"
        >
      <div class="content_Left subpage_Div" style="border: 1px solid #dcdfe6;">
        <el-tree :data="treeData" @node-click="handleNodeClick" node-key="id" ref="tree" highlight-current
          :props="defaultProps" accordion>
        </el-tree>
      </div>
      <div class="content_Right subpage_Div">
        <div class="iquery subpage_Div">
      <div class="content_Right subpage_Div" style="border: 1px solid #dcdfe6;">
        <div class=" subpage_Div iquery" style="padding-bottom: 14px">
          <div>
            <el-button
              icon="el-icon-c-scale-to-original"
              size="small"
              type="warning"
              @click="setCountFlagChange(1)"
              >报表</el-button
            >
            <el-button
              icon="el-icon-pie-chart"
              size="small"
              type="primary"
              @click="setCountFlagChange(2)"
              >柱状图</el-button
            >
            <el-button
              icon="el-icon-download"
              size="small"
              type="success"
              @click="setCountFlagChange(3)"
              >下载</el-button
            >
            <el-form :inline="true" :model="tjlxData" class="demo-form-inline">
              <el-form-item label="统计类型" v-show="!setCountFlag && tjlxData.flag">
                <el-select v-model="tjlxData.region" size="small" @change="setTjlxDataChange">
                  <el-option label="数据存储量" value="sjccl">
                  </el-option>
                  <el-option label="文件个数" v-show="queryData.value != 'countExplorationPoints'" value="sjts">
                  </el-option>
                  <el-option label="数量" v-show="queryData.value == 'countExplorationPoints'" value="sjts">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item v-show="!setCountFlag && setExcelType" label="总计:">
                {{ dataVolume }}
              </el-form-item>
              <el-form-item v-show="setExcelType">
                <el-button icon="el-icon-c-scale-to-original" size="small" type="warning"
                  @click="setCountFlagChange(1)">{{ $t("shuJuGuanLi.butten.Report") }}</el-button>
              </el-form-item>
              <el-form-item v-show="setExcelType">
                <el-button icon="el-icon-pie-chart" size="small" type="primary" @click="setCountFlagChange(2)">{{
      $t("shuJuGuanLi.butten.Histogram") }}</el-button>
              </el-form-item>
              <el-form-item v-show="!setExcelType">
                <el-select v-model="prjCunt" size="small" @change="setPrjCuntChange" placeholder="">
                  <el-option v-for="item in prjOption" :key="item.id" :label="item.name" :value="item.code">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item>
                <el-button icon="el-icon-download" size="small" type="success" @click="setCountFlagChange(3)">{{
      $t("shuJuGuanLi.butten.Download") }}</el-button>
              </el-form-item>
            </el-form>
          </div>
        </div>
        <div class="dividing-line"></div>
        <div class="contentTable subpage_Div" v-show="setCountFlag">
          <el-table
            :data="tableData"
            style="width: 100%"
            height="calc(100% - 1px)"
            ref="table"
          >
            <el-table-column
              v-if="queryData.value == 'countServices'"
              prop="m1"
              key="1"
              align="center"
              :label="$t('dataManage.dataStaticObj.type1')"
            >
          <el-table :data="reportFormsData" style="width: 100%" height="calc(100% - 1px)" ref="table">
            <el-table-column v-if="queryData.value == 'countServices'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column
              v-if="queryData.value == 'countServices'"
              prop="count"
              key="2"
              align="center"
              :label="$t('dataManage.dataStaticObj.type2')"
            >
            <el-table-column v-if="queryData.value == 'countServices'" :formatter="formatterColumn2" prop="count"
              key="2" align="center" :label="$t('dataManage.dataStaticObj.type2')">
            </el-table-column>
            <el-table-column
              v-if="queryData.value == 'countSizes'"
              prop="m1"
              key="3"
              align="center"
              :label="$t('dataManage.dataStaticObj.type3')"
            >
            <el-table-column v-if="queryData.value == 'countSizes'" prop="m1" key="3" align="center"
              :label="$t('dataManage.dataStaticObj.type3')">
            </el-table-column>
            <el-table-column
              v-if="queryData.value == 'countSizes'"
              prop="count"
              key="4"
              align="center"
              :label="$t('dataManage.dataStaticObj.type4')"
              :formatter="formatterColumn"
            >
            <el-table-column v-if="queryData.value == 'countSizes'" prop="sizes" key="4" align="center"
              :label="$t('dataManage.dataStaticObj.type4')" :formatter="formatterColumn">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countSizes'" :formatter="formatterColumn3" prop="count" key="4"
              align="center" :label="$t('dataManage.dataStaticObj.type8')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countOperates'" prop="m1" key="5" align="center"
              :label="$t('dataManage.dataStaticObj.type5')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countOperates'" prop="count" :formatter="formatterColumn3"
              key="6" align="center" :label="$t('dataManage.dataStaticObj.type7')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countSizesByType'" prop="m1" key="3" align="center"
              :label="$t('common.fileType')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countSizesByType'" prop="sizes" key="4" align="center"
              :label="$t('dataManage.dataStaticObj.type4')" :formatter="formatterColumn">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countSizesByType'" prop="count" :formatter="formatterColumn3"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type8')">
            </el-table-column>
            <el-table-column
              v-if="queryData.value == 'countOperates'"
              prop="m1"
              key="5"
              align="center"
              :label="$t('dataManage.dataStaticObj.type5')"
            >
            <el-table-column v-if="queryData.value == 'countSizesByPrj'" prop="m1" key="3" align="center"
              :label="$t('dataManage.projectObj.projname')">
            </el-table-column>
            <el-table-column
              v-if="queryData.value == 'countOperates'"
              prop="count"
              key="6"
              align="center"
              :label="$t('dataManage.dataStaticObj.type7')"
            >
            <el-table-column v-if="queryData.value == 'countSizesByPrj'" prop="sizes" key="4" align="center"
              :label="$t('dataManage.dataStaticObj.type4')" :formatter="formatterColumn">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countSizesByPrj'" prop="count" :formatter="formatterColumn3"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type8')">
            </el-table-column>
            <!-- <el-table-column
              v-if="queryData.value == 'countOperates'"
              prop="m2"
              align="center"
              :label="$t('dataManage.dataStaticObj.type6')"
            >
            </el-table-column> -->
            <el-table-column v-if="queryData.value == 'countExplorationPoints'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countExplorationPoints'" prop="sizes" key="4" align="center"
              :formatter="formatterColumn" :label="$t('dataManage.dataStaticObj.type4')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countExplorationPoints'" prop="count"
              :formatter="formatterColumn3" key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countWaterDamageByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countWaterDamageByPrj'" prop="count"
              :formatter="formatterColumn3" key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countUnstableSlopeByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countUnstableSlopeByPrj'" prop="count"
              :formatter="formatterColumn3" key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countLandSlideByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countLandSlideByPrj'" prop="count" :formatter="formatterColumn3"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countHighSteepSlopeByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countHighSteepSlopeByPrj'" prop="count"
              :formatter="formatterColumn3" key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countGroundCollapseByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countGroundCollapseByPrj'" prop="count"
              :formatter="formatterColumn3" key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countDebrisFlowByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countDebrisFlowByPrj'" prop="count" :formatter="formatterColumn3"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countCollapseByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countCollapseByPrj'" prop="count" :formatter="formatterColumn3"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countExplorationReportByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countExplorationReportByPrj'" prop="count"
              :formatter="formatterColumn3" key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countSurveyWorksiteByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countSurveyWorksiteByPrj'" prop="count"
              :formatter="formatterColumn3" key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countLasAreaByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countLasAreaByPrj'" prop="area" :formatter="formatterColumn4"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countOsgbAreaByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countOsgbAreaByPrj'" prop="area" :formatter="formatterColumn4"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countMptAreaByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countMptAreaByPrj'" prop="area" :formatter="formatterColumn4"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countDemAreaByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countDemAreaByPrj'" prop="area" :formatter="formatterColumn4"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countDomAreaByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countDomAreaByPrj'" prop="area" :formatter="formatterColumn4"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countDlgAreaByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countDlgAreaByPrj'" prop="area" :formatter="formatterColumn4"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countExplorationPointByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countExplorationPointByPrj'" prop="count"
              :formatter="formatterColumn3" key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countLineLength'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countLineLength'" prop="len" :formatter="formatterColumn5"
              key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countGeoModelAreaByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countGeoModelAreaByPrj'" prop="area"
              :formatter="formatterColumn4" key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countGeologicHazardByPrj'" prop="m1" key="1" align="center"
              :label="$t('dataManage.dataStaticObj.type1')">
            </el-table-column>
            <el-table-column v-if="queryData.value == 'countGeologicHazardByPrj'" prop="count"
              :formatter="formatterColumn3" key="4" align="center" :label="$t('dataManage.dataStaticObj.type9')">
            </el-table-column>
          </el-table>
          <!-- <div class="pagination_box">
            <el-pagination
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page="listData.pageIndex"
              :page-sizes="[10, 20, 50, 100]"
              :page-size="listData.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="listData.count"
            >
            </el-pagination>
          </div> -->
        </div>
        <div
          id="contentEchart subpage_Div"
          class="contentTable"
          v-show="!setCountFlag"
        >
        <div id="contentEchart subpage_Div" class="contentTable" v-show="!setCountFlag">
          <div id="chart_11"></div>
        </div>
      </div>
    </div>
    <el-dialog
      title="模板"
      :visible.sync="showDownLoadFlag"
      width="50%"
      :before-close="handleClose"
    >
    <el-dialog title="模板" :visible.sync="showDownLoadFlag" width="50%" :before-close="handleClose">
      <div style="height: 50vh">
        <el-table
          ref="singleTable"
          :data="modelData"
          height="calc(100% - 10px)"
          style="width: 100%"
        >
          <el-table-column
            type="index"
            :label="$t('common.index')"
            align="center"
            width="70"
          >
        <el-table ref="singleTable" :data="modelData" height="calc(100% - 10px)" style="width: 100%">
          <el-table-column type="index" :label="$t('common.index')" align="center" width="70">
          </el-table-column>
          <el-table-column
            align="center"
            property="fname"
            :label="$t('common.fileNme')"
          >
          <el-table-column align="center" property="fname" :label="$t('common.fileNme')">
          </el-table-column>
          <el-table-column
            property="type"
            :label="$t('common.format')"
            align="center"
            :formatter="showFormat"
          >
          <el-table-column property="type" :label="$t('common.format')" align="center" :formatter="showFormat">
          </el-table-column>
          <el-table-column width="120" :label="$t('common.operate')">
            <template slot-scope="scope">
@@ -176,11 +261,7 @@
        </el-table>
      </div>
    </el-dialog>
    <iframe
      id="Iframe1"
      src=""
      style="display: none; border: 0; padding: 0; height: 0; width: 0"
    ></iframe>
    <iframe id="Iframe1" src="" style="display: none; border: 0; padding: 0; height: 0; width: 0"></iframe>
  </div>
</template>
@@ -195,33 +276,45 @@
  dataCount_selectCountServices,
  dataCount_selectCountSizes,
  dataCount_downloadReport,
  dataCount_countSizesByType,
  dataCount_countSizesByPrj,
  dataCount_countExplorationPoints,
  dataCount_countWaterDamageByPrj,
  dataCount_countUnstableSlopeByPrj,
  dataCount_countLandSlideByPrj,
  dataCount_countHighSteepSlopeByPrj,
  dataCount_countGroundCollapseByPrj,
  dataCount_countDebrisFlowByPrj,
  dataCount_countCollapseByPrj,
  dataCount_countExplorationReportByPrj,
  dataCount_countSurveyWorksiteByPrj,
  dataCount_countLasAreaByPrj,
  dataCount_countOsgbAreaByPrj,
  dataCount_countMptAreaByPrj,
  dataCount_countDemAreaByPrj,
  dataCount_countDomAreaByPrj,
  dataCount_countDlgAreaByPrj,
  dataCount_countExplorationPointByPrj,
  dataCount_countLineLength,
  dataCount_countGeoModelAreaByPrj,
  dataCount_countGeologicHazardByPrj,
  project_selectDirAll,
  dataCount_countVariousDataByPrj
} from "../../api/api.js";
import dataStatistics from '@/components/js/dataStatistics.js'
export default {
  name: "DataStatistics",
  components: { MyBread },
  data() {
    return {
      treeData: [
        {
          id: 1,
          label: "服务调用量统计",
          value: "countServices",
          children: [],
        },
        {
          id: 2,
          label: "数据量统计",
          value: "countSizes",
          children: [],
        },
        {
          id: 3,
          label: "用户流量统计",
          value: "countOperates",
          children: [],
        },
      ],
      ],
      tjlxData: {
        region: 'sjccl',
        flag: false,
      },
      defaultProps: {
        children: "children",
        label: "label",
@@ -236,25 +329,99 @@
      tableData: [],
      modelData: [],
      queryData: null,
      setCountFlag: true,
      setCountFlag: false,
      option: null,
      showDownLoadFlag: false,
      setDownloadType: false,
      dataVolume: null,
      reportFormsData: [],
      setExcelType: true,
      prjOption: [],
      prjCunt: null,
      prjData: [],
    };
  },
  mounted() {
    this.setStartDataCount();
    this.setTreeDataStart();
  },
  methods: {
    formatterColumn(row, column, cellValue, index) {
      return row.count + "MB";
    setTreeDataStart() {
      this.treeData = [];
      var val = dataStatistics.statistics;
      var std = [];
      for (var i = 0; i < val.length; i++) {
        if (val[i].isCount) {
          std.push(val[i])
        }
      }
      var obj = this.getTreeData(std);
      this.treeData = obj
      this.setStartDataCount();
      setStartDataCount
    },
    getTreeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
      if (cloneData.length != 0) {
        return cloneData.filter((father) => {
          // 循环所有项
          let branchArr = cloneData.filter((child) => father.id == child.pid); // 对比ID,分别上下级菜单,并返回数据
          branchArr.length > 0 ? (father.children = branchArr) : ''; // 给父级添加一个children属性,并赋值
          // 属于同一对象问题,例如:令 a=b、c=1 ,然后再令 b.c=c , 那么 a.c=b.c=c=1 ;同理,后续令 c.d=2 ,那么 a.c.d 也是=2;
          // 由此循环多次后,就能形成相应的树形数据结构
          return father.pid == 0; // 返回一级菜单
        });
      } else {
        this.$message({
          message: '暂无菜单栏数据',
          type: 'warning'
        });
      }
    },
    setTjlxDataChange() {
      this.showCountEchart()
    },
    formatterColumn(row, column, cellValue, index) {
      if (row.sizes >= 1024) {
        return (row.sizes / 1024).toFixed(3) + "GB"
      } else {
        return (row.sizes).toFixed(3) + "MB"
      }
    },
    formatterColumn2(row) {
      return row.count + "次"
    },
    formatterColumn3(row) {
      return row.count + "个"
    },
    formatterColumn5(row) {
      return row.len + "<span style='font-size:16px;'>km<span>"
    },
    formatterColumn4(row) {
      if (row.area >= 1000000) {
        return (row.area / 1000000).toFixed(3) + "<span  style='font-size:16px;'>km²<span>"
      } else {
        return (row.area).toFixed(3) + "<span  style='font-size:16px; '>m²<span>"
      }
    },
    setDownLoadRow(rows) {
      var obj = ''
      if (this.queryData.value == "countVariousDataByPrj") {
        obj = "&code=" + this.prjCunt
      }
      var url =
        BASE_URL +
        "/dataCount/downloadReport?token=" +
        getToken() +
        "&id=" +
        rows.id;
        rows.id + obj;
      $("#Iframe1").attr("src", url).click();
    },
@@ -277,15 +444,46 @@
          this.closeDownLoadFlag();
          done();
        })
        .catch((_) => {});
        .catch((_) => { });
    },
    closeDownLoadFlag() {
      this.showDownLoadFlag = false;
    },
    getReportForms() {
      this.reportFormsData = [];
      var val = JSON.parse(JSON.stringify(this.tableData))[0];
      var sizes = 0;
      var count = 0;
      var m1 = "总计"
      for (var i in this.tableData) {
        sizes += this.tableData[i].sizes;
        if (this.queryData.value == 'countDlgAreaByPrj' || this.queryData.value == 'countGeoModelAreaByPrj') {
          count += this.tableData[i].area;
        } else if (this.queryData.value == 'countLineLength') {
          count += this.tableData[i].len;
        } else {
          count += this.tableData[i].count;
        }
      }
      if (this.queryData.value == 'countDlgAreaByPrj' || this.queryData.value == 'countGeoModelAreaByPrj') {
        val.area = count;
      } else if (this.queryData.value == 'countLineLength') {
        val.len = count;
      } else {
        val.count = count;
      }
      val.sizes = sizes;
      val.m1 = m1;
      this.reportFormsData = JSON.parse(JSON.stringify(this.tableData));
      this.reportFormsData.push(val)
    },
    //统计切换
    setCountFlagChange(res) {
      switch (res) {
        case 1:
          this.getReportForms();
          this.setCountFlag = true;
          break;
        case 2:
@@ -299,6 +497,7 @@
      }
    },
    async getQueryDownloadData() {
      this.modelData = [];
      this.listData = {
        pageIndex: 1,
        pageSize: 10,
@@ -314,6 +513,30 @@
      this.modelData = data.result;
      this.listData.count = data.count;
    },
    getEchartFormate(val) {
      var obj = this.prjData.filter(res => {
        if (res.m1 == val) {
          return res;
        }
      })[0];
      var message = "";
      if (obj) {
        if (obj.m2 == 'area') {
          if (obj.area > 1000000) {
            message = (obj.area / 1000000).toFixed(3) + "<span  style='font-size:16px; '>km²<span>";
          } else {
            message = obj.area + "<span  style='font-size:16px; '>m²<span>";
          }
        } else if (obj.m2 == 'count') {
          message = obj.count + '个';
        } else if (obj.m2 == 'len') {
          message = obj.len + "<span style='font-size:16px;'>km<span>";
        }
      }
      return message;
    },
    //Echart图表显示
    showCountEchart() {
      var dom = document.getElementById("chart_11");
@@ -321,8 +544,8 @@
        dom.removeAttribute("_echarts_instance_"); // 移除容器上的 _echarts_instance
      }
      var resizeMainContainer = function () {
        dom.style.width = window.innerWidth * 0.65 + "px";
        dom.style.height = window.innerHeight * 0.6 + "px";
        dom.style.width = window.innerWidth * 0.75 + "px";
        dom.style.height = window.innerHeight * 0.75 + "px";
      };
      //设置div容器高宽
      resizeMainContainer();
@@ -333,27 +556,133 @@
      var app = {};
      let dataAxis = [];
      let data = [];
      let yMax = 0;
      for (var i in this.tableData) {
        if (this.tableData[i].count > yMax) {
          yMax = this.tableData[i].count;
      this.option = {}
      this.dataVolume = 0;
      let data = [];
      window.sjName = this.queryData.value
      window.sjType = this.tjlxData.region
      if (sjName == 'countDemAreaByPrj'
        || sjName == 'countMptAreaByPrj'
        || sjName == 'countOsgbAreaByPrj'
        || sjName == 'countLasAreaByPrj'
        || sjName == 'countDomAreaByPrj'
        || sjName == 'countDlgAreaByPrj'
        || sjName == 'countGeoModelAreaByPrj'
      ) {
        for (var i in this.tableData) {
          if (this.tableData[i].count > yMax) {
            yMax = this.tableData[i].area;
          }
          data.push(this.tableData[i].area);
          var m1 = this.tableData[i].m1;
          dataAxis.push(m1);
          this.dataVolume += this.tableData[i].area;
        }
        if (parseFloat(this.dataVolume) >= 1000000) {
          this.dataVolume = parseFloat(this.dataVolume / 1000000).toFixed(3) + "km²";
        } else {
          this.dataVolume = this.dataVolume.toFixed(3) + "m²"
        }
        data.push(this.tableData[i].count);
        var m1 = this.tableData[i].m1;
        if (this.tableData[i].m2 != null) {
          m1 += "_" + this.tableData[i].m2;
      } else if (sjName == 'countWaterDamageByPrj'
        || sjName == 'countUnstableSlopeByPrj'
        || sjName == 'countLandSlideByPrj'
        || sjName == 'countHighSteepSlopeByPrj'
        || sjName == 'countGroundCollapseByPrj'
        || sjName == 'countDebrisFlowByPrj'
        || sjName == 'countCollapseByPrj'
        || sjName == 'countExplorationReportByPrj'
        || sjName == 'countSurveyWorksiteByPrj'
        || sjName == 'countExplorationPointByPrj'
        || sjName == 'countGeologicHazardByPrj'
      ) {
        for (var i in this.tableData) {
          if (this.tableData[i].count > yMax) {
            yMax = this.tableData[i].count;
          }
          data.push(this.tableData[i].count);
          var m1 = this.tableData[i].m1;
          dataAxis.push(m1);
          this.dataVolume += this.tableData[i].count;
        }
        dataAxis.push(m1);
        this.dataVolume += "个"
      } else if (sjName == 'countLineLength') {
        for (var i in this.tableData) {
          if (this.tableData[i].count > yMax) {
            yMax = this.tableData[i].len;
          }
          data.push(this.tableData[i].len);
          var m1 = this.tableData[i].m1;
          dataAxis.push(m1);
          this.dataVolume += this.tableData[i].len;
        }
        this.dataVolume = this.dataVolume.toFixed(3) +"km";
      } else if (sjName == 'countServices' || sjName == 'countOperates') {
        for (var i in this.tableData) {
          if (this.tableData[i].count > yMax) {
            yMax = this.tableData[i].count;
          }
          data.push(this.tableData[i].count);
          var m1 = this.tableData[i].m1;
          dataAxis.push(m1);
          this.dataVolume += this.tableData[i].count;
        }
        this.dataVolume += "次"
      } else if (sjName == 'countVariousDataByPrj') {
        for (var i in this.tableData) {
          var val = this.tableData[i].m2;
          var obj = this.tableData[i][val];
          if (val == 'area') {
            if (obj > 1000000) {
              obj = (obj / 1000000).toFixed(3)
            }
          }
          data.push(obj);
          var m1 = this.tableData[i].m1;
          dataAxis.push(m1);
        }
      } else {
        for (var i in this.tableData) {
          if (this.tableData[i].count > yMax) {
            yMax = this.tableData[i].count;
          }
          if (sjType == 'sjts') {
            data.push(this.tableData[i].count);
            this.dataVolume += this.tableData[i].count;
          } else if (sjType == 'sjccl') {
            this.dataVolume = this.dataVolume + this.tableData[i].sizes;
            data.push(this.tableData[i].sizes);
          }
          var m1 = this.tableData[i].m1;
          dataAxis.push(m1);
        }
        if (sjType == 'sjts') {
          this.dataVolume += '个';
        } else if (sjType == 'sjccl') {
          if (parseFloat(this.dataVolume) >= 1024) {
            this.dataVolume = (this.dataVolume / 1024).toFixed(3) + 'GB';
          } else {
            this.dataVolume = this.dataVolume.toFixed(3) + 'MB';
          }
        }
      }
      yMax = yMax + 10;
      let dataShadow = [];
      for (let i = 0; i < data.length; i++) {
        dataShadow.push(yMax);
      }
      var that = this;
      this.option = {
        grid: {
          left: "5%",
@@ -364,13 +693,68 @@
        tooltip: {
          //提示框组件
          trigger: "axis", //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
          axisPointer: { animation: false },
          // axisPointer: { animation: false },
          axisPointer: {
            // 坐标轴指示器,坐标轴触发有效
            type: "line", // 默认为直线,可选为:'line' | 'shadow'
          },
          formatter: " {b} : <br/>统计量 :  {c}",
          formatter: function (params) {
            var p_name = params[0].axisValue;
            var p_val;
            if (that.queryData.value == 'countServices' || that.queryData.value == 'countOperates') {
              p_val = p_name + '<br/>访问次数  :' + params[0].data + '次'
            } else if (that.queryData.value == 'countDemAreaByPrj'
              || that.queryData.value == 'countMptAreaByPrj'
              || that.queryData.value == 'countOsgbAreaByPrj'
              || that.queryData.value == 'countLasAreaByPrj'
              || that.queryData.value == 'countDomAreaByPrj'
              || that.queryData.value == 'countDlgAreaByPrj'
              || that.queryData.value == 'countGeoModelAreaByPrj'
            ) {
              if (params[0].data >= 1000000) {
                p_val = p_name + '<br/>' + (params[0].data / 1000000).toFixed(3) + "<span style='font-size:20px; '>km²<span>"
              } else {
                p_val = p_name + '<br/>' + params[0].data.toFixed(3) + "<span style='font-size:20px; '>m²<span>"
              }
            } else if (sjName == 'countLineLength') {
              p_val = p_name + '<br/>距离:' + params[0].data.toFixed(3) + "<span style='font-size:16px;'>km<span>";
            } else if (sjName == 'countWaterDamageByPrj'
              || sjName == 'countUnstableSlopeByPrj'
              || sjName == 'countLandSlideByPrj'
              || sjName == 'countHighSteepSlopeByPrj'
              || sjName == 'countGroundCollapseByPrj'
              || sjName == 'countDebrisFlowByPrj'
              || sjName == 'countCollapseByPrj'
              || sjName == 'countExplorationReportByPrj'
              || sjName == 'countDlgAreaByPrj'
              || sjName == 'countExplorationPointByPrj'
              || sjName == 'countGeologicHazardByPrj'
              || sjName == 'countSurveyWorksiteByPrj'
            ) {
              p_val = p_name + '<br/>' + params[0].data + '个'
            } else if (sjName == "countVariousDataByPrj") {
              p_val = p_name + '<br/>' + that.getEchartFormate(p_name)
            } else {
              if (sjType == 'sjts') {
                if (that.queryData.value != "countExplorationPoints") {
                  p_val = p_name + '<br/>文件个数:' + params[0].data + '个'
                } else if (that.queryData.value == "countExplorationPoints") {
                  p_val = p_name + '<br/>个数:' + params[0].data + '个'
                }
              } else {
                if (params[0].data >= 1024) {
                  p_val = p_name + '<br/>数据存储量:' + (params[0].data / 1024).toFixed(3) + 'GB'
                } else {
                  p_val = p_name + '<br/>数据存储量:' + params[0].data.toFixed(3) + 'MB'
                }
              }
            }
            return p_val;
          },
        },
        xAxis: {
          data: dataAxis,
@@ -387,6 +771,7 @@
          z: 10,
        },
        yAxis: {
          name: name,
          axisLine: {
            show: false,
          },
@@ -426,16 +811,18 @@
          },
        ],
      };
      // Enable data zoom when user click bar.
      const zoomSize = 6;
      myChart.on("click", function (params) {
        console.log(dataAxis[Math.max(params.dataIndex - zoomSize / 2, 0)]);
        myChart.dispatchAction({
          type: "dataZoom",
          startValue: dataAxis[Math.max(params.dataIndex - zoomSize / 2, 0)],
          endValue:
            dataAxis[
              Math.min(params.dataIndex + zoomSize / 2, data.length - 1)
            Math.min(params.dataIndex + zoomSize / 2, data.length - 1)
            ],
        });
      });
@@ -455,36 +842,152 @@
      });
      this.listData.code = this.queryData.value;
      this.setQueryCountData();
    },
    //树点击事件
    handleNodeClick(data, node, prop) {
      this.setCountFlag = true;
      if (data.isMenu == false) return
      this.prjCunt = "";
      this.setCountFlag = false;
      this.queryData = data;
      this.listData.code = data.value;
      this.listData.pageIndex = 1;
      this.listData.pageSize = 10;
      this.setQueryCountData();
    },
    handleIsopenSelect() {
      this.$forceUpdate()
    },
    async setPrjCuntChange() {
      const data = await dataCount_countVariousDataByPrj({ code: this.prjCunt })
      if (!data || data.code != 200) {
        return;
      }
      this.tableData = data.result;
      this.prjData = data.result;
      this.showCountEchart();
    },
    //查询统计信息
    async setQueryCountData() {
      var data;
      this.tjlxData.region = 'sjccl';
      var data, val;
      this.setDownloadType = true;
      this.tjlxData.flag = true;
      this.setExcelType = true;
      if (this.queryData.value == "countServices") {
        this.tjlxData.flag = false;
        data = await dataCount_selectCountServices();
      } else if (this.queryData.value == "countSizes") {
        data = await dataCount_selectCountSizes();
      } else if (this.queryData.value == "countOperates") {
        this.tjlxData.flag = false;
        data = await dataCount_selectCountOperates();
      } else if (this.queryData.value == "countSizesByType") {
        data = await dataCount_countSizesByType();
      } else if (this.queryData.value == "countSizesByPrj") {
        data = await dataCount_countSizesByPrj();
      } else if (this.queryData.value == "countExplorationPoints") {
        data = await dataCount_countExplorationPoints();
      }
      if (data.code != 200) {
      else if (this.queryData.value == "countWaterDamageByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countWaterDamageByPrj();
      } else if (this.queryData.value == "countUnstableSlopeByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countUnstableSlopeByPrj();
      } else if (this.queryData.value == "countLandSlideByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countLandSlideByPrj();
      } else if (this.queryData.value == "countHighSteepSlopeByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countHighSteepSlopeByPrj();
      } else if (this.queryData.value == "countGroundCollapseByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countGroundCollapseByPrj();
      } else if (this.queryData.value == "countDebrisFlowByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countDebrisFlowByPrj();
      } else if (this.queryData.value == "countCollapseByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countCollapseByPrj();
      } else if (this.queryData.value == "countExplorationReportByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countExplorationReportByPrj();
      } else if (this.queryData.value == "countSurveyWorksiteByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countSurveyWorksiteByPrj();
      } else if (this.queryData.value == "countLasAreaByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countLasAreaByPrj();
      } else if (this.queryData.value == "countOsgbAreaByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countOsgbAreaByPrj();
      } else if (this.queryData.value == "countMptAreaByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countMptAreaByPrj();
      } else if (this.queryData.value == "countDemAreaByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countDemAreaByPrj();
      } else if (this.queryData.value == "countDomAreaByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countDomAreaByPrj();
      } else if (this.queryData.value == "countDlgAreaByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countDlgAreaByPrj();
      } else if (this.queryData.value == "countExplorationPointByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countExplorationPointByPrj();
      } else if (this.queryData.value == "countLineLength") {
        this.tjlxData.flag = false;
        data = await dataCount_countLineLength();
      } else if (this.queryData.value == "countGeoModelAreaByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countGeoModelAreaByPrj();
      } else if (this.queryData.value == "countGeologicHazardByPrj") {
        this.tjlxData.flag = false;
        data = await dataCount_countGeologicHazardByPrj();
      } else if (this.queryData.value == "countVariousDataByPrj") {
        this.setDownloadType = false;
        this.tjlxData.flag = false;
        this.setCountFlag = false;
        this.setExcelType = false;
        data = await project_selectDirAll();
        if (!data || data.code != 200) {
          return;
        } else {
          this.prjOption = [];
          var val_std = [{
            name: '全部',
            code: "ALL",
          }]
          this.prjOption = val_std.concat(data.result);
          this.prjCunt = this.prjOption[0].code
          this.setPrjCuntChange();
          return
        }
      }
      if (!data || data.code != 200) {
        return;
      }
      if (this.queryData.value == "countSizes") {
      // if (this.queryData.value == "countSizes") {
      //   // for (var i in data.result) {
      //   //   data.result[i].count = data.result[i].sizes;
      //   // }
      // }
      if (this.queryData.value == "countOperates") {
        for (var i in data.result) {
          data.result[i].count = data.result[i].sizes;
          if (data.result[i].m2) {
            data.result[i].m1 = data.result[i].m1 + '\\' + data.result[i].m2
          }
        }
      }
      this.tableData = data.result;
      this.showCountEchart();
      this.$nextTick(() => {
        this.$refs.table.doLayout();
      });
@@ -496,44 +999,57 @@
<style lang="less" scoped>
.dataStatistics {
  height: 98%;
  width: 98%;
  padding: 1%;
  width: calc(100% - 20px);
  height: calc(100% - 20px);
  padding: 10px;
  position: relative;
  overflow: hidden;
  .contentBox {
    height: calc(98% - 63px);
    padding-top: 10px;
    height: calc(100% - 50px);
    width: 100%;
    display: flex;
    justify-content: space-around;
    .content_Left {
      width: 18%;
      width: 15%;
      height: calc(95% - 2px);
      border-radius: 5px;
      padding: 1%;
    }
    .content_Right {
      width: 77%;
      width: 80%;
      height: calc(95% - 2px);
      border-radius: 5px;
      padding: 1%;
      .iquery {
        padding: 1%;
        //padding: 1%;
        border-radius: 5px;
        display: flex;
        justify-content: flex-end;
        padding: 0px !important;
      }
      .contentTable {
        width: 98%;
        height: 82%;
        padding: 1%;
        border-radius: 5px;
        margin-top: 1%;
        //margin-top: 1%;
        .el-table,
        .el-table /deep/ .el-table__expanded-cell {
          background-color: transparent !important;
        }
        .el-table /deep/ th,
        .el-table /deep/ tr {
          background-color: transparent !important;
        }
      }
    }