管道基础大数据平台系统开发-【前端】-新系統界面
surprise
2024-04-22 3ffbf14664836032438b1fd496aefbd99187e2c9
src/components/preview_map.vue
@@ -1,71 +1,111 @@
<template>
  <div id="mapdiv" class="previewBox">
    <div v-if="modelLayer" class="modelLayer box_divm">
  <div id="mapdiv"
       class="previewBox">
    <div v-if="modelLayer"
         class="modelLayer box_divm">
      <div class="modelBox">
        <div style="float:right" :title="$t('synthesis.undergroundMode')" @click="setUndergroundMode">
        <div style="float:right"
             :title="$t('synthesis.undergroundMode')"
             @click="setUndergroundMode">
          <i class="el-icon-sunrise "></i>
        </div>
      </div>
      <div class="modelBox">
        <el-tree :data="treeData" show-checkbox node-key="id" ref="tree" :default-expanded-keys="[1]"
          :props="defaultProps" @node-click="handleNodeClick" @check="handleCheckChange" @node-contextmenu="rightClick">
        <el-tree :data="treeData"
                 show-checkbox
                 node-key="id"
                 ref="tree"
                 :default-expanded-keys="[1]"
                 :props="defaultProps"
                 @node-click="handleNodeClick"
                 @check="handleCheckChange"
                 @node-contextmenu="rightClick">
        </el-tree>
      </div>
    </div>
    <div v-if="editModelFlag" class="modelLayer box_divm">
      <el-form ref="form" :model="modelForm" label-width="80px">
    <div v-if="editModelFlag"
         class="modelLayer box_divm">
      <el-form ref="form"
               :model="modelForm"
               label-width="80px">
        <el-form-item>
          <el-button size="small" v-if="$store.state.previewLayer.stype != 'yl'"
          <el-button size="small"
                     v-if="$store.state.previewLayer.stype != 'yl'"
            @click="dialogLayerVisible = true">图层</el-button>
          <el-button size="small" v-if="$store.state.previewLayer.type == 'mpt'" @click="setcropping">裁剪</el-button>
          <el-button size="small" v-if="$store.state.previewLayer.type != 'mpt'" @click="locateTo">定位</el-button>
          <el-button size="small" v-if="$store.state.previewLayer.type != 'mpt'" @click="showTileset">显隐</el-button>
          <el-button size="small"
                     v-if="$store.state.previewLayer.type == 'mpt'"
                     @click="setcropping">裁剪</el-button>
          <el-button size="small"
                     v-if="$store.state.previewLayer.type != 'mpt'"
                     @click="locateTo">定位</el-button>
          <el-button size="small"
                     v-if="$store.state.previewLayer.type != 'mpt'"
                     @click="showTileset">显隐</el-button>
          <el-button size="small" v-if="$store.state.previewLayer.type != 'mpt'"
          <el-button size="small"
                     v-if="$store.state.previewLayer.type != 'mpt'"
            @click="setUndergroundMode">地下</el-button>
          <br />
          <el-button v-if="$store.state.previewLayer.type != '3dml' &&
            $store.state.previewLayer.type != 'cpt' &&
            $store.state.previewLayer.type != 'mpt'" size="small" @click="pickupCoords">拾取</el-button>
            $store.state.previewLayer.type != 'mpt'"
                     size="small"
                     @click="pickupCoords">拾取</el-button>
          <el-button v-if="$store.state.previewLayer.type != '3dml' &&
            $store.state.previewLayer.type != 'cpt' &&
            $store.state.previewLayer.type != 'mpt'" size="small" @click="reload">
            $store.state.previewLayer.type != 'mpt'"
                     size="small"
                     @click="reload">
            重载
          </el-button>
          <el-button v-if="modelForm.modelid == null && $store.state.previewLayer.type != '3dml' &&
            $store.state.previewLayer.type != 'cpt' &&
            $store.state.previewLayer.type != 'mpt'" size="small" @click="getModeKeyId">模型主键</el-button>
            $store.state.previewLayer.type != 'mpt'"
                     size="small"
                     @click="getModeKeyId">模型主键</el-button>
          <el-button v-if="$store.state.previewLayer.type != '3dml' &&
            $store.state.previewLayer.type != 'cpt'
            " size="small" @click="resave">保存</el-button>
            "
                     size="small"
                     @click="resave">保存</el-button>
        </el-form-item>
        <el-form-item label="经度:" v-if="$store.state.previewLayer.type != '3dml' &&
        <el-form-item label="经度:"
                      v-if="$store.state.previewLayer.type != '3dml' &&
          $store.state.previewLayer.type != 'cpt' &&
          $store.state.previewLayer.type != 'mpt'">
          <el-input size="small" v-model="modelForm.lon"></el-input>
          <el-input size="small"
                    v-model="modelForm.lon"></el-input>
        </el-form-item>
        <el-form-item label="纬度:" v-if="$store.state.previewLayer.type != '3dml' &&
        <el-form-item label="纬度:"
                      v-if="$store.state.previewLayer.type != '3dml' &&
          $store.state.previewLayer.type != 'cpt' &&
          $store.state.previewLayer.type != 'mpt'">
          <el-input size="small" v-model="modelForm.lat"></el-input>
          <el-input size="small"
                    v-model="modelForm.lat"></el-input>
        </el-form-item>
        <el-form-item label="高度:" v-if="$store.state.previewLayer.type != '3dml' &&
        <el-form-item label="高度:"
                      v-if="$store.state.previewLayer.type != '3dml' &&
          $store.state.previewLayer.type != 'cpt' &&
          $store.state.previewLayer.type != 'mpt'">
          <el-input size="small" v-model="modelForm.height"></el-input>
          <el-input size="small"
                    v-model="modelForm.height"></el-input>
        </el-form-item>
        <el-form-item label="角度:" v-if="$store.state.previewLayer.type != '3dml' &&
        <el-form-item label="角度:"
                      v-if="$store.state.previewLayer.type != '3dml' &&
          $store.state.previewLayer.type != 'cpt' &&
          $store.state.previewLayer.type != 'mpt'">
          <el-input size="small" v-model="modelForm.yaw"></el-input>
          <el-input size="small"
                    v-model="modelForm.yaw"></el-input>
        </el-form-item>
        <el-form-item label="比例:" v-if="$store.state.previewLayer.type == 'las'">
          <el-input size="small" v-model="modelForm.scale"></el-input>
        <el-form-item label="比例:"
                      v-if="$store.state.previewLayer.type == 'las'">
          <el-input size="small"
                    v-model="modelForm.scale"></el-input>
        </el-form-item>
        <!-- <el-form-item label="透明度:">
