管道基础大数据平台系统开发-【前端】-新系統界面
TreeWish
2023-02-23 2fe093fdd453157e578c364fd41fd9bcce4f1f74
Merge branch 'master' of http://103.85.165.99:8989/r/LFWEB_NEW
已修改33个文件
3784 ■■■■ 文件已修改
src/api/api.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/configure.css 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/en.js 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/zh.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapMenuPop.vue 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapSpacePop.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/mapsdk.vue 501 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/navMenu.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Archive/index.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/AuthorizationManagement/menuRoleAuthorization.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/AuthorizationManagement/roleMenuAuthorization.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/AuthorizationManagement/roleResAuthorization.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/AuthorizationManagement/userRoleAuthorization.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Synthesis/LeftMenu.vue 1237 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/LayerTree.vue 635 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/Popup.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/maplayer.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/pipeLineAnaly.vue 507 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/SpatialData.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/catalogueManage.vue 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/dataStatistics.vue 120 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/metadataManage.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/blackwhiteList.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/menuSettings.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/mochaitmo.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/parameterConfiguration.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/tokentool.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/userManagement.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/authorityManage.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/orgManage.vue 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/resourceManage.vue 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/roleManage.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/templateManage.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/api.js
@@ -730,7 +730,7 @@
}
//资料馆=>根据单位ID集合查询单位
export function dataLib_selectDepsByIds(params) {
  return request.get('/dataLib/selectDepsByIds?' + params);
  return request.get('/dataLib/selectDepsByCodes?' + params);
}
//资料馆=>请求下载
@@ -845,8 +845,8 @@
export function dataCount_downloadReport(params) {
  return request.get('/dataCount/downloadReport', { params: params });
}
//请求站场点内容
src/assets/css/configure.css
@@ -31,6 +31,7 @@
.box_divm {
    background-color: rgba(244, 248, 255, 0.85) !important;
}
.subpage_Div {
    border: 1px solid #dcdfe6;
}
@@ -324,12 +325,11 @@
.twoMenu_imge88 {
    background: url("../../assets/img/synthesis/images/3白底_166.png") no-repeat center;
}
.el-icon-download{
.menuPop .leftBox li {
    color: black;
}
.menuPop .leftBox li{
    color: black  ;
}
.popupBox .popupContainer{
    color: #606266 !important;
.popupBox .popupContainer {
    color: #606266 !important;
}
src/assets/lang/en.js
@@ -1,6 +1,6 @@
const en = {
  common: {
    bak:'Bak',
    bak: 'Bak',
    domCode: 'DomCode',
    confirm: 'confirm',
    choose: 'Please choose',
@@ -41,13 +41,14 @@
    size: 'size',
    versionName: 'version Name',
    type: 'type',
    fileType:'File Type',
    fileType: 'File Type',
    quayTest: 'Auality testing',
    md5: 'MD5 Code',
    lineNuber: 'line Nuber',
    pleaseInputPassworld: 'Please input a password',
    passworld: 'Passworld',
    language: "中文"
    language: "中文",
    title: 'Title'
  },
  dataManage: {
@@ -59,11 +60,11 @@
    dataRetrieval: 'data retrieval',
    dataDownload: 'Data download',
    projectManage: 'project management',
    dataStatistics:'data Statistics',
    dataStaticObj:{
      type1:'Primary module',
      type2:'Secondary module',
      type3:'Statistical data',
    dataStatistics: 'data Statistics',
    dataStaticObj: {
      type1: 'Primary module',
      type2: 'Secondary module',
      type3: 'Statistical data',
    },
    projectObj: {
      projname: 'Project Name',
@@ -104,9 +105,9 @@
      entryName: 'Entry Name',
      selectWBSData: 'Select WBS Data',
      coordinateSystem: 'Coordinate System',
      fileExtension:"File extension",
      inspectionItems:"Inspection items",
      code:'Code'
      fileExtension: "File extension",
      inspectionItems: "Inspection items",
      code: 'Code'
    },
    metadataManage: 'Source Data Management',
@@ -531,7 +532,7 @@
    careatetime: 'Date of application',
    ReApply: 'Re apply',
    details: 'details',
    ApplicationCancel: "Application Cancel",
    ApplicationCancel: "withdraw",
  },
  loglog: {
    serialnumber: 'Serial Number',
src/assets/lang/zh.js
@@ -47,7 +47,8 @@
    lineNuber: '行数',
    pleaseInputPassworld: '请输入密码',
    passworld: '密码',
    language: "English"
    language: "English",
    title: '标题'
  },
  dataManage: {
    dataManage: '数据管理',
@@ -58,11 +59,14 @@
    dataRetrieval: '数据检索',
    dataDownload: '数据下载',
    projectManage: '项目管理',
    dataStatistics:'数据统计',
    dataStaticObj:{
      type1:'一级模块',
      type2:'二级模块',
      type3:'统计数据',
    dataStatistics: '数据统计',
    dataStaticObj: {
      type1: '服务名称',
      type2: '访问次数',
      type3: '单位名称',
      type4: '数据量',
      type5: '菜单名称',
      type7: '访问次数'
    },
    projectObj: {
      projname: '项目名称',
@@ -525,7 +529,7 @@
    careatetime: '申请日期',
    ReApply: '重新申请',
    details: '详情',
    ApplicationCancel: "申请取消",
    ApplicationCancel: "取消申请",
  },
  downlog: {
    type1: 'Shp文件',
src/components/MapView/mapMenuPop.vue
@@ -1,15 +1,9 @@
<template>
  <div class="menuPop">
    <div class="leftBox">
      <div
        class="leftDown"
        v-if="$store.state.download"
      >
      <div class="leftDown" v-if="$store.state.download">
        <div @click="getDownloadDep">
          <el-link
            style="color:white"
            icon="el-icon-download"
          > </el-link>
          <el-link icon="el-icon-download"> </el-link>
        </div>
      </div>
      <ul>
@@ -36,11 +30,7 @@
            label="序号"
            width="50"
          />
          <el-table-column
            label="定位"
            width="100"
            align="center"
          >
          <el-table-column label="定位" width="100" align="center">
            <template slot-scope="scope">
              <el-button
                icon="el-icon-map-location"
@@ -87,20 +77,14 @@
        label-width="100px"
        class="codeForm"
      >
        <el-form-item
          :label="$t('common.passworld')"
          prop="password"
        >
        <el-form-item :label="$t('common.passworld')" prop="password">
          <el-input
            type="password"
            v-model="codeForm.password"
            show-password
          ></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('common.SPassword')"
          prop="repassword"
        >
        <el-form-item :label="$t('common.SPassword')" prop="repassword">
          <el-input
            type="password"
            v-model="codeForm.repassword"
@@ -112,12 +96,9 @@
            class="primary"
            size="small"
            @click="download('codeForm')"
          >{{ $t("common.confirm") }}</el-button>
          <el-button
            type="info"
            size="small"
            @click="closeDown('codeForm')"
          >{{
            >{{ $t("common.confirm") }}</el-button
          >
          <el-button type="info" size="small" @click="closeDown('codeForm')">{{
            $t("common.cancel")
          }}</el-button>
        </el-form-item>
@@ -131,17 +112,13 @@
      :modal="false"
      :before-close="handleInsertClose"
    >
      <div style="width:100%; max-height:450px;overflow-y:auto">
        <el-form
          ref="form"
          :model="ruleForm"
          label-width="100px"
        >
      <div style="width: 100%; max-height: 450px; overflow-y: auto">
        <el-form ref="form" :model="ruleForm" label-width="100px">
          <el-form-item label="审核单位">
            <div>
              <ul>
                <li v-for="item in ruleForm.depid">
                  {{item.name}}
                  {{ item.name }}
                </li>
              </ul>
            </div>
@@ -150,7 +127,7 @@
            <div>
              <ul>
                <li v-for="item in ruleForm.tabs">
                  {{item.tabDesc}}
                  {{ item.tabDesc }}
                </li>
              </ul>
            </div>
@@ -158,7 +135,7 @@
          <el-form-item label="条件">
            <el-input
              :title="ruleForm.wkt"
              v-model=" ruleForm.wkt"
              v-model="ruleForm.wkt"
              disabled
            ></el-input>
          </el-form-item>
@@ -173,18 +150,12 @@
            </el-input>
          </el-form-item>
          <el-form-item>
            <el-button
              class="primary"
              size="small"
              @click="getInsertDown"
            >{{ $t("common.confirm") }}</el-button>
            <el-button
              type="info"
              size="small"
              @click="closeInsertDown"
            >{{
            $t("common.cancel")
          }}</el-button>
            <el-button class="primary" size="small" @click="getInsertDown">{{
              $t("common.confirm")
            }}</el-button>
            <el-button type="info" size="small" @click="closeInsertDown">{{
              $t("common.cancel")
            }}</el-button>
          </el-form-item>
        </el-form>
      </div>
@@ -196,7 +167,7 @@
    ></iframe>
  </div>
</template>
<script>
import {
  dataQuery_selectByPage,
@@ -207,7 +178,8 @@
  dataLib_selectDownloadFile,
  dataQuery_selectDbOverflowDep,
  apply_insertApply,
  decr, encr,
  decr,
  encr,
  dataLib_selectDepsByIds,
} from "../../api/api.js";
import { getToken } from "@/utils/auth";
@@ -266,7 +238,6 @@
        entity: [],
        wkt: null,
        descr: null,
      },
      listPage: {
        pageSize: 10,
@@ -299,11 +270,11 @@
      this.dialogVisible = true;
    },
    handleInsertClose() {
      this.$confirm('确认关闭?')
        .then(_ => {
      this.$confirm("确认关闭?")
        .then((_) => {
          this.closeInsertDown();
        })
        .catch(_ => { });
        .catch((_) => {});
    },
    closeInsertDown() {
      this.ruleForm = {
@@ -313,27 +284,25 @@
        repwd: null,
        wkt: null,
        descr: null,
      }
      this.dialogInsertVisible = false
      };
      this.dialogInsertVisible = false;
    },
    async getDownloadDep() {
      var std = [];
      for (var i in this.option) {
        std.push(this.option[i].entity
        )
        std.push(this.option[i].entity);
      }
      var obj = {
        entities: std,
        wkt: this.listdata.wkt
      }
      const data = await dataQuery_selectDbOverflowDep(JSON.stringify(obj))
        wkt: this.listdata.wkt,
      };
      const data = await dataQuery_selectDbOverflowDep(JSON.stringify(obj));
      if (data.code != 200) {
        this.$message.error("数据请求失败");
        return;
      }
      if (data.result.length == 0 || data.result == null) {
        this.insertFlag = 1;
        this.dialogVisible = true;
      } else {
@@ -343,24 +312,23 @@
        var val = "";
        for (var i in data.result) {
          if (val == "") {
            val += "ids=" + data.result[i]
            val += "codes=" + data.result[i];
          } else {
            val += "&ids=" + data.result[i]
            val += "&codes=" + data.result[i];
          }
          std.push({
            name: data.result[i]
          })
            name: data.result[i],
          });
        }
        const data1 = await dataLib_selectDepsByIds(val);
        this.ruleForm.depid = data1.result;
        this.ruleForm.depname = std;
        this.ruleForm.wkt = decr(this.listdata.wkt)
        this.ruleForm.wkt = decr(this.listdata.wkt);
        this.ruleForm.tabs = this.option;
        this.dialogInsertVisible = true;
      }download
      }
    },
    async signGetPublicKey() {
      const res = await sign_getPublicKey();
@@ -400,31 +368,29 @@
        var std = [];
        var std1 = [];
        for (var i in this.option) {
          std.push(this.option[i].tabDesc)
          std1.push(this.option[i].entity)
          std.push(this.option[i].tabDesc);
          std1.push(this.option[i].entity);
        }
        var obj = {
          ids: this.insertOption.ids,
          depcodes: this.insertOption.ids,
          pwd: encr(this.codeForm.password),
          tabs: std,
          entities: std1,
          wkt: this.listdata.wkt,
          descr: this.ruleForm.descr,
        }
        const data1 = await apply_insertApply(JSON.stringify(obj))
        };
        const data1 = await apply_insertApply(JSON.stringify(obj));
        if (data1.code != 200) {
          this.$message.error("数据申请失败");
          return
          return;
        }
        this.$message({
          message: '数据申请成功',
          type: 'success'
          message: "数据申请成功",
          type: "success",
        });
        this.closeDown();
      }
    },
    async selectDownloadFile(rsid, rspwd) {
      var downObj = {
@@ -453,7 +419,7 @@
        .then((_) => {
          this.closeDown();
        })
        .catch((_) => { });
        .catch((_) => {});
    },
    closeDown() {
      this.dialogVisible = false;
@@ -474,7 +440,7 @@
        }
        this.$store.state.queryInfo = [];
        if (this.$store.state.primitLayer != null) {
            sgworld.Viewer.entities.remove(this.$store.state.primitLayer);
          sgworld.Viewer.entities.remove(this.$store.state.primitLayer);
          sgworld.Creator.DeleteObject(this.$store.state.primitLayer);
          this.$store.state.primitLayer = null;
        }
@@ -642,7 +608,6 @@
      this.showAllImage(data.result);
    },
    async showAllImage(res) {
      for (var i in res) {
        var param = {
          gid: res[i].gid,
@@ -670,13 +635,11 @@
      }
    },
    primitivesAddLayer(res) {
      switch (res.type) {
        case "Point":
          var val = Cesium.Cartesian3.fromDegrees(
            res.coordinates[0],
            res.coordinates[1],
            res.coordinates[1]
          );
          var point = Viewer.entities.add({
            position: val,
@@ -693,11 +656,11 @@
              // 应用于图像的统一比例。比例大于会1.0放大标签,而比例小于会1.0缩小标签。
              scale: 1.0,
              // 是否显示
              show: true
            }
              show: true,
            },
          });
          point.billboard.disableDepthTestDistance = Number.POSITIVE_INFINITY;
          this.$store.state.queryInfo.push(point)
          point.billboard.disableDepthTestDistance = Number.POSITIVE_INFINITY;
          this.$store.state.queryInfo.push(point);
          break;
        case "LineString":
        case "MultiLineString":
@@ -712,9 +675,9 @@
              width: 5,
              material: new Cesium.Color(1.0, 0.0, 0.0, 0.3),
              clampToGround: true,
            }
          })
          this.$store.state.queryInfo.push(polyline)
            },
          });
          this.$store.state.queryInfo.push(polyline);
          break;
        case "MultiPolygon":
          var val = res.coordinates[0][0];
@@ -729,9 +692,9 @@
              material: new Cesium.Color(1.0, 0.0, 0.0, 0.3),
              outline: true,
              outlineColor: new Cesium.Color(1.0, 0.0, 0.0, 0.3),
            }
          })
          this.$store.state.queryInfo.push(entity)
            },
          });
          this.$store.state.queryInfo.push(entity);
          break;
      }
    },
@@ -758,7 +721,7 @@
  },
};
</script>
<style scoped lang="less">
.menuPop {
  width: 100%;
@@ -822,4 +785,3 @@
  padding: 5px;
}
</style>
src/components/MapView/mapSpacePop.vue
@@ -320,9 +320,9 @@
    //初始化查询阈值表
    async getDomainsLayer() {
      const data = await inquiry_selectDomains({ name: this.spaceLayer });
      if (data.code != 200) {
        this.$message.error('列表调用失败');
      }
        if (data.code != 200) {
          this.$message.error('列表调用失败');
        }
      this.domainsLayer = data.result;
      this.setListDataStart();
      this.getTableselectFields();
src/components/mapsdk.vue
@@ -1,82 +1,44 @@
<template>
  <div class="mapBox">
    <div id="mapdiv">
      <div
        class="menu_Top box_divm"
        v-if="$store.state.mapMenuBoolean"
      >
      <div class="menu_Top box_divm" v-if="$store.state.mapMenuBoolean">
        <map-menu-top v-if="$store.state.mapMenuBoxFlag == '1'" />
        <map-space-top v-if="$store.state.mapMenuBoxFlag == '2'" />
      </div>
      <div
        class="bufferBox"
        v-if="showBufferBoxDialog"
      >
      <div class="bufferBox" v-if="showBufferBoxDialog">
        <el-card class="box-card box_divm">
          <div
            slot="header"
            class="clearfix"
          >
          <div slot="header" class="clearfix">
            <span>缓冲区分析</span>
            <div style="float: right; cursor: pointer">
              <i
                class="el-icon-close"
                @click="closeBufferBox(1)"
              ></i>
              <i class="el-icon-close" @click="closeBufferBox(1)"></i>
            </div>
          </div>
          <div class="box-body">
            <el-form
              ref="form"
              :model="bufFrom"
              label-width="100px"
            >
            <el-form ref="form" :model="bufFrom" label-width="100px">
              <el-form-item label="缓冲半径(米):">
                <el-input v-model="bufFrom.val"></el-input>
              </el-form-item>
              <el-form-item>
                <el-button
                  @click="addBuffer(1)"
                  type="info"
                >点</el-button>
                <el-button
                  @click="addBuffer(2)"
                  type="info"
                >线</el-button>
                <el-button
                  @click="addBuffer(3)"
                  type="info"
                >面</el-button>
                <el-button
                  @click="clearBuffer"
                  type="info"
                >清除</el-button>
                <el-button @click="addBuffer(1)" type="info">点</el-button>
                <el-button @click="addBuffer(2)" type="info">线</el-button>
                <el-button @click="addBuffer(3)" type="info">面</el-button>
                <el-button @click="clearBuffer" type="info">清除</el-button>
              </el-form-item>
            </el-form>
          </div>
        </el-card>
      </div>
      <div
        class="coordLocalBox"
        v-if="showCoordLocalBoxDialog"
      >
      <div class="coordLocalBox" v-if="showCoordLocalBoxDialog">
        <el-card class="box-card">
          <div slot="header">
            <span>坐标定位</span>
            <div style="float: right; cursor: pointer">
              <i
                class="el-icon-close"
                @click="closeBufferBox(2)"
              ></i>
              <i class="el-icon-close" @click="closeBufferBox(2)"></i>
            </div>
          </div>
          <div class="box-body">
            <el-form
              ref="form"
              :model="coordFrom"
              label-width="50px"
            >
            <el-form ref="form" :model="coordFrom" label-width="50px">
              <el-form-item label="经度:">
                <el-input v-model="coordFrom.lon"></el-input>
              </el-form-item>
@@ -87,38 +49,22 @@
                <el-input v-model="coordFrom.height"></el-input>
              </el-form-item>
              <el-form-item>
                <el-button
                  @click="setCoordLocal"
                  type="info"
                >定位</el-button>
                <el-button @click="setCoordLocal" type="info">定位</el-button>
              </el-form-item>
            </el-form>
          </div>
        </el-card>
      </div>
      <div
        class="toponymicLocalBox"
        v-if="showToponymicLocalBoxDialog"
      >
      <div class="toponymicLocalBox" v-if="showToponymicLocalBoxDialog">
        <el-card class="box-card">
          <div
            slot="header"
            class="clearfix"
          >
          <div slot="header" class="clearfix">
            <span>地名定位</span>
            <div style="float: right; cursor: pointer">
              <i
                class="el-icon-close"
                @click="closeBufferBox(3)"
              ></i>
              <i class="el-icon-close" @click="closeBufferBox(3)"></i>
            </div>
          </div>
          <div class="box-body">
            <el-form
              :model="comprehensive"
              :inline="true"
              label-width="50px"
            >
            <el-form :model="comprehensive" :inline="true" label-width="50px">
              <el-form-item label="地名:">
                <el-input
                  style="width: 200px"
@@ -126,28 +72,17 @@
                ></el-input>
              </el-form-item>
              <el-form-item>
                <el-button
                  @click="setQueryTable"
                  type="info"
                >查询</el-button>
                <el-button @click="setQueryTable" type="info">查询</el-button>
              </el-form-item>
            </el-form>
            <el-table
              :data="tableData"
              height="200px"
              style="width: 100%"
            >
            <el-table :data="tableData" height="200px" style="width: 100%">
              <el-table-column
                align="center"
                type="index"
                label="序号"
                width="70px"
              />
              <el-table-column
                prop="name"
                align="center"
                label="定位"
              >
              <el-table-column prop="name" align="center" label="定位">
                <template slot-scope="scope">
                  <el-button
                    @click="handleLocation(scope.$index, scope.row)"
@@ -156,11 +91,7 @@
                  ></el-button>
                </template>
              </el-table-column>
              <el-table-column
                prop="name"
                align="center"
                label="地名"
              >
              <el-table-column prop="name" align="center" label="地名">
              </el-table-column>
            </el-table>
            <div class="pagination_box">
@@ -178,21 +109,12 @@
          </div>
        </el-card>
      </div>
      <div
        class="pathAnalysisBox"
        v-if="showPathAnalysisBoxDialog"
      >
      <div class="pathAnalysisBox" v-if="showPathAnalysisBoxDialog">
        <el-card class="box-card">
          <div
            slot="header"
            class="clearfix"
          >
          <div slot="header" class="clearfix">
            <span>路径分析</span>
            <div style="float: right; cursor: pointer">
              <i
                class="el-icon-close"
                @click="closeBufferBox(4)"
              ></i>
              <i class="el-icon-close" @click="closeBufferBox(4)"></i>
            </div>
          </div>
          <div class="box-body">
@@ -202,10 +124,7 @@
              :rules="rules"
              label-width="55px"
            >
              <el-form-item
                label="起点:"
                prop="lon"
              >
              <el-form-item label="起点:" prop="lon">
                <el-input
                  style="width: 250px"
                  v-model="pathFrom.lon"
@@ -215,15 +134,10 @@
                  :underline="false"
                  @click="showMouseLeftClick(1)"
                  style="margin-left: 10px"
                ><i
                    style="color: white"
                    class="el-icon-plus"
                  ></i></el-link>
                  ><i style="color: white" class="el-icon-plus"></i
                ></el-link>
              </el-form-item>
              <el-form-item
                label="终点:"
                prop="lat"
              >
              <el-form-item label="终点:" prop="lat">
                <el-input
                  style="width: 250px"
                  v-model="pathFrom.lat"
@@ -233,16 +147,13 @@
                  :underline="false"
                  @click="showMouseLeftClick(2)"
                  style="margin-left: 10px"
                ><i
                    style="color: white"
                    class="el-icon-plus"
                  ></i></el-link>
                  ><i style="color: white" class="el-icon-plus"></i
                ></el-link>
              </el-form-item>
              <el-form-item>
                <el-button
                  @click="showMouseLeftClick(3)"
                  type="info"
                >查询</el-button>
                <el-button @click="showMouseLeftClick(3)" type="info"
                  >查询</el-button
                >
              </el-form-item>
            </el-form>
          </div>
@@ -263,16 +174,16 @@
</template>
<script>
import $ from "jquery"
import mapMenuTop from "./MapView/mapMenuTop.vue"
import $ from "jquery";
import mapMenuTop from "./MapView/mapMenuTop.vue";
import mapSpaceTop from "./MapView/mapSpaceTop.vue"
import mapSpaceTop from "./MapView/mapSpaceTop.vue";
import {
  select_Comprehensive_ByPageAndCount,
  select_Comprehensive_SelectWktById,
  comprehensive_selectRoute,
} from "../api/api"
} from "../api/api";
export default {
  name: "",
@@ -284,22 +195,22 @@
  data() {
    var validatePosition = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入密码"))
        callback(new Error("请输入密码"));
      } else {
        if (value) {
          let arr = value.split(",")
          let arr = value.split(",");
          if (arr.length !== 2) {
            callback(new Error("坐标点经纬度格式错误!"))
            callback(new Error("坐标点经纬度格式错误!"));
          } else {
            if (arr[0].startsWith("116") && arr[1].startsWith("39")) {
            } else {
              callback(new Error("坐标点纬度格式错误!"))
              callback(new Error("坐标点纬度格式错误!"));
            }
          }
        }
        callback()
        callback();
      }
    }
    };
    return {
      centerFlag: false,
      buffer: null,
@@ -365,26 +276,26 @@
        children: "children",
        label: "label",
      }, //树绑定对象
    }
    };
  },
  mounted() {
    this.init3DMap()
    this.$bus.$on("mapChangeBox", res => {
      this.showChangeBox(res)
    })
    this.init3DMap();
    this.$bus.$on("mapChangeBox", (res) => {
      this.showChangeBox(res);
    });
  },
  methods: {
    init3DMap() {
      var webKey = "94a34772eb88317fcbf8428e10448561"
      var webKey = "94a34772eb88317fcbf8428e10448561";
      //地图初始化
      window.sgworld = new SmartEarth.SGWorld("mapdiv", {
        url:SmartEarthRootUrl+"Workers/image/earth.jpg",
        url: SmartEarthRootUrl + "Workers/image/earth.jpg",
        licenseServer: window.sceneConfig.licenseServer,
      })
      });
      window.Viewer = window.sgworld._Viewer
      Viewer.imageryLayers._layers[0].show = false
      window.Viewer = window.sgworld._Viewer;
      Viewer.imageryLayers._layers[0].show = false;
      //定位
      // sgworld.Navigate.jumpTo({
      //   //跳转视角
