管道基础大数据平台系统开发-【前端】-新系統界面
王旭
2023-05-10 7a0c7de021aebbef3ec137f2f94ff73ab41014d7
Merge branch 'master' of http://192.168.20.39:8989/r/LFWEB_NEW

# Conflicts:
# src/assets/lang/en.js
# src/assets/lang/zh.js
# src/views/datamanage/dictionaryManage.vue
# src/views/datamanage/layerManagement.vue
已修改14个文件
523 ■■■■ 文件已修改
src/api/api.js 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/en.js 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/zh.js 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/mapsdk.vue 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/navMenu.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/preview_map.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/PackageTwo/WareInspection.vue 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Synthesis/LeftMenu.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/LayerTree.vue 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/maplayer.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/dictionaryManage.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/layerManagement.vue 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/uploadmanage.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/exportMap/index.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/api.js
@@ -547,6 +547,16 @@
export function inquiry_SelectTabs(params) {
  return request.get('/inquiry/selectTabs', { params: params });
}
//综合展示=>查询=>下载瓦片
export function inquiry_downloadTiles(params) {
  return service.post('/inquiry/downloadTiles', params);
}
//运维管理=>用户管理=>获取列表
export function userSelectByPageAndCount(params) {
  return request.get('/user/selectByPageAndCount', { params: params });
@@ -618,8 +628,6 @@
export function dataUpload_selectPageAndCountByPid(params) {
  return request.get('/dataUpload/selectPageAndCountByPid', { params: params });
}
//数据上传=删除数据
src/assets/lang/en.js
@@ -76,10 +76,10 @@
    dataStatistics: 'data Statistics',
    layerManage: 'Layer Management',
    layerObj: {
      menuName: 'Menu name',
      menuType: 'Menu type',
      layerName: 'Layer name',
      layerType: 'Layer type',
      menuName: 'menu name',
      menuType: 'Menu Type',
      menuName: 'Layer Name',
      menuType: 'Layer Type',
      serviceName: 'service name',
      serviceType: 'service type',
      serviceAddress: 'Service Address',
@@ -88,6 +88,15 @@
      dataType: 'data type',
      istrue: 'true',
      isfalse: 'false',
      enTableName: 'English Table Name',
      prompt1: 'Please enter a layer name',
      prompt2: 'Please select a layer type',
      prompt3: 'Please select a service type',
      prompt4: 'Please enter the service address',
      prompt6: 'Please enter the name of the English table (eg: m_geocontrollpoint)',
      prompt7: 'Please enter note information',
      prompt8: 'Please select a data type',
    },
    dataStaticObj: {
src/assets/lang/zh.js
@@ -77,8 +77,8 @@
    layerObj: {
      menuName: '菜单名称',
      menuType: '菜单类型',
      layerName: '图层名称',
      layerType: '图层类型',
      menuName: '图层名称',
      menuType: '图层类型',
      serviceName: '服务名称',
      serviceType: '服务类型',
      serviceAddress: '服务地址',
@@ -87,7 +87,15 @@
      dataType: '数据类型',
      istrue: '是',
      isfalse: '否',
      enTableName: '英文表名称',
      prompt1: '请输入图层名称',
      prompt2: '请选择图层类型',
      prompt3: '请选择服务类型',
      prompt4: '请输入服务地址',
      prompt6: '请输入英文表名称(如:m_geocontrolpoint)',
      prompt7: '请输入备注信息',
      prompt8: '请选择数据类型',
    },
    dataStaticObj: {
      type1: '服务名称',
src/components/mapsdk.vue
@@ -1,5 +1,10 @@
<template>
  <div class="mapBox">
  <div
    class="mapBox"
    v-loading="loading"
    :element-loading-text="loadingText"
    element-loading-background="rgba(0, 0, 0, 0.8)"
  >
    <div id="mapdiv">
      <div
        class="menu_Top box_divm"
@@ -646,6 +651,72 @@
        </div>
      </el-dialog>
      <el-dialog
        title="瓦片下载"
        :append-to-body="false"
        :visible.sync="downTitleFlag"
        :close-on-click-modal="false"
        :show-close="false"
        width="30%"
      >
        <el-form
          :model="ruleForm"
          status-icon
          :rules="rules"
          ref="ruleForm"
          label-width="100px"
          class="demo-ruleForm"
        >
          <el-form-item
            label="名称"
            prop="title"
          >
            <el-input
              v-model="ruleForm.title"
              size="small"
              placeholder="请输入数据名称..."
            ></el-input>
          </el-form-item>
          <el-form-item
            label="密码"
            prop="pass"
          >
            <el-input
              show-password
              type="password"
              v-model="ruleForm.pass"
              autocomplete="off"
              size="small"
              placeholder="请输入密码..."
            ></el-input>
          </el-form-item>
          <el-form-item
            label="确认密码"
            prop="checkPass"
          >
            <el-input
              show-password
              type="password"
              v-model="ruleForm.checkPass"
              autocomplete="off"
              size="small"
              placeholder="确认密码..."
            ></el-input>
          </el-form-item>
          <el-form-item>
            <el-button
              type="primary"
              size="small"
              @click='submitTitleDown("ruleForm")'
            >提交</el-button>
            <el-button
              size="small"
              @click='cannelTitleDown("ruleForm")'
            >取消</el-button>
          </el-form-item>
        </el-form>
      </el-dialog>
      <!--      <div-->
      <!--        @click="changeMenulayer"-->
      <!--        class="center CenDiv"-->
@@ -659,6 +730,11 @@
    </div>
    <model-property ref='modelProperty'></model-property>
    <iframe
      id="downFrame"
      src=""
      style="display: none; border: 0; padding: 0; height: 0; width: 0"
    ></iframe>
  </div>
</template>
@@ -673,7 +749,8 @@
  comprehensive_selectRoute,
  dataLib_selectFiles, dataQuery_selectFields, dataQuery_selectDomains,
  dataQuery_selectByPage,
  comprehensive_selectPubById, comprehensive_selectModelByGuid
  comprehensive_selectPubById, comprehensive_selectModelByGuid, decr,
  encr, inquiry_downloadTiles, sign_getPublicKey
} from '../api/api'
import { getToken } from '@/utils/auth'
@@ -701,6 +778,35 @@
            }
          }
        }
        callback();
      }
    };
    var checkAge = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('数据名称不能为空'));
      }
      callback();
    };
    var validatePass = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请输入密码'));
      } else {
        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();
      }
    };
    var validatePass2 = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请再次输入密码'));
      } else if (value !== this.ruleForm.pass) {
        callback(new Error('两次输入密码不一致!'));
      } else {
        callback();
      }
    };
