管道基础大数据平台系统开发-【前端】-新系統界面
发布管理添加OSGB,LAS数据类型发布;综合展示页面属性查询,转空柱状图添加按项目分类查询
已修改8个文件
395 ■■■■ 文件已修改
src/assets/lang/en.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/zh.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapSpacePop.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Screen/ProjectTree.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/preview_map.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Synthesis/LeftMenu.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/LayerTree.vue 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/uploadmanage.vue 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/en.js
@@ -206,7 +206,11 @@
      labe11: 'Please enter the minimum level (0 to 22)',
      labe12: 'Please enter the maximum level (0 to 22)',
      labe13: 'Please enter a name',
      labe14: 'Remove invalid values'
      labe14: 'Remove invalid values',
      heightOffset: 'Height offset',
      coordinateSystemID: 'Coordinate System',
      label1: 'Please enter the height offset (-10000~10000)',
      label2: 'Please select a coordinate system'
    },
    dictionaryManage: 'dictionaryManage',
    dictionaryManageObj: {
src/assets/lang/zh.js
@@ -199,7 +199,11 @@
      labe11: '请输入最小级别(0 ~ 22)',
      labe12: '请输入最大级别(0 ~ 22)',
      labe13: '请输入名称',
      labe14: '去除无效值'
      labe14: '去除无效值',
      heightOffset: '高度偏移量',
      coordinateSystemID: '坐标系',
      label1: '请输入高度偏移量(-10000 ~ 10000 )',
      label2: '请选择坐标系'
    },
    dictionaryManage: '字典管理',
    dictionaryManageObj: {
src/components/MapView/mapSpacePop.vue
@@ -466,8 +466,14 @@
      this.formInline.region = this.options[0].value
    },
    setListDataStart() {
      this.listdata.pageSize = 10
      this.listdata.pageIndex = 1
      this.listdata = {
        pageIndex: 1,
        pageSize: 10,
        name: null,
        srid: 4326,
        wkt: null,
        filter: null,
      }
      this.tableData = []
    },
    //初始化查询条件