@@ -396,26 +307,25 @@
      // })
      Viewer.camera.flyTo({
        destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000),
      });
      this.layer1 = Viewer.imageryLayers.addImageryProvider(
        new Cesium.UrlTemplateImageryProvider({
          url: gaoDeBaseUrl[0].url,
        })
      )
      );
      this.layer2 = Viewer.imageryLayers.addImageryProvider(
        new Cesium.UrlTemplateImageryProvider({
          url: gaoDeBaseUrl[1].url,
        })
      )
      );
      this.layer3 = Viewer.imageryLayers.addImageryProvider(
        new Cesium.UrlTemplateImageryProvider({
          url: gaoDeBaseUrl[2].url,
        })
      )
      );
      window.ImageLayer3=this.layer3;
      window.ImageLayer3 = this.layer3;
      // for (var i in gaoDeBaseUrl) {
      //   sgworld.Creator.createUrlTemplateImageryProvider(
@@ -428,13 +338,13 @@
      //   );
      // }
      Viewer._enableInfoOrSelection = false
      Viewer._enableInfoOrSelection = false;
      //显示fps
      Viewer.scene.debugShowFramesPerSecond = false
      Viewer.scene.debugShowFramesPerSecond = false;
      //导航控件
      window.sgworld.navControl("nav", false)
      window.sgworld.navControl("nav", false);
      //比例尺
      window.sgworld.navControl("scale", false)
      window.sgworld.navControl("scale", false);
      //开启深度检测
      // sgworld.Analysis.depthTestAgainstTerrain(true)
      Viewer.scene.globe.depthTestAgainstTerrain = true;
@@ -459,12 +369,12 @@
      var option = {
        url: window.sceneConfig.SGUrl,
        layerName: window.sceneConfig.mptName,
        requestVertexNormals: true
      }
        requestVertexNormals: true,
      };
      sgworld.Creator.sfsterrainprovider("", option, "", true, "");
      window.elevationTool = new SmartEarth.ElevationTool(window.sgworld)
      elevationTool.setContourColor("#F1D487")
      window.elevationTool = new SmartEarth.ElevationTool(window.sgworld);
      elevationTool.setContourColor("#F1D487");
      // var helper = new Cesium.EventHelper();
      // helper.add(Viewer.scene.globe.tileLoadProgressEvent, function (e) {
@@ -478,9 +388,9 @@
    },
    changeMenulayer() {
      this.isActive = !this.isActive
      this.isMenuLayer = !this.isMenuLayer
      this.setLayerVisible()
      this.isActive = !this.isActive;
      this.isMenuLayer = !this.isMenuLayer;
      this.setLayerVisible();
    },
    setLayerVisible() {
      if (this.isActive == true) {
@@ -490,12 +400,10 @@
        Viewer.imageryLayers.lower(this.layer2);
        Viewer.imageryLayers.lower(this.layer3);
      } else {
        Viewer.imageryLayers.raise(this.layer3);
        Viewer.imageryLayers.raise(this.layer2);
        // Viewer.imageryLayers._layers[1].show = false
        // Viewer.imageryLayers._layers[2].show = true
        // Viewer.imageryLayers._layers[3].show = true
@@ -507,62 +415,66 @@
        if (res.id == "6") {
        } else if (res.id == "7") {
        } else {
          this.showBufferBoxDialog = true
          this.showBufferBoxDialog = true;
        }
      } else if (res.name == "Coord") {
        if (res.id == "1") {
          this.showCoordLocalBoxDialog = true
          this.showCoordLocalBoxDialog = true;
        } else if (res.id == "2") {
          this.showToponymicLocalBoxDialog = true
          this.getToponymicData()
          this.showToponymicLocalBoxDialog = true;
          this.getToponymicData();
        }
      } else if (res.name == "Analysis") {
        if (res.id == "3") {
          this.showPathAnalysisBoxDialog = true
          if (res.show == true) {
            this.showPathAnalysisBoxDialog = true;
          } else {
            this.showPathAnalysisBoxDialog = false;
          }
        }
      }
    },
    handleSizeChange(val) {
      this.listData.pageSize = val
      this.getToponymicData()
      this.listData.pageSize = val;
      this.getToponymicData();
    },
    handleCurrentChange(val) {
      this.listData.pageIndex = val
      this.getToponymicData()
      this.listData.pageIndex = val;
      this.getToponymicData();
    },
    setQueryTable() {
      this.listData.pageSize = 10
      this.listData.pageIndex = 1
      this.getToponymicData()
      this.listData.pageSize = 10;
      this.listData.pageIndex = 1;
      this.getToponymicData();
    },
    async getToponymicData() {
      if (this.listData.tab == "") {
        delete this.listData.tab
        delete this.listData.tab;
      }
      this.listData.name = this.comprehensive.name
      const data = await select_Comprehensive_ByPageAndCount(this.listData)
      this.listData.name = this.comprehensive.name;
      const data = await select_Comprehensive_ByPageAndCount(this.listData);
      if (data.code != 200) {
        this.$message.error("列表调用失败")
        this.$message.error("列表调用失败");
      }
      this.tableData = data.result
      this.count = data.count
      this.tableData = data.result;
      this.count = data.count;
    },
    async handleLocation(index, row) {
      const data = await select_Comprehensive_SelectWktById({ id: row.gid })
      const data = await select_Comprehensive_SelectWktById({ id: row.gid });
      if (data.code != 200) {
        this.$message.error("列表调用失败")
        this.$message.error("列表调用失败");
      }
      var val = data.result.slice(6, data.result.length - 1)
      val = val.split(" ")
      var val = data.result.slice(6, data.result.length - 1);
      val = val.split(" ");
      var position = {
        X: parseFloat(val[0]),
        Y: parseFloat(val[1]),
        Altitude: 2000,
      }
      };
      if (this.imagePoint != null) {
        sgworld.Creator.DeleteObject(this.imagePoint)
        this.imagePoint = null
        sgworld.Creator.DeleteObject(this.imagePoint);
        this.imagePoint = null;
      }
      this.imagePoint = sgworld.Creator.CreateLabel(
        position,
@@ -574,7 +486,7 @@
        },
        0,
        "巡检点"
      )
      );
      sgworld.Navigate.jumpTo({
        //跳转视角
@@ -583,121 +495,124 @@
          parseFloat(val[1]),
          10000
        ),
      })
      });
    },
    closeBufferBox(res) {
      switch (res) {
        case 1:
          this.showBufferBoxDialog = false
          this.clearBuffer()
          break
          this.showBufferBoxDialog = false;
          this.clearBuffer();
          break;
        case 2:
          this.showCoordLocalBoxDialog = false
          break
          this.showCoordLocalBoxDialog = false;
          break;
        case 3:
          this.showToponymicLocalBoxDialog = false
          this.showToponymicLocalBoxDialog = false;
          if (this.imagePoint != null) {
            sgworld.Creator.DeleteObject(this.imagePoint)
            this.imagePoint = null
            sgworld.Creator.DeleteObject(this.imagePoint);
            this.imagePoint = null;
          }
          break
          break;
        case 4:
          this.showPathAnalysisBoxDialog = false
          this.clearPathAll(3)
          this.showPathAnalysisBoxDialog = false;
          this.clearPathAll(3);
          break
          break;
      }
    },
    //定位
    setCoordLocal() {
      var lon = parseFloat(this.coordFrom.lon)
      var lat = parseFloat(this.coordFrom.lat)
      var height = parseFloat(this.coordFrom.height)
      var lon = parseFloat(this.coordFrom.lon);
      var lat = parseFloat(this.coordFrom.lat);
      var height = parseFloat(this.coordFrom.height);
      sgworld.Navigate.jumpTo({
        //跳转视角
        destination: new Cesium.Cartesian3.fromDegrees(lon, lat, height),
      })
      });
    },
    //缓冲区分析
    clearBuffer() {
      if (this.buffer == null) return
      this.buffer && this.buffer.clearBuff()
      this.buffer = null
      if (this.buffer == null) return;
      this.buffer && this.buffer.clearBuff();
      this.buffer = null;
    },
    getBufferTable(type) {
      const points =
        this.buffer.this_buff.buff.polygon.hierarchy.getValue().positions
      let geometrys = ""
      let firstPoint
      let degrees = ""
        this.buffer.this_buff.buff.polygon.hierarchy.getValue().positions;
      let geometrys = "";
      let firstPoint;
      let degrees = "";
      points.forEach((p, i) => {
        degrees = window.sgworld.Core.toDegrees(p)
        geometrys += "[" + degrees.lon + "," + degrees.lat + "],"
        i === 0 && (firstPoint = "[" + degrees.lon + "," + degrees.lat + "]")
      })
      geometrys += firstPoint
      if (geometrys.length != 0) geometrys.trimEnd(",")
      geometrys = "{rings:[[" + geometrys + "]]}"
        degrees = window.sgworld.Core.toDegrees(p);
        geometrys += "[" + degrees.lon + "," + degrees.lat + "],";
        i === 0 && (firstPoint = "[" + degrees.lon + "," + degrees.lat + "]");
      });
      geometrys += firstPoint;
      if (geometrys.length != 0) geometrys.trimEnd(",");
      geometrys = "{rings:[[" + geometrys + "]]}";
    },
    addBuffer(res) {
      this.clearBuffer()
      var buffRadius = this.bufFrom.val
      this.clearBuffer();
      var buffRadius = this.bufFrom.val;
      switch (res) {
        case 1:
          this.buffer = sgworld.Analysis.DrawPointBuffer(buffRadius, event => {
            this.getBufferTable("point")
          })
          break
          this.buffer = sgworld.Analysis.DrawPointBuffer(
            buffRadius,
            (event) => {
              this.getBufferTable("point");
            }
          );
          break;
        case 2:
          this.buffer = sgworld.Analysis.DrawPolylineBuffer(
            buffRadius,
            event => {
              this.getBufferTable("line")
            (event) => {
              this.getBufferTable("line");
            }
          )
          break
          );
          break;
        case 3:
          this.buffer = sgworld.Analysis.DrawPolygonBuffer(
            buffRadius,
            event => {
              this.getBufferTable("polygon")
            (event) => {
              this.getBufferTable("polygon");
            }
          )
          break
          );
          break;
      }
    },
    async showMouseLeftClick(res) {
      if (res == 3) {
        this.$refs.form.validate(valid => {
        this.$refs.form.validate((valid) => {
          if (!valid) {
            return false
            return false;
          }
        })
        this.clearPathAll(3)
        var start = this.pathFrom.lon.split(",")
        var end = this.pathFrom.lat.split(",")
        });
        this.clearPathAll(3);
        var start = this.pathFrom.lon.split(",");
        var end = this.pathFrom.lat.split(",");
        var startData = {
          x1: parseFloat(start[0]),
          y1: parseFloat(start[1]),
          x2: parseFloat(end[0]),
          y2: parseFloat(end[1]),
        }
        };
        const data = await comprehensive_selectRoute(startData)
        const data = await comprehensive_selectRoute(startData);
        if (data.code != 200) {
          return this.$message.error("数据请求失败")
          return this.$message.error("数据请求失败");
        }
        var wkt = this.$wkt.parse(data.result)
        var wkt = this.$wkt.parse(data.result);
        var bufferSource = Cesium.GeoJsonDataSource.load(wkt, {
          stroke: new Cesium.Color(82 / 255, 152 / 255, 255 / 255, 1),
          strokeWidth: 5,
          clampToGround: true,
        })
        bufferSource.then(bufferSource => {
          sgworld.Navigate.flyToObj(bufferSource)
          Viewer.dataSources.add(bufferSource)
        })
        });
        bufferSource.then((bufferSource) => {
          sgworld.Navigate.flyToObj(bufferSource);
          Viewer.dataSources.add(bufferSource);
        });
        // var jsonurl =
        //   wnsUrl +
        //   '?start=' +
@@ -716,29 +631,29 @@
        //   },
        // });
      } else {
        var that = this
        var that = this;
        if (this.handler != null) {
          this.clearLeftClick()
          this.clearLeftClick();
        }
        this.handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas)
        this.handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
        this.handler.setInputAction(function (event) {
          let cartesian = Viewer.camera.pickEllipsoid(event.position)
          let cartographic = Cesium.Cartographic.fromCartesian(cartesian)
          let cartesian = Viewer.camera.pickEllipsoid(event.position);
          let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
          let lng = parseFloat(
            Cesium.Math.toDegrees(cartographic.longitude)
          ).toFixed(6) // 经度
          ).toFixed(6); // 经度
          let lat = parseFloat(
            Cesium.Math.toDegrees(cartographic.latitude)
          ).toFixed(6) // 纬度
          ).toFixed(6); // 纬度
          if (that.linePath != null) {
            that.clearPathAll(3)
            that.clearPathAll(3);
          }
          if (lng != null && lat != null) {
            let val = lng + "," + lat
            var position = sgworld.Creator.CreatePosition(lng, lat, 0)
            let val = lng + "," + lat;
            var position = sgworld.Creator.CreatePosition(lng, lat, 0);
            if (res == 1) {
              if (that.pathStart != null) {
                that.clearPathAll(1)
                that.clearPathAll(1);
              }
              that.pathStart = sgworld.Creator.CreateLabel(
@@ -756,12 +671,12 @@
                },
                0,
                "起始点"
              )
              );
              that.pathFrom.lon = val
              that.pathFrom.lon = val;
            } else if (res == 2) {
              if (that.pathEnd != null) {
                that.clearPathAll(2)
                that.clearPathAll(2);
              }
              that.pathEnd = sgworld.Creator.CreateLabel(
@@ -779,68 +694,68 @@
                },
                0,
                "结束点"
              )
              that.pathFrom.lat = val
              );
              that.pathFrom.lat = val;
            }
            that.clearLeftClick()
            that.clearLeftClick();
          }
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
      }
    },
    clearPathAll(res) {
      switch (res) {
        case 1:
          if (this.pathStart != null) {
            sgworld.Creator.DeleteObject(this.pathStart)
            this.pathStart = null
            sgworld.Creator.DeleteObject(this.pathStart);
            this.pathStart = null;
          }
          break
          break;
        case 2:
          if (this.pathEnd != null) {
            sgworld.Creator.DeleteObject(this.pathEnd)
            this.pathEnd = null
            sgworld.Creator.DeleteObject(this.pathEnd);
            this.pathEnd = null;
          }
          break
          break;
        case 3:
          if (this.pathStart != null) {
            sgworld.Creator.DeleteObject(this.pathStart)
            this.pathStart = null
            sgworld.Creator.DeleteObject(this.pathStart);
            this.pathStart = null;
          }
          if (this.pathEnd != null) {
            sgworld.Creator.DeleteObject(this.pathEnd)
            this.pathEnd = null
            sgworld.Creator.DeleteObject(this.pathEnd);
            this.pathEnd = null;
          }
          if (this.linePath != null) {
            sgworld.Creator.DeleteObject(this.linePath)
            this.linePath = null
            sgworld.Creator.DeleteObject(this.linePath);
            this.linePath = null;
          }
          Viewer.dataSources.removeAll()
          break
          Viewer.dataSources.removeAll();
          break;
        case 4:
          if (this.linePath != null) {
            sgworld.Creator.DeleteObject(this.linePath)
            this.linePath = null
            sgworld.Creator.DeleteObject(this.linePath);
            this.linePath = null;
          }
          break
          break;
      }
    },
    clearLeftClick() {
      this.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK) //移除事件
      this.handler = null
      this.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); //移除事件
      this.handler = null;
    },
    executeFly3D(res) {
      var position = []
      var position = [];
      if (res) {
        var positionA = res.features
        var positionA = res.features;
        if (positionA.length > 0) {
          for (var i = 0; i < positionA.length; i++) {
            var val = positionA[i]
            var val = positionA[i];
            if (val.geometry.type == "LineString") {
              var val_data = val.geometry.coordinates
              var val_data = val.geometry.coordinates;
              for (var j = 0; j < val_data.length; j++) {
                position.push({ x: val_data[j][0], y: val_data[j][1] })
                position.push({ x: val_data[j][0], y: val_data[j][1] });
              }
            }
          }
@@ -850,15 +765,15 @@
            1,
            0,
            "线"
          )
          sgworld.Navigate.flyToObj(this.linePath)
          );
          sgworld.Navigate.flyToObj(this.linePath);
        } else {
          return
          return;
        }
      }
    },
  },
}
};
</script>
<style scoped lang="less">
src/components/navMenu.vue
@@ -315,9 +315,11 @@
          if (result.code == 200) {
            res[i].children = result.result.filter((value) => {
              return value.isShow == 1;
            })
            .filter((value) => {
              return value.pid == res[i].id;
            });
          }
          this.listMenu.push(res[i]);
          // this.changeSelectStyle = this.listMenu.length - 1;
src/views/Archive/index.vue
@@ -527,27 +527,31 @@
          <el-form-item>
            <el-button
              @click="conditionVisible = true"
              type="info"
              type="success"
                        size="small"
              icon="el-icon-plus"
            >{{$t('common.append')}}</el-button>
          </el-form-item>
          <el-form-item>
            <el-button
              @click="submitForm()"
              type="info"
              type="primary"
              size="small"
              icon="el-icon-search"
            >{{$t('common.iquery')}}</el-button>
          </el-form-item>
          <el-form-item>
            <el-button
              type="info"
                        size="small"
              @click="resetForm()"
              icon="el-icon-search"
            >{{$t('common.reset')}}</el-button>
          </el-form-item>
          <el-form-item>
            <el-button
              type="info"
              type="warning"
                        size="small"
              @click="downloadForm()"
              icon="el-icon-download"
            >{{$t('common.download')}}</el-button>
@@ -829,30 +833,30 @@
          <el-table-column
            type="index"
            width="50"
            label="序号"
            :label="$t('common.index')"
          >
          </el-table-column>
          <el-table-column
            property="descr"
            label="标题"
         :label="$t('common.title')"
          > </el-table-column>
          <el-table-column
            property="name"
            label="文件名称"
         :label="$t('common.fileNme')"
          > </el-table-column>
          <el-table-column
            property="createName"
            label="出图人"
           :label="$t('operatManage.BWL.requestUser')"
          > </el-table-column>
          <el-table-column
            property="createTime"
            :formatter="formatData"
            label="日期"
         :label="$t('dataApply.careatetime')"
          >
          </el-table-column>
          <el-table-column
            label="操作"
             :label="$t('common.download')"
            width="120"
          >
            <template slot-scope="scope">
src/views/AuthorizationManagement/menuRoleAuthorization.vue
@@ -177,6 +177,7 @@
    <el-dialog
      :title="$t('operatManage.UserRoleAuthorizationObj.Added')"
      :visible.sync="dialogTableVisible"
      top="2vh"
    >
      <el-table
        :data="gridData"
src/views/AuthorizationManagement/roleMenuAuthorization.vue
@@ -191,6 +191,7 @@
    <el-dialog
      :title="$t('operatManage.UserRoleAuthorizationObj.Added')"
      :visible.sync="dialogTableVisible"
      top="2vh"
    >
      <el-table
        :data="gridData"
src/views/AuthorizationManagement/roleResAuthorization.vue
@@ -340,6 +340,7 @@
    <el-dialog
      :title="$t('operatManage.UserRoleAuthorizationObj.Added')"
      :visible.sync="dialogTableVisible"
      top="2vh"
    >
      <el-table
        :data="gridData"
src/views/AuthorizationManagement/userRoleAuthorization.vue
@@ -167,6 +167,7 @@
    <el-dialog
      :title="$t('operatManage.UserRoleAuthorizationObj.Added')"
      :visible.sync="dialogTableVisible"
       top="2vh"
    >
      <el-table
        :data="gridData"
src/views/Synthesis/LeftMenu.vue
@@ -6,21 +6,13 @@
      v-for="(item, index) in setListTwoMenu"
      :class="{ lefMenuDivActive: showTwoMenuFlag == item.id }"
    >
      <div
        class="menuTwoImage"
        :class="item.css"
      ></div>
      <div class="menuTwoImage" :class="item.css"></div>
      <div>{{ $t(item.label) }}</div>
    </div>
    <mapinfo ref="mapinfo" />
    <maplayer ref="maplayer" />
    <queryinfo ref="queryinfo" />
    <input
      type="file"
      accept=".kml"
      class="file"
      style="display: none"
    />
    <input type="file" accept=".kml" class="file" style="display: none" />
    <input
      :accept="'.shp, .shx, .dbf, .prj'"
      style="display: none"
