管道基础大数据平台系统开发-【前端】-新系統界面
584911253@qq.com
2023-03-03 2fae357b20387b35a7cf0768120c2d9297b5fe08
空间查询属性点击事件,附件查看
已修改5个文件
221 ■■■■■ 文件已修改
src/components/MapView/mapMenuPop.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapMenuTop.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapSpacePop.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapSpaceTop.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/mapsdk.vue 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapMenuPop.vue
@@ -546,7 +546,7 @@
          this.imagePoint = null;
        }
        var wkt = this.$wkt.parse(val1);
        this.setMapLoaction(wkt);
        this.setMapLoaction(wkt,row);
      }
    },
    setMapLoaction(res) {
@@ -604,6 +604,7 @@
      this.listdata.pageIndex = 1;
      this.listdata.pageSize = 10;
      this.listdata.name = res.entity;
      this.$store.state.propertiesName = res;
      this.getTableDateHidder();
    },
    handleSizeChange(val) {
@@ -642,6 +643,7 @@
    },
    async showAllImage(res) {
      for (var i in res) {
        let properties = res[i];
        var param = {
          gid: res[i].gid,
          name: this.listdata.name,
@@ -654,7 +656,7 @@
        if (val1) {
          var wkt = this.$wkt.parse(val1);
          // this.getprimitiLayer(wkt);
          this.primitivesAddLayer(wkt);
          this.primitivesAddLayer(wkt,properties);
        }
      }
    },
@@ -667,7 +669,7 @@
          break;
      }
    },
    primitivesAddLayer(res) {
    primitivesAddLayer(res,properties) {
      switch (res.type) {
        case "Point":
          var val = Cesium.Cartesian3.fromDegrees(
@@ -676,6 +678,8 @@
          );
          var point = Viewer.entities.add({
            position: val,
            properties:properties,
            tag : "properties_point",
            billboard: {
              // 图像地址,URI或Canvas的属性
              image: SmartEarthRootUrl + "Workers/image/mark.png",
@@ -694,6 +698,29 @@
          });
          point.billboard.disableDepthTestDistance = Number.POSITIVE_INFINITY;
          this.$store.state.queryInfo.push(point);
            //点击事件
          window.propertieshandler = new Cesium.ScreenSpaceEventHandler(
              sgworld.Viewer.scene.canvas
          );
          window.propertieshandler.setInputAction(event => {
            let pick = sgworld.Viewer.scene.pick(event.position);
            // debugger;
            if (pick && pick.id && pick.id.tag == "properties_point") {
              this.$store.state.propertiesFlag = '1';
              let properties = pick.id.properties;
              let propertyNames = pick.id.properties.propertyNames;
              let obj = {};
              obj["eventid"] = properties['_eventid']._value;
              this.attributeData.forEach(item => {
                propertyNames.forEach(itemElement => {
                  if (itemElement == item.field){
                    obj[item.alias] = properties[itemElement]._value
                  }
                })
              })
              this.$store.state.propertiesInfo = obj;
            }
          }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
          break;
        case "LineString":
        case "MultiLineString":
@@ -752,6 +779,9 @@
      }
    });
  },
  destroyed() {
    this.$store.state.propertiesFlag = null;
  }
};
</script>
src/components/MapView/mapMenuTop.vue
@@ -343,8 +343,8 @@
    getCheckedNodes() {
      var valTree = this.$refs.tree.getCheckedNodes()
      if (valTree.length == 0) return
      this.menuTopFrom.queryLayer = valTree[0].tabDesc
      this.menuTopFrom.queryLayer = valTree[0].tabDesc;
      this.$store.state.propertiesName = valTree[0];
      for (var i = 0; i < valTree.length; i++) {
        if (valTree[i].entity) {
          this.treeChange.push(valTree[i])
src/components/MapView/mapSpacePop.vue
@@ -443,6 +443,8 @@
            let properties = pick.id.properties;
            let propertyNames = pick.id.properties.propertyNames;
            let obj = {};
            obj["eventid"] = properties['_eventid']._value;
            // debugger
            this.attributeData.forEach(item => {
              propertyNames.forEach(itemElement => {
                if (itemElement == item.field) {
src/components/MapView/mapSpaceTop.vue
@@ -151,7 +151,7 @@
      this.mapSpaceQueryLayer = value;
      this.layerData.forEach(item => {
        if (this.menuTopFrom.queryLayer == item.entity){
          this.$store.state.propertiesName = item.tabDesc;
          this.$store.state.propertiesName = item;
        }
      })
      this.getCheckedNodes();
src/components/mapsdk.vue
@@ -351,8 +351,9 @@
      >
        <el-card class="box-card">
          <div slot="header">
            <span>{{$store.state.propertiesName}}</span>
            <span>{{$store.state.propertiesName.tabDesc || '属性信息'}}</span>
            <div style="float: right; cursor: pointer">
              <el-link type="primary" :underline="false" @click="getAttatchList" style="margin-right: 10px">查看附件</el-link>
              <i
                class="el-icon-close"
                @click="closeBufferBox(6)"
@@ -368,12 +369,84 @@
              v-for="(value, key) in $store.state.propertiesInfo"
              :key="key"
            >
              <span style="font-size: 14px;font-weight: bold;margin-right: 5px">{{key}}:</span>
              <span>{{value}}</span>
              <span v-if="key != 'eventid'" style="font-size: 14px;font-weight: bold;margin-right: 5px">{{key}}:</span>
              <span v-if="key != 'eventid'">{{value}}</span>
            </div>
          </div>
        </el-card>
      </div>
      <!--附件列表弹窗-->
      <el-dialog
          title="附件列表"
          :append-to-body="false"
          :visible.sync="showAttach"
          width="30%"
          :close-on-click-modal="false"
      >
        <div>
          <el-table
              :data="attachList"
              height="100%"
              style="width: 100%"
              border
          >
            <el-table-column
                align="center"
                type="index"
                label="序号"
                width="50"
            />
            <el-table-column
                prop="name"
                label="名称"
                width="150">
            </el-table-column>
            <el-table-column
                prop="createTime"
                label="时间"
                width="150">
            </el-table-column>
            <el-table-column
                label="操作"
                width="100">
              <template slot-scope="scope">
                <el-button v-if="showAttachDetailBtn(scope.row)" @click="showAttachDetail(scope.row)" type="text" size="small">查看</el-button>
              </template>
            </el-table-column>
          </el-table>
        </div>
      </el-dialog>
      <!--附件弹窗-->
      <el-dialog
          title="预览"
          :append-to-body="false"
          :visible.sync="dialog.dialogVisible"
          width="70%"
          :close-on-click-modal="false"
      >
        <div
            v-if="dialog.isPdf"
            class="pdfClass"
        >
          <iframe
              :src="dialog.src"
              type="application/x-google-chrome-pdf"
              width="100%"
              height="100%"
          >
          </iframe>
        </div>
        <div
            v-if="dialog.isJpg"
            class="pdfClass"
        >
          <img
              style="width:100%; height:100%;background: red"
              :src="dialog.src"
              alt=""
          />
        </div>
      </el-dialog>
      <!--      <div-->
      <!--        @click="changeMenulayer"-->
      <!--        class="center CenDiv"-->
@@ -391,13 +464,14 @@
<script>
import $ from "jquery";
import mapMenuTop from "./MapView/mapMenuTop.vue";
import mapSpaceTop from "./MapView/mapSpaceTop.vue";
import {
  select_Comprehensive_ByPageAndCount,
  select_Comprehensive_SelectWktById,
  comprehensive_selectRoute,
  dataLib_selectFiles
} from "../api/api";
import {getToken} from '@/utils/auth'
export default {
  name: "",
@@ -436,7 +510,6 @@
        lon: "",
        lat: "",
      },
      rules: {
        lon: [
          { required: true, message: "请输入起点经纬度坐标", trigger: "blur" },
@@ -481,7 +554,6 @@
      layer3: null,
      isActive: false,
      isMenuLayer: true,
      selFrom: {},
      selectTree: null,
      showTerrainLevelDialog: false,
      menuList: [],
@@ -492,7 +564,16 @@
      show2DMap: false,
      terrainFrom: {
        height: '10'
      }, showLengendDialog: false,
      },
      showLengendDialog: false,
      showAttach:false,
      attachList:[],
      dialog: {
        dialogVisible: false,
        isPdf: false,
        isJpg: false,
        src: ''
      }
    };
  },
  mounted() {
@@ -1079,6 +1160,82 @@
      }
      this.$bus.$emit("changemapType", this.show2DMap);
    },
    //获取附件列表
    async getAttatchList() {
      let tabName = this.$store.state.propertiesName.ns+'.'+this.$store.state.propertiesName.tab;
      let eventid = this.$store.state.propertiesInfo.eventid;
      var obj = {
        eventid:eventid,
        tabName:tabName,
      };
      const res = await dataLib_selectFiles(obj);
      if (res.code != 200) {
        this.$message.error('附件查询失败');
        return
      }
      if (res.result.length <= 0) {
        this.$message.error('暂无附件');
        return
      }
      this.attachList = res.result;
      this.showAttach = true;
    },
    //是否显示查看按钮
    showAttachDetailBtn(row){
      var name = row.name;
      if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
        return true;
      }
      return false;
    },
    //数据初始化
    refreshAttatchDetail() {
      this.dialog.src = "";
      this.dialog.dialogVisible = false;
      this.dialog.isPdf = false;
      this.dialog.isJpg = false;
    },
    //查看附件
    showAttachDetail(row){
      this.refreshAttatchDetail();
      var name = row.name;
      if (name.indexOf('.pdf') != -1) {
        this.dialog.dialogVisible = true;
        this.dialog.isPdf = true;
        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
        this.dialog.src = url
      }
      else if (name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
        this.dialog.dialogVisible = true;
        this.dialog.isJpg = true;
        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
        this.dialog.src = url
      }
    },
    //格式化时间
    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 +
          '-' +
          this.add0(m) +
          '-' +
          this.add0(d) +
          ' ' +
          h +
          ':' +
          mm +
          ':' +
          s
      );
    },
  },
};
</script>
@@ -1331,6 +1488,12 @@
  background-size: contain;
}
.pdfClass {
  height: 70vh;
  width: 100%;
  position: relative;
}
// .menuSelect .el-input__inner {
//   background: rgba(255, 255, 255, 0.2) !important;
//   color: white !important;