管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-01-16 21ddc9ec1b1b76d2ce20e512328e65acaf1af2bf
src/views/exportMap/index.vue
@@ -3,22 +3,28 @@
    id="mapView"
    class="MapBox"
    v-loading="loading"
    element-loading-spinner="el-icon-loading"
    element-loading-background="rgba(0, 0, 0, 0.8)"
  >
    <div class="topMenu">
      <el-form :inline="true" :model="formInline" class="demo-form-inline">
      <el-form
        :inline="true"
        :model="formInline"
        class="demo-form-inline"
      >
        <el-form-item>
          <el-link
            style="color: white"
            @click="showLeftMenu(1)"
            :underline="false"
            title="图层列表"
            ><i class="el-icon-s-operation"></i
          ></el-link>
          ><i class="el-icon-s-operation"></i></el-link>
        </el-form-item>
        <el-form-item label="比例尺">
          <el-select v-model="value" placeholder="请选择">
        <el-form-item>
          <el-select
            v-model="value"
            placeholder="请选择"
          >
            <el-option
              v-for="item in options"
              :key="item.value"
@@ -34,8 +40,7 @@
            style="color: white"
            @click="setMapAddDraw()"
            :underline="false"
            ><i class="el-icon-edit-outline"></i>绘制</el-link
          >
          ><i class="el-icon-edit-outline"></i>绘制</el-link>
        </el-form-item>
        <el-form-item>
          <el-link
@@ -44,8 +49,7 @@
            @click="setMapRemoveDraw()"
            :underline="false"
            title="图层列表"
            ><i class="el-icon-delete"></i>清除</el-link
          >
          ><i class="el-icon-delete"></i>清除</el-link>
        </el-form-item>
        <el-form-item>
@@ -54,32 +58,29 @@
            @click="showMapApply = true"
            :underline="false"
            :disabled="layerExtent == null"
            >出图申请
          </el-link></el-form-item
        >
          >出图申请
          </el-link>
        </el-form-item>
        <el-form-item>
          <el-link
            style="color: white"
            @click="getShowMapList"
            :underline="false"
            >出图列表</el-link
          ></el-form-item
        >
          >出图列表</el-link>
        </el-form-item>
        <el-form-item>
          <el-link
            style="color: white"
            @click="changeMenulayer"
            :underline="false"
            v-show="isActive"
            >影像</el-link
          >
          >影像</el-link>
          <el-link
            style="color: white"
            v-show="!isActive"
            @click="changeMenulayer"
            :underline="false"
            >矢量</el-link
          >
          >矢量</el-link>
        </el-form-item>
        <el-form-item label="旋转角度">
          <el-input
@@ -96,13 +97,19 @@
      :class="{ left_main_show: !leftMenuOpen }"
    >
      <div class="menu_content">
        <div class="topHeader" v-show="lefMenuContent">
        <div
          class="topHeader"
          v-show="lefMenuContent"
        >
          <div>图层列表</div>
          <div @click="showLeftMenu(2)"><i class="el-icon-s-fold"></i></div>
        </div>
        <el-divider></el-divider>
        <div class="bottomContent">
          <div style="width: 100%" v-show="lefMenuContent">
          <div
            style="width: 100%"
            v-show="lefMenuContent"
          >
            <el-tree
              :data="data"
              show-checkbox
@@ -118,41 +125,67 @@
      </div>
    </div>
    <div class="mapApplay" v-if="showMapApply">
    <div
      class="mapApplay"
      v-if="showMapApply"
    >
      <label>出图申请</label>
      <el-divider />
      <el-form ref="form" :model="form" label-width="80px">
      <el-form
        ref="form"
        :model="form"
        label-width="80px"
      >
        <el-form-item label="出图名称">
          <el-input v-model="form.name"></el-input>
        </el-form-item>
        <el-form-item>
          <el-table
            ref="singleTable"
            :data="tableData"
            style="width: 100%"
            height="200"
          >
            <el-table-column type="index" label="序号" width="50">
            </el-table-column>
          <div style="padding:1%;border:1px solid white">
            <el-table
              ref="singleTable"
              :data="tableData"
              style="width: 100%"
              height="200"
            >
              <el-table-column
                type="index"
                label="序号"
                width="50"
              >
              </el-table-column>
            <el-table-column property="name" label="图层名称">
            </el-table-column>
          </el-table>
              <el-table-column
                property="name"
                label="图层名称"
              >
              </el-table-column>
            </el-table>
          </div>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="setMapApply">立即创建</el-button>
          <el-button
            type="primary"
            @click="setMapApply"
          >立即创建</el-button>
          <el-button @click="showMapApply = false">取消</el-button>
        </el-form-item>
      </el-form>
    </div>
    <div class="mapApplay" v-if="showMapList">
    <div
      class="mapApplay"
      v-if="showMapList"
    >
      <div>
        <label>出图列表</label>
        <div style="float: right">
          <el-link @click="showMapList = false" :underline="false"
            ><i style="color: white" class="el-icon-close"></i
          ></el-link>
          <el-link
            @click="showMapList = false"
            :underline="false"
          ><i
              style="color: white"
              class="el-icon-close"
            ></i></el-link>
        </div>
      </div>
      <el-divider />
