管道基础大数据平台系统开发-【前端】-新系統界面
TreeWish
2023-03-03 b6c8e7c61f0270598ba7fdbc44f79512e010d0fe
src/components/mapsdk.vue
@@ -327,37 +327,127 @@
          </div> -->
          <div class="lengendBox">
            <div class="lengendSpan">
              <div style="left:10px">0°</div>
              <div style="align-self: flex-end;left:10px; position: absolute;
          bottom: 8%; ">70°</div>
            <div>
              <img
                class="lengendImg"
                src="../assets/img/colors.png"
              />
            </div>
            <div
              class="lengend_color"
              style="height:205px; width:30px "
            ></div>
            <div class="lengendSpan">
              <div>0°</div>
              <div>17.5°</div>
              <div>35°</div>
              <div>52.5°</div>
              <div>70°</div>
            </div>
          </div>
        </el-card>
      </div>
      <div class="propertiesPop" v-if="$store.state.propertiesFlag == '1'">
      <div
        class="propertiesPop"
        v-if="$store.state.propertiesFlag == '1'"
      >
        <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)"
                class="el-icon-close"
                @click="closeBufferBox(6)"
              ></i>
            </div>
          </div>
          <div class="pointInfoBoxContext" style="height:250px;overflow-y: auto">
            <div style="line-height: 20px" 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>
          <div
            class="pointInfoBoxContext"
            style="height:250px;overflow-y: auto"
          >
            <div
              style="line-height: 20px"
              v-for="(value, key) in $store.state.propertiesInfo"
              :key="key"
            >
              <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="35%"
          :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="名称">
            </el-table-column>
            <el-table-column
                label="时间"
                width="180">
              <template slot-scope="scope">
                <span>{{format(scope.row.createTime)}}</span>
              </template>
            </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%;"
              :src="dialog.src"
              alt=""
          />
        </div>
      </el-dialog>
      <!--      <div-->
      <!--        @click="changeMenulayer"-->
      <!--        class="center CenDiv"-->
@@ -375,13 +465,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: "",
@@ -420,7 +511,6 @@
        lon: "",
        lat: "",
      },
      rules: {
        lon: [
          { required: true, message: "请输入起点经纬度坐标", trigger: "blur" },
@@ -465,7 +555,6 @@
      layer3: null,
      isActive: false,
      isMenuLayer: true,
      selFrom: {},
      selectTree: null,
      showTerrainLevelDialog: false,
      menuList: [],
@@ -476,7 +565,16 @@
      show2DMap: false,
      terrainFrom: {
        height: '10'
      }, showLengendDialog: false,
      },
      showLengendDialog: false,
      showAttach:false,
      attachList:[],
      dialog: {
        dialogVisible: false,
        isPdf: false,
        isJpg: false,
        src: ''
      }
    };
  },
  mounted() {
@@ -1063,6 +1161,86 @@
      }
      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
      );
    },
    //格式化时间
    add0(m) {
      return m < 10 ? '0' + m : m;
    },
  },
};
</script>
@@ -1103,14 +1281,14 @@
      right: 8%;
      bottom: 1%;
    }
    .propertiesPop{
    .propertiesPop {
      width: 350px;
      height: 370px;
      z-index: 40;
      position: absolute;
      right: 8%;
      bottom: 1%;
      /deep/ .el-card__header{
      /deep/ .el-card__header {
        padding: 10px 20px;
      }
      /deep/ .el-card__body {
@@ -1158,32 +1336,29 @@
      position: absolute;
      z-index: 40;
    }
    .lengend {
      width: 80px;
    .lengend {
      width: 300px;
      z-index: 40;
      position: absolute;
      right: 8%;
      bottom: 1%;
      right: 1%;
      bottom: 13%;
      transform: rotate(90deg);
      .lengendBox {
        width: 100%;
        height: 100%;
        display: flex;
        .lengendSpan {
          flex-direction: column;
          align-items: center;
          display: flex;
          justify-content: space-between;
          margin-top: 10px;
          div {
            transform: rotate(-90deg);
          }
        }
        .lengend_color {
          background-image: linear-gradient(
            #0055ff,
            #2448da,
            #483cb6,
            #6d3091,
            #91246d,
            #b61848,
            #da0c24
          );
        .lengendImg {
          -ms-transform: rotate(180deg); /* IE 9 */
          -webkit-transform: rotate(180deg); /* Safari and Chrome */
          transform: rotate(180deg);
          width: 100%;
          height: 30px;
        }
      }
    }
@@ -1318,6 +1493,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;