月球大数据地理空间分析展示平台-【中台】
Surpriseplus
2023-09-07 17411ae609d8c9a21be20bbffe2cf52c6efd9b80
发布管理页面修改,接口调试
已修改5个文件
572 ■■■■■ 文件已修改
src/api/api.js 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/en.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/zh.js 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/js/layerManage.js 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/uploadmanage.vue 483 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/api.js
@@ -1232,4 +1232,11 @@
export function comprehensive_selectPubById(params) {
  return service.get('/comprehensive/selectPubById', { params: params });
}
//数据发布 =>数简 数据插入
export function publish_insertSjService(params) {
  return service.post('/publish/insertSjService', params);
}
//数据发布 =>数简 删除多条
export function publish_deletesSjServices(params) {
  return request.get('/publish/deletesSjServices', { params: params });
}
src/assets/lang/en.js
@@ -243,7 +243,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',
      labe15: 'Stretching method',
      labe16: 'Coordinate System',
      labe17: 'Stretching factor',
    },
    dictionaryManage: 'dictionaryManage',
    dictionaryManageObj: {
src/assets/lang/zh.js
@@ -236,7 +236,10 @@
      labe11: '请输入最小级别(0 ~ 22)',
      labe12: '请输入最大级别(0 ~ 22)',
      labe13: '请输入名称',
      labe14: '去除无效值'
      labe14: '去除无效值',
      labe15: '拉伸方式',
      labe16: '坐标系',
      labe17: '拉伸因子',
    },
    dictionaryManage: '字典管理',
    dictionaryManageObj: {
src/views/datamanage/js/layerManage.js
@@ -145,4 +145,73 @@
        name: '圣杯号',
        value: 8,
    }
]
//发布管理
export const type_option = [
    {
        value: 'DOM',
        label: '影像数据'
    },
    {
        value: 'DEM',
        label: '高程数据'
    }
]
export const server_option = [
    {
        value: '数简',
        label: '数简'
    }
]
export const method_option = [
    {
        value: 0,
        label: '不拉伸',
        enhanceFactor: 0,
    }, {
        value: 1,
        label: '线性拉伸',
        enhanceFactor: 0.02,
        min: 0,
        max: 0.05,
        step: 0.01
    }, {
        value: 2,
        label: '直方图均衡',
        enhanceFactor: 0,
    }, {
        value: 3,
        label: '标准差拉伸',
        enhanceFactor: 0.02,
        min: 0,
        max: 0.05,
        step: 0.01
    }, {
        value: 4,
        label: '伽马拉伸',
        enhanceFactor: 0.6,
        min: 0.1,
        max: 1.6,
        step: 0.1
    }
]
export const system_Option = [
    {
        label: '月球2000',
        value: '104903'
    },
    {
        label: 'WGS84',
        value: '4326'
    }
]
export const nodata_Option = [
    {
        label: '黑色',
        value: 0
    },
    {
        label: '白色',
        value: 255
    }
]
src/views/datamanage/uploadmanage.vue
@@ -30,17 +30,7 @@
          <span> {{$t('dataManage.uploadObj.releaseList')}}</span>
        </div>
      </div>
      <div
        class="tabs_pane"
        @click="setTabsChange(3)"
      >
        <div
          class="tabsSpan"
          :class="{ changetabs : active == 'third'}"
        >
          <span> {{$t('dataManage.uploadObj.modelAttachMount')}}</span>
        </div>
      </div>
    </div>
    <div
      v-if="active != 'third'"
@@ -51,39 +41,22 @@
        :model="formInline"
        class="demo-form-inline"
      >
        <!-- 单位 -->
        <el-form-item v-if="active == 'first'">
          <el-select
            size="small"
            v-model="formInline.depid"
          >
            <el-option
              :value="formInline.depid"
              :label="formInline.depName"
              style="height: auto"
            >
              <el-tree
                ref="tree"
                :data="depOption"
                node-key="id"
                :props="defaultProps"
                @node-click="handleDepChange"
              />
            </el-option>
          </el-select>
        </el-form-item>
        <!-- 目录 -->
        <el-form-item v-if="active == 'first'">
        <el-form-item>
          <el-select
            ref="tree"
            size="small"
            :popper-append-to-body="false"
            v-model="formInline.dirid"
          >
            <el-option
              :value="formInline.dirid"
              :label="formInline.dirName"
              style="height: auto"
              style=" height:auto"
            >
              <el-tree
                class="elTreeData"
                ref="tree"
                :data="dirOption"
                node-key="id"