@@ -35,23 +27,21 @@
</template>
<script>
import { transform } from 'ol/proj';
import mapinfo from '../Tools/mapinfo.vue';
import maplayer from '../Tools/maplayer.vue';
import queryinfo from '../Tools/queryinfo.vue';
import $ from 'jquery'
import { getToken } from '@/utils/auth';
import { transform } from "ol/proj";
import mapinfo from "../Tools/mapinfo.vue";
import maplayer from "../Tools/maplayer.vue";
import queryinfo from "../Tools/queryinfo.vue";
import $ from "jquery";
import { getToken } from "@/utils/auth";
import {
  OverviewMap,
  defaults as defaultControls,
  FullScreen,
  ScaleLine,
  Rotate,
} from "ol/control.js"
import * as turf from '@turf/turf';
import { geometry } from '@turf/turf';
} from "ol/control.js";
import * as turf from "@turf/turf";
import { geometry } from "@turf/turf";
export default {
  components: { mapinfo, maplayer, queryinfo },
@@ -62,162 +52,160 @@
      setListTwoMenuAll: [
        [
          {
            id: 'a1',
            label: 'synthesis.layer',
            name: '图层管理',
            css: 'twoMenu_imge11',
          },
        ],
        [
          {
            id: 'b1',
            label: 'synthesis.split',
            name: '分屏',
            css: 'twoMenu_imge21',
          },
          {
            id: 'b2',
            label: 'synthesis.twod',
            name: '二维',
            css: 'twoMenu_imge22',
          },
          {
            id: 'b3',
            label: 'synthesis.threed',
            name: '三维',
            css: 'twoMenu_imge23',
          },
          {
            id: 'b4',
            label: 'synthesis.full',
            name: '全图',
            css: 'twoMenu_imge24',
          },
          {
            id: 'b5',
            label: 'synthesis.zommin',
            name: '放大',
            css: 'twoMenu_imge25',
          },
          {
            id: 'b6',
            label: 'synthesis.zoomout',
            name: '缩小',
            css: 'twoMenu_imge26',
          },
          {
            id: 'b7',
            label: 'synthesis.rule',
            name: '比例尺',
            css: 'twoMenu_imge27',
          },
          {
            id: 'b8',
            label: 'synthesis.compass',
            name: '指北针',
            css: 'twoMenu_imge28',
          },
          {
            id: 'b9',
            label: 'synthesis.undergroundMode',
            name: '地下模式',
            css: 'twoMenu_imge29',
            id: "a1",
            label: "synthesis.layer",
            name: "图层管理",
            css: "twoMenu_imge11",
          },
        ],
        [
          {
            id: 'c1',
            label: 'synthesis.someroaming',
            name: '点漫游',
            css: 'twoMenu_imge31',
            id: "b1",
            label: "synthesis.split",
            name: "分屏",
            css: "twoMenu_imge21",
          },
          {
            id: 'c2',
            label: 'synthesis.lineroaming',
            name: '线路漫游',
            css: 'twoMenu_imge32',
            id: "b2",
            label: "synthesis.twod",
            name: "二维",
            css: "twoMenu_imge22",
          },
          {
            id: 'c3',
            label: 'synthesis.mouseroaming',
            name: '鼠标漫游',
            css: 'twoMenu_imge33',
            id: "b3",
            label: "synthesis.threed",
            name: "三维",
            css: "twoMenu_imge23",
          },
          {
            id: 'c4',
            label: 'synthesis.snapshot',
            name: '地图快照',
            css: 'twoMenu_imge34',
            id: "b4",
            label: "synthesis.full",
            name: "全图",
            css: "twoMenu_imge24",
          },
          {
            id: "b5",
            label: "synthesis.zommin",
            name: "放大",
            css: "twoMenu_imge25",
          },
          {
            id: "b6",
            label: "synthesis.zoomout",
            name: "缩小",
            css: "twoMenu_imge26",
          },
          {
            id: "b7",
            label: "synthesis.rule",
            name: "比例尺",
            css: "twoMenu_imge27",
          },
          {
            id: "b8",
            label: "synthesis.compass",
            name: "指北针",
            css: "twoMenu_imge28",
          },
          {
            id: "b9",
            label: "synthesis.undergroundMode",
            name: "地下模式",
            css: "twoMenu_imge29",
          },
        ],
        [
          {
            id: 'd1',
            label: 'synthesis.contouranalysis',
            name: '等高线',
            css: 'twoMenu_imge41',
            id: "c1",
            label: "synthesis.someroaming",
            name: "点漫游",
            css: "twoMenu_imge31",
          },
          {
            id: 'd2',
            label: 'synthesis.slopeanalysis',
            name: '坡度分析',
            css: 'twoMenu_imge42',
            id: "c2",
            label: "synthesis.lineroaming",
            name: "线路漫游",
            css: "twoMenu_imge32",
          },
          {
            id: 'd3',
            label: 'synthesis.pathanalysis',
            name: '路径分析',
            css: 'twoMenu_imge43',
            id: "c3",
            label: "synthesis.mouseroaming",
            name: "鼠标漫游",
            css: "twoMenu_imge33",
          },
          {
            id: 'd4',
            label: 'synthesis.cuttinganalysis',
            name: '地形剖切',
            css: 'twoMenu_imge44',
            id: "c4",
            label: "synthesis.snapshot",
            name: "地图快照",
            css: "twoMenu_imge34",
          },
        ],
        [
          {
            id: "d1",
            label: "synthesis.contouranalysis",
            name: "等高线",
            css: "twoMenu_imge41",
          },
          {
            id: 'd5',
            label: 'synthesis.floodanalysis',
            name: '淹没分析',
            css: 'twoMenu_imge45',
            id: "d2",
            label: "synthesis.slopeanalysis",
            name: "坡度分析",
            css: "twoMenu_imge42",
          },
          {
            id: 'd6',
            label: 'synthesis.earthworkcalculation',
            name: '土方量计算',
            css: 'twoMenu_imge46',
            id: "d3",
            label: "synthesis.pathanalysis",
            name: "路径分析",
            css: "twoMenu_imge43",
          },
          {
            id: 'd7',
            label: 'synthesis.crosssectionanalysis',
            name: '三维截面',
            css: 'twoMenu_imge47',
            id: "d4",
            label: "synthesis.cuttinganalysis",
            name: "地形剖切",
            css: "twoMenu_imge44",
          },
          {
            id: 'd8',
            label: 'synthesis.imagecontrast',
            name: '影像对比',
            css: 'twoMenu_imge48',
            id: "d5",
            label: "synthesis.floodanalysis",
            name: "淹没分析",
            css: "twoMenu_imge45",
          },
          {
            id: 'd9',
            label: 'synthesis.pipelineAnalysis',
            name: '管道分析',
            css: 'twoMenu_imge49',
            id: "d6",
            label: "synthesis.earthworkcalculation",
            name: "土方量计算",
            css: "twoMenu_imge46",
          },
          {
            id: 'd10',
            label: 'synthesis.flatterrain',
            name: '地形平整',
            css: 'twoMenu_imge410',
            id: "d7",
            label: "synthesis.crosssectionanalysis",
            name: "三维截面",
            css: "twoMenu_imge47",
          },
          {
            id: 'd11',
            label: 'synthesis.terrainexcavation',
            name: '地形开挖',
            css: 'twoMenu_imge411',
            id: "d8",
            label: "synthesis.imagecontrast",
            name: "影像对比",
            css: "twoMenu_imge48",
          },
          {
            id: "d9",
            label: "synthesis.pipelineAnalysis",
            name: "管道分析",
            css: "twoMenu_imge49",
          },
          {
            id: "d10",
            label: "synthesis.flatterrain",
            name: "地形平整",
            css: "twoMenu_imge410",
          },
          {
            id: "d11",
            label: "synthesis.terrainexcavation",
            name: "地形开挖",
            css: "twoMenu_imge411",
          },
          {
            id: "d12",
@@ -237,73 +225,71 @@
            name: "圆形视域分析",
            css: "twoMenu_imge414",
          },
        ],
        [
          {
            id: 'e1',
            label: 'synthesis.attributequery',
            name: '属性查询',
            css: 'twoMenu_imge51',
            id: "e1",
            label: "synthesis.attributequery",
            name: "属性查询",
            css: "twoMenu_imge51",
          },
          {
            id: 'e2',
            label: 'synthesis.rangequery',
            name: '空间查询',
            css: 'twoMenu_imge52',
            id: "e2",
            label: "synthesis.rangequery",
            name: "空间查询",
            css: "twoMenu_imge52",
          },
        ],
        [
          {
            id: 'f1',
            label: 'synthesis.gpsrtk',
            name: '坐标定位',
            css: 'twoMenu_imge61',
            id: "f1",
            label: "synthesis.gpsrtk",
            name: "坐标定位",
            css: "twoMenu_imge61",
          },
          {
            id: 'f2',
            label: 'synthesis.placenamelocation',
            name: '地名定位',
            css: 'twoMenu_imge62',
            id: "f2",
            label: "synthesis.placenamelocation",
            name: "地名定位",
            css: "twoMenu_imge62",
          },
        ],
        [
          {
            id: 'j1',
            label: 'synthesis.synthobj.m1',
            name: '表面距离',
            css: 'twoMenu_imge71',
            id: "j1",
            label: "synthesis.synthobj.m1",
            name: "表面距离",
            css: "twoMenu_imge71",
          },
          {
            id: 'j2',
            label: 'synthesis.synthobj.m4',
            name: '垂直高度',
            css: 'twoMenu_imge72',
            id: "j2",
            label: "synthesis.synthobj.m4",
            name: "垂直高度",
            css: "twoMenu_imge72",
          },
          {
            id: 'j3',
            label: 'synthesis.synthobj.m6',
            name: '平面面积',
            css: 'twoMenu_imge73',
            id: "j3",
            label: "synthesis.synthobj.m6",
            name: "平面面积",
            css: "twoMenu_imge73",
          },
          {
            id: 'j4',
            label: 'synthesis.synthobj.m7',
            name: '体积',
            css: 'twoMenu_imge74',
            id: "j4",
            label: "synthesis.synthobj.m7",
            name: "体积",
            css: "twoMenu_imge74",
          },
          {
            id: 'j5',
            label: 'synthesis.synthobj.m5',
            name: '表面面积',
            css: 'twoMenu_imge75',
            id: "j5",
            label: "synthesis.synthobj.m5",
            name: "表面面积",
            css: "twoMenu_imge75",
          },
          {
            id: 'j6',
            label: 'synthesis.synthobj.m2',
            name: '空间距离',
            css: 'twoMenu_imge76',
            id: "j6",
            label: "synthesis.synthobj.m2",
            name: "空间距离",
            css: "twoMenu_imge76",
          },
          {
            id: "j7",
@@ -314,87 +300,88 @@
        ],
        [
          {
            id: 'h1',
            label: 'synthesis.point',
            name: '点',
            css: 'twoMenu_imge81',
            id: "h1",
            label: "synthesis.point",
            name: "点",
            css: "twoMenu_imge81",
          },
          {
            id: 'h8',
            label: 'synthesis.addlabel',
            name: '文字',
            css: 'twoMenu_imge88',
            id: "h8",
            label: "synthesis.addlabel",
            name: "文字",
            css: "twoMenu_imge88",
          },
          {
            id: 'h2',
            label: 'synthesis.line',
            name: '线',
            css: 'twoMenu_imge82',
            id: "h2",
            label: "synthesis.line",
            name: "线",
            css: "twoMenu_imge82",
          },
          {
            id: 'h3',
            label: 'synthesis.rectangle',
            name: '矩形',
            css: 'twoMenu_imge83',
            id: "h3",
            label: "synthesis.rectangle",
            name: "矩形",
            css: "twoMenu_imge83",
          },
          {
            id: 'h4',
            label: 'synthesis.polygon',
            name: '多边形',
            css: 'twoMenu_imge84',
            id: "h4",
            label: "synthesis.polygon",
            name: "多边形",
            css: "twoMenu_imge84",
          },
          {
            id: 'h5',
            label: 'synthesis.import',
            name: '导入KML',
            css: 'twoMenu_imge85',
            id: "h5",
            label: "synthesis.import",
            name: "导入KML",
            css: "twoMenu_imge85",
          },
          {
            id: 'h6',
            label: 'synthesis.export',
            name: '导出KML',
            css: 'twoMenu_imge86',
            id: "h6",
            label: "synthesis.export",
            name: "导出KML",
            css: "twoMenu_imge86",
          },
          {
            id: 'h9',
            label: 'synthesis.import1',
            name: '导入SHP',
            css: 'twoMenu_imge85',
            id: "h9",
            label: "synthesis.import1",
            name: "导入SHP",
            css: "twoMenu_imge85",
          },
          {
            id: 'h10',
            label: 'synthesis.export1',
            name: '导出SHP',
            css: 'twoMenu_imge86',
            id: "h10",
            label: "synthesis.export1",
            name: "导出SHP",
            css: "twoMenu_imge86",
          },
          {
            id: 'h7',
            label: 'synthesis.removepaint',
            name: '清除',
            css: 'twoMenu_imge87',
            id: "h7",
            label: "synthesis.removepaint",
            name: "清除",
            css: "twoMenu_imge87",
          },
        ], [
        ],
        [
          {
            id: 'i1',
            name: '场景提取',
            label: 'synthesis.sceneExtraction',
            css: 'twoMenu_imge12',
            id: "i1",
            name: "场景提取",
            label: "synthesis.sceneExtraction",
            css: "twoMenu_imge12",
          },
          {
            id: 'i2',
            label: 'synthesis.release',
            name: '场景发布',
            css: 'twoMenu_imge13',
          }, {
            id: 'i3',
            label: 'synthesis.tdisplay',
            name: '三维演示',
            css: 'twoMenu_imge35',
            id: "i2",
            label: "synthesis.release",
            name: "场景发布",
            css: "twoMenu_imge13",
          },
        ]
          {
            id: "i3",
            label: "synthesis.tdisplay",
            name: "三维演示",
            css: "twoMenu_imge35",
          },
        ],
      ],
      isRuler: false,
      isNaviget: false,
@@ -406,6 +393,9 @@
      Excavation: false,
      entityaLayers: [],
      isMenuFlag: null,
      isRouter: false, //路径分析
      isPiple: false, //管道分析
      DXZPState: null, //地形整平
    };
  },
  methods: {
@@ -424,7 +414,7 @@
      if (this.isMenuFlag == "d") {
        this.clearAllAnalsy();
      }
      if (this.isMenuFlag !=val) {
      if (this.isMenuFlag != val) {
        sgworld.Creator.SimpleGraphic.clear();
        this.isMenuFlag = val;
        if (this.entityaLayers.length != 0) {
@@ -446,100 +436,97 @@
      this.showTwoMenuFlag = res.id;
      switch (val) {
        case 'a': //图层管理
        case "a": //图层管理
          this.setCoverage(res.id);
          break;
        case 'b':
        case "b":
          this.setViewport(res.id);
          break;
        case 'c':
        case "c":
          this.setWander(res.id);
          break;
        case 'd':
        case "d":
          this.setAnalsy(res.id);
          break;
        case 'e':
        case "e":
          this.setIquery(res.id);
          break;
        case 'f':
        case "f":
          this.setOrientation(res.id);
          break;
        case 'j':
        case "j":
          this.setMeasurement(res.id);
          break;
        case 'h':
        case "h":
          sgworld.Creator.SimpleGraphic.edit(true, { editProp: true });
          this.setPlot(res.id);
          break;
      }
    },
    setPlot(res) {
      switch (res) {
        case 'h1':
        case "h1":
          sgworld.Creator.createSimpleGraphic(
            'point',
            "point",
            {},
            function (entity) { }
            function (entity) {}
          );
          break;
        case 'h2':
        case "h2":
          sgworld.Creator.createSimpleGraphic(
            'polyline',
            "polyline",
            {},
            function (entity) { }
            function (entity) {}
          );
          break;
        case 'h3':
        case "h3":
          sgworld.Creator.createSimpleGraphic(
            'rectangle',
            "rectangle",
            {},
            function (entity) { }
            function (entity) {}
          );
          break;
        case 'h4':
        case "h4":
          sgworld.Creator.createSimpleGraphic(
            'polygon',
            "polygon",
            {},
            function (entity) { }
            function (entity) {}
          );
          break;
        case 'h5':
        case "h5":
          this.handleOpenClick();
          break;
        case 'h6':
        case "h6":
          this.handleSaveClick();
          break;
        case 'h9':
        case "h9":
          // this.handleOpenShp();
          $("#shpFile").click();
          break;
        case 'h10':
        case "h10":
          this.handleSaveShp();
          break;
        case 'h7':
        case "h7":
          sgworld.Creator.SimpleGraphic.clear();
          for (var i in this.entityaLayers) {
            sgworld.Viewer.entities.remove(this.entityaLayers[i]);
          }
          this.entityaLayers = [];
          break;
        case 'h8':
          sgworld.Creator.createSimpleGraphic('label', {}, function (entity) {
          });
        case "h8":
          sgworld.Creator.createSimpleGraphic(
            "label",
            {},
            function (entity) {}
          );
          break;
      }
    },
    handleSaveClick() {
      let funDownload = function (content, filename) {
        let eleLink = document.createElement('a');
        let eleLink = document.createElement("a");
        eleLink.download = filename;
        eleLink.style.display = 'none';
        eleLink.style.display = "none";
        // 字符内容转变成blob地址
        let blob = new Blob([content]);
        eleLink.href = URL.createObjectURL(blob);
@@ -567,14 +554,13 @@
        console.log(entities);
        // let promise = Cesium.exportKml({ entities: entities });
        promise.then(function (e) {
          funDownload(e.kml, new Date().getTime() + '.kml');
          funDownload(e.kml, new Date().getTime() + ".kml");
        });
      } else {
        alert('当前场景没有entities实体');
        alert("当前场景没有entities实体");
      }
    },
    handleSaveShp() {
      var entities = sgworld.Viewer.entities.values;
      if (entities.length == 0) {
        return;
@@ -582,87 +568,105 @@
      var std = [];
      for (var i in entities) {
        var type, fillColor, alpha, wkt, name;
        var bak = {}
        var bak = {};
        if (entities[i].name) {
          name = entities[i].name
          name = entities[i].name;
        }
        if (entities[i].properties) {
          var properties = entities[i].properties.propertyNames;
          for (var j in properties) {
            bak[properties[j]] = entities[i].properties[properties[j]]._value;
          }
        } else {
          bak = {
            "name": entities[i].name
          }
            name: entities[i].name,
          };
        }
        if (entities[i].rectangle) {//矩形
          type = 'rectangle'
          var east = Cesium.Math.toDegrees(entities[i].rectangle.coordinates.getValue().east);
          var north = Cesium.Math.toDegrees(entities[i].rectangle.coordinates.getValue().north);
          var west = Cesium.Math.toDegrees(entities[i].rectangle.coordinates.getValue().west);
          var south = Cesium.Math.toDegrees(entities[i].rectangle.coordinates.getValue().south);
          var line = turf.polygon([[[east, north], [west, north], [west, south], [east, south], [east, north]]])
          wkt = this.$wkt.convert(line.geometry)
        if (entities[i].rectangle) {
          //矩形
          type = "rectangle";
          var east = Cesium.Math.toDegrees(
            entities[i].rectangle.coordinates.getValue().east
          );
          var north = Cesium.Math.toDegrees(
            entities[i].rectangle.coordinates.getValue().north
          );
          var west = Cesium.Math.toDegrees(
            entities[i].rectangle.coordinates.getValue().west
          );
          var south = Cesium.Math.toDegrees(
            entities[i].rectangle.coordinates.getValue().south
          );
          var line = turf.polygon([
            [
              [east, north],
              [west, north],
              [west, south],
              [east, south],
              [east, north],
            ],
          ]);
          wkt = this.$wkt.convert(line.geometry);
          var fill = entities[i].rectangle._material._color._value;
          fillColor = fill.red + ',' + fill.green + ',' + fill.blue;
          fillColor = fill.red + "," + fill.green + "," + fill.blue;
          alpha = fill.alpha;
        } else if (entities[i].point) {//点
          type = 'point'
        } else if (entities[i].point) {
          //点
          type = "point";
          let ellipsoid = Viewer.scene.globe.ellipsoid;
          let cartographic = ellipsoid.cartesianToCartographic(entities[i].position.getValue());
          let cartographic = ellipsoid.cartesianToCartographic(
            entities[i].position.getValue()
          );
          let lat = Cesium.Math.toDegrees(cartographic.latitude);
          let lng = Cesium.Math.toDegrees(cartographic.longitude);
          let alt = cartographic.height;
          let point = turf.point([lng, lat, alt])
          wkt = this.$wkt.convert(point.geometry)
          let point = turf.point([lng, lat, alt]);
          wkt = this.$wkt.convert(point.geometry);
          var fill = entities[i].point._color._value;
          fillColor = fill.red + ',' + fill.green + ',' + fill.blue;
          fillColor = fill.red + "," + fill.green + "," + fill.blue;
          alpha = fill.alpha;
        } else if (entities[i].polygon) {
          type = 'polygon';
          type = "polygon";
          var fill = entities[i].polygon._material._color._value;
          fillColor = fill.red + ',' + fill.green + ',' + fill.blue;
          fillColor = fill.red + "," + fill.green + "," + fill.blue;
          alpha = fill.alpha;
          var geometry = entities[i].polygon.hierarchy.getValue().positions;
          var coordinates = [];
          for (var k in geometry) {
            coordinates.push(this.setCartesianToEightFour(geometry[k]))
            coordinates.push(this.setCartesianToEightFour(geometry[k]));
          }
          if (coordinates[0] != coordinates[1]) {
            coordinates.push(coordinates[0])
            coordinates.push(coordinates[0]);
          }
          var polygon = turf.polygon([coordinates])
          wkt = this.$wkt.convert(polygon.geometry)
          var polygon = turf.polygon([coordinates]);
          wkt = this.$wkt.convert(polygon.geometry);
        } else if (entities[i].polyline) {
          type = "polyline";
          var coordinates = [];
          var geometry = entities[i].polyline.positions.getValue();
          for (var k in geometry) {
            coordinates.push(this.setCartesianToEightFour(geometry[k]))
            coordinates.push(this.setCartesianToEightFour(geometry[k]));
          }
          var polyline = turf.lineString(coordinates)
          wkt = this.$wkt.convert(polyline.geometry)
          var polyline = turf.lineString(coordinates);
          wkt = this.$wkt.convert(polyline.geometry);
          var fill = entities[i].polyline._material._color._value;
          fillColor = fill.red + ',' + fill.green + ',' + fill.blue;
          fillColor = fill.red + "," + fill.green + "," + fill.blue;
          alpha = fill.alpha;
        } else if (entities[i].label) {
          type = "label";
          let ellipsoid = Viewer.scene.globe.ellipsoid;
          let cartographic = ellipsoid.cartesianToCartographic(entities[i].position.getValue());
          let cartographic = ellipsoid.cartesianToCartographic(
            entities[i].position.getValue()
          );
          let lat = Cesium.Math.toDegrees(cartographic.latitude);
          let lng = Cesium.Math.toDegrees(cartographic.longitude);
          let alt = cartographic.height;
          let point = turf.point([lng, lat, alt])
          wkt = this.$wkt.convert(point.geometry)
          let point = turf.point([lng, lat, alt]);
          wkt = this.$wkt.convert(point.geometry);
          var fill = entities[i].label.backgroundColor._value;
          fillColor = fill.red + ',' + fill.green + ',' + fill.blue;
          fillColor = fill.red + "," + fill.green + "," + fill.blue;
          alpha = fill.alpha;
        }
        std.push({
@@ -672,31 +676,34 @@
          opacity: alpha,
          name: name,
          bak: JSON.stringify(bak),
          wkt: wkt
        })
          wkt: wkt,
        });
      }
      $.ajax({
        url: BASE_URL + "/comprehensive/downloadShp?token=" + getToken(),
        type: "POST",
        data: JSON.stringify(std),
        dataType: 'json', // html、json、jsonp、script、text
        dataType: "json", // html、json、jsonp、script、text
        contentType: "application/json", // "application/x-www-form-urlencoded"
        success: (rs) => {
          if (rs && rs.code == 200) {
            var a = document.createElement('a'); // 创建一个a标签元素
            a.style.display = 'none'; // 设置元素不可见
            var a = document.createElement("a"); // 创建一个a标签元素
            a.style.display = "none"; // 设置元素不可见
            a.href = BASE_URL + "/comprehensive/downloadFile?token=" + getToken() + "&guid=" + rs.result;
            a.href =
              BASE_URL +
              "/comprehensive/downloadFile?token=" +
              getToken() +
              "&guid=" +
              rs.result;
            document.body.appendChild(a); // 加入
            a.click(); // 触发点击,下载
            document.body.removeChild(a); // 释放
          }
        },
        error: function (e) {
        }
        error: function (e) {},
      });
    },
    handleOpenShp() {
      var formData = new FormData();
@@ -724,35 +731,36 @@
        processData: false,
        contentType: false,
        success: function (rs) {
          if (rs.code == 200) {
            that.showShpEntity(rs.result);
          }
        },
        error: function (e) {
          console.error(e);
        }
        },
      });
      document.getElementById("shpFile").value = ""
      document.getElementById("shpFile").value = "";
    },
    showShpEntity(res) {
      for (var i in res) {
        var wkt = this.$wkt.parse(res[i].wkt);
        var fillColor = res[i].fillColor.split(",");
        var color = new Cesium.Color(parseFloat(fillColor[0]), parseFloat(fillColor[1]), parseFloat(fillColor[2]), res[i].opacity);
        var name = res[i].name
        var color = new Cesium.Color(
          parseFloat(fillColor[0]),
          parseFloat(fillColor[1]),
          parseFloat(fillColor[2]),
          res[i].opacity
        );
        var name = res[i].name;
        switch (res[i].type) {
          case 'rectangle':
          case 'polygon':
          case "rectangle":
          case "polygon":
            var std = [];
            var geo = wkt.coordinates[0];
            for (var i in geo) {
              std.push(geo[i][0])
              std.push(geo[i][1])
              std.push(geo[i][0]);
              std.push(geo[i][1]);
            }
            var entity = Viewer.entities.add({
              name: name,
@@ -762,14 +770,17 @@
                material: color,
                outline: true,
                outlineColor: color,
              }
            })
            this.entityaLayers.push(entity)
              },
            });
            this.entityaLayers.push(entity);
            break;
          case 'point':
          case "point":
            let point = Viewer.entities.add({
              name: name,
              position: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0], wkt.coordinates[1]), //经纬度转世界坐标
              position: Cesium.Cartesian3.fromDegrees(
                wkt.coordinates[0],
                wkt.coordinates[1]
              ), //经纬度转世界坐标
              point: {
                show: true,
                color: color,
@@ -781,14 +792,14 @@
              },
            });
            this.entityaLayers.push(point)
            this.entityaLayers.push(point);
            break;
          case 'polyline':
          case "polyline":
            var std = [];
            var geo = wkt.coordinates;
            for (var i in geo) {
              std.push(geo[i][0])
              std.push(geo[i][1])
              std.push(geo[i][0]);
              std.push(geo[i][1]);
            }
            let line = Viewer.entities.add({
              name: name,
@@ -798,25 +809,28 @@
                width: 10,
                material: color,
                clampToGround: true,
              }
            })
              },
            });
            this.entityaLayers.push(line)
            this.entityaLayers.push(line);
            break;
          case 'label':
          case "label":
            const label = Viewer.entities.add({
              position: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0], wkt.coordinates[1]),
              position: Cesium.Cartesian3.fromDegrees(
                wkt.coordinates[0],
                wkt.coordinates[1]
              ),
              label: {
                text: name,
                fillColor: color,
                font: '28px',
                font: "28px",
                horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                verticalOrigin: Cesium.VerticalOrigin.TOP,
                heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
                disableDepthTestDistance: Number.POSITIVE_INFINITY,
              },
            })
            this.entityaLayers.push(label)
            });
            this.entityaLayers.push(label);
            break;
        }
      }