@@ -163,25 +196,41 @@
        height="200"
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="index" width="50" label="序号">
        <el-table-column
          type="index"
          width="50"
          label="序号"
        >
        </el-table-column>
        <el-table-column property="name" label="名称"> </el-table-column>
        <el-table-column property="type" label="类型"> </el-table-column>
        <el-table-column
          property="descr"
          label="标题"
        > </el-table-column>
        <el-table-column
          property="name"
          label="文件名称"
        > </el-table-column>
        <el-table-column
          property="createName"
          label="出图人"
        > </el-table-column>
        <el-table-column
          property="createTime"
          :formatter="formatTime"
          label="日期"
        >
        </el-table-column>
        <el-table-column property="descr" label="描述"> </el-table-column>
        <el-table-column label="操作" width="120">
        <el-table-column
          label="操作"
          width="120"
        >
          <template slot-scope="scope">
            <el-link
              style="color: white"
              @click.native.prevent="downloadMap(scope.$index, scope.row)"
              :underline="false"
              >下载</el-link
            >
            >下载</el-link>
          </template>
        </el-table-column>
      </el-table>
@@ -205,7 +254,11 @@
      width="30%"
      :before-close="handleClose"
    >
      <el-form ref="layerform" :model="layerform" label-width="80px">
      <el-form
        ref="layerform"
        :model="layerform"
        label-width="80px"
      >
        <el-form-item label="服务名称">
          <el-input v-model="layerform.name"></el-input>
        </el-form-item>
@@ -215,12 +268,21 @@
          </el-radio-group>
        </el-form-item>
        <el-form-item label="服务地址">
          <el-input type="textarea" v-model="layerform.resource"></el-input>
          <el-input
            type="textarea"
            v-model="layerform.resource"
          ></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
      <span
        slot="footer"
        class="dialog-footer"
      >
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="setAddMapLayer">确 定</el-button>
        <el-button
          type="primary"
          @click="setAddMapLayer"
        >确 定</el-button>
      </span>
    </el-dialog>
  </div>