@@ -613,7 +619,10 @@
      } else {
        this.listdata.filter = null;
      }
      if (this.$store.state.pigCode) {
        this.listdata.dirs = this.$store.state.pigCode;
      }
      const data = await dataQuerySelectByPage(this.listdata)
      if (data.code != 200) {
src/components/Screen/ProjectTree.vue
@@ -434,7 +434,7 @@
        new Cesium.Cesium3DTileset({
          name: res.cnName,
          url: url, //192.168.20.106,to4
          maximumScreenSpaceError: 64, // 最大屏幕空间错误:16
          maximumScreenSpaceError: url.indexOf("/pnts/") > -1 ? 16 : 64, // 最大屏幕空间错误:16
          maximumMemoryUsage: 768, // 最大内存:512
          dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false
          skipLevelOfDetail: true, // 在遍历时候跳过详情:false
src/components/preview_map.vue
@@ -831,7 +831,7 @@
          new Cesium.Cesium3DTileset({
            name: rs.cnName,
            url: url, //192.168.20.106,to4
            maximumScreenSpaceError: 64, // 最大屏幕空间错误:16
            maximumScreenSpaceError: url.indexOf("/pnts/") > -1 ? 16 : 64, // 最大屏幕空间错误:16
            maximumMemoryUsage: 768, // 最大内存:512
            dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false
            skipLevelOfDetail: true, // 在遍历时候跳过详情:false
@@ -991,6 +991,7 @@
        var res = this.$store.state.previewLayer;
        var type = res.type;
        res.ulr = res.url.replace("{host}", iisHost);
        if (type == 'DEM') {
          window.terrainLayer.deleteObject();
          // Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
@@ -1025,12 +1026,13 @@
          Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height),
          });
        } else if (type == '3dml' || type == 'fbx' || type == 'ifc' || type == 'rvt' || type == 'cpt') {
        } else if (type == '3dml' || type == 'fbx' || type == 'ifc' || type == 'rvt'
          || type == 'cpt' || type == 'osgb' || type == 'las' || type == 'laz') {
          if (this.app.tileset) viewer.scene.primitives.remove(this.app.tileset);
          this.app.tileset = this.createTileset(res);
          var that = this;
          this.editModelFlag = true;
          Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) {
            that.setModleLocatin()
@@ -1197,6 +1199,7 @@
    },
    //显隐
    showTileset() {
      if (!this.app.tileset) return;
      this.app.tileset.show = !this.app.tileset.show;
    },
@@ -1212,7 +1215,7 @@
        name: 'tsTest',
        skipLevelOfDetail: true, // 在遍历时候跳过详情:false
        baseScreenSpaceError: 1024,
        maximumScreenSpaceError: 64, // 最大屏幕空间错误:16,数值加大能让最终成像变模糊
        maximumScreenSpaceError: res.url.indexOf("/pnts/") > -1 ? 16 : 64, // 最大屏幕空间错误:16,数值加大能让最终成像变模糊
        skipScreenSpaceErrorFactor: 16,
        skipLevels: 1,
        immediatelyLoadDesiredLevelOfDetail: false,
@@ -1230,7 +1233,7 @@
      });
    },
    setEditModelLayer(res) {
      this.editModelFlag = true;
      if (res.json) {
        var json = JSON.parse(res.json)
        this.modelForm = json;
src/views/Synthesis/LeftMenu.vue
@@ -1729,7 +1729,7 @@
                new Cesium.Cesium3DTileset({
                  name: res.cnName,
                  url: modelUrl + "/tileset/m/SN/tileset.json",
                  maximumScreenSpaceError: 64, // 最大屏幕空间错误:16
                  maximumScreenSpaceError: modelUrl.indexOf("/pnts/") > -1 ? 16 : 64, // 最大屏幕空间错误:16
                  maximumMemoryUsage: 768, // 最大内存:512
                  dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false
                  skipLevelOfDetail: true, // 在遍历时候跳过详情:false
src/views/Tools/LayerTree.vue
@@ -2,52 +2,107 @@
  <div class="lalala tree-container">
    <el-form ref="form">
      <el-form-item>
        <el-select v-model="$store.state.pigCode" clearable filterable style="width :100%" @change="prjChanged"
          placeholder="请选择项目">
          <el-option v-for="item in menus" :key="item.code" :label="item.name" :value="item.code">
        <el-select
          v-model="$store.state.pigCode"
          clearable
          filterable
          style="width :100%"
          @change="prjChanged"
          placeholder="请选择项目"
        >
          <el-option
            v-for="item in menus"
            :key="item.code"
            :label="item.name"
            :value="item.code"
          >
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-input placeholder="输入关键字进行过滤" v-model="filterText" class="search">
        <el-input
          placeholder="输入关键字进行过滤"
          v-model="filterText"
          class="search"
        >
        </el-input>
      </el-form-item>
    </el-form>
    <el-tree ref="tree" :data="treeData" node-key="id" show-checkbox :props="defaultProps" @node-click="handleLeftclick"
      @node-contextmenu="rightClick" @check="handleCheckChange" :default-checked-keys="handleTreeCheck"
      :expand-on-click-node="false" :filter-node-method="filterNode" draggable>
      <span class="slot-t-node"
              slot-scope="{ node, data }">
          <span v-show="!data.isEdit">
            <span :class="[data.id >= 99 ? 'slot-t-node--label' : '']">{{
    <el-tree
      ref="tree"
      :data="treeData"
      node-key="id"
      show-checkbox
      :props="defaultProps"
      @node-click="handleLeftclick"
      @node-contextmenu="rightClick"
      @check="handleCheckChange"
      :default-checked-keys="handleTreeCheck"
      :expand-on-click-node="false"
      :filter-node-method="filterNode"
      draggable
    >
      <span
        class="slot-t-node"
        slot-scope="{ node, 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>
          </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>
        </span>
      </span>
    </el-tree>
    <el-card class="box-card" ref="card" :style="{ ...rightClickMenuStyle }" v-show="menuVisible">
      <div class="edit" @click="showLayerAttribute()" v-if="showProp && !shwoHistogram">
    <el-card
      class="box-card"
      ref="card"
      :style="{ ...rightClickMenuStyle }"
      v-show="menuVisible"
    >
      <div
        class="edit"
        @click="showLayerAttribute()"
        v-if="showProp && !shwoHistogram"
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;属性
      </div>
      <div class="edit" @click="positioning()" v-if="showLocal">
      <div
        class="edit"
        @click="positioning()"
        v-if="showLocal"
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;定位
      </div>
      <div class="edit" @click="pellucidity()" v-if="showOpacity">
      <div
        class="edit"
        @click="pellucidity()"
        v-if="showOpacity"
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;透明度
      </div>
      <div class="edit" @click="histogram()" v-show="shwoHistogram">
      <div
        class="edit"
        @click="histogram()"
        v-show="shwoHistogram"
      >
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;钻孔柱状图
      </div>
      <div class="edit" v-show="shwoTileDown" @click="tileDownload()">
      <div
        class="edit"
        v-show="shwoTileDown"
        @click="tileDownload()"
      >
        <i class="el-icon-download"></i>&nbsp;&nbsp;瓦片下载
      </div>
    </el-card>
@@ -64,7 +119,7 @@
export default {
  name: "tree",
  components: { queryinfo },
  data () {
  data() {
    return {
      isBusy: false, // 正忙
      lastPrjCode: "", // 最后选择项目编码
@@ -101,11 +156,11 @@
    };
  },
  watch: {
    filterText (val) {
    filterText(val) {
      this.$refs.tree.filter(val);
    },
  },
  mounted () {
  mounted() {
    this.getMenus();
    this.$bus.$on("treeDataCopy", (res) => {
      this.$store.state.treeData = this.treeData;
@@ -121,12 +176,12 @@
  },
  methods: {
    // 获取菜单
    async getMenus () {
    async getMenus() {
      let data = await project_selectDirAll();
      if (data && data.code == 200) this.menus = data.result;
    },
    // 初始化图层
    async layersStart () {
    async layersStart() {
      let data = await perms_selectLayers();
      if (data.code != 200) {
        return this.$message.error("图层列表查询失败");
@@ -147,7 +202,7 @@
      sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers));
    },
    // 设置树数据
    setTreeData (source) {
    setTreeData(source) {
      /*let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
      return cloneData.filter((father) => {
        // 循环所有项
@@ -164,7 +219,7 @@
      return arr;
    },
    // 设置树子节点数据
    setTreeChildData (data, arr, pid) {
    setTreeChildData(data, arr, pid) {
      let i = 0;
      while (i < data.length) {
        let d = data[i];
@@ -188,7 +243,7 @@
      }
    },
    // 节点获得焦点事件
    nodeBlur (node, data) {
    nodeBlur(node, data) {
      if (!data.label.length) return this.$message.error("菜单名不可为空!");
      if (data.isEdit) this.$set(data, "isEdit", false);
      this.$nextTick(() => {
@@ -196,22 +251,22 @@
      });
    },
    // 鼠标左击事件
    handleLeftclick (data, node) {
    handleLeftclick(data, node) {
      this.rmListener();
    },
    // 取消鼠标监听事件
    rmListener () {
    rmListener() {
      this.menuVisible = false;
      //  要及时关掉监听,不关掉的是一个坑,不信你试试,虽然前台显示的时候没有啥毛病,加一个alert你就知道了
      document.removeEventListener("click", this.rmListener);
    },
    // 过滤节点
    filterNode (value, data) {
    filterNode(value, data) {
      if (!value) return true;
      return data.cnName.indexOf(value) !== -1;
    },
    // 鼠标右击事件
    rightClick (event, object, node, element) {
    rightClick(event, object, node, element) {
      if (object.type == 1 || node.data.children != null) return;
      this.currentNode = node;
@@ -229,7 +284,7 @@
      this.$refs.card.$el.style.top = event.pageY + "px";
    },
    // 属性显示
    showLayerAttribute (data) {
    showLayerAttribute(data) {
      this.rmListener();
      this.currentData = data ? data : this.currentData;
      let layer = this.currentData.enName.replaceAll("_", "");
@@ -238,7 +293,7 @@
      this.$store.state.mapPopBoxFlag = "2";
    },
    // 定位
    async positioning () {
    async positioning() {
      this.rmListener();
      if (["Tileset", "3DML"].indexOf(this.currentData.serveType) > -1) {
        for (let i in Viewer.scene.primitives._primitives) {
@@ -267,7 +322,7 @@
      }
    },
    // 钻孔柱状图
    async histogram () {
    async histogram() {
      this.rmListener();
      let layer = this.currentData.enName.replaceAll("_", "");
      this.$store.state.mapSpaceQueryLayer = layer;
@@ -275,7 +330,7 @@
      this.$store.state.showPopBoxFlag = true;
    },
    // 透明度
    pellucidity () {
    pellucidity() {
      this.rmListener();
      for (let j in Viewer.scene.primitives._primitives) {
        if (Viewer.scene.primitives._primitives[j].id == this.currentData.cnName) {
@@ -286,13 +341,13 @@
      }
    },
    // 获取高度
    getHeight (level) {
    getHeight(level) {
      if (level > -1 && level < 23) return this.levelArray[level];
      return this.levelArray[this.levelArray.length - 1];
    },
    // 瓦片下载
    tileDownload () {
    tileDownload() {
      this.rmListener();
      var that = this;
@@ -305,7 +360,7 @@
      );
    },
    // 获取瓦片四至范围
    getTileRectangle (res) {
    getTileRectangle(res) {
      var value = res.rectangle.coordinates.getValue();
      var val = {
        pubid: this.currentData.pubid,
@@ -319,7 +374,7 @@
      this.$bus.$emit("titleDown", val);
    },
    // 图层选中事件
    handleCheckChange (data, checked) {
    handleCheckChange(data, checked) {
      if (this.isBusy) return;
      let nodes = [];
@@ -355,7 +410,7 @@
      if (obj.WMS.length) this.setChangeWMS(obj.WMS, checked);
    },
    // 获取子节点
    getNodes (data, arr) {
    getNodes(data, arr) {
      if (data.children) {
        for (let i = 0, c = data.children.length; i < c; i++) {
          let node = data.children[i];
@@ -370,7 +425,7 @@
      }
    },
    // 获取节点ID
    getCheckNodesIds () {
    getCheckNodesIds() {
      let nodes = this.$refs.tree.getCheckedNodes();
      let ids = [];
      for (let i in nodes) {
@@ -380,12 +435,12 @@
      return ids;
    },
    // 切换WMS服务
    setChangeWMS (layers, checked) {
    setChangeWMS(layers, checked) {
      let value = this.$refs.tree.getCheckedNodes();
      this.$bus.$emit("showMenuLayer", value);
    },
    // 切换Tileset
    setChangeTileset (layers, checked) {
    setChangeTileset(layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [];
      for (let k in layers) {
        let layer = layers[k];
@@ -412,7 +467,7 @@
      if (arr.length) this.addTilesetLayers(arr);
    },
    // 添加Tileset图层
    addTilesetLayers (layers) {
    addTilesetLayers(layers) {
      for (let i in layers) {
        let res = layers[i];
        let url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : modelUrl + "/" + res.url;
@@ -466,7 +521,7 @@
      }
    },
    // 切换TMS
    setChangeTMS (layers, checked) {
    setChangeTMS(layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [];
      for (let j in layers) {
        let layer = layers[j];
@@ -486,7 +541,7 @@
      if (arr.length) this.addTMSLayers(arr);
    },
    // 添加TMS图层
    addTMSLayers (layers) {
    addTMSLayers(layers) {
      for (let i in layers) {
        let res = layers[i];
        res.url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : res.url;
@@ -506,7 +561,7 @@
      }
    },
    // 切换Mpt
    setChangeMpt (layers, checked) {
    setChangeMpt(layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [];
      for (let j in layers) {
        let layer = layers[j];
@@ -526,7 +581,7 @@
      if (arr.length) this.addMptLayers(arr);
    },
    // 添加Mpt图层
    addMptLayers (layers) {
    addMptLayers(layers) {
      for (let i in layers) {
        let res = layers[i];
        if (res.url.indexOf("{host}") > -1) res.url = res.url.replace("{host}", iisHost);
@@ -540,7 +595,7 @@
      }
    },
    // 切换DEM
    setChangeDEM (layers, checked) {
    setChangeDEM(layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [];
      for (let i in layers) {
        let layer = layers[i];
@@ -554,7 +609,7 @@
      this.addDEMLayers(url, null == url);
    },
    // 添加DEM图层
    addDEMLayers (url, useSG) {
    addDEMLayers(url, useSG) {
      if (useSG) {
        if (Viewer.terrainProvider._isMPT) return;
@@ -574,7 +629,7 @@
      });
    },
    // 设置Tileset参数
    async setTilesetArgs (tileset, res) {
    async setTilesetArgs(tileset, res) {
      if (res.serveType == '3DML' || !res.pubid) {
        this.setTilesetHeigth(tileset, parseFloat(res.elev));
        return;
@@ -584,7 +639,7 @@
      if (data.code == 200 && data.result.json) this.setTilesetCoord(tileset, data.result.json);
    },
    // 设置Tileset高度
    setTilesetHeigth (tileset, height) {
    setTilesetHeigth(tileset, height) {
      //3dtile模型的边界球体
      let boundingSphere = tileset.boundingSphere;
      //迪卡尔空间直角坐标=>地理坐标(弧度制)
@@ -599,7 +654,7 @@
      // Viewer.flyTo(tileset);
    },
    // 设置Tileset坐标
    setTilesetCoord (tileset, json) {
    setTilesetCoord(tileset, json) {
      let vm = JSON.parse(json);
      let pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height);
      let converter = Cesium.Transforms.eastNorthUpToFixedFrame;
@@ -609,7 +664,7 @@
      // Viewer.flyTo(tileset);
    },
    // 根据Pubid设置TMS图层
    async setTMSLayerByPubid (res) {
    async setTMSLayerByPubid(res) {
      const data = await comprehensive_selectPubById({ id: res.pubid });
      if (!data || data.code != 200) return;
@@ -637,8 +692,10 @@
      // }
    },
    // 切换项目
    prjChanged (code) {
    prjChanged(code) {
      this.$store.state.pigCode = code;
      //if (code) {
      this.isBusy = true;
      let checkedLayers = this.getCheckedLayersByCode(code);
@@ -660,7 +717,7 @@
      }
    },
    // 根据项目编码获取选中图层
    getCheckedLayersByCode (code) {
    getCheckedLayersByCode(code) {
      let layers = [];
      for (let i = 0, c = this.treeData.length; i < c; i++) {
        this.getCheckedChildLayersByCode(this.treeData[i], code, layers, false);
@@ -669,7 +726,7 @@
      return layers;
    },
    // 根据项目编码获取选中子图层
    getCheckedChildLayersByCode (data, code, layers, isPrj) {
    getCheckedChildLayersByCode(data, code, layers, isPrj) {
      if (data.children && data.children.length) {
        for (let i = 0, c = data.children.length; i < c; i++) {
          let layer = data.children[i];
@@ -696,7 +753,7 @@
      }
    },
    // 获取新树数据
    getNewTreeData (code) {
    getNewTreeData(code) {
      let data = JSON.parse(JSON.stringify(this.sourceData));
      if (!code) return data;
@@ -706,7 +763,7 @@
      return data;
    },
    // 设置树数据子节点
    setSubTreeData (data, code) {
    setSubTreeData(data, code) {
      let j = 0;
      while (j < data.length) {
        let d = data[j];
@@ -725,7 +782,7 @@
      }
    },
    // 移除项目树数据
    rmPrjTreeData (data, code) {
    rmPrjTreeData(data, code) {
      /*let j = 0;
      while (j < data.length) {
        let d = data[j];
@@ -778,7 +835,7 @@
      }
    },
    // 添加WFS图层 *
    addWFSLayers (res) {
    addWFSLayers(res) {
      let url =
        res.resource +
        "?service=WFS&version=1.0.0&request=GetFeature&typeName=" +
@@ -819,7 +876,7 @@
</script>
<style scoped lang="less">
/* 点击节点时的选中颜色 */
.tree-container /deep/.el-tree-node.is-current>.el-tree-node__content {
.tree-container /deep/.el-tree-node.is-current > .el-tree-node__content {
  color: #409eff !important;
}
@@ -851,19 +908,19 @@
  padding-left: 16px;
}
.tree-container /deep/ .el-tree>.el-tree-node:before {
.tree-container /deep/ .el-tree > .el-tree-node:before {
  border-left: none;
}
.tree-container /deep/ .el-tree>.el-tree-node:after {
.tree-container /deep/ .el-tree > .el-tree-node:after {
  border-top: none;
}
.tree-container /deep/ .el-tree>.el-tree-node:before {
.tree-container /deep/ .el-tree > .el-tree-node:before {
  border-left: none;
}
.tree-container /deep/ .el-tree>.el-tree-node:after {
.tree-container /deep/ .el-tree > .el-tree-node:after {
  border-top: none;
}
@@ -926,7 +983,11 @@
  z-index: 8;
}
.tree-container /deep/ .el-tree-node .el-tree-node__children .el-tree-node__content::before {
.tree-container
  /deep/
  .el-tree-node
  .el-tree-node__children
  .el-tree-node__content::before {
  border-left: 0px dashed #ccc;
  height: 100%;
  top: 0;
@@ -946,7 +1007,7 @@
}
.tree-container /deep/ .el-tree-node {
  .is-leaf+.el-checkbox .el-checkbox__inner {
  .is-leaf + .el-checkbox .el-checkbox__inner {
    display: inline-block;
  }
@@ -955,7 +1016,11 @@
  }
}
.tree-container /deep/ .el-tree-node .el-tree-node__children .el-tree-node__content::after {
.tree-container
  /deep/
  .el-tree-node
  .el-tree-node__children
  .el-tree-node__content::after {
  border-top: 0px dashed #ccc;
}
@@ -973,7 +1038,7 @@
/deep/.el-card__body {
  padding: 10px !important;
  >div {
  > div {
    padding-bottom: 10px;
    border-bottom: 1px solid #ccc;
src/views/datamanage/uploadmanage.vue
@@ -624,6 +624,58 @@
      </div>
    </el-dialog>
    <!-- OSGB LAS -->
    <el-dialog
      :title="$t('common.publish')"
      :visible.sync="insertOsgbVisible"
      width="25%"
      :close-on-click-modal="false"
      :show-close="false"
    >
      <div style="width:100%; ">
        <el-form
          :model="osgbLasLayer"
          label-width="160px"
        >
          <el-form-item :label="$t('dataManage.vmobj.heightOffset')">
            <el-input
              :placeholder="$t('dataManage.vmobj.label1')"
              v-model="osgbLasLayer.z"
            ></el-input>
          </el-form-item>
          <el-form-item
            v-if="formInline.type == 'LAS'"
            :label="$t('dataManage.vmobj.coordinateSystemID')"
          >
            <el-select
              v-model="osgbLasLayer.strid"
              :placeholder="$t('dataManage.vmobj.label2')"
              style="width: 100%;"
            >
              <el-option
                v-for="item in stridOption"
                :key="item.id"
                :label="item.coordinate"
                :value="item.epsgcode"
              >
              </el-option>
            </el-select>
          </el-form-item>
        </el-form>
        <div style="display: flex; justify-content: end;margin-top:10px;">
          <el-button
            size="small"
            type="primary"
            @click="setOsgbInsert"
          >{{$t('common.submit')}}</el-button>
          <el-button
            size="small"
            type="info"
            @click="setOsgbCanel"
          >{{$t('common.cancel')}}</el-button>
        </div>
      </div>
    </el-dialog>
    <div
      class="loadBox"
      v-if="loadDialogVisible"
@@ -662,6 +714,7 @@
  publish_deletes,
  publish_update,
  publish_insert,
  dataUpload_selectCoords
} from '../../api/api.js'
import { conditions } from '../Archive/Archive';
@@ -703,6 +756,12 @@
        value: 'MPT',
        label: '场景数据(.mpt)'
      }, {
        value: 'OSGB',
        label: '倾斜数据(.osgb)'
      }, {
        value: 'LAS',
        label: '点云数据(.las, .laz)'
      }, {
        value: 'CPT',
        label: '点云数据(.cpt)'
      }, {
@@ -733,11 +792,66 @@
      loadDialogVisible: false,
      options: [],
      isFullscreen: false,
      insertOsgbVisible: false,
      osgbLasLayer: {
        z: '0',
        strid: ''
      },
      stridOption: [],
    }
  },
  methods: {
    setOsgbCanel() {
      this.insertOsgbVisible = false;
      this.osgbLasLayer = {
        z: '0',
        strid: ''
      }
    },
    async setOsgbInsert() {
      var ids = [];
      for (var i in this.multipleSelection) {
        ids.push(this.multipleSelection[i].id)
      }
      var strid;
      if (this.formInline.type == 'LAS') {
        if (!this.osgbLasLayer.strid) {
          return this.$message('请选择发布数据的坐标系');
        } else {
          strid = this.osgbLasLayer.strid.replace('EPSG:', '')
        }
      }
      var obj = {
        dircode: this.formInline.dirid,
        depcode: this.formInline.depid,
        min: null,
        max: null,
        name: null,
        type: this.formInline.type,
        noData: null,
        ids: ids,
        models: null,
        srid: parseInt(strid),
        z: parseFloat(parseFloat(this.osgbLasLayer.z).toFixed(3))
      }
      this.loadDialogVisible = true
      this.setOsgbCanel();
      const data = await publish_insert(obj);
      if (data.code == 200 && data.result > 0) {
        this.$message({
          message: '数据发布成功',
          type: 'success'
        });
      } else {
        this.$message.error("数据发布失败")
      }
      this.loadDialogVisible = false
      this.getTableData();
    },
    setModelCanel() {
      this.insertModelVisible = false;
      this.modelOptions = [];
@@ -900,11 +1014,17 @@
          val[i].isModel = null
        }
        this.modelOptions = val;
        this.insertModelVisible = true;
      } else if (this.formInline.type == "OSGB") {
        this.insertOsgbVisible = true;
      } else if (this.formInline.type == "LAS") {
        const data = await dataUpload_selectCoords();
        if (data.code != 200) {
          this.$message('坐标系数据获取失败');
        }
        this.stridOption = data.result;
        this.insertOsgbVisible = true;
      } else {
        var std = [];
        for (var i in this.multipleSelection) {
@@ -988,10 +1108,10 @@
        var that = this
        this.$confirm('确定是否删除所选内容?')
          .then(_ => {
            done();
            that.deletePage()
          })
          .catch(_ => {
            that.deletePage()
          });
      }
    },