@@ -104,6 +77,22 @@
              :key="item.id"
              :label="item.name"
              :value="item.id"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <!-- 类型 -->
        <el-form-item>
          <el-select
            size="small"
            v-model="formInline.serType"
            @change="handleTypeChange"
          >
            <el-option
              v-for="item in serverOption"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
@@ -208,12 +197,7 @@
            align="center"
            key="5"
          />
          <el-table-column
            prop="depName"
            :label="$t('dataManage.vmobj.depName')"
            align="center"
            key="6"
          />
          <el-table-column
            prop="dirName"
            :label="$t('dataManage.vmobj.dirName')"
@@ -327,12 +311,7 @@
        </el-pagination>
      </div>
    </div>
    <div
      v-if="active == 'third'"
      class="content_box"
    >
      <mapview v-if="active == 'third'"></mapview>
    </div>
    <!-- 地址预览 -->
    <el-dialog
      :title="$t('common.preview')"
@@ -357,23 +336,7 @@
        <mapview v-if="showMapView"></mapview>
      </div>
    </el-dialog>
    <!-- <el-dialog
      :title="$t('common.preview')"
      :visible.sync="dialogVisible"
      width="70%"
      :before-close="handleClose"
      top="13vh"
      :lock-scroll="false"
      :close-on-press-escape="false"
      :close-on-click-modal="false"
      v-el-drag-dialog
    >
      <div
        id="MapDiv"
        style="background:red;widht:100%;height:calc(100% - 10px)"
      ></div>
    </el-dialog> -->
    <!-- 修改数据 -->
    <el-dialog
      :title="$t('common.update')"
@@ -382,43 +345,86 @@
      :show-close="false"
      :close-on-click-modal="false"
    >
      <div style="width:100%;height:50vh">
      <div style="width:100%; ">
        <el-form
          ref="form"
          :model="editLayer"
          label-width="150px"
        >
          <!-- 名称 -->
          <el-form-item :label="$t('dataManage.vmobj.name')">
            <el-input v-model="editLayer.name"></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.vmobj.format')">
            <el-input
              disabled
              v-model="editLayer.type"
              v-model="editLayer.name"
              :placeholder="$t('dataManage.vmobj.name')"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.vmobj.depName')">
            <el-input
              disabled
              v-model="editLayer.depName"
            ></el-input>
          </el-form-item>
          <!-- 拉伸方式 -->
          <el-form-item :label="$t('dataManage.vmobj.labe15')">
            <el-select
              size="small"
              :disabled="true"
              v-model="editLayer.enhanceType"
              style="width: 100%;"
            >
              <el-option
                v-for="item in enhanceOption"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          <el-form-item :label="$t('dataManage.vmobj.dirName')">
          </el-form-item>
          <!-- 坐标系 -->
          <!-- <el-form-item
            v-show="editLayer.showFactor"
            :label="$t('dataManage.vmobj.labe17')"
          >
            <el-input
              disabled
              v-model="editLayer.dirName"
            ></el-input>
              style="width: 100%;"
              v-model="editLayer.url"
              :disabled='true'
              size="small"
            >
            </el-input>
          </el-form-item> -->
          <!-- 坐标系 -->
          <el-form-item :label="$t('dataManage.vmobj.labe16')">
            <el-select
              size="small"
              v-model="editLayer.epsg"
              style="width: 100%;"
              :disabled="true"
            >
              <el-option
                v-for="item in epsgOption"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item :label="$t('dataManage.vmobj.versionNumber')">
            <el-input
              disabled
              v-model="editLayer.verName"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('common.publishAddress')">
            <el-input v-model="editLayer.url"></el-input>
          </el-form-item>
          <!-- 去除无效值 -->
          <!-- <el-form-item :label="$t('dataManage.vmobj.labe14')">
            <el-select
              size="small"
              v-model="editLayer.nodata"
              style="width: 100%;"
              :disabled="true"
            >
              <el-option
                v-for="item in noDataOption"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item> -->
          <el-form-item>
            <el-button
              size="small"
@@ -431,6 +437,7 @@
              @click="setEditLayerCancle"
            >{{$t('common.cancel')}}</el-button>
          </el-form-item>
        </el-form>
      </div>
    </el-dialog>