@@ -267,8 +329,16 @@
      tableData: [],
      exportable: [],
      multipleSelection: [],
      options: [{ label: '1:20万', value: '1:20万' }],
      value: '1:20万',
      options: [
        { label: 'A0', value: 'A0' },
        { label: 'A1', value: 'A1' },
        { label: 'A2', value: 'A2' },
        { label: 'A3', value: 'A3' },
        { label: 'A4', value: 'A4' },
        { label: 'A5', value: 'A5' },
        { label: 'A6', value: 'A6' },
      ],
      value: 'A4',
      data: [
        {
          id: 1,
@@ -395,17 +465,26 @@
      this.count = data.count;
    },
    getYMD() {
      let myDate = new Date();
      let myYear = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
      let myMonth = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
      let myToday = myDate.getDate(); //获取当前日(1-31)
      myMonth = myMonth > 9 ? myMonth : '0' + myMonth;
      myToday = myToday > 9 ? myToday : '0' + myToday;
      let nowDate = 'V' + myYear + myMonth + myToday;
      return nowDate;
    },
    setExportMapLayer(res) {
      var token = '?token=' + getToken();
      var data = {
        token: token.replace('?token=', ''),
        title: this.form.name,
        pageSize: 'A4',
        pageSize: this.value,
        province: '山东省',
        scale: this.value,
        scale: '1:20万',
        resolution: '20米',
        date: '2022.11.14',
        date: this.getYMD(),
        layers: res.toString(),
        rotation: 0,
        xmin: this.layerExtent.xmin,
@@ -421,13 +500,13 @@
        data: JSON.stringify(data),
        contentType: 'application/json',
        dataType: 'json',
        error: function () {},
        error: function () { },
        success: (rs) => {
          this.loading = false;
          var value = 'code = ' + rs.code + ', result = ' + rs.result;
          if ((rs.code = 200)) {
            this.$message({
              message: value,
              message: "出图成功,请到出图列表查看并下载",
              type: 'success',
            });
            this.setMapRemoveDraw();
@@ -511,16 +590,15 @@
      }
      if (this.isActive) {
        val_data.push('矢量图');
        val_data.push('矢量注记');
      } else {
        val_data.push('影像');
        val_data.push('影像注记');
        val_data.push('影像图');
      }
      this.setExportMapLayer(val_data);
      this.showMapApply = false;
      this.form = {};
    },
    handleClose() {},
    handleClose() { },
    handleTreeNodeClick(data, nodes) {
      if (data.children != null) return;
      var layers = mapView.getAllLayers();
@@ -564,14 +642,10 @@
    initMap() {
      var TiandiLayer = new TileLayer({
        source: new XYZ({
          url: 'http://t0.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=94a34772eb88317fcbf8428e10448561',
          url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}',
        }),
      });
      var TiandiTitle = new TileLayer({
        source: new XYZ({
          url: 'http://t0.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=94a34772eb88317fcbf8428e10448561',
        }),
      });
      var GaoDeLayer = new TileLayer({
        source: new XYZ({
          url: 'http://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=6',
@@ -584,15 +658,15 @@
      });
      window.mapView = new Map({
        target: 'mapView',
        layers: [TiandiLayer, TiandiTitle, GaoDeLayer, GaoDeTitle],
        layers: [TiandiLayer, GaoDeLayer, GaoDeTitle],
        view: new View({
          center: transform([105.02, 34.9], 'EPSG:4326', 'EPSG:3857'),
          zoom: 4,
          projection: 'EPSG:3857',
        }),
      });
      mapView.getLayers().item(1).setVisible(false);
      mapView.getLayers().item(2).setVisible(false);
      mapView.getLayers().item(3).setVisible(false);
      this.formInline.role = mapView.getView().getRotation();
    },
    //切换底图
@@ -603,15 +677,13 @@
    },
    setLayerVisible() {
      if (this.isActive == true) {
        mapView.getLayers().item(2).setVisible(false);
        mapView.getLayers().item(3).setVisible(false);
        mapView.getLayers().item(0).setVisible(true);
        mapView.getLayers().item(1).setVisible(true);
      } else {
        mapView.getLayers().item(2).setVisible(true);
        mapView.getLayers().item(3).setVisible(true);
        mapView.getLayers().item(0).setVisible(false);
        mapView.getLayers().item(1).setVisible(false);
        mapView.getLayers().item(2).setVisible(false);
        mapView.getLayers().item(0).setVisible(true);
      } else {
        mapView.getLayers().item(1).setVisible(true);
        mapView.getLayers().item(2).setVisible(true);
        mapView.getLayers().item(0).setVisible(false);
      }
    },
  },
@@ -671,7 +743,7 @@
      .active {
        height: 40px;
        width: 60px;
        background: url('../../assets/img/Layer/imgLayer2.png') no-repeat center;
        background: url("../../assets/img/Layer/imgLayer2.png") no-repeat center;
        position: absolute;
        background-size: 100% 100%;
        border-radius: 5px;
@@ -679,7 +751,7 @@
      .menuLayer {
        height: 40px;
        width: 60px;
        background: url('../../assets/img/Layer/imgLayer1.png') no-repeat center;
        background: url("../../assets/img/Layer/imgLayer1.png") no-repeat center;
        position: absolute;
        background-size: 100% 100%;
        border-radius: 5px;
@@ -693,7 +765,7 @@
  .mapApplay {
    width: 40%;
    position: absolute;
    background: rgba(0, 0, 0, 0.5);
    background: #303030;
    z-index: 40;
    top: 15%;
    margin-left: 30%;