@@ -733,6 +839,15 @@
            message: "坐标点经纬度错误,坐标应在[116.xxx, 39.yyy]范围",
          },
        ],
        pass: [
          { validator: validatePass, trigger: 'blur' }
        ],
        checkPass: [
          { validator: validatePass2, trigger: 'blur' }
        ],
        title: [
          { validator: checkAge, trigger: 'blur' }
        ]
      },
      bufFrom: {
        val: 50,
@@ -786,6 +901,15 @@
      valueX: 0,
      valueY: 0,
      terrainflag: false,
      downTitleFlag: false,
      downTitleData: null,
      ruleForm: {
        pass: '',
        checkPass: '',
        title: ''
      },
      loadingText: '',
      loading: false,
    };
  },
  mounted() {
@@ -812,13 +936,72 @@
    });
    //模型捕捉
    this.catchmodel()
    this.$bus.$on("titleDown", res => {
      this.setDownLoadTitle(res);
    })
    window.localStorage.setItem('slider_x', this.valueX);
    window.localStorage.setItem('slider_y', this.valueY);
    window.localStorage.setItem('slider_z', this.valueZ);
  },
  methods: {
    setDownLoadTitle(res) {
      this.signGetPublicKey()
      this.downTitleFlag = true;
      this.downTitleData = res;
    },
    async signGetPublicKey() {
      const res = await sign_getPublicKey()
      if (res && res.code == 200) {
        window.encrypt = new JSEncrypt()
        encrypt.setPublicKey(res.result)
      }
    },
    submitTitleDown(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.downTitleData.title = this.ruleForm.title
          // this.downTitleData.pwd = encr(this.ruleForm.pass)
          this.downTitleData.pwd = encrypt.encrypt(this.ruleForm.pass)
          this.getDownLoadTile(this.downTitleData);
          this.cannelTitleDown();
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    async getDownLoadTile(res) {
      this.loading = true;
      this.loadingText = "数据下载中,请稍等..."
      $.ajax({
        url: BASE_URL + "/inquiry/downloadTiles?token=" + getToken(),
        type: "POST",
        data: JSON.stringify(res),
        dataType: 'json', // html、json、jsonp、script、text
        contentType: "application/json", // "application/x-www-form-urlencoded"
        success: (data) => {
          var token = getToken()
          var url = BASE_URL + "/dataLib/downloadFile?token=" + token + "&guid=" + data.result + "&pwd=" + res.pwd;
          $("#downFrame").attr("src", url).click();
          this.loading = false;
          this.loadingText = ""
        },
        error: function (e) {
        }
      });
    },
    cannelTitleDown(formName) {
      this.downTitleFlag = false;
      // this.$refs[formName].resetFields();
      this.ruleForm = {
        pass: '',
        checkPass: '',
        title: ''
      }
    },
    catchmodel() {
      var that = this;
      window.pickedFeature;
src/components/navMenu.vue
@@ -152,9 +152,13 @@
    document.body.addEventListener('click', () => {
      this.showFlag = null;
    }, false);
  },
  computed: {},
  methods: {
    closeSecondMenu() {
      this.showFlag = null
    },
    themeChange() {
      this.$store.state.themeflag = !this.$store.state.themeflag;
      if (this.$store.state.themeflag == true) {
src/components/preview_map.vue
@@ -917,7 +917,23 @@
      if (this.$store.state.previewLayer) {
        var res = this.$store.state.previewLayer;
        var type = res.type;
        if (res.url.indexOf('.png') != -1) {
        if (type == 'DEM') {
          window.terrainLayer.deleteObject();
          window.terrainLayer = null;
          window.terrainLayer = new Cesium.CesiumTerrainProvider({
            url: res.url
          });
          Viewer.terrainProvider = window.terrainLayer
          Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(113.229279, 31.215949, 1000),
            orientation: {
              heading: 6.08434611923462,
              pitch: Cesium.Math.toRadians(-45.0),
              roll: 0.0
            }
          });
        } else if (res.url.indexOf('.png') != -1) {
          var wkt = this.$wkt.parse(res.geom);
          var height = this.getHeight(wkt.coordinates[2])
          window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider(
@@ -929,7 +945,7 @@
          Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height),
          });
        } else if (res.url.indexOf('.json') != -1) {
        } else if (type == '3dml') {
          if (this.app.tileset) viewer.scene.primitives.remove(this.app.tileset);
          this.app.tileset = this.createTileset(res);
          var that = this;
src/views/PackageTwo/WareInspection.vue
@@ -1,8 +1,11 @@
<!--入库质检--->
<template>
  <div class="wareBox">
  <div
    class="wareBox"
    id="wareBox"
  >
    <iframe
      id="ifream"
      id="iframeContainer"
      style="border:none"
      width="100%"
      height="100%"
@@ -10,7 +13,8 @@
    ></iframe>
  </div>
</template>
<script>
import { getToken } from "@/utils/auth";
export default {
@@ -38,15 +42,18 @@
    }
  },
  methods: {
    closeNaveMenu() {
      this.$bus.$emit('closeNaveMenu', true)
    },
    langreash(res) {
       this.$router.push('/QualityInspection')
      this.$router.push('/QualityInspection')
    },
    refreash(res) {
     this.$router.push('/QualityInspection')
      this.$router.push('/QualityInspection')
    },
    showChangeIfream(res) {
      // 
@@ -89,9 +96,9 @@
    setLiClick(res, index) {
      var timer = setTimeout(function () {
        if (res.indexOf('http') != -1) {
            this.$store.reporturl = res;
            // sessionStorage.setItem('iframehttpurl', this.$store.reporturl)
            this.$router.push('/QualityInspection');
          this.$store.reporturl = res;
          // sessionStorage.setItem('iframehttpurl', this.$store.reporturl)
          this.$router.push('/QualityInspection');
          // if (location.href.indexOf('/WareInspection') == -1) {
          //   this.$store.reporturl = res.url;
          //   this.$router.push('/WareInspection');
@@ -114,10 +121,20 @@
    },
  },
  mounted() {
    // console.log(sessionStorage.getItem('iframehttpurl'))
    //
    // var iframe = document.getElementById('iframeContainer');
    // iframe.onload = function (res) {
    // }
    // $('#iframeContainer').click = function () {
    //   console.log('点击了iframe页面')
    //   // if (window.sessionStorage.getItem('xxxLastTime') !== null) {
    //   //   window.sessionStorage.setItem('xxxLastTime', new Date().getTime())
    //   // }
    // };
    if (sessionStorage.getItem('routerName') === '/WareInspection') {
      this.showChangeIfream(sessionStorage.getItem('iframehttpurl'))
      this.setLiClick(sessionStorage.getItem('iframehttpurl'))
src/views/Synthesis/LeftMenu.vue
@@ -441,6 +441,12 @@
            name: "地下模式",
            css: "twoMenu_imge29",
          },
          {
            id: "b10",
            label: "synthesis.undergroundMode",
            name: "瓦片下载",
            css: "twoMenu_imge29",
          },
        ],
        [
          {
src/views/Tools/LayerTree.vue
@@ -126,6 +126,14 @@
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;钻孔柱状图
      </div>
      <div
        class="edit"
        v-show="shwoTitle"
        @click="tileDownload()"
      >
        <i class="el-icon-download"></i>&nbsp;&nbsp;瓦片下载
      </div>
      <!-- <div
        class="edit"
        v-show="showModelAttach"
@@ -220,6 +228,7 @@
  perms_selectLayers, inquiry_selectDomains, comprehensive_selectPubById,
  project_selectDirAll, project_selectByDirid, dataQuerySelectWktById
} from "../../api/api.js";
import { conditions } from '../Archive/Archive.js';
export default {
  name: "tree",
  components: { queryinfo },
@@ -271,11 +280,47 @@
      mptLayer: [],
      optionts: [],
      proValue: null,
      setCheeckedLayer: []
      setCheeckedLayer: [],
      shwoTitle: false,
    };
  },
  methods: {
    //瓦片下载
    tileDownload() {
      var that = this;
      this.menuVisible = false
      sgworld.Creator.createSimpleGraphic(
        "rectangle",
        {},
        function (entity) {
          that.getTileRectangle(entity);
          sgworld.Creator.SimpleGraphic.clear()
        }
      );
    },
    getTileRectangle(res) {
      var value = res.rectangle.coordinates.getValue();
      var val = {
        pubid: this.currentData.pubid,
        pwd: "",
        title: "",
        xmax: Cesium.Math.toDegrees(
          value.east
        ),
        xmin: Cesium.Math.toDegrees(
          value.west
        ),
        ymax: Cesium.Math.toDegrees(
          value.north
        ),
        ymin: Cesium.Math.toDegrees(
          value.south
        )
      }
      this.$bus.$emit("titleDown", val)
    },
    //转孔柱状图
    async histogram() {
      this.menuVisible = false
@@ -325,10 +370,14 @@
      this.currentNode = Node;
      this.$store.state.propertiesName = this.currentData;
      if (this.currentData.serveType == "Tileset") {
      this.showModelAttach = false;
      this.shwoTitle = false;
      if (this.currentData.serveType == 'TMS') {
        this.shwoTitle = true
      } else if (this.currentData.serveType == "Tileset") {
        this.showModelAttach = true;
      } else {
        this.showModelAttach = false;
      }
      if (this.currentData.enName == "s_explorationpoint") {
        this.shwoHistogram = true;
@@ -1081,7 +1130,15 @@
      let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
      return cloneData.filter((father) => {
        // 循环所有项
        let branchArr = cloneData.filter((child) => father.id == child.pid); // 对比ID,分别上下级菜单,并返回数据
        let branchArr = cloneData.filter((child) => father.id == child.pid);
        if (branchArr.length > 0) {
          branchArr.sort(function (a, b) {
            return a.orderNum - b.orderNum
          })
        }
        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;
        // 由此循环多次后,就能形成相应的树形数据结构
@@ -1391,7 +1448,9 @@
    if (this.$store.state.showAllLayers == true) {
      this.layersStart();
      this.$store.state.showAllLayers = false;
    } else {
      this.treeData = this.$store.state.treeData;
      this.$refs.tree.setCheckedKeys(this.$store.state.checkedKeys);
    }
src/views/Tools/maplayer.vue
@@ -5,14 +5,13 @@
      v-for="(data, index) in PopupData"
      :key="data.id"
      title="图层管理"
      :maxHeight="data.maxHeight || '400px'"
      :maxHeight="data.maxHeight || '700px'"
      @close="close(data.id)"
      :left="data.left || left"
      :top="data.top || top + index * 42 + 'px'"
      :top="data.top || top + index * 30 + 'px'"
    >
      <div>
      <div id="eagleMapContainer">
        <div
          id="eagleMapContainer"
          style="width:300px;height:400px;"
          v-drag
          @mousedown="dragEagle"
src/views/datamanage/dictionaryManage.vue
@@ -472,7 +472,8 @@
              v-model="insertform.tab"
              autocomplete="off"
              style="width:85%"
                 :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetableName')"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetableName')"
              disabled
            ></el-input>
          </el-form-item>
          <el-form-item
@@ -720,7 +721,8 @@
    //修改详情弹框
    handleEdit(index, row) {
      this.dialogFormVisible = true;
      this.upform = row;
      var val = JSON.parse(JSON.stringify(row))
      this.upform = val;
    },
    //删除列表
    DelFormData() {
src/views/datamanage/layerManagement.vue
@@ -12,8 +12,11 @@
        style="border: 1px solid #dcdfe6;"
      >
        <div>
          <el-input v-model="filterText" suffix-icon="el-icon-search" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuelayerName')">
          </el-input>
          <el-input
            v-model="filterText"
            :placeholder="$t('dataManage.layerObj.prompt1')"
            suffix-icon="el-icon-search"
          ></el-input>
          <el-tree
            ref="tree"
@@ -105,18 +108,20 @@
            <!-- 菜单名称 -->
            <el-form-item :label="$t('dataManage.layerObj.layerName')">
              <el-input
                :placeholder="$t('dataManage.layerObj.prompt1')"
                style="width: 60%;"
                v-model="formInline.cnName"
                 :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuelayerName')"
              ></el-input>
            </el-form-item>
            <!-- 菜单类型 -->
            <el-form-item :label="$t('dataManage.layerObj.layerType')">
              <el-select
                :placeholder="$t('dataManage.layerObj.prompt2')"
                clearable
                style="width: 60%;"
                v-model="formInline.type"
                 :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuelayerType')"
              >
                <el-option
                  label="目录"
@@ -137,7 +142,7 @@
                clearable
                style="width: 60%;"
                v-model="formInline.serveType"
                :placeholder="$t('dataManage.layerObj.prompt3')"
              >
                <el-option
                  v-for="item in serveType"
@@ -154,8 +159,20 @@
              :label="$t('dataManage.layerObj.serviceAddress')"
            >
              <el-input
                :placeholder="$t('dataManage.layerObj.prompt4')"
                style="width: 60%;"
                v-model="formInline.url"
              ></el-input>
            </el-form-item>
            <!-- 英文表名 -->
            <el-form-item
              v-show="formInline.type == 2 && formInline.serveType =='WMS'"
              :label="$t('dataManage.layerObj.enTableName')"
            >
              <el-input
                :placeholder="$t('dataManage.layerObj.prompt6')"
                style="width: 60%;"
                v-model="formInline.enName"
              ></el-input>
            </el-form-item>
            <!-- 数据类型 -->
@@ -164,7 +181,7 @@
                clearable
                style="width: 60%;"
                v-model="formInline.dataType"
                 :placeholder="$t('shuJuGuanLi.shuJuJianSuo.selectDataType')"
                :placeholder="$t('dataManage.layerObj.prompt8')"
              >
                <el-option
                  v-for="item in dataType"
@@ -208,7 +225,7 @@
              <el-input
                style="width: 60%;"
                v-model="formInline.bak"
                :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueRemarks')"
                :placeholder="$t('dataManage.layerObj.prompt7')"
              ></el-input>
            </el-form-item>
            <el-form-item v-show="menuStatus.update">
@@ -243,7 +260,7 @@
            <el-input
              style="width: 80%;"
              v-model="insertData.cnName"
                :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuelayerName')"
              :placeholder="$t('dataManage.layerObj.prompt1')"
            ></el-input>
          </el-form-item>
          <!-- 菜单类型 -->
@@ -252,7 +269,7 @@
              clearable
              style="width: 80%;"
              v-model="insertData.type"
               :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuelayerType')"
              :placeholder="$t('dataManage.layerObj.prompt2')"
            >
              <el-option
                label="目录"
@@ -273,7 +290,7 @@
              clearable
              style="width: 80%;"
              v-model="insertData.serveType"
              placeholder=" "
              :placeholder="$t('dataManage.layerObj.prompt3')"
            >
              <el-option
                v-for="item in serveType"
@@ -290,8 +307,20 @@
            :label="$t('dataManage.layerObj.serviceAddress')"
          >
            <el-input
              :placeholder="$t('dataManage.layerObj.prompt4')"
              style="width: 80%;"
              v-model="insertData.url"
            ></el-input>
          </el-form-item>
          <!-- 英文表名 -->
          <el-form-item
            v-show="insertData.type == 2 && insertData.serveType =='WMS'"
            :label="$t('dataManage.layerObj.enTableName')"
          >
            <el-input
              :placeholder="$t('dataManage.layerObj.prompt6')"
              style="width: 80%;"
              v-model="insertData.enName"
            ></el-input>
          </el-form-item>
          <!-- 数据类型 -->
@@ -300,7 +329,7 @@
              clearable
              style="width: 80%;"
              v-model="insertData.dataType"
               :placeholder="$t('shuJuGuanLi.shuJuJianSuo.selectDataType')"
              :placeholder="$t('dataManage.layerObj.prompt8')"
            >
              <el-option
                v-for="item in dataType"
@@ -342,9 +371,10 @@
          <!-- 描述 -->
          <el-form-item :label="$t('common.bak')">
            <el-input
              :placeholder="$t('dataManage.layerObj.prompt7')"
              style="width: 80%;"
              v-model="insertData.bak"
                :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueRemarks')"
            ></el-input>
          </el-form-item>
          <el-form-item v-show="menuStatus.update">
@@ -639,13 +669,13 @@
      var val = JSON.parse(JSON.stringify(res))
      var data = this.$refs.tree.getNode(val.id).data;
      this.backUpData = JSON.stringify(data)
      this.currentData = JSON.stringify(data)
      this.formInline = data;
      this.formInline.type = data.type.toString();
      this.formInline.isShow = data.isShow.toString();
      this.formInline.isProject = data.isProject.toString();
      var result = JSON.parse(JSON.stringify(data))
      this.backUpData = JSON.stringify(result)
      this.currentData = JSON.stringify(result)
      this.formInline = result;
      this.formInline.type = result.type.toString();
      this.formInline.isShow = result.isShow.toString();
      this.formInline.isProject = result.isProject.toString();
    },
    //图层列表点击事件
    handleNodeClick(data, node) {
src/views/datamanage/uploadmanage.vue
@@ -460,7 +460,10 @@
              v-model="insertLayer.number"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.vmobj.labe14')">
          <el-form-item
            :label="$t('dataManage.vmobj.labe14')"
            v-show="formInline.type =='DOM'"
          >
            <el-select
              style="width:100%"
              v-model="insertLayer.noData"
@@ -600,6 +603,9 @@
        value: 'DOM',
        label: '影像数据(.tif, .img)'
      }, {
        value: 'DEM',
        label: '高程数据(.tif)'
      }, {
        value: 'MPT',
        label: '场景数据(.mpt)'
      }, {
@@ -728,7 +734,7 @@
        this.$message("请选择要发布的数据")
        return
      }
      if (this.formInline.type == "DOM") {
      if (this.formInline.type == "DOM" || this.formInline.type == "DEM") {
        this.insertLayer.name = this.formInline.dirName;
        this.insertLayer.number = this.multipleSelection.length
        this.insertLayer.noData = '0';
src/views/exportMap/index.vue
@@ -36,7 +36,7 @@
        <el-form-item>
          <el-link
            @click="setMapAddDraw()"
            @click="drawRegularPolygon()"
            :underline="false"
          ><i class="el-icon-edit-outline"></i>绘制</el-link>
        </el-form-item>
@@ -75,13 +75,13 @@
            :underline="false"
          >矢量</el-link>
        </el-form-item>
        <el-form-item label="旋转角度">
        <!-- <el-form-item label="旋转角度">
          <el-input
            v-model="formInline.role"
            placeholder="请输入内容"
            @change="setMapRole"
          ></el-input>
        </el-form-item>
        </el-form-item> -->
      </el-form>
    </div>
    <div
@@ -131,6 +131,12 @@
      >
        <el-form-item label="出图名称">
          <el-input v-model="form.name"></el-input>
        </el-form-item>
        <el-form-item label="旋转角度">
          <el-input
            v-model="formInline.role"
            placeholder="请输入旋转角度(0-360)"
          ></el-input>
        </el-form-item>
        <el-form-item>
          <div style="padding: 1%;  ">
@@ -279,6 +285,8 @@
import TileLayer from "ol/layer/Tile"
import { transform } from "ol/proj"
import Draw, { createRegularPolygon, createBox } from "ol/interaction/Draw.js"
import { OSM, Vector as VectorSource } from "ol/source"
import { Vector as VectorLayer } from "ol/layer"
import LayerVector from "ol/layer/Vector"
@@ -500,7 +508,7 @@
        resolution: "20米",
        date: this.getYMD(),
        layers: res.toString(),
        rotation: 0,
        rotation: this.form.role,
        xmin: this.layerExtent.xmin,
        ymin: this.layerExtent.ymin,
        xmax: this.layerExtent.xmax,
@@ -548,7 +556,53 @@
      }
      this.layerExtent = null
    },
    stopDraw() {
      // if (this.draw !== null) {
      //   this.map.removeInteraction(this.draw)
      // }
      if (this.draw != null) {
        mapView.removeLayer(this.vector)
      }
      this.layerExtent = null
    },
    drawRegularPolygon() {
      this.stopDraw();
      this.source = new VectorSource({ wrapX: false })
      this.vector = new VectorLayer({
        source: this.source,
      })
      mapView.addLayer(this.vector)
      let type = 'Circle'
      let geometryFunction2 = createRegularPolygon(4)
      this.draw = new Draw({
        source: this.source,
        type: type,
        geometryFunction: geometryFunction2
      })
      mapView.addInteraction(this.draw)
      this.draw.on("drawend", e => {
        let feature = e.feature
        let geom = feature.getGeometry()
        var extent = geom.getExtent()
        var a1 = transform([extent[0], extent[1]], "EPSG:3857", "EPSG:4326")
        var a2 = transform([extent[2], extent[3]], "EPSG:3857", "EPSG:4326")
        this.layerExtent = {
          xmin: a1[0],
          ymin: a1[1],
          xmax: a2[0],
          ymax: a2[1],
        }
        mapView.removeInteraction(this.draw)
      })
    },
    //绘制图形
    setMapAddDraw() {
      this.setMapRemoveDraw()