@@ -441,7 +448,7 @@
      width="50%"
      :close-on-click-modal="false"
    >
      <div style="width:100%;height:50vh">
      <div style="width:100%;height:50vh;color: white;">
        <p>{{ $t("dataManage.vmobj.name") }}:{{ itemdetail.name }}</p>
        <el-divider></el-divider>
        <p>{{ $t("dataManage.vmobj.format") }}:{{ itemdetail.type }}</p>
@@ -478,51 +485,54 @@
          :model="insertLayer"
          label-width="150px"
        >
          <!-- 名称 -->
          <el-form-item :label="$t('dataManage.vmobj.name')">
            <el-input
              v-model="insertLayer.name"
              :placeholder="$t('dataManage.vmobj.name')"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.vmobj.numberFiles')">
            <el-input
              disabled
              v-model="insertLayer.number"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.vmobj.labe14')"
            v-show="formInline.type =='DOM'"
          >
          <!-- 拉伸方式 -->
          <el-form-item :label="$t('dataManage.vmobj.labe15')">
            <el-select
              style="width:100%"
              v-model="insertLayer.noData"
              size="small"
              v-model="insertLayer.enhanceType"
              style="width: 100%;"
              @change="setEnhanceTypeChange()"
            >
              <el-option
                label="黑色"
                value="0"
              ></el-option>
              <el-option
                label="白色"
                value="255"
              ></el-option>
                v-for="item in enhanceOption"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <!-- 坐标系 -->
          <el-form-item
            v-show="formInline.type !='DEM'"
            :label="$t('dataManage.vmobj.minLevel')"
            v-show="insertLayer.showFactor"
            :label="$t('dataManage.vmobj.labe17')"
          >
            <!-- <el-input
              v-model="insertLayer.min"
              :placeholder="$t('dataManage.vmobj.labe11')"
            ></el-input> -->
            <el-input-number
              v-model="insertLayer.enhanceFactor"
              controls-position="right"
              :min="insertLayer.min"
              :step="insertLayer.step"
              :max="insertLayer.max"
              style="width: 100%;"
            ></el-input-number>
          </el-form-item>
          <!-- 坐标系 -->
          <el-form-item :label="$t('dataManage.vmobj.labe16')">
            <el-select
              style="width:100%"
              v-model="insertLayer.min"
              :placeholder="$t('dataManage.vmobj.labe11')"
              size="small"
              v-model="insertLayer.epsg"
              style="width: 100%;"
            >
              <el-option
                v-for="item in options"
                v-for="item in epsgOption"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -530,21 +540,15 @@
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.vmobj.maxLevel')"
            v-show="formInline.type !='DEM'"
          >
            <!-- <el-input
              v-model="insertLayer.max"
              :placeholder="$t('dataManage.vmobj.labe12')"
            ></el-input> -->
          <!-- 去除无效值 -->
          <el-form-item :label="$t('dataManage.vmobj.labe14')">
            <el-select
              style="width:100%"
              v-model="insertLayer.max"
              :placeholder="$t('dataManage.vmobj.labe12')"
              size="small"
              v-model="insertLayer.nodata"
              style="width: 100%;"
            >
              <el-option
                v-for="item in options"
                v-for="item in noDataOption"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -649,9 +653,9 @@
