| | |
| | | <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" |
| | | @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.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="setUndergroundMode" |
| | | >地下</el-button> |
| | | <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' && |
| | | <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> |
| | | <el-button |
| | | v-if="$store.state.previewLayer.type != '3dml' && |
| | | $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' && |
| | | <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> |
| | | <el-button |
| | | v-if="$store.state.previewLayer.type != '3dml' && |
| | | $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> |
| | | $store.state.previewLayer.type != 'mpt'"> |
| | | <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> |
| | | $store.state.previewLayer.type != 'mpt'"> |
| | | <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> |
| | | $store.state.previewLayer.type != 'mpt'"> |
| | | <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> |
| | | $store.state.previewLayer.type != 'mpt'"> |
| | | <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="透明度:"> |
| | |
| | | </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> |
| | | |
| | |
| | | |
| | | </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" |
| | | @change="insertFile()" |
| | | /> |
| | | <el-link |
| | | @click="getInsertFile()" |
| | | :underline="false" |
| | | ><i class="el-icon-folder-opened"></i></el-link> |
| | | <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-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%" |
| | | @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 :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 |
| | | 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)" |
| | | class="elLink" |
| | | >{{ $t('common.see') }}</el-link> |
| | | <el-link v-if="matchState(scope, /[]/)" @click="setAttatchDetail(scope.$index, scope.row)" |
| | | class="elLink">{{ $t('common.see') }}</el-link> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <map-sdk v-if='showMapVisible'></map-sdk> |
| | | </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%" |
| | | > |
| | | <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" |
| | | > |
| | | <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> |
| | | 图层列表 |
| | |
| | | </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> |
| | | <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> 附件 |
| | | </div> |
| | | </el-card> |
| | |
| | | Viewer.scene.globe.depthTestAgainstTerrain = true; |
| | | // window.elevationTool = new SmartEarth.ElevationTool(window.sg); |
| | | // elevationTool.setContourColor("#F1D487"); |
| | | var option = { |
| | | url: window.sceneConfig.SGUrl, |
| | | layerName: window.sceneConfig.mptName, |
| | | requestVertexNormals: true, |
| | | }; |
| | | window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); |
| | | window.terrainFlag = '2' |
| | | window.terrainLayer = new Cesium.CesiumTerrainProvider({ |
| | | // url: LFData + '/3d/terrain/dem20230321' |
| | | url: demLayer |
| | | }); |
| | | Viewer.terrainProvider = window.terrainLayer |
| | | |
| | | window.terrainFlag = '1' |
| | | // window.terrainLayer = new Cesium.CesiumTerrainProvider({ |
| | | // url: demLayer |
| | | // url: demLayer |
| | | // }); |
| | | |
| | | // Viewer.terrainProvider = window.terrainLayer |
| | | |
| | | if (this.$store.state.previewLayer) { |
| | | var res = this.$store.state.previewLayer; |
| | | var type = res.type; |
| | | console.log(type) |
| | | res.ulr = res.url.replace("{host}", iisHost); |
| | | if (type == 'DEM') { |
| | | window.terrainLayer.deleteObject(); |
| | | // Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); |
| | | // window.terrainLayer.deleteObject(); |
| | | Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); |
| | | // window.terrainLayer = null; |
| | | window.terrainLayer = null; |
| | | window.terrainLayer = new Cesium.CesiumTerrainProvider({ |
| | |
| | | roll: 0.0 |
| | | } |
| | | });*/ |
| | | |
| | | if (res.geom) { |
| | | var wkt = this.$wkt.parse(res.geom); |
| | | var height = this.getHeight(wkt.coordinates[2]); |
| | | Viewer.camera.flyTo({ |
| | | destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), |
| | | }); |
| | | } |
| | | |
| | | var wkt = this.$wkt.parse(res.geom); |
| | | var height = this.getHeight(wkt.coordinates[2]); |
| | | Viewer.camera.flyTo({ |
| | | destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), |
| | | }); |
| | | } else if (type == 'DOM') { |
| | | var wkt = this.$wkt.parse(res.geom); |
| | | var height = this.getHeight(wkt.coordinates[2]) |
| | |
| | | top: 20%; |
| | | left: 50%; |
| | | transform: translate(-50%, 0%); |
| | | |
| | | .levelTitle { |
| | | width: 100%; |
| | | display: flex; |
| | |
| | | font-size: 16px; |
| | | font-family: Source Han Sans CN; |
| | | } |
| | | |
| | | .contLayer { |
| | | margin: 10px 0px; |
| | | font-size: 14px; |
| | |
| | | justify-content: space-between; |
| | | } |
| | | } |
| | | |
| | | .pdfClass { |
| | | height: 70vh; |
| | | width: 100%; |
| | |
| | | } |
| | | |
| | | .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; |
| | | } |
| | | |
| | |
| | | content: "11"; |
| | | visibility: hidden; |
| | | } |
| | | |
| | | .box-card { |
| | | position: fixed; |
| | | display: block; |