@@ -78,20 +118,34 @@
      </el-form>
    </div>
    <el-dialog :title="formInline.title" :visible.sync="dialogVisible" :modal="false" :modal-append-to-body="false"
      :close-on-click-modal="false" :before-close="handleClose" width="30%">
    <el-dialog :title="formInline.title"
               :visible.sync="dialogVisible"
               :modal="false"
               :modal-append-to-body="false"
               :close-on-click-modal="false"
               :before-close="handleClose"
               width="30%">
      <div style="height:63vh">
        <el-tabs v-model="activeName" @tab-click="handleClick">
          <el-tab-pane label="属性" name="first" v-if="serveType">
            <el-form ref="form" :model="formInline" label-width="80px">
        <el-tabs v-model="activeName"
                 @tab-click="handleClick">
          <el-tab-pane label="属性"
                       name="first"
                       v-if="serveType">
            <el-form ref="form"
                     :model="formInline"
                     label-width="80px">
              <el-form-item :label="$t('common.name')">
                <el-input v-model="formInline.name"></el-input>
              </el-form-item>
              <el-form-item :label="$t('common.type')">
                <el-select v-model="formInline.type" style="width:100%">
                  <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
                <el-select v-model="formInline.type"
                           style="width:100%">
                  <el-option v-for="item in options"
                             :key="item.value"
                             :label="item.label"
                             :value="item.value">
                  </el-option>
                </el-select>
