src/components/preview_map.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/datamanage/uploadmanage.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/components/preview_map.vue
@@ -1,205 +1,139 @@ <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" > <el-tree :data="treeData" show-checkbox node-key="id" ref="tree" :default-expanded-keys="[1]" :props="defaultProps" @node-click="handleNodeClick" @check="handleCheckChange"> </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="locateTo" >定位</el-button> <el-button size="small" @click="showTileset" >显隐</el-button> <el-button size="small" @click="underground" >地下</el-button> <el-button v-if="$store.state.previewLayer.type != '3dml'" size="small" @click="pickupCoords" >拾取</el-button> <el-button v-if="$store.state.previewLayer.type != '3dml'" size="small" @click="reload" > <el-button size="small" @click="locateTo">定位</el-button> <el-button size="small" @click="showTileset">显隐</el-button> <el-button size="small" @click="underground">地下</el-button> <el-button v-if="$store.state.previewLayer.type != '3dml'" size="small" @click="pickupCoords">拾取</el-button> <el-button v-if="$store.state.previewLayer.type != '3dml'" size="small" @click="reload"> 重载 </el-button> <el-button v-if="modelForm.modelid == null && $store.state.previewLayer.type != '3dml'" size="small" @click="getModeKeyId" >模型主键</el-button> <el-button v-if="$store.state.previewLayer.type != '3dml'" size="small" @click="resave" >保存</el-button> <el-button v-if="modelForm.modelid == null && $store.state.previewLayer.type != '3dml'" size="small" @click="getModeKeyId">模型主键</el-button> <el-button v-if="$store.state.previewLayer.type != '3dml'" size="small" @click="resave">保存</el-button> </el-form-item> <el-form-item label="经度:" v-if="$store.state.previewLayer.type != '3dml'" > <el-input size="small" v-model="modelForm.lon" @input="update" ></el-input> <el-slider v-model="modelForm.lon" @input="update" :min="73" :step="0.001" :max="135" ></el-slider> <el-form-item label="经度:" v-if="$store.state.previewLayer.type != '3dml'"> <el-input size="small" v-model="modelForm.lon" @input="update"></el-input> <el-slider v-model="modelForm.lon" @input="update" :min="73" :step="0.001" :max="135"></el-slider> </el-form-item> <el-form-item label="纬度:" v-if="$store.state.previewLayer.type != '3dml'" > <el-input size="small" v-model="modelForm.lat" @input="update" ></el-input> <el-slider v-model="modelForm.lat" @input="update" :min="3" :step="0.001" :max="54" ></el-slider> <el-form-item label="纬度:" v-if="$store.state.previewLayer.type != '3dml'"> <el-input size="small" v-model="modelForm.lat" @input="update"></el-input> <el-slider v-model="modelForm.lat" @input="update" :min="3" :step="0.001" :max="54"></el-slider> </el-form-item> <el-form-item label="高度:" v-if="$store.state.previewLayer.type != '3dml'" > <el-input size="small" v-model="modelForm.height" @input="update" ></el-input> <el-slider v-model="modelForm.height" :min="-800" :step="1" @input="update" :max="8800" ></el-slider> <el-form-item label="高度:" v-if="$store.state.previewLayer.type != '3dml'"> <el-input size="small" v-model="modelForm.height" @input="update"></el-input> <el-slider v-model="modelForm.height" :min="-800" :step="1" @input="update" :max="8800"></el-slider> </el-form-item> <el-form-item label="角度:" v-if="$store.state.previewLayer.type != '3dml'" > <el-input size="small" v-model="modelForm.yaw" @input="update" ></el-input> <el-slider v-model="modelForm.yaw" :min="0" @input="update" :step="0.1" :max="360" ></el-slider> <el-form-item label="角度:" v-if="$store.state.previewLayer.type != '3dml'"> <el-input size="small" v-model="modelForm.yaw" @input="update"></el-input> <el-slider v-model="modelForm.yaw" :min="0" @input="update" :step="0.1" :max="360"></el-slider> </el-form-item> <el-form-item label="透明度:"> <el-input size="small" v-model="modelForm.alpha" @input="update" ></el-input> <el-slider v-model="modelForm.alpha" @input="update" :min="0" :step="0.01" :max="1" ></el-slider> <el-input size="small" v-model="modelForm.alpha" @input="update"></el-input> <el-slider v-model="modelForm.alpha" @input="update" :min="0" :step="0.01" :max="1"></el-slider> </el-form-item> </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" > <el-form ref="form" :model="formInline" label-width="80px" > <el-tabs v-model="activeName" @tab-click="handleClick"> <el-tab-pane label="属性" name="first"> <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> @@ -210,110 +144,78 @@ </el-form-item> <el-form-item> <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> <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> </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> <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> @@ -336,66 +238,48 @@ <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="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> @@ -421,7 +305,7 @@ components: { undergroundModel }, data() { data () { return { levelArray: [ 0, 40000000, 20000000, 10000000, 5000000, 2000000, 1000000, 500000, @@ -479,7 +363,7 @@ isJpg: false, src: '' }, modelType: ['ifc', 'fbx', 'rvt', '3dml'], modelType: ['ifc', 'fbx', 'rvt', '3dml', 'cpt'], editModelFlag: false, modelForm: { lon: 119, @@ -500,11 +384,11 @@ modelKeyFlag: false, } }, mounted() { mounted () { this.init3DMap(); }, methods: { setUndergroundMode() { setUndergroundMode () { if (window.UndergroundMode) { this.$refs && this.$refs.undergroundModel && @@ -515,14 +399,14 @@ this.$refs.undergroundModel.open("地下模式", null,); } }, refreshAttatchDetail() { refreshAttatchDetail () { this.dialog.src = ""; this.dialog.dialogVisible = false; this.dialog.isPdf = false; this.dialog.isJpg = false; }, //附件查看 setAttatchDetail(index, row) { setAttatchDetail (index, row) { this.refreshAttatchDetail() var name = row.name; if (name.indexOf('.pdf') != -1 || name.indexOf('.PDF') != -1) { @@ -548,7 +432,7 @@ this.dialog.src = url } }, async setAttachDel() { async setAttachDel () { var std = []; for (var i in this.attacgSelection) { std.push(this.attacgSelection[i].id); @@ -559,7 +443,7 @@ } this.getAttacthFlieList(); }, setAttachInsert() { setAttachInsert () { var token = getToken(); var fs = document.getElementById("insertFile"); if (fs.files.length == 0) { @@ -603,15 +487,15 @@ ); }, //附件=>文件选择 getInsertFile() { getInsertFile () { $('#insertFile').click(); }, insertFile() { insertFile () { var val = document.getElementById('insertFile').files; if (!val || !val.length) return; this.fromfile.file = val[0].name; }, matchState(state = "", reg) { matchState (state = "", reg) { var row = state.row; var name = row.name; if ( @@ -633,10 +517,10 @@ return false; }, statSizeChange(row, column) { statSizeChange (row, column) { return this.stateFormatSizes(row.sizes) }, stateFormatSizes(res) { stateFormatSizes (res) { if (res >= 1024) { const val = parseFloat(res / 1024).toFixed(3); return val + ' GB'; @@ -645,11 +529,11 @@ } }, // 附件=>表格选择 handleAttatchChange(val) { handleAttatchChange (val) { this.attacgSelection = val; }, //附件列表查询 async getAttacthFlieList() { async getAttacthFlieList () { var obj = { eventid: this.layerID, tabName: "lf.sys_style" @@ -661,12 +545,12 @@ } this.tableData = res.result; }, handleClick() { handleClick () { if (this.activeName == "second") { this.getAttacthFlieList(); } }, async EditData() { async EditData () { const data = await comprehensive_updateModel(this.formInline) @@ -688,7 +572,7 @@ this.startModelData(); }, async InsertData() { async InsertData () { var std = { "bak": this.formInline.bak, "guid": this.formInline.Id, @@ -715,7 +599,7 @@ }, handleClose() { handleClose () { this.dialogVisible = false; this.formInline = { title: '', @@ -730,7 +614,7 @@ this.activeName = "first" }, async setShowModelInfo(result) { async setShowModelInfo (result) { var modelKey = 'id'; if (result.tileset) { @@ -770,7 +654,7 @@ this.dialogVisible = true; }, async startModelData() { async startModelData () { var obj = { layerid: this.formInline.layerId, modelid: this.formInline.Id @@ -788,7 +672,7 @@ this.formInline.title = this.formInline.name; } }, setChangeTileset(result) { setChangeTileset (result) { var value = this.$refs.tree.getCheckedNodes(); var std = []; for (var i in value) { @@ -807,7 +691,7 @@ } } }, setAddLayers(rs) { setAddLayers (rs) { if (rs.serveType == "Tileset" || rs.serveType == "3DML") { var url; @@ -840,7 +724,7 @@ } }, async getArgsTileset(tileset, rs) { async getArgsTileset (tileset, rs) { if (rs.pubid > 0) { @@ -863,7 +747,7 @@ } }, tileSet(tileset, height) { tileSet (tileset, height) { //3dtile模型的边界球体 var boundingSphere = tileset.boundingSphere; //迪卡尔空间直角坐标=>地理坐标(弧度制) @@ -877,7 +761,7 @@ tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); // Viewer.flyTo(tileset); }, reloadTile(tileset, res) { reloadTile (tileset, res) { var vm = JSON.parse(res) var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height); var converter = Cesium.Transforms.eastNorthUpToFixedFrame; @@ -889,7 +773,7 @@ handleCheckChange(data, checked, indeterminate) { handleCheckChange (data, checked, indeterminate) { if (data.type == 1) { this.getchilds(data); this.setChangeTileset(this.childOption, checked); @@ -897,7 +781,7 @@ this.setChangeTileset([data], checked); } }, handleNodeClick(data) { handleNodeClick (data) { if (data.type == 2) { this.currentData = data; for (var j in Viewer.scene.primitives._primitives) { @@ -907,7 +791,7 @@ } } }, getchilds(source) { getchilds (source) { if (source.children) { var child = source.children for (var i in child) { @@ -921,7 +805,7 @@ this.childOption.push(source) } }, init3DMap() { init3DMap () { //地图初始化 window.sgworld = new SmartEarth.SGWorld("mapdiv", { licenseServer: window.sceneConfig.licenseServer, @@ -1015,7 +899,7 @@ Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), }); } else if (type == '3dml' || type == 'fbx' || type == 'ifc' || type == 'rvt') { } else if (type == '3dml' || type == 'fbx' || type == 'ifc' || type == 'rvt' || type == 'cpt') { if (this.app.tileset) viewer.scene.primitives.remove(this.app.tileset); this.app.tileset = this.createTileset(res); @@ -1039,7 +923,7 @@ } } }, getModeKeyId() { getModeKeyId () { window.ModeKeyIdHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); window.ModeKeyIdHandler.setInputAction((event) => { @@ -1058,7 +942,7 @@ }, Cesium.ScreenSpaceEventType.LEFT_CLICK) }, async resave() { async resave () { if (!this.modelForm.modelid) { return this.$message('未选择模型主键ID'); } @@ -1079,7 +963,7 @@ } this.reload(); }, reload() { reload () { var json = JSON.stringify(this.modelForm); var url = this.$store.state.previewLayer.url.replace("{host}", iisHost); if (!url) return; @@ -1105,7 +989,7 @@ }, //拾取 pickupCoords() { pickupCoords () { if (this.app.handler) { this.app.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); this.app.handler = undefined; @@ -1129,12 +1013,12 @@ }, Cesium.ScreenSpaceEventType.LEFT_CLICK); }, // 保留小数位 toFixed(d, n) { toFixed (d, n) { var p = Math.pow(10, n); return Math.round(d * p) / p; }, update() { update () { if (!this.modelForm.lon || isNaN(this.modelForm.lon)) { var args = this.getEditTilesetArgs(); this.modelForm.lon = args.lon == null ? 0 : args.height; @@ -1168,7 +1052,7 @@ this.setTilesetArgs(this.modelForm); sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha) }, setTilesetArgs(f) { setTilesetArgs (f) { if (!this.app.tileset || this.app.isBusy) return; @@ -1181,21 +1065,21 @@ model._root.transform = matrix; }, //地下 underground() { underground () { this.app.under = !this.app.under; sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha) }, //显隐 showTileset() { showTileset () { if (!this.app.tileset) return; this.app.tileset.show = !this.app.tileset.show; }, //定位 locateTo() { locateTo () { if (!this.app.tileset) return; Viewer.flyTo(this.app.tileset); }, createTileset(res) { createTileset (res) { res.url = res.url.replace('{host}', iisHost) return new Cesium.Cesium3DTileset({ url: res.url, @@ -1219,7 +1103,7 @@ dynamicScreenSpaceError: true // 减少离相机较远的屏幕空间错误:false,全屏加载完之后才清晰化房屋 }); }, setEditModelLayer(res) { setEditModelLayer (res) { this.editModelFlag = true; if (res.json) { var json = JSON.parse(res.json) @@ -1229,7 +1113,7 @@ this.getTilesetArgs(); } }, setModleLocatin() { setModleLocatin () { var res = this.$store.state.previewLayer; var type = res.type; @@ -1243,7 +1127,7 @@ } }, setModeLayerID(res) { setModeLayerID (res) { var value = res.getPropertyNames(); var std = []; @@ -1257,12 +1141,12 @@ this.modelLayerId = this.optionKey[0].label; this.modelKeyFlag = true; }, setSureKeyModelKey() { setSureKeyModelKey () { this.modelKeyFlag = false; this.modelForm.modelid = this.modelLayerId window.ModeKeyIdHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); //移除事件 }, getTilesetArgs() { getTilesetArgs () { this.app.isBusy = true; var cm = this.app.tileset._root.transform; var cartesian = new Cesium.Cartesian3(cm[12], cm[13], cm[14]); @@ -1275,7 +1159,7 @@ } this.app.isBusy = false; }, getEditTilesetArgs() { getEditTilesetArgs () { this.app.isBusy = true; var std = { lon: 0, @@ -1298,7 +1182,7 @@ return std }, async setShowModelLayer() { async setShowModelLayer () { const data = await perms_selectLayers(); if (data.code != 200) { @@ -1347,7 +1231,7 @@ }, Cesium.ScreenSpaceEventType.LEFT_CLICK) } }, setTreeData(source) { setTreeData (source) { let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆 return cloneData.filter((father) => { // 循环所有项 @@ -1371,7 +1255,7 @@ // //修改模型矩阵 // tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); // }, getHeight(level) { getHeight (level) { if (level > 0 && level < 23) { return this.levelArray[level] } src/views/datamanage/uploadmanage.vue
@@ -8,320 +8,230 @@ <el-divider /> <!-- tabs切换 --> <div class="tabs_box"> <div class="tabs_pane" @click="setTabsChange(1)" > <div class="tabsSpan" :class="{ changetabs : active == 'first'}" > <div class="tabs_pane" @click="setTabsChange(1)"> <div class="tabsSpan" :class="{ changetabs : active == 'first'}"> <span> {{$t('dataManage.uploadObj.dataRelease')}}</span> </div> </div> <div class="tabs_pane" @click="setTabsChange(2)" > <div class="tabsSpan" :class="{ changetabs : active == 'second'}" > <div class="tabs_pane" @click="setTabsChange(2)"> <div class="tabsSpan" :class="{ changetabs : active == 'second'}"> <span> {{$t('dataManage.uploadObj.releaseList')}}</span> </div> </div> <div class="tabs_pane" @click="setTabsChange(3)" > <div class="tabsSpan" :class="{ changetabs : active == 'third'}" > <div class="tabs_pane" @click="setTabsChange(3)"> <div class="tabsSpan" :class="{ changetabs : active == 'third'}"> <span> {{$t('dataManage.uploadObj.modelAttachMount')}}</span> </div> </div> </div> <div v-if="active != 'third'" class="content_box" > <el-form :inline="true" :model="formInline" class="demo-form-inline" > <div v-if="active != 'third'" class="content_box"> <el-form :inline="true" :model="formInline" class="demo-form-inline"> <!-- 单位 --> <el-form-item v-if="active == 'first'"> <el-select size="small" v-model="formInline.depid" > <el-option :value="formInline.depid" :label="formInline.depName" style="height: auto" > <el-tree ref="tree" :data="depOption" node-key="id" :props="defaultProps" @node-click="handleDepChange" /> <el-select size="small" v-model="formInline.depid"> <el-option :value="formInline.depid" :label="formInline.depName" style="height: auto"> <el-tree ref="tree" :data="depOption" node-key="id" :props="defaultProps" @node-click="handleDepChange" /> </el-option> </el-select> </el-form-item> <!-- 目录 --> <el-form-item v-if="active == 'first'"> <el-select size="small" v-model="formInline.dirid" > <el-option :value="formInline.dirid" :label="formInline.dirName" style="height: auto" > <el-tree ref="tree" :data="dirOption" node-key="id" :props="defaultProps" @node-click="handleDirChange" /> <el-select size="small" v-model="formInline.dirid"> <el-option :value="formInline.dirid" :label="formInline.dirName" style="height: auto"> <el-tree ref="tree" :data="dirOption" node-key="id" :props="defaultProps" @node-click="handleDirChange" /> </el-option> </el-select> </el-form-item> <!-- 版本 --> <el-form-item v-if="active == 'first'"> <el-select size="small" v-model="formInline.verid" @change="handleVerChange" > <el-option v-for="item in verOption" :key="item.id" :label="item.name" :value="item.id" > <el-select size="small" v-model="formInline.verid" @change="handleVerChange"> <el-option v-for="item in verOption" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </el-form-item> <!-- 类型 --> <el-form-item v-if="active == 'first'"> <el-select size="small" v-model="formInline.type" @change="handleTypeChange" > <el-option v-for="item in typeOption" :key="item.value" :label="item.label" :value="item.value" > <el-select size="small" v-model="formInline.type" @change="handleTypeChange"> <el-option v-for="item in typeOption" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item> <el-input size="small" :title="$t('dataManage.vmobj.keyword')" v-model="formInline.name" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuedataName')" > <i @click="getTableData" :title="$t('common.iquery')" slot="suffix" class="el-icon-search" style="padding-right: 8px" ></i></el-input> <el-input size="small" :title="$t('dataManage.vmobj.keyword')" v-model="formInline.name" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuedataName')"> <i @click="getTableData" :title="$t('common.iquery')" slot="suffix" class="el-icon-search" style="padding-right: 8px"></i></el-input> </el-form-item> <el-form-item style="float:right"> <!-- 发布 --> <el-button v-if="active == 'first'" type="success" size="small" icon="el-icon-s-promotion" @click="setPagePublish" >{{$t('common.publish')}}</el-button> <el-button v-if="active == 'first'" type="success" size="small" icon="el-icon-s-promotion" @click="setPagePublish">{{$t('common.publish')}}</el-button> <!-- 刪除 --> <el-button v-if="active == 'second'" type="danger" size="small" icon="el-icon-delete" @click="setPageDelete" >{{$t('common.delete')}}</el-button> <el-button v-if="active == 'second'" type="danger" size="small" icon="el-icon-delete" @click="setPageDelete">{{$t('common.delete')}}</el-button> <!-- 重置 --> <el-button type="info" size="small" @click="setPageStart" icon="el-icon-refresh" >{{$t('common.reset')}}</el-button> <el-button type="info" size="small" @click="setPageStart" icon="el-icon-refresh">{{$t('common.reset')}}</el-button> </el-form-item> </el-form> <div class="dividing-line"></div> <div class="table_box content_Table"> <el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange" @cell-dblclick="copyText" height="calc(100% - 1px)" > <el-table-column type="selection" width="55" /> <el-table-column :label="$t('dataManage.dictionaryManageObj.number')" type="index" width="50" align="center" > <el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange" @cell-dblclick="copyText" height="calc(100% - 1px)"> <el-table-column type="selection" width="55" /> <el-table-column :label="$t('dataManage.dictionaryManageObj.number')" type="index" width="50" align="center"> </el-table-column> <el-table-column prop="name" :label="$t('dataManage.vmobj.name')" align="center" /> <el-table-column prop="type" :label="$t('dataManage.vmobj.format')" align="center" /> <el-table-column v-if="active == 'first'" prop="sizes" :label="$t('dataManage.vmobj.size')" :formatter="stateFormatSizes" align="center" /> <el-table-column prop="depName" :label="$t('dataManage.vmobj.depName')" align="center" /> <el-table-column prop="dirName" :label="$t('dataManage.vmobj.dirName')" width="200" align="center" /> <el-table-column prop="verName" :label="$t('dataManage.vmobj.versionNumber')" align="center" /> <el-table-column prop="url" :label="$t('common.publishAddress')" align="center" /> <el-table-column v-if="active == 'first'" prop="uname" :label="$t('common.rublisher')" align="center" :key="Math.random()" /> <el-table-column v-if="active != 'first'" prop="createName" :label="$t('common.rublisher')" align="center" :key="Math.random()" /> <el-table-column prop="createTime" :label="$t('common.releaseTime')" align="center" /> <el-table-column prop="name" :label="$t('dataManage.vmobj.name')" align="center" /> <el-table-column prop="type" :label="$t('dataManage.vmobj.format')" align="center" /> <el-table-column v-if="active == 'first'" prop="sizes" :label="$t('dataManage.vmobj.size')" :formatter="stateFormatSizes" align="center" /> <el-table-column prop="depName" :label="$t('dataManage.vmobj.depName')" align="center" /> <el-table-column prop="dirName" :label="$t('dataManage.vmobj.dirName')" width="200" align="center" /> <el-table-column prop="verName" :label="$t('dataManage.vmobj.versionNumber')" align="center" /> <el-table-column prop="url" :label="$t('common.publishAddress')" align="center" /> <el-table-column v-if="active == 'first'" prop="uname" :label="$t('common.rublisher')" align="center" :key="Math.random()" /> <el-table-column v-if="active != 'first'" prop="createName" :label="$t('common.rublisher')" align="center" :key="Math.random()" /> <el-table-column prop="createTime" :label="$t('common.releaseTime')" align="center" /> <el-table-column min-width="150" :label="$t('common.operate')" > <el-table-column min-width="150" :label="$t('common.operate')"> <template slot-scope="scope"> <el-button v-if="active == 'second'" size="small" type="info" plain @click="setPreviewDetails(scope.row)" >{{$t('common.details')}} <el-button v-if="active == 'second'" size="small" type="info" plain @click="setPreviewDetails(scope.row)">{{$t('common.details')}} </el-button> <el-button v-if="active == 'second'" size="small" type="warning" plain @click="setPreviewEdit(scope.row)" >{{$t('common.update')}} <el-button v-if="active == 'second'" size="small" type="warning" plain @click="setPreviewEdit(scope.row)">{{$t('common.update')}} </el-button> <el-button v-if="scope.row.url" size="small" type="success" plain @click="setPreviewLayer(scope.row)" >{{$t('common.preview')}} <el-button v-if="scope.row.url" size="small" type="success" plain @click="setPreviewLayer(scope.row)">{{$t('common.preview')}} </el-button> </template> </el-table-column> </el-table> </div> <div class="pagination_box" style="margin-top: 10px" > <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listData.pageIndex" :page-sizes="showPageSize" :page-size="listData.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="listData.count" > <div class="pagination_box" style="margin-top: 10px"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listData.pageIndex" :page-sizes="showPageSize" :page-size="listData.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="listData.count"> </el-pagination> </div> </div> <div v-if="active == 'third'" class="content_box" > <div v-if="active == 'third'" class="content_box"> <mapview v-if="active == 'third'"></mapview> </div> <!-- 地址预览 --> <el-dialog :title="$t('common.preview')" :class="isFullscreen ? '' : 'dialogClass_his'" custom-class="handleDialogClass" width="73.4%" :fullscreen="isFullscreen" v-if="dialogVisible" :visible.sync="dialogVisible" :show-close="false" :close-on-click-modal="false" :close-on-press-escape="false" > <dialog-header slot="title" :dialog-tittle="$t('common.preview')" :fullscreen="isFullscreen" @handle-closed="handleClose" @is-fullscreen="onFullscreen" ></dialog-header> <el-dialog :title="$t('common.preview')" :class="isFullscreen ? '' : 'dialogClass_his'" custom-class="handleDialogClass" width="73.4%" :fullscreen="isFullscreen" v-if="dialogVisible" :visible.sync="dialogVisible" :show-close="false" :close-on-click-modal="false" :close-on-press-escape="false"> <dialog-header slot="title" :dialog-tittle="$t('common.preview')" :fullscreen="isFullscreen" @handle-closed="handleClose" @is-fullscreen="onFullscreen"></dialog-header> <div :class="{'fullscreen1':isFullscreen}"> <mapview v-if="showMapView"></mapview> </div> @@ -344,72 +254,54 @@ <!-- </el-dialog> --> <!-- 修改数据 --> <el-dialog :title="$t('common.update')" :visible.sync="editDialogVisible" width="50%" :show-close="false" :close-on-click-modal="false" > <el-dialog :title="$t('common.update')" :visible.sync="editDialogVisible" width="50%" :show-close="false" :close-on-click-modal="false"> <div style="width:100%;height:50vh"> <el-form ref="form" :model="editLayer" label-width="150px" > <el-form ref="form" :model="editLayer" label-width="150px"> <el-form-item :label="$t('dataManage.vmobj.name')"> <el-input v-model="editLayer.name"></el-input> </el-form-item> <el-form-item :label="$t('dataManage.vmobj.format')"> <el-input disabled v-model="editLayer.type" ></el-input> <el-input disabled v-model="editLayer.type"></el-input> </el-form-item> <el-form-item :label="$t('dataManage.vmobj.depName')"> <el-input disabled v-model="editLayer.depName" ></el-input> <el-input disabled v-model="editLayer.depName"></el-input> </el-form-item> <el-form-item :label="$t('dataManage.vmobj.dirName')"> <el-input disabled v-model="editLayer.dirName" ></el-input> <el-input disabled v-model="editLayer.dirName"></el-input> </el-form-item> <el-form-item :label="$t('dataManage.vmobj.versionNumber')"> <el-input disabled v-model="editLayer.verName" ></el-input> <el-input disabled v-model="editLayer.verName"></el-input> </el-form-item> <el-form-item :label="$t('common.publishAddress')"> <el-input v-model="editLayer.url"></el-input> </el-form-item> <el-form-item> <el-button size="small" type="primary" @click="setEditLayerSubmit" >{{$t('common.submit')}}</el-button> <el-button size="small" type="info" @click="setEditLayerCancle" >{{$t('common.cancel')}}</el-button> <el-button size="small" type="primary" @click="setEditLayerSubmit">{{$t('common.submit')}}</el-button> <el-button size="small" type="info" @click="setEditLayerCancle">{{$t('common.cancel')}}</el-button> </el-form-item> </el-form> </div> </el-dialog> <!-- 数据详情 --> <el-dialog :title="$t('common.details')" :visible.sync="detailsDialogVisible" width="50%" :close-on-click-modal="false" > <el-dialog :title="$t('common.details')" :visible.sync="detailsDialogVisible" width="50%" :close-on-click-modal="false"> <div style="width:100%;height:50vh"> <p>{{ $t("dataManage.vmobj.name") }}:{{ itemdetail.name }}</p> <el-divider></el-divider> @@ -434,127 +326,89 @@ </div> </el-dialog> <!-- 发布 --> <el-dialog :title="$t('common.publish')" :visible.sync="insertDialogVisible" width="40%" :close-on-click-modal="false" :show-close="false" > <el-dialog :title="$t('common.publish')" :visible.sync="insertDialogVisible" width="40%" :close-on-click-modal="false" :show-close="false"> <div style="width:100%; "> <el-form ref="form" :model="insertLayer" label-width="150px" > <el-form ref="form" :model="insertLayer" label-width="150px"> <el-form-item :label="$t('dataManage.vmobj.name')"> <el-input v-model="insertLayer.name" :placeholder="$t('dataManage.vmobj.name')" ></el-input> <el-input v-model="insertLayer.name" :placeholder="$t('dataManage.vmobj.name')"></el-input> </el-form-item> <el-form-item :label="$t('dataManage.vmobj.numberFiles')"> <el-input disabled v-model="insertLayer.number" ></el-input> <el-input disabled v-model="insertLayer.number"></el-input> </el-form-item> <el-form-item :label="$t('dataManage.vmobj.labe14')" v-show="formInline.type =='DOM'" > <el-select style="width:100%" v-model="insertLayer.noData" > <el-option label="黑色" value="0" ></el-option> <el-option label="白色" value="255" ></el-option> <el-form-item :label="$t('dataManage.vmobj.labe14')" v-show="formInline.type =='DOM'"> <el-select style="width:100%" v-model="insertLayer.noData"> <el-option label="黑色" value="0"></el-option> <el-option label="白色" value="255"></el-option> </el-select> </el-form-item> <el-form-item v-show="formInline.type !='DEM'" :label="$t('dataManage.vmobj.minLevel')" > <el-form-item v-show="formInline.type !='DEM'" :label="$t('dataManage.vmobj.minLevel')"> <!-- <el-input v-model="insertLayer.min" :placeholder="$t('dataManage.vmobj.labe11')" ></el-input> --> <el-select style="width:100%" v-model="insertLayer.min" :placeholder="$t('dataManage.vmobj.labe11')" > <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" > <el-select style="width:100%" v-model="insertLayer.min" :placeholder="$t('dataManage.vmobj.labe11')"> <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 :label="$t('dataManage.vmobj.maxLevel')" v-show="formInline.type !='DEM'" > <el-form-item :label="$t('dataManage.vmobj.maxLevel')" v-show="formInline.type !='DEM'"> <!-- <el-input v-model="insertLayer.max" :placeholder="$t('dataManage.vmobj.labe12')" ></el-input> --> <el-select style="width:100%" v-model="insertLayer.max" :placeholder="$t('dataManage.vmobj.labe12')" > <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" > <el-select style="width:100%" v-model="insertLayer.max" :placeholder="$t('dataManage.vmobj.labe12')"> <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 size="small" type="primary" @click="setinsertLayerSubmit()" >{{$t('common.submit')}}</el-button> <el-button size="small" type="info" @click="setinsertLayerCancel()" >{{$t('common.cancel')}}</el-button> <el-button size="small" type="primary" @click="setinsertLayerSubmit()">{{$t('common.submit')}}</el-button> <el-button size="small" type="info" @click="setinsertLayerCancel()">{{$t('common.cancel')}}</el-button> </el-form-item> </el-form> </div> </el-dialog> <div class="loadBox" v-if="loadDialogVisible" > <div class="loadBox" v-if="loadDialogVisible"> <div style="widht:100%; margin:20px; color:white"> <div style="margin-left:99%"> <el-link @click="setloadDialogVisible()" style="color:white" > X</el-link> <el-link @click="setloadDialogVisible()" style="color:white"> X</el-link> </div> </div> <div v-loading="true" element-loading-background="rgba(0, 0, 0, 0.0) " element-loading-text="数据发布中" style="margin: 0px 20px;widht:100%;height:calc(100% - 80px); " > <div v-loading="true" element-loading-background="rgba(0, 0, 0, 0.0) " element-loading-text="数据发布中" style="margin: 0px 20px;widht:100%;height:calc(100% - 80px); "> </div> </div> </div> @@ -583,7 +437,7 @@ MyBread, mapview, 'dialog-header': dialogHeader, }, data() { data () { return { active: 'first', formInline: { @@ -615,6 +469,9 @@ value: 'MPT', label: '场景数据(.mpt)' }, { value: 'CPT', label: '点云数据(.cpt)' }, { value: '3DML', label: '三维模型(.3dml)' }, { @@ -644,7 +501,7 @@ } }, methods: { copyText(row, column, cell, event) { copyText (row, column, cell, event) { // 双击复制 let save = function (e) { e.clipboardData.setData('text/plain', event.target.innerText); @@ -654,7 +511,7 @@ document.execCommand("copy");//执行copy方法 this.$message({ message: '复制成功', type: 'success' })//提示 }, setOptions() { setOptions () { var std = []; for (var i = 0; i < 23; i++) { std.push({ @@ -664,15 +521,15 @@ } this.options = std; }, setloadDialogVisible() { setloadDialogVisible () { this.loadDialogVisible = false }, setinsertLayerCancel() { setinsertLayerCancel () { this.insertDialogVisible = false; this.insertLayer = { name: '', number: null, min: 4, max: 18 }; }, //发布提交 async setinsertLayerSubmit() { async setinsertLayerSubmit () { var min = this.insertLayer.min; var max = this.insertLayer.max; @@ -734,7 +591,7 @@ }, //数据发布 async setPagePublish() { async setPagePublish () { if (this.multipleSelection.length == 0) { this.$message("请选择要发布的数据") return @@ -776,12 +633,12 @@ } }, //数据详情 setPreviewDetails(res) { setPreviewDetails (res) { this.itemdetail = res; this.detailsDialogVisible = true; }, //修改提交 async setEditLayerSubmit() { async setEditLayerSubmit () { if (this.editLayer.url) { var url = this.editLayer.url; this.editLayer.url = url.replace(iisHost, "{host}"); @@ -800,7 +657,7 @@ this.editDialogVisible = false; }, //修改取消 setEditLayerCancle() { setEditLayerCancle () { if (this.editLayer == this.updateLayer) { this.editDialogVisible = false; } else { @@ -815,13 +672,13 @@ } }, //修改弹窗 setPreviewEdit(res) { setPreviewEdit (res) { this.updateLayer = JSON.stringify(res) //备份; this.editLayer = JSON.parse(JSON.stringify(res)); this.editDialogVisible = true; }, //删除 setPageDelete() { setPageDelete () { if (this.multipleSelection.length == 0) { return this.$message.error("请选择要删除的数据") } else { @@ -835,7 +692,7 @@ }); } }, async deletePage() { async deletePage () { var std = []; for (var i in this.multipleSelection) { std.push(this.multipleSelection[i].id); @@ -853,28 +710,28 @@ } }, //预览弹窗打开 setPreviewLayer(res) { setPreviewLayer (res) { this.$store.state.previewLayer = res; this.dialogVisible = true; this.showMapView = true; }, //是否为全屏函数 onFullscreen(fullscreen) { onFullscreen (fullscreen) { this.isFullscreen = fullscreen; }, //预览弹窗关闭 handleClose() { handleClose () { this.getTableData(); this.dialogVisible = false; this.showMapView = false; }, // 获取多选选中的对象 handleSelectionChange(val) { handleSelectionChange (val) { this.multipleSelection = val }, //单位转换 stateFormatSizes(row, column) { stateFormatSizes (row, column) { if (row.sizes >= 1024) { const val = parseFloat(row.sizes / 1024).toFixed(3) return val + " GB" @@ -883,7 +740,7 @@ } }, //格式化地址 formatLayer(row, column) { formatLayer (row, column) { let data = row.layer if (data == null) { return data @@ -892,7 +749,7 @@ return data.replace("{host}", iisHost) }, //格式化时间 formatData(row, column) { formatData (row, column) { let data = row[column.property] if (data == null) { return data @@ -900,18 +757,18 @@ return this.format(data) }, //分页切换 handleCurrentChange(val) { handleCurrentChange (val) { this.listData.pageIndex = val; this.getTableData_one(); }, //每页显示数量 handleSizeChange(val) { handleSizeChange (val) { this.listData.pageSize = val; this.listData.pageIndex = 1; this.getTableData_one(); }, //tabs切換 setTabsChange(res) { setTabsChange (res) { switch (res) { case 1: this.active = 'first'; @@ -931,7 +788,7 @@ } }, //页面初始化 setPageStart() { setPageStart () { this.formInline = { dirid: null, dirName: null, @@ -962,7 +819,7 @@ this.getDirTreeList(); }, //获取目录列表 async getDirTreeList() { async getDirTreeList () { const data = await selectdirTab(); if (data.code != 200) { this.$message.error("单位列表获取失败") @@ -974,7 +831,7 @@ this.getVerList(this.dirOption[0].id) }, //获取版本列表 async getVerList(res) { async getVerList (res) { const data = await meta_selectVerByDirid({ dirid: res }) if (data.code != 200) { this.$message.error("版本列表获取失败") @@ -985,36 +842,36 @@ this.getTableData(); }, //版本列表切换 handleVerChange(value) { handleVerChange (value) { this.formInline.verid = value; this.getTableData(); }, //服务类型列表切换 handleTypeChange(value) { handleTypeChange (value) { this.formInline.type = value; this.getTableData(); }, //单位列表切换 handleDepChange(data, node, nodeData) { handleDepChange (data, node, nodeData) { this.formInline.depid = data.code this.formInline.depName = data.name this.getTableData(); }, //目录列表切换 handleDirChange(data, node, nodeData) { handleDirChange (data, node, nodeData) { this.formInline.dirid = data.code this.formInline.dirName = data.name this.getVerList(data.id) }, //获取Table表格数据 async getTableData() { async getTableData () { this.listData.count = 0; this.listData.pageIndex = 1; this.getTableData_one(); }, async getTableData_one() { async getTableData_one () { this.tableData = []; if (this.active == "first") { @@ -1075,7 +932,7 @@ } }, //格式化时间 format(shijianchuo) { format (shijianchuo) { //shijianchuo是整数,否则要parseInt转换 var time = new Date(shijianchuo); var y = time.getFullYear(); @@ -1099,11 +956,11 @@ ); }, //格式化时间 add0(m) { add0 (m) { return m < 10 ? '0' + m : m; }, //获取单位列表 async getDepTreeList() { async getDepTreeList () { const data = await selectdepTab(); if (data.code != 200) { this.$message.error("单位列表获取失败") @@ -1114,7 +971,7 @@ this.formInline.depName = this.depOption[0].name }, //树列表生成 treeData(source) { treeData (source) { let cloneData = JSON.parse(JSON.stringify(source)) // 对源数据深度克隆 return cloneData.filter(father => { // 循环所有项 @@ -1124,7 +981,7 @@ }) }, }, mounted() { mounted () { this.active = 'first'; this.setPageStart(); this.setOptions();