</template>
<script>
import axios from 'axios';
import dialogHeader from './dialogHeader.vue'
import mapview from '../../components/preview_map.vue'
import mapview from '../../components/MapView/moonMap.vue'
import MyBread from "../../components/MyBread.vue"
import {
  selectdepTab,
@@ -659,11 +663,12 @@
  meta_selectVerByDirid,
  publish_selectMetasByPage,
  publish_selectByPage,
  publish_deletes,
  publish_deletesSjServices,
  publish_update,
  publish_insert,
  publish_insertSjService,
} from '../../api/api.js'
import { conditions } from '../Archive/Archive';
import { method_option, nodata_Option, server_option, system_Option, type_option } from './js/layerManage';
export default {
  components: {
@@ -680,7 +685,9 @@
        verid: null,
        depName: null,
        name: "",
        type: ""
        type: "",
        serType: '',
      },
      listData: {
        pageIndex: 1,
@@ -693,25 +700,7 @@
      dirOption: [],
      verOption: [],
      modelOptions: [],
      typeOption: [{
        value: 'DOM',
        label: '影像数据(.tif, .img)'
      }, {
        value: 'DEM',
        label: '高程数据(.tif)'
      }, {
        value: 'MPT',
        label: '场景数据(.mpt)'
      }, {
        value: 'CPT',
        label: '点云数据(.cpt)'
      }, {
        value: '3DML',
        label: '三维模型(.3dml)'
      }, {
        value: 'BIM',
        label: '三维模型(.fbx, .ifc, .rvt)'
      }],
      typeOption: [],
      defaultProps: {
        label: "name",
        value: "id",
@@ -722,17 +711,30 @@
      dialogVisible: false,
      showMapView: false,
      showPageSize: [],
      editLayer: {},
      editLayer: {
        enhanceType: null
      },
      updateLayer: {},
      editDialogVisible: false,
      detailsDialogVisible: false,
      itemdetail: {},
      insertDialogVisible: false,
      insertModelVisible: false,
      insertLayer: { name: '', number: null, min: 4, max: 18, noData: '0' },
      insertLayer: {
        name: '',
        enhanceType: null,
        enhanceFactor: null,
        showFactor: false,
        epsg: null,
        nodata: null
      },
      loadDialogVisible: false,
      options: [],
      isFullscreen: false,
      serverOption: [],
      enhanceOption: [],
      epsgOption: [],
      noDataOption: []
    }
  },
  methods: {
@@ -816,37 +818,20 @@
    },
    setinsertLayerCancel() {
      this.insertDialogVisible = false;
      this.insertLayer = { name: '', number: null, min: 4, max: 18 };
      this.insertLayer = {
        name: '',
        enhanceType: null,
        enhanceFactor: null,
        showFactor: false,
        epsg: null,
        nodata: null
      };
    },
    //发布提交
    async setinsertLayerSubmit() {
      var min = this.insertLayer.min;
      var max = this.insertLayer.max;
      var name = this.insertLayer.name;
      if (this.formInline.type == 'DEM') {
        min = 0;
        max = 18;
      }
      if (!name) {
        this.$message.error("名称不能为空")
        return
      }
      if (parseInt(min) < 0 || parseInt(min) > 20) {
        this.$message.error("最小级别不能小于 0 或大于 20 ")
        return
      }
      if (parseInt(max) < 0 || parseInt(max) > 20) {
        this.$message.error(" 最大级别不能小于 0 或大于 20 ")
        return
      }
      if (parseInt(min) > parseInt(max)) {
        this.$message.error("最小级别不得大于最大级别")
        return
      }
      var std = [];
@@ -855,18 +840,19 @@
      }
      var obj = {
        dircode: this.formInline.dirid,
        depcode: this.formInline.depid,
        min: min,
        max: max,
        name: name,
        ids: std,
        enhanceType: this.insertLayer.enhanceType,
        enhanceFactor: this.insertLayer.enhanceFactor,
        epsg: this.insertLayer.epsg,
        type: this.formInline.type,
        noData: this.insertLayer.noData
        noData: this.insertLayer.nodata
      }
      this.loadDialogVisible = true
      this.insertDialogVisible = false;
      const data = await publish_insert(obj);
      const data = await publish_insertSjService(obj);
      if (data.code == 200 && data.result > 0) {
        this.$message({
@@ -879,59 +865,45 @@
      this.loadDialogVisible = false
      this.getTableData();
    },
    setEnhanceTypeChange(res) {
      var val = this.enhanceOption.filter((res) => {
        if (res.value == this.insertLayer.enhanceType) {
          return res;
        }
      })
      this.insertLayer.enhanceFactor = val[0].enhanceFactor;
      if (val[0].enhanceFactor != 0) {
        this.insertLayer.min = val[0].min;
        this.insertLayer.max = val[0].max;
        this.insertLayer.step = val[0].step;
        this.insertLayer.showFactor = true;
      } else {
        this.insertLayer.showFactor = false;
      }
    },
    //数据发布
    async setPagePublish() {
      if (this.multipleSelection.length == 0) {
        this.$message("请选择要发布的数据")
        return
      }
      if (this.formInline.type == "DOM" || this.formInline.type == "DEM") {
        this.insertLayer.name = this.multipleSelection[0].name.split('.')[0];
        this.insertLayer.number = this.multipleSelection.length
        this.insertLayer.noData = '0';
        this.insertDialogVisible = true;
      } else if (this.formInline.type == "3DML" || this.formInline.type == "BIM") {
        var val = JSON.parse(JSON.stringify(this.multipleSelection))
        for (var i in val) {
          val[i].isModel = null
        }
        this.modelOptions = val;
        this.insertModelVisible = true;
      this.insertLayer.name = null
      var val = this.enhanceOption[0]
      this.insertLayer.enhanceType = val.value;
      this.insertLayer.epsg = this.epsgOption[0].value;
      this.insertLayer.nodata = this.noDataOption[0].value
      this.insertLayer.enhanceFactor = val.enhanceFactor;
      if (val.enhanceFactor != 0) {
        this.insertLayer.min = val.min;
        this.insertLayer.max = val.max;
        this.insertLayer.step = val.step;
        this.insertLayer.showFactor = true;
      } else {
        var std = [];
        for (var i in this.multipleSelection) {
          std.push(this.multipleSelection[i].id)
        }
        var obj = {
          dircode: this.formInline.dirid,
          depcode: this.formInline.depid,
          ids: std,
          type: this.formInline.type
        }
        this.loadDialogVisible = true
        this.insertDialogVisible = false;
        const data = await publish_insert(obj);
        if (data.code != 200) {
          this.$message.error("数据发布失败")
        } else {
          this.$message({
            message: '数据发布成功',
            type: 'success'
          });
        }
        this.loadDialogVisible = false
        this.getTableData();
        this.insertLayer.showFactor = false;
      }
      this.insertDialogVisible = true;
    },
    //数据详情
    setPreviewDetails(res) {
@@ -964,18 +936,30 @@
      } else {
        this.$confirm('确认关闭?')
          .then(_ => {
            done();
          })
          .catch(_ => {
            this.editLayer = JSON.parse(this.updateLayer)
            this.editDialogVisible = false;
          })
          .catch(_ => {
          });
      }
    },
    //修改弹窗
    setPreviewEdit(res) {
      this.updateLayer = JSON.stringify(res) //备份;
      this.editLayer = JSON.parse(JSON.stringify(res));
      var val = JSON.parse(JSON.stringify(res));
      this.editLayer = val;
      this.editLayer.epsg = val.epsg.toString();
      var result = this.enhanceOption.filter((res) => {
        if (res.value == val.enhanceType) {
          return res;
        }
      })
      if (result[0].enhanceFactor != 0) {
        this.editLayer.showFactor = true
      }
      this.editDialogVisible = true;
    },
    //删除
@@ -998,7 +982,7 @@
      for (var i in this.multipleSelection) {
        std.push(this.multipleSelection[i].id);
      }
      const data = await publish_deletes({ ids: std.toString() });
      const data = await publish_deletesSjServices({ ids: std.toString() });
      if (data.code != 200) {
        this.$message.error("单位列表获取失败")
        return
@@ -1122,9 +1106,11 @@
        this.showPageSize = [10, 50, 100, 200]
      }
      this.formInline.serType = this.serverOption[0].value;
      this.formInline.type = this.typeOption[0].value;
      this.getDepTreeList();
      // this.getDepTreeList();
      this.getDirTreeList();
    },
    //获取目录列表
    async getDirTreeList() {
@@ -1215,9 +1201,9 @@
        if (this.formInline.name) {
          this.listData.name = this.formInline.name
        }
        this.listData.dircode = this.formInline.dirid;
        this.listData.type = this.formInline.type;
        const data = await publish_selectByPage(this.listData);
        if (data.result) {
          var that = this
          var val = data.result.filter((rs) => {
@@ -1291,8 +1277,15 @@
  },
  mounted() {
    this.active = 'first';
    this.typeOption = type_option;
    this.serverOption = server_option;
    this.epsgOption = system_Option;
    this.noDataOption = nodata_Option;
    this.enhanceOption = method_option
    this.setPageStart();
    this.setOptions();
  }
}
</script>
@@ -1366,5 +1359,19 @@
  /deep/.el-dialog__header {
    padding: 10px !important;
  }
  /deep/.el-input-number__increase,
  .el-input-number__decrease {
    background: transparent !important;
  }
  .el-input-number__increase,
  .el-input-number__decrease {
    background: transparent !important;
  }
}
.elTreeData {
  color: white !important;
  background: transparent !important;
  font-size: 15px !important;
  font-family: Microsoft YaHei !important;
}
</style>