@@ -829,13 +843,13 @@
      let lat = Cesium.Math.toDegrees(cartographic.latitude);
      let lng = Cesium.Math.toDegrees(cartographic.longitude);
      let alt = cartographic.height;
      std = [lng, lat, alt]
      std = [lng, lat, alt];
      return std;
    },
    handleOpenClick() {
      var that = this;
      sgworld.Creator.SimpleGraphic.edit(true, { editProp: true });
      let fileInput = document.querySelector('.file');
      let fileInput = document.querySelector(".file");
      fileInput.onchange = function (evt) {
        let files = evt.target.files;
        if (files.length > 0) {
@@ -880,26 +894,39 @@
      fileInput.click();
    },
    setLayerScene() {
      var URL = window.location.href.split("#");
      this.openwindow({ url: URL[0] + 'LfSKyline/index.html' });
      this.openwindow({ url: URL[0] + "LfSKyline/index.html" });
    },
    openwindow(data) {
      var url = data.url;                                          //转向网页的地址;
      var name = data.title || '选择要添加的页面';                  //网页名称,可为空;
      var iWidth = window.screen.width;                           //弹出窗口的宽度;
      var iHeight = window.screen.height;      //弹出窗口的高度;
      var iTop = 0       //获得窗口的垂直位置;
      var iLeft = 0;        //获得窗口的水平位置;
      window.open(url, name, 'height=' + iHeight + ',,innerHeight=' + iHeight + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no');
      var url = data.url; //转向网页的地址;
      var name = data.title || "选择要添加的页面"; //网页名称,可为空;
      var iWidth = window.screen.width; //弹出窗口的宽度;
      var iHeight = window.screen.height; //弹出窗口的高度;
      var iTop = 0; //获得窗口的垂直位置;
      var iLeft = 0; //获得窗口的水平位置;
      window.open(
        url,
        name,
        "height=" +
          iHeight +
          ",,innerHeight=" +
          iHeight +
          ",width=" +
          iWidth +
          ",innerWidth=" +
          iWidth +
          ",top=" +
          iTop +
          ",left=" +
          iLeft +
          ",toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no"
      );
    },
    setMeasurement(res) {
      switch (res) {
        case 'j1':
        case "j1":
          var measure = window.sgworld.Command.execute(
            0,
            2,
@@ -907,11 +934,11 @@
            (data) => {
              data.id = window.sgworld.Core.getuid();
              this.measureData.set(data.id, measure);
              this.openMeasureResultInfo('表面距离', data);
              this.openMeasureResultInfo("表面距离", data);
            }
          );
          break;
        case 'j6':
        case "j6":
          var measure = window.sgworld.Command.execute(
            0,
            10,
@@ -919,7 +946,7 @@
            (data) => {
              data.id = window.sgworld.Core.getuid();
              this.measureData.set(data.id, measure);
              this.openMeasureResultInfo('空间距离', data);
              this.openMeasureResultInfo("空间距离", data);
            }
          );
          break;
@@ -930,11 +957,10 @@
        //     this.measureData.set(data.id, measure);
        //     this.openMeasureResultInfo('平面面积', data);
        //   });
        //   break;
        case 'j2':
        case "j2":
          var measure = window.sgworld.Command.execute(
            0,
            5,
@@ -942,11 +968,11 @@
            (data) => {
              data.id = window.sgworld.Core.getuid();
              this.measureData.set(data.id, measure);
              this.openMeasureResultInfo('垂直高度', data);
              this.openMeasureResultInfo("垂直高度", data);
            }
          );
          break;
        case 'j5':
        case "j5":
          var measure = window.sgworld.Command.execute(
            0,
            8,
@@ -958,11 +984,11 @@
            (data) => {
              data.id = window.sgworld.Core.getuid();
              this.measureData.set(data.id, measure);
              this.openMeasureResultInfo('表面面积', data);
              this.openMeasureResultInfo("表面面积", data);
            }
          );
          break;
        case 'j3':
        case "j3":
          var measure = window.sgworld.Command.execute(
            0,
            3,
@@ -970,30 +996,31 @@
            (data) => {
              data.id = window.sgworld.Core.getuid();
              this.measureData.set(data.id, measure);
              this.openMeasureResultInfo('平面面积', data);
              this.openMeasureResultInfo("平面面积", data);
            }
          );
          break;
        case 'j4':
        case "j4":
          var volumetricMeasurementTool =
            window.sgworld.Creator.createVolumetricMeasureTool();
          volumetricMeasurementTool.startDrawing(
            { ...this.colorAll, onlyTerrain: false },
            'auto',
            "auto",
            (data) => {
              if (volumetricMeasurementTool.popupData) {
                volumetricMeasurementTool.popupData.value = `填方:${data.volume.fill.toFixed(4) + data.unit.fill
                  }<br>挖方:${data.volume.dig.toFixed(4) + data.unit.dig}`;
                volumetricMeasurementTool.popupData.value = `填方:${
                  data.volume.fill.toFixed(4) + data.unit.fill
                }<br>挖方:${data.volume.dig.toFixed(4) + data.unit.dig}`;
              } else {
                data.id = window.sgworld.Core.getuid();
                this.measureData.set(data.id, volumetricMeasurementTool);
                let popupData = this.openMeasureResultInfo('体积方量', data);
                let popupData = this.openMeasureResultInfo("体积方量", data);
                volumetricMeasurementTool.popupData = popupData;
              }
            }
          );
          break;
        case 'j8':
        case "j8":
          var measure = window.sgworld.Command.execute(
            0,
            12,
@@ -1001,7 +1028,7 @@
            (data) => {
              data.id = window.sgworld.Core.getuid();
              this.measureData.set(data.id, measure);
              this.openMeasureResultInfo('角度', data);
              this.openMeasureResultInfo("角度", data);
            }
          );
          break;
@@ -1010,40 +1037,41 @@
            1,
            11,
            this.colorAll,
            data => {
              data.id = window.sgworld.Core.getuid()
              this.measureData.set(data.id, measure)
              this.openMeasureResultInfo("海拔高度", data)
            (data) => {
              data.id = window.sgworld.Core.getuid();
              this.measureData.set(data.id, measure);
              this.openMeasureResultInfo("海拔高度", data);
            }
          )
          break
          );
          break;
      }
    },
    openMeasureResultInfo(name, data) {
      let info = '';
      let info = "";
      switch (name) {
        case '表面距离':
        case '空间距离':
          info = '总长度:' + data.distance[data.distance.length - 1];
        case "表面距离":
        case "空间距离":
          info = "总长度:" + data.distance[data.distance.length - 1];
          break;
        case '海拔高度':
          info = '高度:' + data.height;
        case "海拔高度":
          info = "高度:" + data.height;
          break;
        case '垂直高度':
        case "垂直高度":
          info = `${data.gddistance}<br>${data.kjdistance}<br>${data.spdistance}`;
          break;
        case '表面面积':
        case '平面面积':
        case "表面面积":
        case "平面面积":
          info = data.mj;
          break;
        case '角度':
        case "角度":
          data.labels.forEach((label) => {
            info += label.label.text.getValue() + '<br>';
            info += label.label.text.getValue() + "<br>";
          });
          break;
        case '体积方量':
          info = `填方:${data.volume.fill.toFixed(4) + data.unit.fill
            }<br>挖方:${data.volume.dig.toFixed(4) + data.unit.dig}`;
        case "体积方量":
          info = `填方:${
            data.volume.fill.toFixed(4) + data.unit.fill
          }<br>挖方:${data.volume.dig.toFixed(4) + data.unit.dig}`;
          break;
      }
      return (
@@ -1075,13 +1103,13 @@
    },
    setIquery(res) {
      switch (res) {
        case 'e2':
        case "e2":
          this.$store.state.mapMenuBoolean = true;
          this.$store.state.mapMenuBoxFlag = '1';
          this.$store.state.mapMenuBoxFlag = "1";
          break;
        case 'e1':
        case "e1":
          this.$store.state.mapMenuBoolean = true;
          this.$store.state.mapMenuBoxFlag = '2';
          this.$store.state.mapMenuBoxFlag = "2";
          break;
      }
    },
@@ -1099,101 +1127,141 @@
      //     break;
      // }
    },
    ClearDraw() {
      //console.log(sgworld);
      //   console.log(sgworld.drawObj.drawHandler);
      //   sgworld.drawObj.drawHandler.destroy();
      //   sgworld.drawObj.end()
    },
    setAnalsy(res) {
      //this.$refs && this.$refs.queryinfo && this.$refs.queryinfo.close("queryinfo");
      var that = this;
      switch (res) {
        case 'd1':
        case "d1": //等高线分析
          that.isolineFlag = !that.isolineFlag;
          elevationTool.tf = that.isolineFlag;
          elevationTool.render();
          break;
        case 'd2':
        case "d2": //坡度分析
          that.isslopeFlag = !that.isslopeFlag;
          window.PDelevationTool= new SmartEarth.ElevationTool(sgworld);//全局变量
          window.PDelevationTool = new SmartEarth.ElevationTool(sgworld); //全局变量
          if (that.isslopeFlag == true) {
            PDelevationTool.type = 'slope';
            PDelevationTool.type = "slope";
            PDelevationTool.tf = this.checked;
          } else {
            PDelevationTool.type = 'none';
            PDelevationTool.type = "none";
          }
          PDelevationTool.render();
          break;
        case 'd3':
          var value = {
            name: 'Analysis',
            id: 3,
          };
          this.$bus.$emit('mapChangeBox', value);
        case "d3": //路径分析
          this.isRouter = !this.isRouter;
          let value;
          if (this.isRouter) {
            value = {
              name: "Analysis",
              id: 3,
            };
          } else {
            value = {
              name: "close",
            };
          }
          this.$bus.$emit("mapChangeBox", value);
          break;
        case 'd4':
        case "d4": //剖面分析
          if (window.AnalysisDXPM) {
            window.AnalysisDXPM.end && window.AnalysisDXPM.end();
            this.clear(res);
          } else {
            this.addterrainSectionAnalysis();
          }
          break;
        case 'd5':
        case "d5": //洪水淹没分析
          if (window.AnalysisFlood) {
            this.clear(res);
          } else {
            this.addAnalysisFlood();
          }
          break;
        case 'd6':
          var that = this;
          var volumetricMeasurementTool =
            sgworld.Creator.createVolumetricMeasureTool();
          volumetricMeasurementTool.startDrawing(
            { ...this.colorAll, onlyTerrain: false },
            'auto',
            (data) => {
              if (volumetricMeasurementTool.popupData) {
                volumetricMeasurementTool.popupData.value = `填方:${data.volume.fill.toFixed(4) + data.unit.fill
                  }<br>挖方:${data.volume.dig.toFixed(4) + data.unit.dig}`;
              } else {
                data.id = sgworld.Core.getuid();
                this.measureData.set(data.id, volumetricMeasurementTool);
                let popupData = that.openMeasureResultInfo('体积方量', data);
                volumetricMeasurementTool.popupData = popupData;
              }
        case "d6": //土方量分析
          if (window.TFvolumetricMeasurementTool) {
            TFvolumetricMeasurementTool.cleanUp();
            if (TFvolumetricMeasurementTool._mouseHandler) {
              TFvolumetricMeasurementTool._mouseHandler.destroy();
              TFvolumetricMeasurementTool = null;
              Viewer._container.style.cursor = "default";
              return;
            }
          );
            TFvolumetricMeasurementTool = null;
            this.$refs.mapinfo && this.$refs.mapinfo.close();
          } else {
            var that = this;
            window.TFvolumetricMeasurementTool =
              sgworld.Creator.createVolumetricMeasureTool();
            TFvolumetricMeasurementTool.startDrawing(
              { ...this.colorAll, onlyTerrain: false },
              "auto",
              (data) => {
                if (TFvolumetricMeasurementTool.popupData) {
                  TFvolumetricMeasurementTool.popupData.value = `填方:${
                    data.volume.fill.toFixed(4) + data.unit.fill
                  }<br>挖方:${data.volume.dig.toFixed(4) + data.unit.dig}`;
                } else {
                  data.id = sgworld.Core.getuid();
                  this.measureData.set(data.id, TFvolumetricMeasurementTool);
                  let popupData = that.openMeasureResultInfo("体积方量", data);
                  TFvolumetricMeasurementTool.popupData = popupData;
                }
              }
            );
          }
          break;
        case 'd7':
        case "d7": //三维截面分析
          // if(window.MXModel) {
          //   Viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
          //   window.MXModel=null;
          // } else {
          var that = this;
          window.model = sgworld.Creator.create3DTilesets(
            '',
            modelUrl+'/SN/tileset.json',
            "",
            modelUrl,
            {},
            {},
            '0',
            "0",
            true,
            (data) => {
              sgworld.Navigate.flyToObj(data);
              that.setclippingModel();
            }
          );
          break;
        case 'd9':
          this.$refs && this.$refs.queryinfo && this.$refs.queryinfo.close("queryinfo");
          this.$store.state.mapPopBoxFlag = '3';
          this.$refs && this.$refs.queryinfo && this.$refs.queryinfo.open("管道空间分析", null, {
            close: () => {
              if (this.$store.state.pipelineEntity.length != 0) {
                for (var i in this.$store.state.pipelineEntity) {
                  var item = this.$store.state.pipelineEntity[i]
                  sgworld.Viewer.entities.remove(item);
                }
              }
            }
          });
          break;
        case 'd8':
        case "d9": //管道分析
          this.isPiple = !this.isPiple;
          if (this.isPiple) {
            this.$store.state.mapPopBoxFlag = "3";
            this.$refs &&
              this.$refs.queryinfo &&
              this.$refs.queryinfo.open("管道空间分析", null, {
                close: () => {
                  if (this.$store.state.pipelineEntity.length != 0) {
                    for (var i in this.$store.state.pipelineEntity) {
                      var item = this.$store.state.pipelineEntity[i];
                      sgworld.Viewer.entities.remove(item);
                    }
                  }
                },
              });
          } else {
            this.$refs &&
              this.$refs.queryinfo &&
              this.$refs.queryinfo.close("queryinfo");
          }
          break;
        case "d8": //影像对比
          if (this.isContrastFlag == false) {
            this.isContrastFlag = true;
            sgworld.Analysis.createCurtainContrast(2, 1);
@@ -1202,65 +1270,99 @@
            sgworld.Analysis.clearCurtainContrast();
          }
          break;
        case 'd10':
          if(window.DXTerrainFlattening!=null){
            DXTerrainFlattening.remove();
          }
          sgworld.Creator.createSimpleGraphic(
                'polygon',
                {
                    clampToGround: true,
                },
                function (entity) {
                    let   positions = entity.polygon.hierarchy.getValue().positions;
                    sgworld.Creator.SimpleGraphic.remove(entity.id);
                    window.DXTerrainFlattening = sgworld.Creator.createTerrainModifier("地形压平", positions, 10, {});
                }
        case "d10": //地面整平
          if (this.DXZPState != null) {
            this.DXZPState.drawHandler && this.DXZPState.drawHandler.destroy();
            Viewer._container.style.cursor = "default";
            this.DXZPState.tooltip && this.DXZPState.tooltip.show(false);
            if (window.DXTerrainFlattening != null) {
              DXTerrainFlattening.remove();
            }
            window.DXTerrainFlattening = null;
            this.DXZPState = null;
          } else {
            this.DXZPState = sgworld.Creator.createSimpleGraphic(
              "polygon",
              {
                clampToGround: true,
              },
              function (entity) {
                let positions = entity.polygon.hierarchy.getValue().positions;
                sgworld.Creator.SimpleGraphic.remove(entity.id);
                window.DXTerrainFlattening =
                  sgworld.Creator.createTerrainModifier(
                    "地形压平",
                    positions,
                    10,
                    {}
                  );
              }
            );
          }
          break;
        case 'd11':
        case "d11": //地形开挖
          if (window.Excavation) {
            window.Excavation.drawHandler &&
              window.Excavation.drawHandler.destroy();
            Viewer._container.style.cursor = "default";
            window.Excavation.tooltip && window.Excavation.tooltip.show(false);
            window.Excavation.clear();
            window.Excavation = null;
          } else {
            window.Excavation = sgworld.Analysis.TerrainExcavation(
              10,
              {},
              function () { }
              function () {}
            );
          }
          break;
        case "d12":
          if (window.TSExcavation!=null) {
            window.TSExcavation.deleteObject()
            window.TSExcavation = null
        case "d12": //通视分析
          if (window.TSExcavation != null) {
            window.TSExcavation._SimpleGraphic.drawHandler &&
              window.TSExcavation._SimpleGraphic.drawHandler.destroy();
            Viewer._container.style.cursor = "default";
            window.TSExcavation._SimpleGraphic.tooltip &&
              window.TSExcavation._SimpleGraphic.tooltip.show(false);
            window.TSExcavation.deleteObject();
            window.TSExcavation = null;
          } else {
            window.TSExcavation = sgworld.Analysis.createSightLine({
              type: "default",
            })
            });
          }
          break
        case "d13":
          if (this.Excavation) {
            this.Excavation.destroy()
            this.Excavation = null
          } else {
            this.Excavation = sgworld.Analysis.create3DViewshedPoss({
              height: 1.8,
            })
          }
          break
        case "d14":
          if (window.Excavation) {
            window.Excavation.close()
            window.Excavation = null
          break;
        case "d13": //视域分析
          if (window.SYExcavatio) {
            window.SYExcavatio.end && window.SYExcavatio.end();
            window.SYExcavatio.close();
            window.SYExcavatio = null;
          } else {
            var SYFX_visible_color = { r: 0.0, g: 1.0, b: 0.0 },
              SYFX_notVisible_color = { r: 1.0, g: 0.0, b: 0.0 }
            window.Excavation = sgworld.Analysis.create3DViewshed({
              SYFX_notVisible_color = { r: 1.0, g: 0.0, b: 0.0 };
            window.SYExcavatio = sgworld.Analysis.create3DViewshed({
              name: "Viewshed On Frederick",
              height: 1.8,
              color: {
                Back: SYFX_notVisible_color,
                Fore: SYFX_visible_color,
              },
              isSpherical: "",
            });
          }
          break;
        case "d14": //圆形时域分析
          if (window.YXSYExcavation) {
            window.YXSYExcavation.end && window.YXSYExcavation.end();
            window.YXSYExcavation.close();
            window.YXSYExcavation = null;
          } else {
            var SYFX_visible_color = { r: 0.0, g: 1.0, b: 0.0 },
              SYFX_notVisible_color = { r: 1.0, g: 0.0, b: 0.0 };
            window.YXSYExcavation = sgworld.Analysis.create3DViewshed({
              name: "Viewshed On Frederick",
              height: 1.8,
              color: {
@@ -1268,19 +1370,17 @@
                Fore: SYFX_visible_color,
              },
              isSpherical: "spherical",
            })
            });
          }
          break
          break;
      }
    },
    setclippingModel() {
      if (window.model) {
        setTimeout(() => {
          window.model.clippingModel({
            direction: 'z',
            direction: "z",
          });
        }, 1000);
        // window.model.clippingModel({
@@ -1290,7 +1390,7 @@
    },
    clear(res) {
      switch (res) {
        case 'd4':
        case "d4":
          layer.close(this.dxpmIndex);
          this.dxpmIndex = undefined;
          if (window.AnalysisDXPM) {
@@ -1300,7 +1400,7 @@
            window.AnalysisDXPM = undefined;
          }
          break;
        case 'd5':
        case "d5":
          window.AnalysisFlood.endWater();
          window.AnalysisFlood = undefined;
          break;
@@ -1311,13 +1411,13 @@
        pointSelect: true,
        spood: 20,
        GroupID: 0,
        url: '/SmartEarthSDK/Workers/image/waterNormals.jpg',
        url: "/SmartEarthSDK/Workers/image/waterNormals.jpg",
      };
      window.AnalysisFlood = sgworld.Command.execute(
        2,
        2,
        method,
        (value) => { }
        (value) => {}
      );
    },
    addterrainSectionAnalysis() {
@@ -1328,21 +1428,22 @@
        (Distance) => {
          if (Distance.gcs && Distance.gcs.length) {
            var url = window.location.href;
            var testurl = '';
            if (url.indexOf('web') != -1) {
              testurl = '/web';
            var testurl = "";
            if (url.indexOf("web") != -1) {
              testurl = "/web";
            }
            window.AnalysisDXPM.analyseData = Distance;
            this.dxpmIndex = layer.open({
              type: 2,
              title: '分析结果',
              title: "分析结果",
              shade: false,
              area: ['80%', '280px'],
              offset: 'b',
              skin: 'other-class',
              content: testurl + '/SmartEarthSDK/Workers/analysis/AnalysisDXPM.html',
              area: ["80%", "280px"],
              offset: "b",
              skin: "other-class",
              content:
                testurl + "/SmartEarthSDK/Workers/analysis/AnalysisDXPM.html",
              end: () => {
                this.dxpmIndex && this.clear('d4');
                this.dxpmIndex && this.clear("d4");
              },
            });
          } else {
@@ -1354,16 +1455,16 @@
    },
    setWander(res) {
      switch (res) {
        case 'c1':
        case "c1":
          window.sgworld.Analysis.setPointFly();
          break;
        case 'c2':
        case "c2":
          var url = window.location.href;
          var testurl = '';
          if (url.indexOf('web') != -1) {
            testurl = '/web';
          var testurl = "";
          if (url.indexOf("web") != -1) {
            testurl = "/web";
          }
          window.sgworld.Command.execute(2, 3, '', (data) => {
          window.sgworld.Command.execute(2, 3, "", (data) => {
            data.showPoint = false;
            data.showLine = true;
            data.mode = 0;
@@ -1373,22 +1474,22 @@
            };
            window.PathAnimationData.winIndex = layer.open({
              type: 2,
              title: '路径动画',
              title: "路径动画",
              shade: false,
              area: ['352px', '690px'],
              offset: 'r',
              skin: 'other-class',
              content: testurl + '/SmartEarthSDK/Workers/path/Path.html',
              area: ["352px", "690px"],
              offset: "r",
              skin: "other-class",
              content: testurl + "/SmartEarthSDK/Workers/path/Path.html",
              end: function () {
                PathAnimationData.fly && PathAnimationData.fly.exit();
              },
            });
          });
          break;
        case 'c3':
        case "c3":
          sgworld.Analysis.createindoormode({ showHelp: true });
          break;
        case 'c4':
        case "c4":
          window.sgworld.Analysis.createScreenshot();
          break;
      }
@@ -1396,89 +1497,87 @@
    setOrientation(res) {
      var resid;
      switch (res) {
        case 'f1':
        case "f1":
          resid = 1;
          break;
        case 'f2':
        case "f2":
          resid = 2;
          break;
      }
      var val = {
        name: 'Coord',
        name: "Coord",
        id: resid,
      };
      this.$bus.$emit('mapChangeBox', val);
      this.$bus.$emit("mapChangeBox", val);
    },
    setViewport(res) {
      switch (res) {
        case 'b1': //分屏
          this.$bus.$emit('changemap', 1);
        case "b1": //分屏
          this.$bus.$emit("changemap", 1);
          break;
        case 'b2': //二维
          this.$bus.$emit('changemap', 2);
        case "b2": //二维
          this.$bus.$emit("changemap", 2);
          break;
        case 'b3': //三维
          this.$bus.$emit('changemap', 3);
        case "b3": //三维
          this.$bus.$emit("changemap", 3);
          break;
        case 'b4': //全图
        case "b4": //全图
          window.sgworld.Navigate.jumpTo({
            //跳转视角
            destination: new Cesium.Cartesian3.fromDegrees(110, 32, 8000000),
          });
          window.map
            .getView()
            .setCenter(transform([110, 32], 'EPSG:4326', 'EPSG:3857'));
            .setCenter(transform([110, 32], "EPSG:4326", "EPSG:3857"));
          window.map.getView().setZoom(4);
          break;
        case 'b5': //放大
        case "b5": //放大
          window.sgworld.Navigate.zoomIn();
          // 获取当前视图
          var zoom = window.map.getView().getZoom(); // 获取当前缩放级别
          window.map.getView().setZoom(zoom + 1); // 设置缩放级别
          break;
        case 'b6': //缩小
        case "b6": //缩小
          window.sgworld.Navigate.zoomOut();
          var zoom = window.map.getView().getZoom(); // 获取当前缩放级别
          window.map.getView().setZoom(zoom - 1); // 设置缩放级别
          break;
        case 'b7': //比例尺
        case "b7": //比例尺
          this.isRuler = !this.isRuler;
          window.sgworld.navControl('scale', this.isRuler);
          window.sgworld.navControl("scale", this.isRuler);
          if (this.isRuler == true) {
            this.scaleLine = new ScaleLine({
              units: "metric"
              units: "metric",
            });
            window.map.addControl(this.scaleLine);
          } else {
            window.map.removeControl(this.scaleLine);
            this.scaleLine = false;
          }
          break;
        case 'b8': //指北针
        case "b8": //指北针
          this.isNaviget = !this.isNaviget;
          window.sgworld.navControl('nav', this.isNaviget);
          this.$store.state.isNaviget = this.isNaviget
          window.sgworld.navControl("nav", this.isNaviget);
          this.$store.state.isNaviget = this.isNaviget;
          break;
        case 'b9': //地下模式
        case "b9": //地下模式
          this.UndergroundMode = !this.UndergroundMode;
          window.sgworld.Analysis.UndergroundMode(this.UndergroundMode, 0.3)
          window.sgworld.Analysis.UndergroundMode(this.UndergroundMode, 0.3);
          break;
      }
    },
    setCoverage(res) {
      switch (res) {
        case 'a1':
        case "a1":
          if (this.$store.state.layerMnage == false) {
            this.$refs && this.$refs.maplayer && this.$refs.maplayer.closeAll();
            this.$refs && this.$refs.maplayer && this.$refs.maplayer.open();
            this.$store.state.layerMnage = true;
          } else if (this.$store.state.layerMnage == true) {
                       this.$bus.$emit("treeDataCopy","true");
            this.$bus.$emit("treeDataCopy", "true");
            this.$refs && this.$refs.maplayer && this.$refs.maplayer.closeAll();
            this.$store.state.layerMnage = false;
          }
          break;
@@ -1491,23 +1590,23 @@
  mounted() {
    this.measureData = new Map();
    this.colorAll = {
      point: Cesium.Color.fromCssColorString('#ff0000'),
      polyline: Cesium.Color.fromCssColorString('#ffff00').withAlpha(0.6),
      polygon: Cesium.Color.fromCssColorString('#ffff00').withAlpha(0.6),
      point: Cesium.Color.fromCssColorString("#ff0000"),
      polyline: Cesium.Color.fromCssColorString("#ffff00").withAlpha(0.6),
      polygon: Cesium.Color.fromCssColorString("#ffff00").withAlpha(0.6),
    };
    this.$bus.$on('setChangeTwoMenu', (res) => {
      if (res == 8) { this.setLayerScene(); } else {
    this.$bus.$on("setChangeTwoMenu", (res) => {
      if (res == 8) {
        this.setLayerScene();
      } else {
        this.menuChange(res);
      }
    });
    this.$store.state.showAllLayers = true;
    this.$store.state.layerMnage = false;
    this.$store.state.treeData = null;
    this.$store.state.checkedKeys = [];
    this.setCoverage('a1');
    this.setCoverage("a1");
  },
};
</script>
@@ -1523,6 +1622,7 @@
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  .leftMen_div {
    font-size: 16px;
    font-family: Microsoft YaHei;
@@ -1535,16 +1635,19 @@
    border-radius: 5px;
    text-align: center;
  }
  .leftMen_div:hover {
    background: rgba(64, 158, 255, 0.4);
    border: 1px solid #409eff;
    box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.1);
    border-radius: 5px;
  }
  .lefMenuDivActive {
    background: rgba(64, 158, 255, 0.4);
    border: 1px solid #409eff;
  }
  .menuTwoImage {
    width: 40px;
    height: 40px;
src/views/Tools/LayerTree.vue
@@ -1,62 +1,66 @@
<template>
  <div class="lalala tree-container">
    <el-input placeholder="输入关键字进行过滤"
              v-model="filterText"
              class="search">
    <el-input
      placeholder="输入关键字进行过滤"
      v-model="filterText"
      class="search"
    >
    </el-input>
    <el-tree :data="treeData"
             node-key="id"
             default-expand-all
             show-checkbox
             @node-click="handleLeftclick"
             @node-contextmenu="rightClick"
             @check-change="handleCheckChange"
             :default-checked-keys="handleTreeCheck"
             ref="tree">
      <span class="slot-t-node"
            slot-scope="{ node, data }"
            @dblclick="editNode(data)">
    <el-tree
      ref="tree"
      :data="treeData"
      node-key="id"
      show-checkbox
      :props="defaultProps"
      @node-click="handleLeftclick"
      @node-contextmenu="rightClick"
      @check-change="handleCheckChange"
      :default-checked-keys="handleTreeCheck"
    >
      <span
        class="slot-t-node"
        slot-scope="{ node, data }"
        @dblclick="editNode(data)"
      >
        <span v-show="!data.isEdit">
          <span :class="[data.id >= 99 ? 'slot-t-node--label' : '']">{{
            node.label
          }}</span>
        </span>
        <span v-show="data.isEdit">
          <el-input class="slot-t-input"
                    size="mini"
                    autofocus
                    v-model="data.label"
                    :ref="'slotTreeInput' + data.id"
                    @blur.stop="NodeBlur(node, data)"
                    @keydown.native.enter="NodeBlur(node, data)"></el-input>
          <el-input
            class="slot-t-input"
            size="mini"
            autofocus
            v-model="data.label"
            :ref="'slotTreeInput' + data.id"
            @blur.stop="NodeBlur(node, data)"
            @keydown.native.enter="NodeBlur(node, data)"
          ></el-input>
        </span>
      </span>
    </el-tree>
    <el-card class="box-card"
             ref="card"
             :style="{ ...rightClickMenuStyle }"
             v-show="menuVisible">
      <div @click="addSameLevelNode()">
        <i class="el-icon-circle-plus-outline"></i>&nbsp;&nbsp;添加图层组
    <el-card
      class="box-card"
      ref="card"
      :style="{ ...rightClickMenuStyle }"
      v-show="menuVisible"
    >
      <div @click="addSameLevelNode()" v-show="firstLevel">
        <i class="el-icon-plus"></i>&nbsp;&nbsp;添加图层组
      </div>
      <div class="add"
           @click="addChildNode()"
           v-show="firstLevel">
        <i class="el-icon-circle-plus-outline"></i>&nbsp;&nbsp;添加图层
      <div class="add" @click="addChildNode()">
        <i class="el-icon-plus"></i>&nbsp;&nbsp;添加图层
      </div>
      <div class="delete"
           @click="deleteNode()">
        <i class="el-icon-remove-outline"></i>&nbsp;&nbsp;删除节点
      <div class="delete" @click="deleteNode()">
        <i class="el-icon-delete"></i>&nbsp;&nbsp;删除
      </div>
      <div class="edit"
           @click="editNode()">
        <i class="el-icon-edit"></i>&nbsp;&nbsp;修改节点
      <div class="edit" @click="editNode()">
        <i class="el-icon-edit"></i>&nbsp;&nbsp;重命名
      </div>
      <div class="edit"
           @click="showLayerAttribute()">
        <i class="el-icon-edit"></i>&nbsp;&nbsp;属性
      <div class="edit" @click="showLayerAttribute()" v-show="!firstLevel">
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;属性
      </div>
      <!-- <div
        class="edit"
@@ -71,46 +75,48 @@
        <i class="el-icon-bottom"></i>&nbsp;&nbsp;下移
      </div> -->
    </el-card>
    <el-dialog :title="appendNodetitle"
               :visible.sync="dialogVisible"
               width="30%"
               top="20vh"
               :modal="false"
               :before-close="handleClose">
      <el-form ref="form"
               :model="addFormServer"
               label-width="100px">
    <el-dialog
      :title="appendNodetitle"
      :visible.sync="dialogVisible"
      width="30%"
      top="20vh"
      :modal="false"
      :before-close="handleClose"
    >
      <el-form ref="form" :model="addFormServer" label-width="100px">
        <el-form-item label="服务类型">
          <!-- <el-input v-model="addFormServer.type"></el-input> -->
          <el-select style="width:100%"
                     :popper-append-to-body="false"
                     v-model="addFormServer.layerType"
                     placeholder="请选择">
            <el-option v-for="item in options"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value">
          <el-select
            style="width: 100%"
            :popper-append-to-body="false"
            v-model="addFormServer.serveType"
            placeholder="请选择"
          >
            <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="图层名称">
          <el-input v-model="addFormServer.label"></el-input>
          <el-input v-model="addFormServer.cnName"></el-input>
        </el-form-item>
        <el-form-item label="服务名称">
          <el-input v-model="addFormServer.resource"></el-input>
          <el-input v-model="addFormServer.url"></el-input>
        </el-form-item>
        <el-form-item label="服务地址">
          <el-input v-model="addFormServer.url"></el-input>
          <el-input v-model="addFormServer.resource"></el-input>
        </el-form-item>
        <el-form-item label="透明度">
          <el-slider v-model="addFormServer.opacity"></el-slider>
        </el-form-item>
      </el-form>
      <span slot="footer"
            class="dialog-footer">
        <el-button type="primary"
                   @click="setAddServer">确 定</el-button>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="setAddServer">确 定</el-button>
      </span>
    </el-dialog>
    <queryinfo ref="queryinfo" />
@@ -118,110 +124,109 @@
</template>
<script>
import { image_layer } from '../../assets/js/index.js';
import ImageWMS from 'ol/source/ImageWMS';
import Image from 'ol/layer/Image';
import GeoJSON from 'ol/format/GeoJSON.js';
import Map from 'ol/Map.js';
import queryinfo from './queryinfo.vue';
import { image_layer } from "../../assets/js/index.js";
import ImageWMS from "ol/source/ImageWMS";
import Image from "ol/layer/Image";
import GeoJSON from "ol/format/GeoJSON.js";
import Map from "ol/Map.js";
import queryinfo from "./queryinfo.vue";
import { Vector as VectorSource } from "ol/source";
import { Vector as VectorLayer, } from "ol/layer";
import { Vector as VectorLayer } from "ol/layer";
import View from 'ol/View.js';
import { Fill, Stroke, Style } from 'ol/style.js';
import { perms_selectLayers } from '../../api/api.js'
import View from "ol/View.js";
import { Fill, Stroke, Style } from "ol/style.js";
import { perms_selectLayers } from "../../api/api.js";
export default {
  name: 'tree',
  name: "tree",
  components: { queryinfo },
  data () {
  data() {
    return {
      eleId: '',
      eleId: "",
      isShow: false,
      currentData: '',
      currentNode: '',
      currentData: "",
      currentNode: "",
      menuVisible: false,
      firstLevel: false,
      filterText: '',
      appendNodetitle: '',
      filterText: "",
      appendNodetitle: "",
      maxexpandId: 4,
      rightClickMenuStyle: {},
      handleTreeCheck: [],
      dialogVisible: false,
      addFormServer: {
        opacity: 100,
        layerType: 'WMS',
        serveType: "WMS",
        type: 2,
      },
      layerId: [
        'm_pipeline',
        'th_strategic_channel',
        'bs_project',
        'm_sitepoint',
        "m_pipeline",
        "th_strategic_channel",
        "bs_project",
        "m_sitepoint",
      ],
      treeData: [
      ],
      treeData: [],
      defaultProps: {
        children: 'children',
        label: 'label',
        children: "children",
        label: "cnName",
      },
      options: [{
        value: 'WMS',
        label: 'WMS'
      }, {
        value: 'WFS',
        label: 'WFS'
      }],
      options: [
        {
          value: "WMS",
          label: "WMS",
        },
        {
          value: "WFS",
          label: "WFS",
        },
      ],
    };
  },
  methods: {
    NodeBlur (Node, data) {
    NodeBlur(Node, data) {
      if (data.label.length === 0) {
        this.$message.error('菜单名不可为空!');
        this.$message.error("菜单名不可为空!");
        return false;
      } else {
        if (data.isEdit) {
          this.$set(data, 'isEdit', false);
          this.$set(data, "isEdit", false);
        }
        this.$nextTick(() => {
          this.$refs['slotTreeInput' + data.id].$refs.input.focus();
          this.$refs["slotTreeInput" + data.id].$refs.input.focus();
        });
      }
    },
    // 查询
    filterNode (value, data) {
    filterNode(value, data) {
      if (!value) return true;
      return data.label.indexOf(value) !== -1;
    },
    allowDrop (draggingNode, dropNode, type) {
      if (dropNode.data.label === '二级 3-1') {
        return type !== 'inner';
    allowDrop(draggingNode, dropNode, type) {
      if (dropNode.data.label === "二级 3-1") {
        return type !== "inner";
      } else {
        return true;
      }
    },
    allowDrag (draggingNode) {
      return draggingNode.data.label.indexOf('三级 3-2-2') === -1;
    allowDrag(draggingNode) {
      return draggingNode.data.label.indexOf("三级 3-2-2") === -1;
    },
    // 鼠标右击事件
    rightClick (event, object, Node, element) {
    rightClick(event, object, Node, element) {
      this.currentData = object;
      this.currentNode = Node;
      if (Node.level === 1) {
        this.firstLevel = true;
      } else {
      if (Node.level === 3) {
        this.firstLevel = false;
      } else {
        this.firstLevel = true;
      }
      this.menuVisible = true;
      this.$refs.card.$el.style.left = event.pageX + 20 + 'px';
      this.$refs.card.$el.style.top = event.pageY + 'px';
      this.$refs.card.$el.style.left = event.pageX + 20 + "px";
      this.$refs.card.$el.style.top = event.pageY + "px";
    },
    // 鼠标左击事件
    handleLeftclick (data, node) {
    handleLeftclick(data, node) {
      this.foo();
      if (node.checked == true) {
        for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
@@ -234,43 +239,42 @@
      }
    },
    //  取消鼠标监听事件 菜单栏
    foo () {
    foo() {
      this.menuVisible = false;
      //  要及时关掉监听,不关掉的是一个坑,不信你试试,虽然前台显示的时候没有啥毛病,加一个alert你就知道了
      document.removeEventListener('click', this.foo);
      document.removeEventListener("click", this.foo);
    },
    // 增加同级节点事件
    addSameLevelNode () {
    addSameLevelNode() {
      this.foo();
      if (this.currentNode.level == 2) {
        this.appendNodetitle = this.currentData.label;
        this.dialogVisible = true;
      } else {
        let id = Math.ceil(Math.random() * 100);
        var data = { id: id, label: '新增节点' };
        var data = { id: id, label: "新增节点" };
        this.$refs.tree.append(data, this.currentNode.parent);
      }
    },
    // 增加子级节点事件
    addChildNode () {
    addChildNode() {
      this.foo();
      if (this.currentNode.level >= 2) {
        this.$message.error('最多只支两级!');
        return false;
      }
      // if (this.currentNode.level >= 2) {
      //   this.$message.error("最多只支两级!");
      //   return false;
      // }
      this.appendNodetitle = this.currentData.label;
      this.dialogVisible = true;
    },
    handleClose () {
    handleClose() {
      this.dialogVisible = false;
      this.addFormServer = {
        opacity: 100,
        layerType: 'WMS',
        serveType: "WMS",
        type: 2,
      };
    },
    setAddServer () {
    setAddServer() {
      var val = this.currentNode;
      if (this.currentNode.level == 2) {
        val = this.currentNode.parent;
@@ -281,22 +285,35 @@
      this.handleClose();
    },
    // 删除节点
    deleteNode () {
    deleteNode() {
      this.foo();
      var label = this.currentNode.data.label;
      if (this.currentNode.data.layerType == 'WMS') {
        for (var i in window.Viewer.imageryLayers_layers) {
          if (window.Viewer.imageryLayers_layers[i].name === label) {
            window.Viewer.imageryLayers.remove(window.Viewer.imageryLayers_layers[i])
      var label = this.currentNode.data.cnName;
      if (this.currentNode.data.serveType == "WMS") {
        for (var i in window.Viewer.imageryLayers._layers) {
          if (
            window.Viewer.imageryLayers._layers[i].imageryProvider.name ===
            label
          ) {
            window.Viewer.imageryLayers.remove(
              window.Viewer.imageryLayers._layers[i]
            );
          }
        }
      } else if (this.currentNode.data.layerType == 'WFS') {
      } else if (this.currentNode.data.serveType == "WFS") {
        for (var i in window.Viewer.dataSources._dataSources) {
          if (window.Viewer.dataSources._dataSources[i].name == label) {
            window.Viewer.dataSources.remove(window.Viewer.dataSources._dataSources[i]);
            std.push(data.label)
            window.Viewer.dataSources.remove(
              window.Viewer.dataSources._dataSources[i]
            );
          }
        }
      } else if (this.currentNode.data.serveType == "Tileset") {
        for (var i in Viewer.scene.primitives._primitives) {
          // Viewer.scene.primitives._primitives[i].show = checked;
          if (Viewer.scene.primitives._primitives[i].id == label) {
            Viewer.scene.primitives.remove(
              Viewer.scene.primitives._primitives[i]
            );
          }
        }
      }
@@ -311,122 +328,109 @@
      this.$refs.tree.remove(this.currentNode);
    },
    //属性显示
    showLayerAttribute (data) {
    showLayerAttribute(data) {
      this.foo();
      this.currentData = data ? data : this.currentData;
      var layer = this.currentData.layer.replaceAll('_', "");
      var layer = this.currentData.layer.replaceAll("_", "");
      this.$store.state.mapSpaceQueryLayer = layer;
      // this.$store.state.mapPopBoolean = true;
      this.$store.state.mapPopBoxFlag = '2';
      this.$store.state.mapPopBoxFlag = "2";
      this.$refs && this.$refs.queryinfo && this.$refs.queryinfo.close();
      this.$refs && this.$refs.queryinfo && this.$refs.queryinfo.open("属性", null, {
        close: () => {
      this.$refs &&
        this.$refs.queryinfo &&
        this.$refs.queryinfo.open("属性", null, {
          close: () => {
            if (this.$store.state.primitLayer != null) {
              sgworld.Creator.DeleteObject(this.$store.state.primitLayer);
              this.$store.state.primitLayer = null;
            }
          if (this.$store.state.primitLayer != null) {
            sgworld.Creator.DeleteObject(this.$store.state.primitLayer);
            this.$store.state.primitLayer = null;
          }
          if (window.Viewer.scene.primitives.length != 0) {
            window.Viewer.scene.primitives.removeAll()
          }
        }
      });
            if (window.Viewer.scene.primitives.length != 0) {
              window.Viewer.scene.primitives.removeAll();
            }
          },
        });
    },
    // 编辑节点
    editNode (data) {
    editNode(data) {
      this.foo();
      this.currentData = data ? data : this.currentData;
      if (!this.currentData.isEdit) {
        this.$set(this.currentData, 'isEdit', true);
        this.$set(this.currentData, "isEdit", true);
      }
      // 获取焦点
      this.$nextTick(() => {
        this.$refs['slotTreeInput' + this.currentData.id].focus();
        this.$refs["slotTreeInput" + this.currentData.id].focus();
      });
    },
    menuMoveF (type) {
    menuMoveF(type) {
      // 将变动之前的node备份
      var node = this.currentNode;
      var data = this.currentData;
      let copyNode = this.currentNode
      let copyNode = this.currentNode;
      // copyNode.previousSibling = {...node. }
      // copyNode.nextSibling = {...node.nextSibling}
      // window.sessionStorage.setItem('menuNode',CircularJSON.stringify(copyNode))
      let nodeData = {}
      if (type === 'up') {
      let nodeData = {};
      if (type === "up") {
        // 上移
        if (node.previousSibling) {
          // 删除原先的node
          this.$refs.tree.remove(node.data)
          this.$refs.tree.remove(node.data);
          // 拿到copy的node
          // nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode'))
          // // 复制该node到指定位置(参数:1. 要增加的节点的 data 2. 要增加的节点的后一个节点的 data、key 或者 node)
          // this.$refs.tree.insertBefore(nodeData.data,nodeData.previousSibling.data)
          window.sessionStorage.removeItem('menuNode')
          window.sessionStorage.removeItem("menuNode");
        } else {
          this.$message.warning('该菜单已经是当前层最上级')
          this.$message.warning("该菜单已经是当前层最上级");
        }
      } else {
        // 下移
        if (node.nextSibling) {
          this.$refs.tree.remove(node.data)
          nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode'))
          this.$refs.tree.remove(node.data);
          nodeData = CircularJSON.parse(
            window.sessionStorage.getItem("menuNode")
          );
          // 参数:1. 要增加的节点的 data 2. 要增加的节点的前一个节点的 data、key 或者 node
          this.$refs.tree.insertAfter(nodeData.data, nodeData.nextSibling.data)
          window.sessionStorage.removeItem('menuNode')
          this.$refs.tree.insertAfter(nodeData.data, nodeData.nextSibling.data);
          window.sessionStorage.removeItem("menuNode");
        } else {
          this.$message.warning('该菜单已经是当前层最下级')
          this.$message.warning("该菜单已经是当前层最下级");
        }
      }
    },
    handleDragStart (node, ev) {
      console.log('drag start', node);
    handleDragStart(node, ev) {
      console.log("drag start", node);
    },
    handleDragEnter (draggingNode, dropNode, ev) {
      console.log('tree drag enter: ', dropNode.label);
    handleDragEnter(draggingNode, dropNode, ev) {
      console.log("tree drag enter: ", dropNode.label);
    },
    handleDragLeave (draggingNode, dropNode, ev) {
      console.log('tree drag leave: ', dropNode.label);
    handleDragLeave(draggingNode, dropNode, ev) {
      console.log("tree drag leave: ", dropNode.label);
    },
    handleDragOver (draggingNode, dropNode, ev) {
      console.log('tree drag over: ', dropNode.label);
    handleDragOver(draggingNode, dropNode, ev) {
      console.log("tree drag over: ", dropNode.label);
    },
    handleDragEnd (draggingNode, dropNode, dropType, ev) {
      console.log('tree drag end: ', dropNode && dropNode.label, dropType);
    handleDragEnd(draggingNode, dropNode, dropType, ev) {
      console.log("tree drag end: ", dropNode && dropNode.label, dropType);
    },
    handleDrop (draggingNode, dropNode, dropType, ev) {
      console.log('tree drop: ', dropNode.label, dropType);
    handleDrop(draggingNode, dropNode, dropType, ev) {
      console.log("tree drop: ", dropNode.label, dropType);
    },
    handleCheckChange(data, checked, indeterminate) {
      if (data.type != 2) return;
      //做判断是否是1:100万行政界面
      if(data.layer==window.XZOutlie&&checked){
        window.ImageLayer3.show=false;
      }else{
        window.ImageLayer3.show=true;
      }
      var std = [];
      if (data.layerType == 'WMS') {
      if (data.serveType == "WMS") {
        var layers_ol = window.map.getAllLayers();
        for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
          var val_id = window.Viewer.imageryLayers._layers[i].imageryProvider.name;
          if (val_id == data.label) {
            std.push(data.label)
          var val_id =
            window.Viewer.imageryLayers._layers[i].imageryProvider.name;
          if (val_id == data.cnName) {
            std.push(data.label);
            const img_layer = window.Viewer.imageryLayers._layers[i];
            img_layer.show = checked;
@@ -435,25 +439,36 @@
        for (var i in layers_ol) {
          var layerOl = layers_ol[i];
          if (layerOl.values_.name == data.label) {
          if (layerOl.values_.name == data.cnName) {
            layerOl.setVisible(checked); //显示图层
          }
        }
      } else if (data.layerType == 'WFS') {
      } else if (data.serveType == "WFS") {
        if (window.Viewer.dataSources._dataSources.length == 0) {
          this.setAddLayers(data);
        } else {
          for (var i in window.Viewer.dataSources._dataSources) {
            if (window.Viewer.dataSources._dataSources[i].name == data.label) {
            if (window.Viewer.dataSources._dataSources[i].name == data.cnName) {
              window.Viewer.dataSources._dataSources[i].show = checked;
              std.push(data.label)
              std.push(data.label);
            }
          }
        }
      } else if (data.serveType == "Tileset") {
        if (Viewer.scene.primitives._primitives.length == 0) {
          this.setAddLayers(data);
        } else {
          for (var i in Viewer.scene.primitives._primitives) {
            Viewer.scene.primitives._primitives[i].show = checked;
            if (Viewer.scene.primitives._primitives[i].id == data.cnName) {
              std.push(res.id);
              Viewer.flyTo(Viewer.scene.primitives._primitives[i]);
            }
          }
        }
      }
      if (std.length == 0 && checked == true) {
        this.setAddLayers(data)
        this.setAddLayers(data);
      }
      var layers_ol = window.map.getAllLayers();
      for (var i in layers_ol) {
@@ -464,19 +479,17 @@
      }
    },
    setAddLayers(res) {
      if (res.layerType == 'WMS') {
        var url = geoServerURl;
        if (res.url != null && res.url != undefined) {
          url = res.url
      if (res.serveType == "WMS") {
        // var resource = geoServerURl;
        var resource = "http://192.168.20.205:8088/geoserver/LF/wms";
        if (res.resource != null && res.resource != undefined) {
          resource = res.resource;
        }
        //var width = $("#mapdiv").width();
        //var height = $("#mapdiv").height();
        var imageryLayers = window.Viewer.scene.imageryLayers;
        let layerWMS = new Cesium.WebMapServiceImageryProvider({
          url: url,
          layers: res.resource,
          url: resource,
          layers: res.url,
          parameters: {
            transparent: true,
            format: "image/png",
@@ -484,23 +497,23 @@
            styles: "",
          },
          tileWidth: 512,
          tileHeight: 512
          tileHeight: 512,
        });
        layerWMS.name = res.label;
        layerWMS.name = res.cnName;
        //透明度
        var tdtAnnoLayer = imageryLayers.addImageryProvider(layerWMS);
        if (res.opacity) {
          tdtAnnoLayer.alpha = parseInt(res.opacity) / 100;
        }
        var layer2 = new Image({
          name: res.label,
          name: res.cnName,
          source: new ImageWMS({
            crossOrigin: 'anonymous',
            url: url,
            crossOrigin: "anonymous",
            url: resource,
            params: {
              FORMAT: 'image/png',
              VERSION: '1.1.1',
              LAYERS: res.resource,
              FORMAT: "image/png",
              VERSION: "1.1.1",
              LAYERS: res.url,
            },
          }),
        });
@@ -508,10 +521,12 @@
          layer2.setOpacity(parseInt(res.opacity) / 100);
        }
        window.map.addLayer(layer2);
      } else if (res.layerType == 'WFS') {
        var url = res.url + "?service=WFS&version=1.0.0&request=GetFeature&typeName=" + res.resource + "&outputFormat=application%2Fjson"
      } else if (res.serveType == "WFS") {
        var url =
          res.resource +
          "?service=WFS&version=1.0.0&request=GetFeature&typeName=" +
          res.url +
          "&outputFormat=application%2Fjson";
        $.ajax({
          url: url,
          cache: false,
@@ -522,92 +537,89 @@
              fill: Cesium.Color.YELLOW.withAlpha(0.1),
              alpha: 0.1,
              strokeWidth: 8,
              clampToGround: true //是否贴地
              clampToGround: true, //是否贴地
            });
            datasource.then((data) => {
              data.name = res.label;
              data.name = res.cnName;
              window.Viewer.dataSources.add(data);
            })
            });
          },
          error: function (data) {
            console.log("error");
          }
          },
        });
        var vectorLayer = new VectorLayer({
          name: res.label,
          name: res.cnName,
          source: new VectorSource({
            url: url,
            format: new GeoJSON(),
          }),
        });
        window.map.addLayer(vectorLayer);
      } else if (res.serveType == "Tileset") {
        var tileset = Viewer.scene.primitives.add(
          new Cesium.Cesium3DTileset({
            name: res.cnName,
            url: modelUrl + "/" + res.url, //192.168.20.106,to4
            maximumScreenSpaceError: 64, // 最大屏幕空间错误:16
            maximumMemoryUsage: 768, // 最大内存:512
            dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false
            skipLevelOfDetail: true, // 在遍历时候跳过详情:false
          })
        );
        tileset.readyPromise.then(function (tileset) {
          tileset.id = res.cnName;
          Viewer.flyTo(tileset);
        });
      }
    },
    async layersStart () {
    setTreeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
      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; // 返回一级菜单
      });
    },
    async layersStart() {
      const data = await perms_selectLayers();
      if (data.code != 200) {
        return this.$message.error("图层列表查询失败");
      }
      this.newData = data.result;
      this.oriData = data.result;
      var std = [];
      var layer_list = [];
      var layer_groups = [];
      for (var i in data.result) {
        if (data.result[i].type == 1) {
          layer_groups.push({
            id: data.result[i].id,
            label: data.result[i].cnName,
            type: data.result[i].type,
            isEdit: false,
            children: [],
          })
        } else if (data.result[i].type == 2) {
          if (data.result[i].url != null) {
            var layer_entity = {
              id: data.result[i].id,
              pid: data.result[i].pid,
              label: data.result[i].cnName,
              resource: data.result[i].url,
              type: data.result[i].type,
              isEdit: false,
              layer: data.result[i].enName,
              layerType: data.result[i].serveType
            }
            layer_list.push(layer_entity)
            if (data.result[i].isShow == 1) {
              std.push(data.result[i].id);
              this.setAddLayers(layer_entity);
            }
      var std = data.result;
      var that = this;
      var checkKey = [];
      var val = std.filter((str) => {
        if (str.type == 1) {
          return str;
        }
        if (str.url != null && str.type == 2) {
          if (str.isShow == 1) {
            checkKey.push(str.id);
            that.setAddLayers(str);
          }
          return str;
        }
      }
      });
      for (var i in layer_list) {
        for (var j in layer_groups) {
          if (layer_list[i].pid === layer_groups[j].id) {
            layer_groups[j].children.push(layer_list[i])
      var res = this.setTreeData(val);
      for (var i in res) {
        res[i].children = res[i].children.filter((val) => {
          if (val.children != null) {
            return val;
          }
        }
        });
      }
      layer_groups = layer_groups.filter((res) => {
        if (res.children && res.children.length != 0) {
          return res
        }
      })
      this.treeData = layer_groups;
      this.$refs.tree.setCheckedKeys(std);
      this.treeData = res;
      this.$refs.tree.setCheckedKeys(checkKey);
    },
    async treelayersStart () {
    async treelayersStart() {
      const data = await perms_selectLayers();
      if (data.code != 200) {
        return this.$message.error("图层列表查询失败");
@@ -623,7 +635,7 @@
            type: data.result[i].type,
            isEdit: false,
            children: [],
          })
          });
        } else if (data.result[i].type == 2) {
          if (data.result[i].url != null) {
            var layer_entity = {
@@ -633,23 +645,23 @@
              resource: data.result[i].url,
              type: data.result[i].type,
              isEdit: false,
            }
            layer_list.push(layer_entity)
            };
            layer_list.push(layer_entity);
          }
        }
      }
      for (var i in layer_list) {
        for (var j in layer_groups) {
          if (layer_list[i].pid === layer_groups[j].id) {
            layer_groups[j].children.push(layer_list[i])
            layer_groups[j].children.push(layer_list[i]);
          }
        }
      }
      layer_groups = layer_groups.filter((res) => {
        if (res.children && res.children.length != 0) {
          return res
          return res;
        }
      })
      });
      this.treeData = layer_groups;
      for (var i in data.result) {
@@ -657,7 +669,6 @@
          for (var j = 0; j < window.Viewer.imageryLayers._layers.length; j++) {
            var val_id = window.Viewer.imageryLayers._layers[j];
            if (val_id.show == true) {
              if (val_id.imageryProvider.name == data.result[i].cnName) {
                std.push(data.result[i].id);
              }
@@ -666,21 +677,19 @@
        }
      }
      this.$refs.tree.setCheckedKeys(std);
    }
  },
  watch: {
    filterText (val) {
      this.$refs.tree.filter(val);
    },
  },
  mounted () {
  watch: {
    filterText(val) {
      this.$refs.tree.filter(val);
    },
  },
  mounted() {
    this.$bus.$on("treeDataCopy", (res) => {
      this.$store.state.treeData = this.treeData;
      this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys()
      this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys();
    });
    if (this.$store.state.showAllLayers == true) {
      this.layersStart();
      this.$store.state.showAllLayers = false;
@@ -688,7 +697,6 @@
      this.treeData = this.$store.state.treeData;
      this.$refs.tree.setCheckedKeys(this.$store.state.checkedKeys);
    }
  },
};
</script>
@@ -709,7 +717,7 @@
}
.tree-container /deep/ .el-tree-node__expand-icon {
  margin-left: 15px;
  margin-left: 1px;
  padding: 0px;
}
@@ -719,7 +727,7 @@
.tree-container /deep/ .el-tree-node {
  position: relative;
  padding-left: 16px;
  padding-left: 10px;
  // text-indent: 16px;
}
@@ -847,6 +855,7 @@
    }
  }
}
/*.lalala {*/
/*position: relative;*/
/*}*/
src/views/Tools/Popup.vue
@@ -64,21 +64,21 @@
</template>
<script>
import baseVuex from './baseVuex';
import baseVuex from "./baseVuex";
export default {
  name: 'Popup',
  name: "Popup",
  components: {},
  mixins: [baseVuex],
  props: [
    'title',
    'left',
    'top',
    'maxHeight',
    'width',
    'shadow',
    'closeHidePage',
    'showBtn',
    'btnArr',
    "title",
    "left",
    "top",
    "maxHeight",
    "width",
    "shadow",
    "closeHidePage",
    "showBtn",
    "btnArr",
  ],
  data() {
    return {
@@ -86,14 +86,14 @@
      showBox: false,
      // 是否显示内容
      showContainer: true,
      defaultMaxHeight: '400px',
      defaultMaxHeight: "400px",
    };
  },
  directives: {
    // 拖拽
    drag(el) {
      // 获取弹窗头部
      let popupTitle = el.querySelector('.popupTitle');
      let popupTitle = el.querySelector(".popupTitle");
      // 添加鼠标按下事件
      popupTitle.onmousedown = function (e) {
        let disx = e.clientX - el.offsetLeft;
@@ -107,8 +107,8 @@
          left > maxleft && (left = maxleft);
          top < 0 && (top = 0);
          top > maxTop && (top = maxTop);
          el.style.left = left + 'px';
          el.style.top = top + 'px';
          el.style.left = left + "px";
          el.style.top = top + "px";
        };
        document.onmouseup = function () {
          document.onmousemove = document.onmouseup = null;
@@ -117,10 +117,10 @@
    },
  },
  mounted() {
    if (this.maxHeight === 'max') {
    if (this.maxHeight === "max") {
      this.$parent.maxHeight = undefined;
      this.$nextTick(() => {
        this.defaultMaxHeight = this.$el.offsetHeight * 0.92 - 40 + 'px';
        this.defaultMaxHeight = this.$el.offsetHeight * 0.92 - 40 + "px";
      });
    }
  },
@@ -132,18 +132,18 @@
    // 关闭弹窗
    close() {
      this.showBox = false;
      this.$emit('close');
      this.$emit("close");
    },
    yes() {
      this.$emit('yes');
      this.$emit("yes");
    },
    cancel() {
      this.$emit('cancel');
      this.$emit("cancel");
    },
    // 打开弹窗
    open() {
      this.showBox = true;
      this.$emit('open');
      this.$emit("open");
    },
  },
};
@@ -167,7 +167,7 @@
    border: 1px solid rgba(32, 160, 255, 0.6);
    border-radius: 5px;
    pointer-events: all;
    min-width: 323px;
    min-width: 280px;
    color: #fff;
    font-size: 18px;
    font-family: 微软雅黑;
src/views/Tools/maplayer.vue
@@ -5,7 +5,7 @@
      v-for="(data, index) in PopupData"
      :key="data.id"
      title="图层管理"
      :maxHeight="data.maxHeight || '500px'"
      :maxHeight="data.maxHeight || '400px'"
      @close="close(data.id)"
      :left="data.left || left"
      :top="data.top || top + index * 42 + 'px'"
@@ -32,7 +32,7 @@
    return {
      // 弹窗数据
      PopupData: ['maplayer'],
      left: 'calc(100% - 330px)',
      left: 'calc(100% - 370px)',
      top: 10,
    };
  },
src/views/Tools/pipeLineAnaly.vue
@@ -2,11 +2,7 @@
  <div class="pipeLineBox">
    <div class="headerBox">
      <div class="elFrom">
        <el-form
          ref="form"
          :model="ruleFrom"
          label-width="120px"
        >
        <el-form ref="form" :model="ruleFrom" label-width="120px">
          <el-form-item label="管道中心线">
            <el-select
              @change="selectChange"
@@ -39,38 +35,32 @@
          </el-form-item>
        </el-form>
      </div>
      <div style="display:flex">
      <div style="display: flex">
        <div class="transBox">
          <label>基础数据图层</label>
          <div class="checkBox">
            <ul>
              <li
                @click="checkLeft(item)"
                :class="{checkhover:checkedLeftflag == item.id}"
                v-for='(item,index) in cities'
                :class="{ checkhover: checkedLeftflag == item.id }"
                v-for="(item, index) in cities"
                :label="item.label"
                :key="item.id"
              >{{item.label}}</li>
              >
                {{ item.label }}
              </li>
            </ul>
          </div>
        </div>
        <div class="transInfo">
          <div>
            <el-link
              @click="setTransRight"
              :underline="false"
            ><i
                style="color:white"
                class="el-icon-d-arrow-right"
              ></i></el-link>
            <el-link @click="setTransRight" :underline="false"
              ><i class="el-icon-d-arrow-right"></i
            ></el-link>
            <br />
            <el-link
              @click="setTransLeft"
              :underline="false"
            ><i
                style="color:white"
                class="el-icon-d-arrow-left"
              ></i></el-link>
            <el-link @click="setTransLeft" :underline="false"
              ><i class="el-icon-d-arrow-left"></i
            ></el-link>
          </div>
        </div>
        <div class="transBox">
@@ -79,28 +69,22 @@
            <ul>
              <li
                @click="checkRight(item)"
                :class="{checkhover:checkedRightflag == item.id}"
                v-for='(item,index) in citiyData'
                :class="{ checkhover: checkedRightflag == item.id }"
                v-for="(item, index) in citiyData"
                :label="item.label"
                :key="item.id"
              >{{item.label}}</li>
              >
                {{ item.label }}
              </li>
            </ul>
          </div>
        </div>
      </div>
      <div class="sureButton">
        <div class="suerBox">
          <el-button
            @click="setAnalysis"
            size="small"
          >分析</el-button>
          <el-button
            @click="clearAnalysis"
            size="small"
          >取消</el-button>
          <el-button @click="setAnalysis" size="small">分析</el-button>
          <el-button @click="clearAnalysis" size="small">取消</el-button>
        </div>
      </div>
    </div>
    <div class="contentBox">
@@ -108,19 +92,19 @@
        <ul>
          <li
            @click="setlistChange(item)"
            :class="{checkhover:listflag == item.id}"
            :class="{ checkhover: listflag == item.id }"
            v-for="item in listData"
          >{{item.label}}</li>
          >
            {{ item.label }}
          </li>
        </ul>
      </div>
      <div class="contentLeft">
        <div style="float:right;padding:2px">
          <el-button
            @click="showDialogVivable()"
            size="small"
            type="info"
          >下载</el-button>
        <div style="float: right; padding: 2px">
          <el-button @click="showDialogVivable()" size="small" type="info"
            >下载</el-button
          >
          <!-- <el-button
            size="mini"
            type="info"
@@ -130,22 +114,14 @@
            type="info"
          >删除</el-button> -->
        </div>
        <el-table
          :data="tableData"
          style="width: 100%"
          height="70%"
        >
        <el-table :data="tableData" style="width: 100%" height="70%">
          <el-table-column
            align="center"
            type="index"
            :label="$t('operatManage.ELM.index')"
            width="70px"
          />
          <el-table-column
            label="定位"
            width="100"
            align="center"
          >
          <el-table-column label="定位" width="100" align="center">
            <template slot-scope="scope">
              <el-button
                icon="el-icon-map-location"
@@ -154,41 +130,18 @@
              ></el-button>
            </template>
          </el-table-column>
          <el-table-column
            prop="acrossName"
            label="被穿越地物名称"
            width="180"
          >
          <el-table-column prop="acrossName" label="被穿越地物名称" width="180">
          </el-table-column>
          <el-table-column
            prop="acrossLength"
            label="穿越长度"
            width="100"
          >
          <el-table-column prop="acrossLength" label="穿越长度" width="100">
          </el-table-column>
          <el-table-column
            prop="pipeName"
            label="管线名称"
            width="180"
          >
          <el-table-column prop="pipeName" label="管线名称" width="180">
          </el-table-column>
          <el-table-column
            prop="segName"
            label="管段名称"
            width="180"
          >
          <el-table-column prop="segName" label="管段名称" width="180">
          </el-table-column>
          <el-table-column
            prop="remarks"
            label="备注"
            width="100"
          >
          <el-table-column prop="remarks" label="备注" width="100">
          </el-table-column>
        </el-table>
        <div
          class="pagination_box"
          style="margin-top:10px"
        >
        <div class="pagination_box" style="margin-top: 10px">
          <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
@@ -218,20 +171,14 @@
        label-width="100px"
        class="codeForm"
      >
        <el-form-item
          :label="$t('common.passworld')"
          prop="password"
        >
        <el-form-item :label="$t('common.passworld')" prop="password">
          <el-input
            type="password"
            v-model="codeForm.password"
            show-password
          ></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('common.SPassword')"
          prop="repassword"
        >
        <el-form-item :label="$t('common.SPassword')" prop="repassword">
          <el-input
            type="password"
            v-model="codeForm.repassword"
@@ -239,16 +186,12 @@
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-button
            type="info"
            size="small"
            @click="download "
          >{{$t('common.confirm')}}</el-button>
          <el-button
            type="info"
            size="small"
            @click="closeDialog "
          >{{$t('common.cancel')}}</el-button>
          <el-button type="info" size="small" @click="download">{{
            $t("common.confirm")
          }}</el-button>
          <el-button type="info" size="small" @click="closeDialog">{{
            $t("common.cancel")
          }}</el-button>
        </el-form-item>
      </el-form>
    </el-dialog>
@@ -261,17 +204,22 @@
</template>
<script>
import WKT from 'terraformer-wkt-parser'
import WKT from "terraformer-wkt-parser";
import { getToken } from "@/utils/auth";
import { pipelines_selectSegNames, pipeline_selectPipeAnalysis, sign_getPublicKey, pipeline_downloadReq } from '../../api/api.js';
import {
  pipelines_selectSegNames,
  pipeline_selectPipeAnalysis,
  sign_getPublicKey,
  pipeline_downloadReq,
} from "../../api/api.js";
import $ from "jquery";
export default {
  data() {
    var repasswordValidator = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请再次输入密码'));
      if (value === "") {
        callback(new Error("请再次输入密码"));
      } else if (value !== this.codeForm.password) {
        callback(new Error('两次输入密码不一致!'));
        callback(new Error("两次输入密码不一致!"));
      } else {
        callback();
      }
@@ -280,61 +228,68 @@
      var passwordreg =
        /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![a-z0-9]+$)(?![a-z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![0-9\W!@#$%^&*`~()\\-_+=,.?;<>]+$)[a-zA-Z0-9\W!@#$%^&*`~()\\-_+=,.?;<>]{12,20}$/;
      if (!passwordreg.test(value)) {
        callback(
          new Error('密码必须由数字、字母、特殊字符组合,请输入13-20位')
        );
        callback(new Error("密码必须由数字、字母、特殊字符组合,请输入13-20位"));
      } else {
        callback();
      }
    };
    return {
      rules: {
        password: [{ required: true, message: '请输入密码', trigger: 'blur' }, { validator: passwordValidator, trigger: 'blur' }],
        password: [
          { required: true, message: "请输入密码", trigger: "blur" },
          { validator: passwordValidator, trigger: "blur" },
        ],
        repassword: [
          { required: true, message: '请输入确认密码', trigger: 'blur' },
          { validator: repasswordValidator, trigger: 'blur' },
          { required: true, message: "请输入确认密码", trigger: "blur" },
          { validator: repasswordValidator, trigger: "blur" },
        ],
      },
      dialogVisible: false,
      codeForm: {
        repassword: '', password: ''
        repassword: "",
        password: "",
      },
      ruleFrom: {
        value1: '',
        value2: ''
        value1: "",
        value2: "",
      },
      options1: [],
      options2: [],
      checkList: [],
      checkData: [{
        id: 1,
        label: '铁路(dlg_25w_lrrl)',
        tabs: 'dlg_25w_lrrl',
        tabdesc: '铁路',
        table: 'bd.dlg_25w_lrrl',
        checked: false,
      }, {
        id: 2,
        label: '公路(dlg_25w_lrdl)',
        tabs: 'dlg_25w_lrdl',
        tabdesc: '公路',
        table: 'bd.dlg_25w_lrdl',
        checked: false,
      }, {
        id: 3,
        label: '水系线(dlg_25w_hydl)',
        tabs: 'dlg_25w_hydl',
        tabdesc: '水系线',
        table: 'bd.dlg_25w_hydl',
        checked: false,
      }, {
        id: 4,
        label: '水系面(dlg_25w_hyda)',
        tabs: 'dlg_25w_hyda',
        tabdesc: '水系面',
        table: 'bd.dlg_25w_hyda',
        checked: false,
      }],
      checkData: [
        {
          id: 1,
          label: "铁路(dlg_25w_lrrl)",
          tabs: "dlg_25w_lrrl",
          tabdesc: "铁路",
          table: "bd.dlg_25w_lrrl",
          checked: false,
        },
        {
          id: 2,
          label: "公路(dlg_25w_lrdl)",
          tabs: "dlg_25w_lrdl",
          tabdesc: "公路",
          table: "bd.dlg_25w_lrdl",
          checked: false,
        },
        {
          id: 3,
          label: "水系线(dlg_25w_hydl)",
          tabs: "dlg_25w_hydl",
          tabdesc: "水系线",
          table: "bd.dlg_25w_hydl",
          checked: false,
        },
        {
          id: 4,
          label: "水系面(dlg_25w_hyda)",
          tabs: "dlg_25w_hyda",
          tabdesc: "水系面",
          table: "bd.dlg_25w_hyda",
          checked: false,
        },
      ],
      citiyData: [],
      cities: [],
      checkedCities: [],
@@ -350,12 +305,12 @@
      pageData: {
        pageIndex: 1,
        pageSize: 10,
        pageCount: 0
        pageCount: 0,
      },
      multipleSelection: [],
      featurTable: null,
      featureLayer: [],
    }
    };
  },
  methods: {
    spaceLocation(index, row) {
@@ -368,43 +323,55 @@
      this.claerAll();
      switch (geojson.type) {
        case 'Point':
          this.setShowImagePoint(geojson.coordinates)
        case "Point":
          this.setShowImagePoint(geojson.coordinates);
          break;
        case 'MultiPoint':
        case "MultiPoint":
          for (var i in geojson.coordinates) {
            this.setShowImagePoint(geojson.coordinates[i])
            this.setShowImagePoint(geojson.coordinates[i]);
          }
          break;
        case 'LineString':
          this.setShowImageLine(geojson.coordinates)
        case "LineString":
          this.setShowImageLine(geojson.coordinates);
          break;
        case 'MultiLineString':
        case "MultiLineString":
          for (var i in geojson.coordinates) {
            this.setShowImageLine(geojson.coordinates[i])
            this.setShowImageLine(geojson.coordinates[i]);
          }
          break;
      }
    },
    setShowImagePoint(res) {
      var obj = { X: res[0], Y: res[1], Altitude: 1000 }
      var imageLabel = sgworld.Creator.CreateImageLabel(obj, SmartEarthRootUrl + "Workers/image/mark.png", {}, 0, "管道空间分析");
      this.$store.state.pipelineEntity.push(imageLabel.item)
      var obj = { X: res[0], Y: res[1], Altitude: 1000 };
      var imageLabel = sgworld.Creator.CreateImageLabel(
        obj,
        SmartEarthRootUrl + "Workers/image/mark.png",
        {},
        0,
        "管道空间分析"
      );
      this.$store.state.pipelineEntity.push(imageLabel.item);
      sgworld.Navigate.flyToObj(imageLabel.item);
    },
    setShowImageLine(res) {
      var obj = [];
      for (var i in res) {
        obj.push({ x: res[i][0], y: res[i][1], z: 1000 })
        obj.push({ x: res[i][0], y: res[i][1], z: 1000 });
      }
      var line = sgworld.Creator.createPolyline(obj, "#ffff00", 1, 0, "管道空间分析");
      this.$store.state.pipelineEntity.push(line.item)
      var line = sgworld.Creator.createPolyline(
        obj,
        "#ffff00",
        1,
        0,
        "管道空间分析"
      );
      this.$store.state.pipelineEntity.push(line.item);
      sgworld.Navigate.flyToObj(line.item);
    },
    claerAll() {
      for (var i in this.$store.state.pipelineEntity) {
        var item = this.$store.state.pipelineEntity[i]
        var item = this.$store.state.pipelineEntity[i];
        sgworld.Viewer.entities.remove(item);
      }
      this.$store.state.pipelineEntity = [];
@@ -417,20 +384,17 @@
      }
    },
    async download() {
      var std = [];
      for (var i in this.listData) {
        std.push(this.listData[i].table)
        std.push(this.listData[i].table);
      }
      var obj = {
        pwd: encrypt.encrypt(this.codeForm.password),
        gid: this.analyGid,
        tabs: std
        tabs: std,
      };
      const data = await pipeline_downloadReq(obj);
      if (data.code != 200) {
        this.$message.error("下载请求失败");
        this.closeDialog();
@@ -452,47 +416,47 @@
      //  this.$store.state.loading = false;
    },
    showDialogVivable() {
      if (this.listData.length == 0) return
      this.dialogVisible = true
      if (this.listData.length == 0) return;
      this.dialogVisible = true;
    },
    handleClose() {
      this.$confirm('确认关闭?')
        .then(_ => {
          this.closeDialog()
      this.$confirm("确认关闭?")
        .then((_) => {
          this.closeDialog();
        })
        .catch(_ => { });
        .catch((_) => {});
    },
    closeDialog() {
      this.dialogVisible = false
      this.dialogVisible = false;
      this.codeForm = {
        repassword: '', password: ''
      }
        repassword: "",
        password: "",
      };
    },
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
    setTransLeft() {
      if (this.rightChecked == null) return
      this.cities.push(this.rightChecked)
      if (this.rightChecked == null) return;
      this.cities.push(this.rightChecked);
      this.citiyData.forEach((value, index, array) => {
        if (value.label == this.rightChecked.label) {
          array.splice(index, 1)
          array.splice(index, 1);
        }
      });
      this.checkedLeftflag = null;
      this.rightChecked = null
      this.rightChecked = null;
    },
    setTransRight() {
      if (this.leftChecked == null) return
      this.citiyData.push(this.leftChecked)
      if (this.leftChecked == null) return;
      this.citiyData.push(this.leftChecked);
      this.cities.forEach((value, index, array) => {
        if (value.label == this.leftChecked.label) {
          array.splice(index, 1)
          array.splice(index, 1);
        }
      });
      this.checkedRightflag = null;
      this.leftChecked = null
      this.leftChecked = null;
    },
    checkLeft(res) {
      this.checkedLeftflag = res.id;
@@ -503,10 +467,9 @@
      this.rightChecked = res;
    },
    selectChange(res) {
      this.changeSelect2(res)
      this.changeSelect2(res);
    },
    selectChange1(res) {
      this.analyGid = res;
    },
    changeSelect2(res) {
@@ -514,7 +477,7 @@
      var value = this.featureLayer;
      for (var i in value) {
        if (value[i].pipeName == res) {
          this.options2.push(value[i])
          this.options2.push(value[i]);
        }
      }
      this.ruleFrom.value2 = this.options2[0].segName;
@@ -524,35 +487,40 @@
      this.tableData = [];
      this.listData = [];
      this.cities = [{
        id: 1,
        label: '铁路(dlg_25w_lrrl)',
        tabs: 'dlg_25w_lrrl',
        tabdesc: '铁路',
        table: 'bd.dlg_25w_lrrl',
        checked: false,
      }, {
        id: 2,
        label: '公路(dlg_25w_lrdl)',
        tabs: 'dlg_25w_lrdl',
        tabdesc: '公路',
        table: 'bd.dlg_25w_lrdl',
        checked: false,
      }, {
        id: 3,
        label: '水系线(dlg_25w_hydl)',
        tabs: 'dlg_25w_hydl',
        tabdesc: '水系线',
        table: 'bd.dlg_25w_hydl',
        checked: false,
      }, {
        id: 4,
        label: '水系面(dlg_25w_hyda)',
        tabs: 'dlg_25w_hyda',
        tabdesc: '水系面',
        table: 'bd.dlg_25w_hyda',
        checked: false,
      }];
      this.cities = [
        {
          id: 1,
          label: "铁路(dlg_25w_lrrl)",
          tabs: "dlg_25w_lrrl",
          tabdesc: "铁路",
          table: "bd.dlg_25w_lrrl",
          checked: false,
        },
        {
          id: 2,
          label: "公路(dlg_25w_lrdl)",
          tabs: "dlg_25w_lrdl",
          tabdesc: "公路",
          table: "bd.dlg_25w_lrdl",
          checked: false,
        },
        {
          id: 3,
          label: "水系线(dlg_25w_hydl)",
          tabs: "dlg_25w_hydl",
          tabdesc: "水系线",
          table: "bd.dlg_25w_hydl",
          checked: false,
        },
        {
          id: 4,
          label: "水系面(dlg_25w_hyda)",
          tabs: "dlg_25w_hyda",
          tabdesc: "水系面",
          table: "bd.dlg_25w_hyda",
          checked: false,
        },
      ];
      this.citiyData = [];
      this.getAllData();
      this.listflag = null;
@@ -561,40 +529,40 @@
      this.pageData = {
        pageIndex: 1,
        pageSize: 10,
        pageCount: 0
      }
        pageCount: 0,
      };
    },
    async setAnalysis() {
      if (this.citiyData.length == 0) {
        this.$message.error('请选择要分析的图层!');
        this.$message.error("请选择要分析的图层!");
      }
      var std = [];
      var listTable = [];
      for (var i in this.citiyData) {
        std.push(this.citiyData[i].table)
        listTable.push(this.citiyData[i])
        std.push(this.citiyData[i].table);
        listTable.push(this.citiyData[i]);
      }
      this.listData = listTable;
      this.listflag = this.listData[0].id
      this.listflag = this.listData[0].id;
      var obj = {
        gid: this.analyGid,
        tabs: std
      }
        tabs: std,
      };
      const data = await pipeline_selectPipeAnalysis(obj);
      if (data.code != 200) {
        this.$message.error('列表调用失败');
        this.$message.error("列表调用失败");
      }
      this.featureData = data.result;
      this.featurTable = this.featureData[this.listData[0].table]
      this.featurTable = this.featureData[this.listData[0].table];
      this.pageData.pageCount = this.featurTable.length;
      this.pageData.pageIndex = 1;
      this.pageData.pageSize = 10;
      this.changePageData();
    },
    setlistChange(res) {
      this.listflag = res.id
      this.featurTable = this.featureData[res.table]
      this.listflag = res.id;
      this.featurTable = this.featureData[res.table];
      this.pageData.pageCount = this.featurTable.length;
      this.pageData.pageIndex = 1;
      this.pageData.pageSize = 10;
@@ -615,10 +583,9 @@
      this.changePageData();
    },
    async getAllData() {
      const data = await pipelines_selectSegNames();
      if (data.code != 200) {
        this.$message.error('列表调用失败');
        this.$message.error("列表调用失败");
      }
      var std = [];
      var str = [];
@@ -626,50 +593,54 @@
      for (var i in result) {
        if (std.indexOf(result[i].pipeName) == -1) {
          std.push(result[i].pipeName);
          str.push(result[i])
          str.push(result[i]);
        }
      }
      this.featureLayer = data.result;
      this.options1 = str;
      this.ruleFrom.value1 = this.options1[0].pipeName;
      this.changeSelect2(this.ruleFrom.value1)
      this.changeSelect2(this.ruleFrom.value1);
    },
  },
  mounted() {
    this.cities = [{
      id: 1,
      label: '铁路(dlg_25w_lrrl)',
      tabs: 'dlg_25w_lrrl',
      tabdesc: '铁路',
      table: 'bd.dlg_25w_lrrl',
      checked: false,
    }, {
      id: 2,
      label: '公路(dlg_25w_lrdl)',
      tabs: 'dlg_25w_lrdl',
      tabdesc: '公路',
      table: 'bd.dlg_25w_lrdl',
      checked: false,
    }, {
      id: 3,
      label: '水系线(dlg_25w_hydl)',
      tabs: 'dlg_25w_hydl',
      tabdesc: '水系线',
      table: 'bd.dlg_25w_hydl',
      checked: false,
    }, {
      id: 4,
      label: '水系面(dlg_25w_hyda)',
      tabs: 'dlg_25w_hyda',
      tabdesc: '水系面',
      table: 'bd.dlg_25w_hyda',
      checked: false,
    }];
    this.cities = [
      {
        id: 1,
        label: "铁路(dlg_25w_lrrl)",
        tabs: "dlg_25w_lrrl",
        tabdesc: "铁路",
        table: "bd.dlg_25w_lrrl",
        checked: false,
      },
      {
        id: 2,
        label: "公路(dlg_25w_lrdl)",
        tabs: "dlg_25w_lrdl",
        tabdesc: "公路",
        table: "bd.dlg_25w_lrdl",
        checked: false,
      },
      {
        id: 3,
        label: "水系线(dlg_25w_hydl)",
        tabs: "dlg_25w_hydl",
        tabdesc: "水系线",
        table: "bd.dlg_25w_hydl",
        checked: false,
      },
      {
        id: 4,
        label: "水系面(dlg_25w_hyda)",
        tabs: "dlg_25w_hyda",
        tabdesc: "水系面",
        table: "bd.dlg_25w_hyda",
        checked: false,
      },
    ];
    this.getAllData();
    this.signGetPublicKey();
  }
}
  },
};
</script>
<style scoped lang="less">
@@ -698,8 +669,6 @@
        border-radius: 5px;
        overflow-y: auto;
      }
    }
    .transInfo {
@@ -736,7 +705,7 @@
  .checkhover {
    color: #409eff;
  }
  .country-group {
    display: flex;
    justify-content: center;
@@ -745,7 +714,5 @@
      margin: 4px 0;
    }
  }
}
</style>
</style>
src/views/datamanage/SpatialData.vue
@@ -13,7 +13,6 @@
          <el-tree
            :data="tree"
            :props="defaultProps"
            :default-expanded-keys="[1]"
            node-key="id"
            :current-node-key="10"
            @node-click="handleNodeClick"
@@ -80,6 +79,7 @@
        </div>
        <div class="table_box" style="height:calc(100% - 89px)">
          <el-table
            border
            ref="filterTable"
            :data="tableData"
            style="width: 100%"
@@ -115,7 +115,6 @@
                  @click="showDetail(scope.$index, scope.row)"
                >{{$t('common.details')}}</el-button>
                <el-button
                 type="primary"
                  plain
                  size="small"
                  @click="getAttachTable(scope.$index, scope.row)"
src/views/datamanage/catalogueManage.vue
@@ -1,14 +1,15 @@
<template>
  <div class="subpage_Box">
    <div class="cataLogContent">
      <div class="cataLog_leftTree subpage_Div">
        <My-bread
          :list="[
            `${$t('dataManage.dataManage')}`,
            `${$t('dataManage.catalogueManage')}`,
          ]"
        ></My-bread>
        <el-divider />
          <My-bread
        :list="[
          `${$t('dataManage.dataManage')}`,
          `${$t('dataManage.catalogueManage')}`,
        ]"
      ></My-bread>
      <el-divider />
    <div class="mainBox">
      <div class="cataLogContent leftTree subpage_Div">
        <div style="min-width: 450px">
          <el-tree
            ref="tree"
@@ -23,8 +24,9 @@
          </el-tree>
        </div>
      </div>
      <div class="cataLog_rightContent subpage_Div">
      <div class="cataLog_rightContent right subpage_Div">
        <div
        class="inquire"
          style="
            align-items: center;
            display: flex;
@@ -112,8 +114,8 @@
            </div>
          </div>
        </div>
        <el-divider />
        <el-form :model="itemdetail" ref="itemdetail" :rules="rules">
        <el-form :model="itemdetail" ref="itemdetail" :rules="rules" style="position: relative;">
          <el-form-item
            prop="name"
            :label="$t('dataManage.dataUpObj.directoryName')"
@@ -140,7 +142,7 @@
              v-model="itemdetail.exts"
              type="textarea"
              resize="none"
              style="height: 100%; overflow: auto;max-width: 400px;"
              style="height: 100%; overflow: auto; max-width: 400px"
            />
          </el-form-item>
          <el-form-item
@@ -151,7 +153,7 @@
              v-model="itemdetail.checks"
              type="textarea"
              resize="none"
              style="height: 100%; overflow: auto;max-width: 400px;"
              style="height: 100%; overflow: auto; max-width: 400px"
            />
          </el-form-item>
          <el-form-item
@@ -163,7 +165,7 @@
              disabled
              type="textarea"
              resize="none"
              style="height: 100%; overflow: auto;max-width: 400px;"
              style="height: 100%; overflow: auto; max-width: 400px"
            />
          </el-form-item>
          <el-form-item
@@ -237,7 +239,7 @@
            v-model="ruleForm.exts"
            type="textarea"
            resize="none"
            style="height: 100%; overflow: auto; "
            style="height: 100%; overflow: auto"
          />
        </el-form-item>
        <el-form-item
@@ -248,7 +250,7 @@
            v-model="ruleForm.checks"
            type="textarea"
            resize="none"
            style="height: 100%; overflow: auto; "
            style="height: 100%; overflow: auto"
          />
        </el-form-item>
        <el-form-item
@@ -260,7 +262,7 @@
            disabled
            type="textarea"
            resize="none"
            style="height: 100%; overflow: auto; "
            style="height: 100%; overflow: auto"
          />
        </el-form-item>
        <el-form-item
@@ -580,18 +582,20 @@
      }
    },
    setDelNode() {
      this.$confirm('此操作将永久删除该目录, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.remove(this.newNode, this.itemdetail)
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
      this.$confirm("此操作将永久删除该目录, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.remove(this.newNode, this.itemdetail);
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消删除",
          });
        });
      });
    },
    setNewNode(res) {
      var id, lever, orderNum;
@@ -901,35 +905,71 @@
.subpage_Box {
  height: 96%;
  width: 98%;
 padding: 1%;
  padding: 1%;
  border-radius: 10px;
  .cataLogContent {
    width: 100%;
  // .cataLogContent {
  //   width: 100%;
  //   height: 100%;
  //   display: flex;
  //   // align-items: center;
  //   justify-content: space-between;
  //   .cataLog_leftTree {
  //     width: 30%;
  //     height: 98%;
  //     border-radius: 5px;
  //     padding: 10px;
  //     overflow-y: auto;
  //   }
  //   .cataLog_rightContent {
  //     width: 66%;
  //     height: 98%;
  //     border-radius: 5px;
  //     padding: 10px;
  //     .menuTop {
  //       /deep/ .el-form-item {
  //         margin-bottom: 0px;
  //       }
  //     }
  //   }
  // }
}
.mainBox {
  width: 100%;
  height: calc(100% - 75px);
  display: flex;
  justify-content: space-between;
  .leftTree {
    width: calc(32% - 0px);
    height: 100%;
    display: flex;
    // align-items: center;
    justify-content: space-between;
    .cataLog_leftTree {
      width: 30%;
      height: 98%;
    padding: 10px;
    border-radius: 5px;
    box-sizing: border-box;
    overflow-y: auto;
  }
  .right {
    width: 65%;
    height: 100%;
    border-radius: 5px;
    padding: 10px;
    box-sizing: border-box;
    border: 1px solid #dcdfe6;
    .inquire {
      // margin-bottom: 10px;
      padding: 8px;
      // margin-top: 10px;
      border-radius: 5px;
      padding: 10px;
      overflow-y: auto;
    }
    .cataLog_rightContent {
      width: 66%;
      height: 98%;
      border-radius: 5px;
      padding: 10px;
      .menuTop {
        /deep/ .el-form-item {
          margin-bottom: 0px;
        }
      border: 1px solid #dcdfe6;
      margin-bottom: 20px;
      .el-form-item {
        margin: 5px;
      }
    }
  }
}
.btnBox{
  text-align: right;
.btnBox {
  position: absolute;
  bottom:0;
  right: 0;
}
</style>
src/views/datamanage/dataStatistics.vue
@@ -20,45 +20,96 @@
        </el-tree>
      </div>
      <div class="content_Right subpage_Div">
        <div>
          <el-button
            icon="el-icon-c-scale-to-original"
            @click="setCountFlagChange(1)"
          ></el-button>
          <el-button
            icon="el-icon-pie-chart"
            @click="setCountFlagChange(2)"
          ></el-button>
          <el-button
            icon="el-icon-download"
            @click="setCountFlagChange(3)"
          ></el-button>
          <el-divider />
        <div class="iquery subpage_Div">
          <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
            >
          </div>
        </div>
        <div class="contentTable" v-show="setCountFlag">
        <div class="contentTable subpage_Div" v-show="setCountFlag">
          <el-table
            :data="tableData"
            style="width: 100%"
            height="calc(100% - 50px)"
            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
              prop="m2"
              v-if="queryData.value == 'countServices'"
              prop="count"
              key="2"
              align="center"
              :label="$t('dataManage.dataStaticObj.type2')"
            >
            </el-table-column>
            <el-table-column
              prop="count"
              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>
            <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"
              key="6"
              align="center"
              :label="$t('dataManage.dataStaticObj.type7')"
            >
            </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>
          <!-- <div class="pagination_box">
            <el-pagination
@@ -73,7 +124,11 @@
            </el-pagination>
          </div> -->
        </div>
        <div id="contentEchart" class="contentTable" v-show="!setCountFlag">
        <div
          id="contentEchart subpage_Div"
          class="contentTable"
          v-show="!setCountFlag"
        >
          <div id="chart_11"></div>
        </div>
      </div>
@@ -190,6 +245,9 @@
    this.setStartDataCount();
  },
  methods: {
    formatterColumn(row, column, cellValue, index) {
      return row.count + "MB";
    },
    setDownLoadRow(rows) {
      var url =
        BASE_URL +
@@ -427,6 +485,9 @@
        }
      }
      this.tableData = data.result;
      this.$nextTick(() => {
        this.$refs.table.doLayout();
      });
      // this.listData.count = data.count;
    },
  },
@@ -454,9 +515,26 @@
      height: calc(95% - 2px);
      border-radius: 5px;
      padding: 1%;
      .iquery {
        padding: 1%;
        border-radius: 5px;
        display: flex;
        justify-content: flex-end;
      }
      .contentTable {
        width: 100%;
        height: 84%;
        width: 98%;
        height: 82%;
        padding: 1%;
        border-radius: 5px;
        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;
        }
      }
    }
  }
src/views/datamanage/metadataManage.vue
@@ -204,6 +204,7 @@
          <template slot-scope="scope">
            <span v-if="scope.row.ismeta > 0">
              <el-link
                style="color: #409eff"
                title="源数据查询"
                @click="setQueryMetaData(scope.row)"
                target="_blank"
@@ -254,7 +255,7 @@
          :label="$t('dataManage.vmobj.createontime')"
          :formatter="formatData"
        />
        <el-table-column min-width="100" :label="$t('common.operate')">
        <el-table-column min-width="180" :label="$t('common.operate')">
          <template slot-scope="scope">
            <el-button
              @click="showDetail(scope.row)"
src/views/maintenance/blackwhiteList.vue
@@ -124,7 +124,7 @@
            <el-table-column
              v-if="menuStatus.update"
              :label="$t('operatManage.tokentoolObj.operation')"
              width="320"
              width="120"
              align="center"
            >
              <template slot-scope="scope">
@@ -267,7 +267,7 @@
            <el-table-column
              v-if="menuStatus.update"
              :label="$t('operatManage.tokentoolObj.operation')"
              width="320"
              width="120"
              align="center"
            >
              <template slot-scope="scope">
@@ -299,11 +299,11 @@
    </el-tabs>
    <el-dialog
      :title="$t('common.append')"
      style="overflow: hidden"
      :visible.sync="InsertFormdialog"
      width="30%"
      top="2vh"
    >
      <el-form ref="insertform" :model="insertform">
      <el-form ref="insertform" :model="insertform" label-position="top">
        <el-form-item
          :label-width="formLabelWidth"
          :label="$t('operatManage.tokentoolObj.ip')"
@@ -311,6 +311,7 @@
          <el-input
            v-model="insertform.ip"
            :placeholder="$t('common.pleaseInput')"
             style="width:85%"
          />
        </el-form-item>
        <el-form-item
@@ -320,6 +321,7 @@
          <el-input
            v-model="insertform.visit"
            :placeholder="$t('common.pleaseInput')"
             style="width:85%"
          />
        </el-form-item>
        <el-form-item
@@ -329,9 +331,11 @@
          <el-input
            v-model="insertform.descr"
            :placeholder="$t('common.pleaseInput')"
             style="width:85%"
          />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="insertFromDataClose">{{
          $t("common.close")
@@ -345,25 +349,28 @@
      :title="$t('common.update')"
      style="overflow: hidden"
      :visible.sync="updateFormdialog"
      width="30%"
      top="2vh"
    >
      <el-form ref="editfrom" :model="editfrom">
      <el-form ref="editfrom" :model="editfrom" label-position="top">
        <el-form-item :label-width="formLabelWidth" label="IP地址">
          <el-input
            v-model="editfrom.ip"
            :placeholder="$t('common.pleaseInput')"
            style="width:85%"
          />
        </el-form-item>
        <el-form-item :label-width="formLabelWidth" label="访问次数">
          <el-input
            v-model="editfrom.visit"
            :placeholder="$t('common.pleaseInput')"
            style="width:85%"
          />
        </el-form-item>
        <el-form-item :label-width="formLabelWidth" label="描述">
          <el-input
            v-model="editfrom.descr"
            :placeholder="$t('common.pleaseInput')"
            style="width:85%"
          />
        </el-form-item>
      </el-form>
src/views/maintenance/menuSettings.vue
@@ -83,6 +83,7 @@
            :model="itemdetail"
            ref="itemdetail"
            :rules="rules"
             style="position: relative;"
          >
            <el-form-item
              prop="enName"
@@ -187,12 +188,12 @@
            >
              <el-button
                size="small"
                type="info"
                type="primary"
                @click="updMenu('itemdetail')"
              >{{ $t('common.confirm') }}</el-button>
              <el-button
                size="small"
                type="primary"
                type="info"
                @click="reset('itemdetail')"
              >{{
                $t('common.cancel')
@@ -205,13 +206,16 @@
    </div>
    <el-dialog
       top="2vh"
      :title="$t('common.append')"
      :visible.sync="dialogFormVisible"
    >
        <div style="height: 500px; overflow: auto">
      <el-form
        :model="ruleForm"
        ref="ruleForm"
        :rules="rules"
        label-position="top"
      >
        <el-form-item
          prop="enName"
@@ -221,6 +225,7 @@
          <el-input
            v-model="ruleForm.enName"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -231,6 +236,7 @@
          <el-input
            v-model="ruleForm.cnName"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -240,6 +246,7 @@
          <el-input
            v-model="ruleForm.icon"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -249,7 +256,7 @@
        >
          <el-select
            :popper-append-to-body="false"
            style="width:100%"
            style="width:85%"
            v-model="ruleForm.isShow"
            placeholder=""
          >
@@ -269,6 +276,7 @@
          <el-input
            v-model="ruleForm.url"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -278,6 +286,7 @@
          <el-input
            v-model="ruleForm.perms"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -287,7 +296,7 @@
        >
          <el-select
            :popper-append-to-body="false"
            style="width:100%"
            style="width:85%"
            v-model="ruleForm.type"
            :placeholder="$t('common.choose')"
          >
@@ -307,9 +316,11 @@
          <el-input
            v-model="ruleForm.bak"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
      </el-form>
       </div>
      <div
        slot="footer"
        class="dialog-footer"
@@ -782,6 +793,7 @@
                setTimeout(() => {
                  this.fullscreenLoading = false;
                  if (res.code == 200) {
                    this.$router.go(0);
                    this.getMenuTree();
                    this.itemdetail = {};
                    this.dialogFormVisible = false;
@@ -878,5 +890,11 @@
    }
  }
}
.btnBox{
  position: absolute;
  bottom: 0;
  right: 0;
}
</style>
 
src/views/maintenance/mochaitmo.vue
@@ -207,6 +207,9 @@
        if (res.result.length != 0) {
          let menuList = res.result.filter((value) => {
            return value.type == 1;
          })
          .filter(value => {
            return value.isShow == 1;
          });
          this.menuList = this.treeData(menuList);
          this.getCookies();
src/views/maintenance/parameterConfiguration.vue
@@ -83,11 +83,12 @@
    <el-dialog
      :title="$t('operatManage.sysLayOutObj.editSysLayOut')"
      style="overflow: hidden"
       top="2vh"
      :visible.sync="EditFormdialog"
      :before-close="EditFromDataClose"
    >
      <el-form :model="upform">
     <div style="height: 500px; overflow: auto">
      <el-form :model="upform" label-position="top">
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.name')"
          :label-width="formLabelWidth"
@@ -98,7 +99,7 @@
          :label="$t('operatManage.sysLayOutObj.cvalue')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.cvalue" autocomplete="off"></el-input>
          <el-input v-model="upform.cvalue" autocomplete="off"  style="width:85%"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.dvalue')"
@@ -125,6 +126,7 @@
          <label class="boxlabel">{{ upform.descr }}</label>
        </el-form-item>
      </el-form>
     </div>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="EditFromDataClose">{{
          $t("common.close")
src/views/maintenance/tokentool.vue
@@ -88,29 +88,29 @@
        <el-table-column type="selection" width="55" />
        <el-table-column
          width="70"
          align="center"
          type="index"
          :label="$t('operatManage.tokentoolObj.index')"
        />
        <el-table-column
          prop="token"
          align="center"
          :label="$t('operatManage.tokentoolObj.token')"
        />
        <el-table-column
          prop="duration"
          align="center"
          :label="$t('operatManage.tokentoolObj.duration')"
        />
        <el-table-column
          prop="expire"
          align="center"
          :label="$t('operatManage.tokentoolObj.expire')"
          :formatter="formatTime"
        />
        <el-table-column
          prop="type"
          align="center"
          :label="$t('operatManage.tokentoolObj.type')"
        >
          <template slot-scope="scope">
@@ -120,42 +120,42 @@
        </el-table-column>
        <el-table-column
          prop="ip"
          align="center"
          :label="$t('operatManage.tokentoolObj.ip')"
        />
        <el-table-column
          prop="createUser"
          align="center"
          :label="$t('operatManage.tokentoolObj.createUser')"
        />
        <el-table-column
          prop="createTime"
          align="center"
          :label="$t('operatManage.tokentoolObj.createTime')"
          :formatter="formatTime"
        />
        <el-table-column
          prop="updateUser"
          align="center"
          :label="$t('operatManage.tokentoolObj.updateUser')"
        />
        <el-table-column
          prop="updateTime"
          align="center"
          :label="$t('operatManage.tokentoolObj.updateTime')"
          :formatter="formatTime"
        />
        <el-table-column
          fixed="right"
          :label="$t('operatManage.tokentoolObj.operation')"
          width="320"
          align="center"
          width="220"
        >
          <template slot-scope="scope">
            <el-button type="danger" size="small">{{
            <el-button type="danger" size="small" plain>{{
              $t("operatManage.tokentoolObj.invalid")
            }}</el-button>
            <el-button type="warning" size="small">{{
            <el-button type="info" size="small" plain>{{
              $t("operatManage.tokentoolObj.renewal")
            }}</el-button>
            <el-button
@@ -186,10 +186,11 @@
    <!-- 新增弹窗 -->
    <el-dialog
      :title="$t('operatManage.tokentoolObj.addToken')"
      style="overflow: hidden"
     top="2vh"
      :visible.sync="InsertFormdialog"
    >
      <el-form ref="formData1" :model="insertform">
        <div style="height: 500px; overflow: auto">
      <el-form ref="formData1" :model="insertform" label-position="top">
        <el-form-item
          :label="$t('operatManage.tokentoolObj.token')"
          :label-width="formLabelWidth"
@@ -197,6 +198,7 @@
          <el-input
            v-model="insertform.token"
            :placeholder="$t('common.pleaseInput')"
            style="width:85%"
          />
        </el-form-item>
        <el-form-item
@@ -206,6 +208,7 @@
          <el-input
            v-model="insertform.duration"
            :placeholder="$t('common.pleaseInput')"
            style="width:85%"
          />
        </el-form-item>
        <el-form-item
@@ -214,7 +217,7 @@
        >
          <el-select
            :popper-append-to-body="false"
            style="width: 94.2%"
            style="width:85%"
            v-model="insertform.type"
            :placeholder="$t('common.choose')"
          >
@@ -235,10 +238,11 @@
          <el-input
            v-model="insertform.ip"
            :placeholder="$t('common.pleaseInput')"
            style="width:85%"
          />
        </el-form-item>
      </el-form>
        </div>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="insertFromDataClose">{{
          $t("common.close")
@@ -251,10 +255,11 @@
    <!-- 修改弹窗 -->
    <el-dialog
      :title="$t('operatManage.tokentoolObj.editToken')"
      style="overflow: hidden"
      top="2vh"
      :visible.sync="EditFormdialog"
    >
      <el-form ref="formData1" :model="insertform">
     <div style="height: 500px; overflow: auto">
      <el-form ref="formData1" :model="insertform" label-position="top">
        <el-form-item
          :label="$t('operatManage.tokentoolObj.token')"
          :label-width="formLabelWidth"
@@ -262,6 +267,7 @@
          <el-input
            v-model="upform.token"
            :placeholder="$t('common.pleaseInput')"
            style="width:85%"
          />
        </el-form-item>
        <el-form-item
@@ -271,6 +277,7 @@
          <el-input
            v-model="upform.duration"
            :placeholder="$t('common.pleaseInput')"
            style="width:85%"
          />
        </el-form-item>
        <el-form-item
@@ -279,7 +286,7 @@
        >
          <el-select
            :popper-append-to-body="false"
            style="width: 94.2%"
            style="width:85%"
            v-model="upform.edit"
            @change="changeGame"
            :placeholder="$t('common.choose')"
@@ -301,9 +308,11 @@
          <el-input
            v-model="upform.ip"
            :placeholder="$t('common.pleaseInput')"
            style="width:85%"
          />
        </el-form-item>
      </el-form>
     </div>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="editFromDataClose">{{
src/views/maintenance/userManagement.vue
@@ -264,7 +264,7 @@
    <el-dialog
      width="910px"
      top="15vh"
       top="2vh"
      :title="
        behavior == '新增用户'
          ? `${$t('common.append')}`
@@ -273,11 +273,13 @@
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
     <div style="height: 500px; overflow: auto">
      <el-form
        :model="editForm"
        ref="editForm"
        :rules="rules"
        style="display: flex"
      >
        <div>
          <el-form-item
@@ -526,6 +528,7 @@
          </el-form-item>
        </div>
      </el-form>
       </div>
      <div
        v-if="behavior == '修改信息'"
        slot="footer"
@@ -566,16 +569,18 @@
      </div>
    </el-dialog>
    <el-dialog
      width="520px"
      top="30vh"
      top="2vh"
      :title="$t('common.changepassWord')"
      :visible.sync="resetPwd"
      :before-close="handleClose"
    >
      <el-form
        :model="pwdForm"
        ref="pwdForm"
        :rules="rules"
        label-position="top"
      >
        <el-form-item
          prop="adminPwd"
@@ -587,6 +592,7 @@
            v-model="pwdForm.adminPwd"
            autocomplete="off"
            show-password
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -599,6 +605,7 @@
            v-model="pwdForm.newPwd"
            autocomplete="off"
            show-password
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -611,9 +618,11 @@
            v-model="pwdForm.checkPwd"
            autocomplete="off"
            show-password
            style="width:85%"
          ></el-input>
        </el-form-item>
      </el-form>
      <div
        slot="footer"
        class="dialog-footer"
@@ -961,14 +970,14 @@
    },
    handleNodeClickto(data, node, nodeData) {
      this.queryForm.depid = data.id;
      this.queryForm.depid = data.code;
      this.queryForm.depName = data.name;
    },
    //搜索按钮
    queryInfo() {
      let searchData = {
        uname: this.queryForm.uname.trim(),
        depid: this.queryForm.depid,
        depcode: this.queryForm.depid,
        pageIndex: this.pageIndex,
        pageSize: this.pageSize,
      };
src/views/userManage/authorityManage.vue
@@ -148,10 +148,10 @@
        </el-pagination>
      </div>
    </div>
<div class="infoBox_box" v-show="showinfoBox">
    <div
      class="infoBox subpage_Div box_div"
      v-show="showinfoBox"
    >
      <el-card class="box-card">
        <div
@@ -207,10 +207,12 @@
        </div>
      </el-card>
    </div>
</div>
    <el-dialog
      :title="dialogTitle"
      :visible.sync="isTransfer"
      width="800px"
      top="2vh"
      append-to-body
    >
      <el-tree
@@ -237,9 +239,10 @@
      :title="$t('userManage.userInfoObj.addPermission')"
      style="overflow: hidden"
      :visible.sync="InsertFormdialog"
      width="30%"
      top="2vh"
    >
      <el-form :model="insertform">
      <el-form :model="insertform" label-position="top">
        <el-form-item
          :label="$t('userManage.userInfoObj.name')"
          :label-width="formLabelWidth"
@@ -247,6 +250,7 @@
          <el-input
            v-model="insertform.name"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -256,6 +260,7 @@
          <el-input
            v-model="insertform.tag"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -265,9 +270,11 @@
          <el-input
            v-model="insertform.bak"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
      </el-form>
      <div
        slot="footer"
        class="dialog-footer"
@@ -285,29 +292,28 @@
    </el-dialog>
    <el-dialog
      :title="$t('userManage.userInfoObj.editPermission')"
      style="overflow: hidden"
      :visible.sync="EditFormdialog"
      :before-close="EditFromDataClose"
      width="30%"
      top="2vh"
    >
      <el-form :model="upform">
      <el-form :model="upform" label-position="top">
        <el-form-item
          :label="$t('userManage.userInfoObj.name')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.name"></el-input>
          <el-input v-model="upform.name" style="width:85%"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('userManage.userInfoObj.tag')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.tag"></el-input>
          <el-input v-model="upform.tag" style="width:85%"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('userManage.userInfoObj.bak')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.bak"></el-input>
          <el-input v-model="upform.bak" style="width:85%"></el-input>
        </el-form-item>
      </el-form>
      <div
src/views/userManage/orgManage.vue
@@ -14,7 +14,7 @@
            node-key="id"
            :data="depList"
            :expand-on-click-node="false"
            :default-expand-all="true"
            :default-expanded-keys=openKey
            @node-click="handleNodeClick"
          >
          </el-tree>
@@ -79,7 +79,7 @@
        <div class="form_box">
          <el-divider class="eldivider" />
          <el-form
            style="min-height: 600px;overflow-y: auto;height: 500px;margin-top: 25px;"
            style="margin-top: 25px;  position: relative;"
            :model="itemdetail"
            ref="itemdetail"
            :rules="rules"
@@ -219,15 +219,17 @@
    </div>
    <el-dialog
      width="30%"
      top="5vh"
      top="2vh"
      :title="$t('common.append')"
      :visible.sync="dialogFormVisible"
    >
     <div style="height: 500px; overflow: auto">
      <el-form
        :model="ruleForm"
        ref="ruleForm"
        :rules="rules"
        label-position="top"
      >
        <el-form-item
          prop="name"
@@ -237,6 +239,7 @@
          <el-input
            v-model="ruleForm.name"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -246,6 +249,7 @@
          <el-input
            v-model="ruleForm.sname"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -255,6 +259,7 @@
          <el-input
            v-model="ruleForm.code"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -264,6 +269,7 @@
          <el-input
            v-model="ruleForm.uncode"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -273,6 +279,7 @@
          <el-input
            v-model="ruleForm.addr"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -282,6 +289,7 @@
          <el-input
            v-model="ruleForm.contact"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -291,6 +299,7 @@
          <el-input
            v-model="ruleForm.fax"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -300,6 +309,7 @@
          <el-input
            v-model="ruleForm.email"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -309,6 +319,7 @@
          <el-input
            v-model="ruleForm.post"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -318,6 +329,7 @@
          <el-input
            v-model="ruleForm.website"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -327,9 +339,11 @@
          <el-input
            v-model="ruleForm.bak"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
      </el-form>
       </div>
      <div
        slot="footer"
        class="dialog-footer"
@@ -428,6 +442,7 @@
        name: [{ required: true, validator: validName, trigger: 'blur' }],
      },
      newNode: null,
      openKey: [1],
    };
  },
  methods: {
@@ -446,7 +461,7 @@
              this.$refs.tree.setCurrentKey(this.itemdetail.id);
            });
          }
        } else {
          this.$notify.error({
            title: res.code,
@@ -623,6 +638,7 @@
        .then(() => {
          //兄弟重新排序
          const parent = node.parent;
          this.openKey.push(parent.id)
          const children = parent.data.children || parent.data;
          children.splice(data.orderNum - 1, 1);
          children.forEach((item, index) => {
@@ -637,7 +653,6 @@
            updateDepTrees(children),
          ])
            .then((res) => {
              console.log(res);
              if (res[0].code == 200 && res[1].code == 200) {
                this.$message({
                  type: 'success',
@@ -767,6 +782,7 @@
        });
    },
    handleNodeClick(data, node) {
      this.openKey.push(data.id)
      this.newNode = node
      this.backUpData = JSON.stringify(data);
      this.itemdetail = JSON.parse(JSON.stringify(data));
@@ -848,6 +864,9 @@
    //   }
    // }
  },
  beforeDestroy() {
    this.openKey = [1]
  }
};
</script>
<style lang="less" scoped>
@@ -884,4 +903,10 @@
    }
  }
}
.btnBox{
  position: absolute;
  bottom: 0;
  right: 0;
}
</style>
src/views/userManage/resourceManage.vue
@@ -144,10 +144,10 @@
      </el-pagination>
    </div>
    </div>
     <div class="infoBox_box" v-show="showinfoBox">
    <div
      class="infoBox box_div "
      v-show="showinfoBox"
    >
      <div
        slot="header"
@@ -236,10 +236,11 @@
      </div>
    </div>
     </div>
    <el-dialog
      :title="dialogTitle"
      :visible.sync="isTransfer"
      width="800px"
       top="2vh"
      append-to-body
    >
      <el-tree
@@ -266,9 +267,10 @@
      :title="$t('userManage.resManageObj.addResource')"
      style="overflow: hidden"
      :visible.sync="InsertFormdialog"
      top="3%"
      top="2vh"
    >
      <el-form :model="insertform">
     <div style="height: 500px; overflow: auto">
      <el-form :model="insertform" label-position="top">
        <el-form-item
          :label="$t('userManage.resManageObj.name')"
          :label-width="formLabelWidth"
@@ -276,6 +278,7 @@
          <el-input
            v-model="insertform.name"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -285,6 +288,7 @@
          <el-input
            v-model="insertform.server"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -294,6 +298,7 @@
          <el-input
            v-model="insertform.source"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -304,7 +309,7 @@
            :popper-append-to-body="false"
            v-model="insertform.depValue"
            placeholder="请选择"
            style="width:92.5%"
            style="width:85%"
          >
            <el-option
              :value="insertform.depid"
@@ -339,7 +344,7 @@
            :popper-append-to-body="false"
            v-model="insertform.dirValue"
            placeholder="请选择"
            style="width:92.5%"
            style="width:85%"
          >
            <el-option
              :value="insertform.dirid"
@@ -364,18 +369,26 @@
          <el-input
            v-model="insertform.descr"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('userManage.resManageObj.img')"
          :label-width="formLabelWidth"
        >
          <el-input
         <div class="BoxFlex">
           <div class="BoxFlexinput">
             <el-input
            v-model="insertform.img"
            disabled
            autocomplete="off"
            style="width:100%"
          ></el-input>
          <input
          </div>
           <div class="BoxFlexbutton">
             <input
            name="file1"
            :accept="'.jpg,.png'"
            type="file"
@@ -384,18 +397,21 @@
            style="display: none"
            @change="insertFile"
          />
          <el-link
              <el-link
            :title="$t('common.append')"
            :underline="false"
            @click="getIsertFile"
            style="margin-left: 10px"
            style="margin-left: 6px"
          ><i class="el-icon-plus"></i></el-link>
          <el-link
            :title="$t('common.upload')"
            :underline="false"
            @click="setUploadFile(0)"
            style="margin-left: 10px"
          ><i class="el-icon-upload2"></i></el-link>
           </div>
         </div>
        </el-form-item>
        <el-form-item
          :label="$t('userManage.resManageObj.bak')"
@@ -404,10 +420,12 @@
          <el-input
            v-model="insertform.bak"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
      </el-form>
     </div>
      <div
        slot="footer"
        class="dialog-footer"
@@ -429,11 +447,13 @@
    </el-dialog>
    <el-dialog
      :title="$t('userManage.userInfoObj.editPermission')"
      style="overflow: hidden"
      :visible.sync="EditFormdialog"
      :before-close="EditFromDataClose"
      top="2vh"
    >
      <el-form :model="upform">
        <div style="height: 500px; overflow: auto">
      <el-form :model="upform" label-position="top">
        <el-form-item
          :label="$t('userManage.resManageObj.name')"
          :label-width="formLabelWidth"
@@ -441,6 +461,7 @@
          <el-input
            v-model="upform.name"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -450,6 +471,7 @@
          <el-input
            v-model="upform.server"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -459,6 +481,7 @@
          <el-input
            v-model="upform.source"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -469,7 +492,7 @@
            :popper-append-to-body="false"
            v-model="upform.depValue"
            placeholder="请选择"
            style="width:92.5%"
            style="width:85%"
          >
            <el-option
              :value="upform.depid"
@@ -504,7 +527,7 @@
            :popper-append-to-body="false"
            v-model="upform.dirValue"
            placeholder="请选择"
            style="width:92.5%"
            style="width:85%"
          >
            <el-option
              :value="upform.dirid"
@@ -539,17 +562,24 @@
          <el-input
            v-model="upform.descr"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('userManage.resManageObj.img')"
          :label-width="formLabelWidth"
        >
         <div class="BoxFlex">
            <div class="BoxFlexinput">
          <el-input
            v-model="upform.img"
            disabled
            autocomplete="off"
             style="width:100%"
          ></el-input>
            </div>
 <div class="BoxFlexbutton">
          <input
            name="file1"
            :accept="'.jpg,.png'"
@@ -571,6 +601,8 @@
            @click="setUploadFile(1)"
            style="margin-left: 10px"
          ><i class="el-icon-upload2"></i></el-link>
 </div>
         </div>
        </el-form-item>
        <el-form-item
          :label="$t('userManage.resManageObj.bak')"
@@ -579,10 +611,12 @@
          <el-input
            v-model="upform.bak"
            autocomplete="off"
            style="width:85%"
          ></el-input>
        </el-form-item>
      </el-form>
        </div>
      <div
        slot="footer"
        class="dialog-footer"
@@ -1093,7 +1127,7 @@
  .power_quire {
    padding: 8px;
     margin-top: 20px;
    margin-top: 20px;
    border-radius: 5px;
src/views/userManage/roleManage.vue
@@ -231,16 +231,20 @@
          width="200"
        >
          <template slot-scope="scope">
             <el-button
            type="primary"
              @click="showDetail(scope.$index, scope.row)"
              size="small"
              plain
            >{{ $t("common.see") }}</el-button>
            <el-button
              v-if="menuStatus.update"
              type="warning"
              @click="handleEdit(scope.$index, scope.row)"
              size="small"
              plain
            >{{ $t("common.update") }}</el-button>
            <el-button
              @click="showDetail(scope.$index, scope.row)"
              size="small"
            >{{ $t("common.see") }}</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -263,18 +267,19 @@
    <el-dialog
      :title="$t('userManage.RM.insertRole')"
      top="15vh"
      width="50vh"
      top="2vh"
      style="overflow: hidden"
      :visible.sync="InsertFormdialog"
    >
      <el-form :model="insertform">
        <div style="height: 500px; overflow: auto">
      <el-form :model="insertform" label-position="top">
        <el-form-item
          :label="$t('userManage.RM.roleName')"
          :label-width="formLabelWidth"
        >
          <el-input
            style="width: 95%"
             style="width:85%"
            v-model="insertform.name"
            autocomplete="off"
          ></el-input>
@@ -289,7 +294,7 @@
            :popper-append-to-body="false"
            v-model="insertform.depValue"
            placeholder="请选择"
            style="width: 95%"
             style="width:85%"
          >
            <el-option
              :value="insertform.depid"
@@ -322,7 +327,7 @@
          :label-width="formLabelWidth"
        >
          <el-input
            style="width: 95%"
            style="width:85%"
            v-model="insertform.descr"
            autocomplete="off"
          ></el-input>
@@ -345,12 +350,13 @@
          :label-width="formLabelWidth"
        >
          <el-input
            style="width: 95%"
             style="width:85%"
            v-model="insertform.bak"
            autocomplete="off"
          ></el-input>
        </el-form-item>
      </el-form>
        </div>
      <div
        slot="footer"
        class="dialog-footer"
@@ -372,12 +378,11 @@
    </el-dialog>
    <el-dialog
      :title="$t('userManage.RM.updateRole')"
      top="15vh"
      width="50vh"
      style="overflow: hidden"
      top="2vh"
      :visible.sync="UpdateFormdialog"
    >
      <el-form :model="updateform">
        <div style="height: 500px; overflow: auto">
      <el-form :model="updateform" label-position="top">
        <el-form-item
          :label="$t('userManage.RM.roleName')"
          :label-width="formLabelWidth"
@@ -385,6 +390,7 @@
          <el-input
            v-model="updateform.name"
            autocomplete="off"
             style="width:85%"
          ></el-input>
        </el-form-item>
@@ -397,7 +403,7 @@
            :popper-append-to-body="false"
            v-model="updateform.depValue"
            placeholder="请选择"
            style="width: 95%"
             style="width:85%"
          >
            <el-option
              :value="updateform.depid"
@@ -446,6 +452,7 @@
          <el-input
            v-model="updateform.descr"
            autocomplete="off"
             style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -455,9 +462,11 @@
          <el-input
            v-model="updateform.bak"
            autocomplete="off"
             style="width:85%"
          ></el-input>
        </el-form-item>
      </el-form>
        </div>
      <div
        slot="footer"
        class="dialog-footer"
@@ -497,10 +506,10 @@
        >取消</el-button>
      </div>
    </div>
<div class="infoBox_box" v-show="showinfoBox">
    <div
      class="infoBox box_div subpage_Div"
      v-show="showinfoBox"
    >
      <div
        slot="header"
@@ -566,6 +575,7 @@
        <el-divider></el-divider>
      </div>
    </div>
</div>
  </div>
</template>
src/views/userManage/templateManage.vue
@@ -172,19 +172,20 @@
          : `${$t('common.update')}`
      "
      :visible.sync="dialogVisible"
      width="50%"
      top="2vh"
      :before-close="handleClose"
      :show-close="false"
    >
      <div>
      <div style="height: 500px; overflow: auto">
        <el-form
          ref="form"
          :model="editForm"
          label-width="100px"
          label-position="top"
        >
          <el-form-item :label="$t('dataManage.styleObj.name')">
            <el-input
              style="width:100%"
              style="width:85%"
              v-model=" editForm.name"
            ></el-input>
          </el-form-item>
@@ -194,7 +195,7 @@
              v-model="editForm.type"
              @change="selFileTypeChange"
              placeholder="请选择活动区域"
              style="width:100%"
              style="width:85%"
            >
              <el-option
                label="World模板"
@@ -213,7 +214,7 @@
            ></el-input> -->
            <el-select
              :popper-append-to-body="false"
              style="width:100%"
              style="width:85%"
              v-model="editForm.code"
              placeholder="请选择"
            >
@@ -236,7 +237,7 @@
                  style="width:100%"
                ></el-input>
              </div>
              <div>
              <div class="BoxFlexbutton">
                <input
                  name="file1"
                  type="file"
@@ -264,7 +265,7 @@
          </el-form-item>
          <el-form-item :label="$t('common.bak')">
            <el-input
              style="width:100%"
              style="width:85%"
              v-model="editForm.bak"
            ></el-input>
          </el-form-item>
@@ -301,9 +302,10 @@
        >确 定</el-button>
      </div>
    </el-dialog>
      <div class="infoBox_box" v-show="showinfoBox">
    <div
      class="infoBox subpage_Div box_div"
      v-show="showinfoBox"
    >
      <div
@@ -370,6 +372,7 @@
      </div>
    </div>
      </div>
    <iframe
      id="downFrame"
      src=""
@@ -808,14 +811,7 @@
      }
    }
  }
  .BoxFlex {
    display: flex;
    justify-content: space-around;
    width: 100%;
    .BoxFlexinput {
      flex: 1;
    }
  }
}
</style>