@@ -102,46 +156,80 @@
              </el-form-item>
              <el-form-item>
                <el-button v-show="isShowModel" type="success" plain size="small" @click="InsertData">{{
                <el-button v-show="isShowModel"
                           type="success"
                           plain
                           size="small"
                           @click="InsertData">{{
                  $t('common.increase') }}</el-button>
                <el-button v-show="!isShowModel" type="info" plain size="small" @click="EditData">{{ $t('common.update')
                <el-button v-show="!isShowModel"
                           type="info"
                           plain
                           size="small"
                           @click="EditData">{{ $t('common.update')
                }}</el-button>
              </el-form-item>
            </el-form>
          </el-tab-pane>
          <el-tab-pane label="附件" name="second">
            <el-form :model="fromfile" class="demo-form-inline">
          <el-tab-pane label="附件"
                       name="second">
            <el-form :model="fromfile"
                     class="demo-form-inline">
              <el-form-item>
                <el-input v-model="fromfile.file" style="width: 300px; margin-right: 20px"
                  :placeholder="$t('common.choose')" disabled></el-input>
                <input name="file1" type="file" id="insertFile" multiple="multiple" style="display: none"
                <el-input v-model="fromfile.file"
                          style="width: 300px; margin-right: 20px"
                          :placeholder="$t('common.choose')"
                          disabled></el-input>
                <input name="file1"
                       type="file"
                       id="insertFile"
                       multiple="multiple"
                       style="display: none"
                  @change="insertFile()" />
                <el-link @click="getInsertFile()" :underline="false"><i class="el-icon-folder-opened"></i></el-link>
                <el-link @click="getInsertFile()"
                         :underline="false"><i class="el-icon-folder-opened"></i></el-link>
              </el-form-item>
              <el-form-item>
                <el-row>
                  <el-col :span="3">
                    <el-link class="elLink" :underline="false" @click="setAttachInsert">{{ $t('common.append')
                    <el-link class="elLink"
                             :underline="false"
                             @click="setAttachInsert">{{ $t('common.append')
                    }}</el-link>
                  </el-col>
                  <el-col :span="3">
                    <el-link class="elLink" :underline="false" @click="setAttachDel">{{ $t('common.delete') }}</el-link>
                    <el-link class="elLink"
                             :underline="false"
                             @click="setAttachDel">{{ $t('common.delete') }}</el-link>
                  </el-col>
                </el-row>
              </el-form-item>
            </el-form>
            <el-table :data="tableData" ref="filterTable" height="calc(100% - 130px)" border style="width: 100%"
            <el-table :data="tableData"
                      ref="filterTable"
                      height="calc(100% - 130px)"
                      border
                      style="width: 100%"
              @selection-change="handleAttatchChange">
              <el-table-column type="selection" width="70" />
              <el-table-column width="60" type="index" :label="$t('common.index')" />
              <el-table-column prop="name" :label="$t('common.name')" />
              <el-table-column type="selection"
                               width="70" />
              <el-table-column width="60"
                               type="index"
                               :label="$t('common.index')" />
              <el-table-column prop="name"
                               :label="$t('common.name')" />
              <el-table-column prop="sizes" :label="$t('common.size')" :formatter="statSizeChange" />
              <el-table-column align="center" :label="$t('common.operate')" min-width="100">
              <el-table-column prop="sizes"
                               :label="$t('common.size')"
                               :formatter="statSizeChange" />
              <el-table-column align="center"
                               :label="$t('common.operate')"
                               min-width="100">
                <template slot-scope="scope">
                  <el-link v-if="matchState(scope, /[]/)" @click="setAttatchDetail(scope.$index, scope.row)"
                  <el-link v-if="matchState(scope, /[]/)"
                           @click="setAttatchDetail(scope.$index, scope.row)"
                    class="elLink">{{ $t('common.see') }}</el-link>
                </template>
@@ -165,21 +253,32 @@
        <map-sdk v-if='showMapVisible'></map-sdk>
      </div>
    </el-dialog> -->
    <el-dialog title="预览" :append-to-body="false" :visible.sync="dialog.dialogVisible" width="70%"
    <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%">
      <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">
      <div v-if="dialog.isJpg"
           class="pdfClass">
        <el-image style="width:100%; height:100%" :src="dialog.src" :preview-src-list="[dialog.src]">
        <el-image style="width:100%; height:100%"
                  :src="dialog.src"
                  :preview-src-list="[dialog.src]">
        </el-image>
      </div>
    </el-dialog>
    <div v-show="dialogLayerVisible" class="levelLayer box_divm">
    <div v-show="dialogLayerVisible"
         class="levelLayer box_divm">
      <div class="levelTitle">
        <div>
          图层列表
@@ -189,33 +288,51 @@
        </div>
      </div>
      <div class="layerContent">
        <div v-for="(item, index) in layerTree" class="contLayer">
          <div> <el-checkbox v-model="item.checked" @change="setLayerTreeChange(item)">{{ item.cnName }}</el-checkbox>
        <div v-for="(item, index) in layerTree"
             class="contLayer">
          <div>
            <el-checkbox v-model="item.checked"
                         @change="setLayerTreeChange(item)">{{ item.cnName }}</el-checkbox>
          </div>
          <div>
            <el-button icon="el-icon-map-location" size="mini" @click="setLayerTreeLocation(item)"></el-button>
            <el-button icon="el-icon-map-location"
                       size="mini"
                       @click="setLayerTreeLocation(item)"></el-button>
          </div>
        </div>
      </div>
    </div>
    <div v-show="modelKeyFlag" class="modelLayer box_divm" v-drag>
      <el-form ref="form" :model="modelForm" label-width="80px">
    <div v-show="modelKeyFlag"
         class="modelLayer box_divm"
         v-drag>
      <el-form ref="form"
               :model="modelForm"
               label-width="80px">
        <el-form-item label="主键ID">
          <el-select v-model="modelLayerId">
            <el-option v-for="item in optionKey" :key="item.value" :label="item.label" :value="item.value">
            <el-option v-for="item in optionKey"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" size="small" @click="setSureKeyModelKey">{{ $t('common.confirm') }}</el-button>
          <el-button type="primary"
                     size="small"
                     @click="setSureKeyModelKey">{{ $t('common.confirm') }}</el-button>
        </el-form-item>
      </el-form>
    </div>
    <undergroundModel ref="undergroundModel" />
    <el-card class="box-card" ref="card" :style="{ ...rightClickMenuStyle }" v-show="menuVisible">
      <div class="edit" @click="setShowFile">
    <el-card class="box-card"
             ref="card"
             :style="{ ...rightClickMenuStyle }"
             v-show="menuVisible">
      <div class="edit"
           @click="setShowFile">
        <i class="el-icon-tickets"></i>&nbsp;&nbsp;附件
      </div>
    </el-card>
@@ -233,7 +350,8 @@
  dataQuery_deletes,
  publish_update,
  comprehensive_selectPubById,
  resSelectCountForRole
  resSelectCountForRole,
  meta_selectConvertToDwg
} from '../api/api.js';
import { getToken } from '@/utils/auth';
import undergroundModel from '../views/Tools/undergroundModel.vue'
@@ -504,7 +622,20 @@
        this.dialog.isJpg = true;
        var url = BASE_URL + "/comprehensive/downloadForView?guid=" + row.guid + "&token=" + getToken();
        this.dialog.src = url
      } if(name.indexOf('.dwg')!=-1) {
        console.log(row)
        this.handleCAD(row)
      }
    },
    async handleCAD (row) {
      const data=await meta_selectConvertToDwg(row.id);
      if(data.result) {
        var url=iisHost+"/dwg/cad/browse/?file=data/"+data.result;
        window.open(url)
      } else {
        return this.$message("数据转换失败,无法预览");
      }
    },
    async setAttachDel() {
      var std = [];
@@ -585,6 +716,7 @@
        || name.indexOf('.bmp') != -1
        || name.indexOf('.pdf') != -1
        || name.indexOf('.PDF') != -1
        ||name.indexOf('.dwg')!=-1
      ) {
        return true;
      }
@@ -1523,7 +1655,8 @@
  }
  .el-icon-sunrise {
    background: url("../assets/img/synthesis/images/3白底_157.png") center center no-repeat;
    background: url("../assets/img/synthesis/images/3白底_157.png") center
      center no-repeat;
    background-size: 24px;
  }