月球大数据地理空间分析展示平台-【前端】-月球2期前端
WX
2023-09-13 513e1bdf4b2703409d9e4dbb776e67ffa0c134a6
Merge branch 'master' of http://192.168.20.92:8888/r/PM20230220027_Web
已添加1个文件
已修改12个文件
303 ■■■■ 文件已修改
public/CIMSDK/Workers/image/location.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/location.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Map/menuTool.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Map/rightServer.js 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Map/server.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/layer/attributeList.vue 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/layer/layerDetail.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/layer/layerManage.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plotting/plotting.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/query/CoordLocation.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/query/SpatialQuery.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/query/detailsQuery.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/search/search.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/CIMSDK/Workers/image/location.png

src/assets/img/location.png
src/assets/js/Map/menuTool.js
@@ -104,24 +104,40 @@
    if (this.localPoint) {
      this.setLocalPositionClose();
    }
    var position = {
      X: parseFloat(res.lon),
      Y: parseFloat(res.lat),
      Altitude: parseFloat(res.alt),
    };
    this.localPoint = window.sgworld.Creator.CreateImageLabel(
      position,
      config.StaticFileBaseUrl + "/Workers/image/mark.png",
      {},
      0,
      "标签点"
    );
    var id = this.localPoint.item.id;
    window.sgworld.Navigate.flyToObj(this.localPoint.item);
    // var position = {
    //   X: parseFloat(res.lon),
    //   Y: parseFloat(res.lat),
    //   Altitude: parseFloat(res.alt),
    // };
    // this.localPoint = window.sgworld.Creator.CreateImageLabel(
    //   position,
    //   config.StaticFileBaseUrl + "/Workers/image/mark.png",
    //   {},
    //   0,
    //   "标签点"
    // );
    // var id = this.localPoint.item.id;
    // window.sgworld.Navigate.flyToObj(this.localPoint.item);
    this.localPoint = window.Viewer.entities.add({
      name: '坐标定位',
      position: Cesium.Cartesian3.fromDegrees(parseFloat(res.lon), parseFloat(res.lat), res.alt == null ? parseFloat(res.alt) : 0),
      billboard: {
        image: config.StaticFileBaseUrl + '/Workers/image/location.png',
        // 设置贴地
        heightReference: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.4),
        verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
        scale: 1.0,
      },
    });
    this.setViewerFlyTo(this.localPoint)
  },
  setLocalPositionClose() {
    this.localPoint.deleteObject();
    if (this.localPoint) {
      // this.localPoint.deleteObject();
      window.Viewer.entities.remove(this.localPoint)
    this.localPoint = null;
    }
  },
  //坡度分析
  setSlopeMap() {
@@ -615,13 +631,14 @@
        // 设置贴地
        heightReference: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.4),
        verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
        scale: 5.0,
        scale: 1.0,
      },
    });
    this.setViewerFlyTo(position)
  },
  setViewerFlyTo(entity) {
    window.Viewer.flyTo(entity, {
      offset: {
        heading: Cesium.Math.toRadians(0.0),
src/assets/js/Map/rightServer.js
@@ -235,8 +235,13 @@
        var url = this.getLayrUrl(res);
        window.terrainLayer = new Cesium.CesiumTerrainProvider({
            url: url,
            tilingScheme: new Cesium.GeographicTilingScheme({
                ellipsoid: Cesium.Ellipsoid.MOON,
            }),
        });
        window.rightViewer.terrainProvider = window.terrainLayer;
        Viewer.terrainProvider = window.terrainLayer;
        Viewer.scene.globe.terrainExaggeration = 1.0000001;
        this.layerList.push({ id: res.id, type: "dem" });
    },
    //加载WMS服务
src/assets/js/Map/server.js
@@ -240,8 +240,13 @@
    var url = this.getLayrUrl(res);
    window.terrainLayer = new Cesium.CesiumTerrainProvider({
      url: url,
      tilingScheme: new Cesium.GeographicTilingScheme({
        ellipsoid: Cesium.Ellipsoid.MOON,
      }),
    });
    Viewer.terrainProvider = window.terrainLayer;
    Viewer.scene.globe.terrainExaggeration = 1.0000001;
    this.layerList.push({ id: res.id, type: "dem" });
  },
  //加载WMS服务
@@ -426,6 +431,7 @@
        break;
      }
    }
    if (!gindex) return
    var str = html.substr(html.indexOf('<td>'), html.lastIndexOf('</td>') - html.indexOf('<td>') + 5).replaceAll(' ', '').replaceAll('\n', '').split('</td>')
    var gid = parseInt(str[gindex].replaceAll(
src/views/layer/attributeList.vue
@@ -57,7 +57,7 @@
          >
            <template #default="scope">
              <el-button
                :icon="Location"
                class="el-icon-map"
                size="small"
                @click.prevent="spaceLocation(scope.$index, scope.row)"
              >
@@ -230,9 +230,37 @@
    return ElMessage.error("空间查询失败");
  }
  listData.value.count = data.count;
  tableData.value = data.result;
};
  var val = data.result.filter((res) => {
    if (res.apprTime) {
      res.apprTime = format(res.apprTime);
    }
    if (res.createtime) {
      res.apprTime = format(res.createtime);
    }
    if (res.updatetime) {
      res.apprTime = format(res.updatetime);
    }
    return res;
  });
  tableData.value = val;
};
//格式化时间
const format = (shijianchuo) => {
  //shijianchuo是整数,否则要parseInt转换
  var time = new Date(shijianchuo);
  var y = time.getFullYear();
  var m = time.getMonth() + 1;
  var d = time.getDate();
  var h = time.getHours();
  var mm = time.getMinutes();
  var s = time.getSeconds();
  return y + "-" + add0(m) + "-" + add0(d) + " " + h + ":" + mm + ":" + s;
};
//格式化时间
const add0 = (m) => {
  return m < 10 ? "0" + m : m;
};
const setQueySpatialFields = async () => {
  const data = await dataQuery_selectFields({
    ns: "mn",
@@ -246,8 +274,17 @@
      return res;
    }
  });
  attributeData.value = std;
  fieldOption.value = std;
  var val = std.filter((res) => {
    if (res.field.indexOf("_") > -1) {
      var str = res.field.split("_");
      res.field = str[0] + str[1][0].toUpperCase() + str[1].slice(1);
      return res;
    } else {
      return res;
    }
  });
  attributeData.value = val;
  fieldOption.value = val;
  conditionChange(data.result[0]);
  setQueySpatialData();
};
@@ -418,7 +455,16 @@
    padding: 10px;
    height: 40px;
  }
  .el-icon-map {
    background: url("../../assets/img/location.png") center no-repeat;
    background-size: 100% 100%;
    border: transparent;
  }
  .el-icon-map:before {
    content: "定位";
    font-size: 0;
    visibility: hidden;
  }
  /deep/.el-pagination button {
    background: transparent;
    color: #d6e4ff;
src/views/layer/layerDetail.vue
@@ -1,7 +1,7 @@
<template>
  <div class="content">
    <div class="title">
      <label>详细编辑</label>
      <label> {{ layerData.cnName }}</label>
      <el-icon
        @click="setSpatialClose"
        :size="20"
@@ -11,16 +11,14 @@
      </el-icon>
    </div>
    <div class="layer_box">
      <div class="check_box">
        <!-- <el-checkbox @change="handlCheckAllChange" v-model="layerState">{{
          layerName
        }}</el-checkbox> -->
      <!--  <div class="check_box">
        {{ layerData.cnName }}
        <img
          src="../../assets/img/layer.png"
          alt=""
        />
      </div>
  </div> -->
      <div
        class="slider-demo-block"
        v-show="diaphaneityShow"
@@ -443,12 +441,15 @@
    geom: geom,
    pubid: releaseLayer.value.pubid,
  };
  const data = publish_updateSjService(obj);
  if (data.count != 200) {
  publish_updateSjService(obj).then((res) => {
    if (res.code != 200) {
    return ElMessage(data.msg);
  }
  store.state.restLayer = true;
  setSpatialClose();
  });
  // const data = ;
  // console.log("1122223" + data.code);
};
onMounted(() => {
  typeDisplay(props.layerData);
@@ -469,16 +470,19 @@
<style lang="less" scoped>
.content {
  background: #1e2a3d;
  padding: 20px;
  // height: 400px;
  margin-left: 20px;
  min-width: 300px;
  margin-left: 385px;
  margin-top: 40px;
  min-width: 200px;
  z-index: 40;
  position: absolute;
  background: rgba(7, 8, 14, 0.8);
  border: 1px solid #d6e4ff;
  box-shadow: inset 0px 10px 40px 10px rgba(38, 47, 71, 1);
  .title {
    font-size: 18px;
    font-size: 16px;
    font-family: Source Han Sans CN;
    font-weight: 400;
    color: #ffffff;
src/views/layer/layerManage.vue
@@ -269,7 +269,29 @@
  // });
  // treeData = handleTree(menuOption, "id", "pid", "children");
};
const setRestLayerData = () => {
  let son = estreeRef.value.getCheckedNodes().reverse();
  server.delLayerAll();
  var setGeoWms = [];
  var url = null;
  for (var i in son) {
    var layerArr = son[i];
    layerArr.checked = true;
    if (layerArr.category == 2 && layerArr.type == 3) {
      if (layerArr.tab != "moon:geo_mappable_unit") {
        setGeoWms.push(layerArr.tab);
        url = layerArr.url;
      }
    } else {
      server.addTreeData(layerArr);
    }
  }
  if (setGeoWms.length > 0) {
    server.addGeoServerMmsLayers(setGeoWms, url);
  }
  store.commit("SET_CHECKLAYER", son);
};
const getLayer = async () => {
  store.state.restLayer = false;
  server.delLayerAll();
@@ -280,15 +302,18 @@
    });
    var std = [];
    var terrainId = null;
    var adLayer = [];
    dt.result.filter((res) => {
      if (res.isLayer == 1 && res.isShow == 1) {
        if (res.type == 1 && res.data == 2) {
          if (!terrainId) {
            terrainId = res.id;
            std.push(res.id);
            adLayer.push(res);
          }
        } else {
          std.push(res.id);
          adLayer.push(res);
        }
      }
    });
@@ -299,8 +324,9 @@
    defaultLayer(dt.result);
    var setGeoWms = [];
    var url = null;
    for (var i in dt.result) {
      var layer = dt.result[i];
    for (var i in adLayer) {
      var layer = adLayer[i];
      if (layer.category == 2 && layer.type == 3) {
        if (layer.tab != "moon:geo_mappable_unit") {
          setGeoWms.push(layer.tab);
@@ -311,7 +337,7 @@
      }
    }
    if (setGeoWms.length > 0) {
      server.addGeoServerMmsLayers(setGeoWms.reverse(), url);
      server.addGeoServerMmsLayers(setGeoWms, url);
    }
    //;
    nextTick(() => {
@@ -340,11 +366,12 @@
    return father.pid == 0; // 返回一级菜单
  });
}
watch(
  () => store.state.restLayer,
  (nVal, oVal) => {
    if (nVal) {
      getLayer();
      setRestLayerData();
    }
  },
  { deep: true }
src/views/plotting/plotting.vue
@@ -1,8 +1,14 @@
<template>
  <div v-drag class="plottingBox">
  <div
    v-drag
    class="plottingBox"
  >
    <div class="plottingTitle">
      <div class="tileLeft">
        <div class="titleImg" @click="setCloseplotting">
        <div
          class="titleImg"
          @click="setCloseplotting"
        >
          <ArrowLeft />
        </div>
        <div class="titleLable">标绘查询</div>
@@ -12,9 +18,18 @@
      <div class="plotting_content_btn">
        <span class="plotting_content_title">标绘工具</span>
        <div class="plotting_btn">
          <div class="btn_box_d btn_box" @click="setMenuDraw('point')"></div>
          <div class="btn_box_x btn_box" @click="setMenuDraw('polyline')"></div>
          <div class="btn_box_m btn_box" @click="setMenuDraw('polygon')"></div>
          <div
            class="btn_box_d btn_box"
            @click="setMenuDraw('point')"
          ></div>
          <div
            class="btn_box_x btn_box"
            @click="setMenuDraw('polyline')"
          ></div>
          <div
            class="btn_box_m btn_box"
            @click="setMenuDraw('polygon')"
          ></div>
        </div>
      </div>
      <div class="plotting_list">
@@ -32,8 +47,14 @@
            /><span>{{ item.name }}</span>
          </div>
          <div class="plotting_list_tr_btn">
            <div class="tr_btn dw" @click.stop="setLayerLocation(item)"></div>
            <div class="tr_btn sc" @click.stop="setLayerRemove(item)"></div>
            <div
              class="tr_btn dw"
              @click.stop="setLayerLocation(item)"
            ></div>
            <div
              class="tr_btn sc"
              @click.stop="setLayerRemove(item)"
            ></div>
          </div>
        </div>
      </div>
src/views/query/CoordLocation.vue
@@ -37,10 +37,7 @@
            placeholder="请输入纬度..."
          />
        </el-form-item>
        <el-form-item
          label="高度:"
          prop="alt"
        >
        <el-form-item label="高度:">
          <el-input
            v-model="ruleForm.alt"
            placeholder="请输入高度..."
src/views/query/SpatialQuery.vue
@@ -77,7 +77,7 @@
            >
              <template #default="scope">
                <el-button
                  :icon="Location"
                  class="el-icon-map"
                  size="small"
                  @click.prevent="spaceLocation(scope.$index, scope.row)"
                >
@@ -513,9 +513,36 @@
    return ElMessage.error("空间查询失败");
  }
  listData.value.count = data.count;
  tableData.value = data.result;
  var val = data.result.filter((res) => {
    if (res.apprTime) {
      res.apprTime = format(res.apprTime);
    }
    if (res.createtime) {
      res.apprTime = format(res.createtime);
    }
    if (res.updatetime) {
      res.apprTime = format(res.updatetime);
    }
    return res;
  });
  tableData.value = val;
};
//格式化时间
const format = (shijianchuo) => {
  //shijianchuo是整数,否则要parseInt转换
  var time = new Date(shijianchuo);
  var y = time.getFullYear();
  var m = time.getMonth() + 1;
  var d = time.getDate();
  var h = time.getHours();
  var mm = time.getMinutes();
  var s = time.getSeconds();
  return y + "-" + add01(m) + "-" + add01(d) + " " + h + ":" + mm + ":" + s;
};
//格式化时间
const add01 = (m) => {
  return m < 10 ? "0" + m : m;
};
const setQueySpatialFields = async () => {
  const data = await dataQuery_selectFields({
    ns: "mn",
@@ -531,8 +558,17 @@
    }
  });
  attributeData.value = std;
  fieldOption.value = std;
  var val = std.filter((res) => {
    if (res.field.indexOf("_") > -1) {
      var str = res.field.split("_");
      res.field = str[0] + str[1][0].toUpperCase() + str[1].slice(1);
      return res;
    } else {
      return res;
    }
  });
  attributeData.value = val;
  fieldOption.value = val;
  conditionChange(data.result[0]);
  setQueySpatialData();
};
@@ -786,6 +822,16 @@
      color: #d6e4ff !important;
    }
  }
  .el-icon-map {
    background: url("../../assets/img/location.png") center no-repeat;
    background-size: 100% 100%;
    border: transparent;
  }
  .el-icon-map:before {
    content: "定位";
    font-size: 0;
    visibility: hidden;
  }
}
</style> 
<style lang="less"  >
src/views/query/detailsQuery.vue
@@ -82,7 +82,17 @@
    ElMessage.error("未查询到字段信息");
    return;
  }
  fieldData.value = data.result;
  var val = data.result;
  val.filter((res) => {
    if (res.field.indexOf("_") > -1) {
      var str = res.field.split("_");
      res.field = str[0] + str[1][0].toUpperCase() + str[1].slice(1);
      return res;
    } else {
      return res;
    }
  });
  fieldData.value = val;
  getLayerDomains();
};
const getLayerDomains = async () => {
@@ -149,7 +159,6 @@
      arr[vla.alias] = valste[vla.field];
    }
  }
  tableData.value = sortObj(arr);
};
const sortObj = (obj) => {
@@ -160,9 +169,14 @@
  arr.reverse();
  var len = arr.length;
  var obj = {};
  for (var i = 0; i < len; i++) {
    if (arr[i][1].indexOf("时间") > -1) {
      obj[arr[i][1]] = format(arr[i][0]);
    } else {
    obj[arr[i][1]] = arr[i][0];
  }
  }
  return obj;
};
src/views/search/search.vue
@@ -87,7 +87,7 @@
                @click="setPointLocal(item)"
              >
                <div class="table_th_x">{{ flag + 1 }}</div>
                <div class="table_th">{{ item.enName }}</div>
                <div class="table_th">{{ item.name }}</div>
              </div>
            </div>
          </div>
@@ -129,8 +129,10 @@
const NumhandleChange = (value: number) => {};
const handleChange = (val: string[]) => {};
const setPoitCannel = () => {
  if (imageLabel) {
  imageLabel.deleteObject();
  imageLabel = null;
  }
};
const setPointLocal = (res) => {
  if (imageLabel) {
@@ -139,7 +141,7 @@
  var position = { X: res.lon, Y: res.lat, Altitude: 10 };
  imageLabel = window.sgworld.Creator.CreateImageLabel(
    position,
    config.StaticFileBaseUrl + "/Workers/image/mark.png",
    config.StaticFileBaseUrl + "/Workers/image/location.png",
    {},
    0,
    "标签点"