src/assets/lang/en.js
@@ -211,6 +211,7 @@ fieldLength: 'field length', FieldPrecision: 'Field Precision', rangeAssociationTable: 'range association table', tableName: 'Table Name', remark: 'remark', creationTime: 'creation time', createPersonnel: 'create personnel', src/assets/lang/zh.js
@@ -211,6 +211,8 @@ fieldLength: '字段长度', FieldPrecision: '字段精度', rangeAssociationTable: '值域关联表', tableName: '表名称', remark: '备注', creationTime: '创建时间', createPersonnel: '创建人员', src/components/MapView/mapMenuPop.vue
@@ -502,7 +502,7 @@ this.dialogVisible = false this.codeForm.password = "" this.codeForm.repassword = "" this.closeInsertDown() // this.closeInsertDown() }, startTableMssage() { this.listdata.pageIndex = 1 @@ -944,7 +944,7 @@ this.getInsertDown(res) }) this.$bus.$on("setInsertDown1", res => { this.isflag = true; this.getInsertDown(res) }) this.$bus.$on("setInsertApply1", res => { src/components/MapView/mapMenuTop.vue
@@ -9,7 +9,7 @@ <el-select v-model="menuTopFrom.queryLayer" :title="treeChange" placeholder="请选择..." placeholder="请选择数据..." :popper-append-to-body="false" > <el-option @@ -48,7 +48,7 @@ <el-select @change="changeValue($event)" v-model="menuTopFrom.queryType" placeholder="请选择..." placeholder="选择范围" :popper-append-to-body="false" > <el-option src/components/MapView/mapSpaceTop.vue
@@ -3,7 +3,7 @@ <el-select v-model="menuTopFrom.queryLayer" @change="menuTreeCheck" placeholder="请选择..." placeholder="请选择数据..." filterable ref="selectTree1" > src/components/mapsdk.vue
@@ -78,13 +78,22 @@ label-width="50px" > <el-form-item label="经度:"> <el-input v-model="coordFrom.lon"></el-input> <el-input v-model="coordFrom.lon" placeholder="请输入经度" ></el-input> </el-form-item> <el-form-item label="纬度:"> <el-input v-model="coordFrom.lat"></el-input> <el-input v-model="coordFrom.lat" placeholder="请输入维度" ></el-input> </el-form-item> <el-form-item label="高度:"> <el-input v-model="coordFrom.height"></el-input> <el-input v-model="coordFrom.height" placeholder="请输入高度" ></el-input> </el-form-item> <el-form-item> <el-button @@ -161,6 +170,7 @@ <el-input style="width: 160px" v-model="comprehensive.name" placeholder="请输入地名...." ></el-input> </el-form-item> <el-form-item> @@ -738,9 +748,9 @@ val: 50, }, coordFrom: { lon: 116.3911, lat: 39.9115, height: 100000, lon: "", lat: "", height: "", }, listData: { name: null, @@ -843,16 +853,16 @@ }, async setModelInfoData(result) { var modelKey = 'id'; debugger var modelid; if (result.tileset) { if (result.tileset.pubid > 0) { if (result.tileset.pubid) { const data = await comprehensive_selectPubById({ id: result.tileset.pubid }) if (data.code != 200) { return } else { debugger modelKey = JSON.parse(data.result.json).modelid } if (!modelKey) { @@ -988,7 +998,7 @@ requestVertexNormals: true, }; window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); window.terrainFlag = 'MPT' window.elevationTool = new SmartEarth.ElevationTool(window.sgworld); elevationTool.setContourColor("#F1D487"); @@ -1194,6 +1204,12 @@ }, //定位 setCoordLocal() { if (!this.coordFrom.lon) { return this.$message('请输入经度'); } if (!this.coordFrom.lat) { return this.$message('请输入纬度'); } var lon = parseFloat(this.coordFrom.lon) var lat = parseFloat(this.coordFrom.lat) var height = parseFloat(this.coordFrom.height) == NaN ? parseFloat(this.coordFrom.height) : 100; @@ -1201,7 +1217,7 @@ var position = { X: lon, Y: lat, Altitude: 2000, Altitude: height, }; if (this.imagePoint != null) { sgworld.Creator.DeleteObject(this.imagePoint); src/components/navMenu.vue
@@ -156,7 +156,7 @@ // this.showFlag = null; // }) window.addEventListener('message', (e) => { console.log("e", e.data) this.showFlag = null; }) }, src/components/preview_map.vue
@@ -1,139 +1,205 @@ <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> @@ -144,78 +210,110 @@ </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> @@ -238,48 +336,66 @@ <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> @@ -305,7 +421,7 @@ components: { undergroundModel }, data () { data() { return { levelArray: [ 0, 40000000, 20000000, 10000000, 5000000, 2000000, 1000000, 500000, @@ -384,11 +500,11 @@ modelKeyFlag: false, } }, mounted () { mounted() { this.init3DMap(); }, methods: { setUndergroundMode () { setUndergroundMode() { if (window.UndergroundMode) { this.$refs && this.$refs.undergroundModel && @@ -399,14 +515,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) { @@ -432,7 +548,7 @@ this.dialog.src = url } }, async setAttachDel () { async setAttachDel() { var std = []; for (var i in this.attacgSelection) { std.push(this.attacgSelection[i].id); @@ -443,7 +559,7 @@ } this.getAttacthFlieList(); }, setAttachInsert () { setAttachInsert() { var token = getToken(); var fs = document.getElementById("insertFile"); if (fs.files.length == 0) { @@ -487,15 +603,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 ( @@ -517,10 +633,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'; @@ -529,11 +645,11 @@ } }, // 附件=>表格选择 handleAttatchChange (val) { handleAttatchChange(val) { this.attacgSelection = val; }, //附件列表查询 async getAttacthFlieList () { async getAttacthFlieList() { var obj = { eventid: this.layerID, tabName: "lf.sys_style" @@ -545,12 +661,12 @@ } this.tableData = res.result; }, handleClick () { handleClick() { if (this.activeName == "second") { this.getAttacthFlieList(); } }, async EditData () { async EditData() { const data = await comprehensive_updateModel(this.formInline) @@ -572,7 +688,7 @@ this.startModelData(); }, async InsertData () { async InsertData() { var std = { "bak": this.formInline.bak, "guid": this.formInline.Id, @@ -599,7 +715,7 @@ }, handleClose () { handleClose() { this.dialogVisible = false; this.formInline = { title: '', @@ -614,12 +730,14 @@ this.activeName = "first" }, async setShowModelInfo (result) { async setShowModelInfo(result) { var modelKey = 'id'; if (result.tileset) { if (result.tileSet.pubid > 0) { if (result.tileset.pubid) { const data = await comprehensive_selectPubById({ id: result.tileset.pubid }) if (data.code != 200) { return } else { @@ -646,7 +764,7 @@ this.dialogVisible = true; }, async startModelData () { async startModelData() { var obj = { layerid: this.formInline.layerId, modelid: this.formInline.Id @@ -664,7 +782,7 @@ this.formInline.title = this.formInline.name; } }, setChangeTileset (result) { setChangeTileset(result) { var value = this.$refs.tree.getCheckedNodes(); var std = []; for (var i in value) { @@ -683,18 +801,19 @@ } } }, setAddLayers (res) { if (res.serveType == "Tileset" || res.serveType == "3DML") { setAddLayers(rs) { if (rs.serveType == "Tileset" || rs.serveType == "3DML") { var url; if (res.url.indexOf("{host}") != -1) { url = res.url.replace("{host}", iisHost); if (rs.url.indexOf("{host}") != -1) { url = rs.url.replace("{host}", iisHost); } else { url = modelUrl + "/" + res.url url = modelUrl + "/" + rs.url } var tileset = Viewer.scene.primitives.add( new Cesium.Cesium3DTileset({ name: res.cnName, name: rs.cnName, url: url, //192.168.20.106,to4 maximumScreenSpaceError: 64, // 最大屏幕空间错误:16 maximumMemoryUsage: 768, // 最大内存:512 @@ -704,28 +823,29 @@ ); var that = this; tileset.readyPromise.then((tileset) => { tileset.id = res.cnName; tileset.layerId = res.id; tileset.pubid = res.pubid; if (res.serveType != '3DML') { that.getArgsTileset(tileset, res); tileset.id = rs.cnName; tileset.layerId = rs.id; tileset.pubid = rs.pubid; if (rs.serveType != '3DML') { that.getArgsTileset(tileset, rs); } }); } }, async getArgsTileset (tileset, res) { async getArgsTileset(tileset, rs) { if (res.pubid > 0) { const data = await comprehensive_selectPubById({ id: res.pubid }) if (rs.pubid > 0) { const data = await comprehensive_selectPubById({ id: rs.pubid }) if (data.code != 200) { } else { if (res.serveType != '3DML') { this.tileSet(tileset, parseFloat(res.elev)) if (rs.serveType == '3DML') { this.tileSet(tileset, parseFloat(rs.elev)) } else { this.reloadTile(tileset, data.result.json) } @@ -733,11 +853,11 @@ } } else { this.tileSet(tileset, parseFloat(res.elev)) this.tileSet(tileset, parseFloat(rs.elev)) } }, tileSet (tileset, height) { tileSet(tileset, height) { //3dtile模型的边界球体 var boundingSphere = tileset.boundingSphere; //迪卡尔空间直角坐标=>地理坐标(弧度制) @@ -751,7 +871,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; @@ -763,7 +883,7 @@ handleCheckChange (data, checked, indeterminate) { handleCheckChange(data, checked, indeterminate) { if (data.type == 1) { this.getchilds(data); this.setChangeTileset(this.childOption, checked); @@ -771,7 +891,7 @@ this.setChangeTileset([data], checked); } }, handleNodeClick (data) { handleNodeClick(data) { if (data.type == 2) { this.currentData = data; for (var j in Viewer.scene.primitives._primitives) { @@ -781,7 +901,7 @@ } } }, getchilds (source) { getchilds(source) { if (source.children) { var child = source.children for (var i in child) { @@ -795,7 +915,7 @@ this.childOption.push(source) } }, init3DMap () { init3DMap() { //地图初始化 window.sgworld = new SmartEarth.SGWorld("mapdiv", { licenseServer: window.sceneConfig.licenseServer, @@ -816,25 +936,27 @@ 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.terrainLayer = new Cesium.CesiumTerrainProvider({ url: demLayer }); var option = { url: window.sceneConfig.SGUrl, layerName: window.sceneConfig.mptName, requestVertexNormals: true, }; window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); // window.terrainLayer = new Cesium.CesiumTerrainProvider({ // url: demLayer // }); Viewer.terrainProvider = window.terrainLayer // Viewer.terrainProvider = window.terrainLayer if (this.$store.state.previewLayer) { var res = this.$store.state.previewLayer; var type = res.type; res.ulr = res.url.replace("{host}", iisHost); if (type == 'DEM') { // window.terrainLayer.deleteObject(); //Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); //window.terrainLayer = null; window.terrainLayer.deleteObject(); // Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); // window.terrainLayer = null; window.terrainLayer = new Cesium.CesiumTerrainProvider({ url: res.url }); @@ -866,9 +988,12 @@ }); } else if (type == '3dml' || type == 'fbx' || type == 'ifc' || type == 'rvt') { if (this.app.tileset) viewer.scene.primitives.remove(this.app.tileset); this.app.tileset = this.createTileset(res); var that = this; Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) { that.setModleLocatin() Viewer.flyTo(ts); }); @@ -885,7 +1010,7 @@ } } }, getModeKeyId () { getModeKeyId() { window.ModeKeyIdHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); window.ModeKeyIdHandler.setInputAction((event) => { @@ -904,12 +1029,16 @@ }, Cesium.ScreenSpaceEventType.LEFT_CLICK) }, async resave () { async resave() { if (!this.modelForm.modelid) { return this.$message('未选择模型主键ID'); } this.$store.state.previewLayer.json = JSON.stringify(this.modelForm); if (this.$store.state.previewLayer.url) { var url = this.$store.state.previewLayer.url; this.$store.state.previewLayer.url = url.replace(iisHost, "{host}"); } const data = await publish_update(this.$store.state.previewLayer); if (data.code != 200) { this.$message.error('数据保存失败'); @@ -921,9 +1050,9 @@ } this.reload(); }, reload () { reload() { var json = JSON.stringify(this.modelForm); var url = this.$store.state.previewLayer.url; var url = this.$store.state.previewLayer.url.replace("{host}", iisHost); if (!url) return; if (this.app.tileset) Viewer.scene.primitives.remove(this.app.tileset); @@ -947,7 +1076,7 @@ }, //拾取 pickupCoords () { pickupCoords() { if (this.app.handler) { this.app.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); this.app.handler = undefined; @@ -971,12 +1100,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; @@ -1010,7 +1139,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; @@ -1023,21 +1152,22 @@ 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, name: 'tsTest', @@ -1060,7 +1190,7 @@ dynamicScreenSpaceError: true // 减少离相机较远的屏幕空间错误:false,全屏加载完之后才清晰化房屋 }); }, setEditModelLayer (res) { setEditModelLayer(res) { this.editModelFlag = true; if (res.json) { var json = JSON.parse(res.json) @@ -1070,9 +1200,10 @@ this.getTilesetArgs(); } }, setModleLocatin () { setModleLocatin() { var res = this.$store.state.previewLayer; var type = res.type; if (this.modelType.indexOf(type) != -1) { if (type != '3dml') { this.setEditModelLayer(res) @@ -1083,7 +1214,7 @@ } }, setModeLayerID (res) { setModeLayerID(res) { var value = res.getPropertyNames(); var std = []; @@ -1097,12 +1228,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]); @@ -1115,7 +1246,7 @@ } this.app.isBusy = false; }, getEditTilesetArgs () { getEditTilesetArgs() { this.app.isBusy = true; var std = { lon: 0, @@ -1138,7 +1269,7 @@ return std }, async setShowModelLayer () { async setShowModelLayer() { const data = await perms_selectLayers(); if (data.code != 200) { @@ -1187,7 +1318,7 @@ }, Cesium.ScreenSpaceEventType.LEFT_CLICK) } }, setTreeData (source) { setTreeData(source) { let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆 return cloneData.filter((father) => { // 循环所有项 @@ -1211,7 +1342,7 @@ // //修改模型矩阵 // tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); // }, getHeight (level) { getHeight(level) { if (level > 0 && level < 23) { return this.levelArray[level] } src/views/Archive/dataApplication.vue
@@ -203,7 +203,7 @@ :model="detailsFrom" class="demo-form-inline" > <el-form-item label="表名:"> <el-form-item label="申请数据名称:"> <div class="statusLabel">{{ detailsFrom.tabs }}</div> </el-form-item><br /> <el-form-item label="申请人:"> @@ -411,6 +411,7 @@ if (data.code != 200) { return this.$message.error("列表调用失败"); } debugger this.detailsFrom.tableData = data.result; this.detailsFrom.tabs = row.tabs; this.detailsFrom.uname = row.uname; src/views/Synthesis/LeftMenu.vue
@@ -2235,11 +2235,16 @@ } }, addAnalysisFlood() { var url = window.location.href; var testurl = ""; if (url.indexOf("web") != -1) { testurl = "/web"; } var method = { pointSelect: true, spood: 20, GroupID: 0, url: "/SmartEarthSDK/Workers/image/33.gif", url: testurl + "/SmartEarthSDK/Workers/image/33.gif", }; window.AnalysisFlood = sgworld.Command.execute( 2, @@ -3184,7 +3189,6 @@ this.$bus.$on("setDialogInsertVisible", (res) => { if (res == true) { this.dialogVisible1 = true; } else { src/views/Tools/LayerTree.vue
@@ -1,690 +1,1490 @@ <template> <div class="lalala tree-container"> <el-form ref="form"> <el-form-item> <el-select v-model="$store.state.pigCode" clearable filterable style="width :100%" @change="prjChanged" placeholder="请选择项目"> <el-option v-for="item in menus" :key="item.code" :label="item.name" :value="item.code"> <el-select v-model="$store.state.pigCode" clearable filterable style="width :100%" @change="setproChange" placeholder="请选择项目" > <el-option v-for="item in optionts" :key="item.code" :label="item.name" :value="item.code" > </el-option> </el-select> </el-form-item> <el-form-item> <el-input placeholder="输入关键字进行过滤" v-model="filterText" class="search"> <el-input placeholder="输入关键字进行过滤" v-model="filterText" class="search" > </el-input> </el-form-item> </el-form> <el-tree ref="tree" :data="treeData" node-key="id" show-checkbox :props="defaultProps" @node-click="handleLeftclick" @node-contextmenu="rightClick" @check="handleCheckChange" :default-checked-keys="handleTreeCheck" :expand-on-click-node="false" :filter-node-method="filterNode" draggable> <span class="slot-t-node" slot-scope="{ node, data }"> <el-tree ref="tree" :data="treeData" node-key="id" show-checkbox :props="defaultProps" @node-click="handleLeftclick" @node-contextmenu="rightClick" @check="handleCheckChange" :default-checked-keys="handleTreeCheck" :expand-on-click-node="false" :filter-node-method="filterNode" draggable > <span class="slot-t-node" slot-scope="{ node, data }" > <span v-show="!data.isEdit"> <span :class="[data.id >= 99 ? 'slot-t-node--label' : '']">{{ node.label }}</span> </span> <span v-show="data.isEdit"> <el-input class="slot-t-input" size="mini" autofocus v-model="data.label" :ref="'slotTreeInput' + data.id" @blur.stop="nodeBlur(node, data)" @keydown.native.enter="nodeBlur(node, data)"></el-input> <el-input class="slot-t-input" size="mini" autofocus v-model="data.label" :ref="'slotTreeInput' + data.id" @blur.stop="NodeBlur(node, data)" @keydown.native.enter="NodeBlur(node, data)" ></el-input> </span> </span> </el-tree> <el-card class="box-card" ref="card" :style="{ ...rightClickMenuStyle }" v-show="menuVisible"> <div class="edit" @click="showLayerAttribute()" v-if="showProp && !shwoHistogram"> <el-card class="box-card" ref="card" :style="{ ...rightClickMenuStyle }" v-show="menuVisible" > <!-- <div @click="addSameLevelNode()" v-show="firstLevel" > <i class="el-icon-plus"></i> 添加图层组 </div> --> <!-- <div class="add" @click="addChildNode()" > <i class="el-icon-plus"></i> 添加图层 </div> --> <!-- <div class="delete" @click="deleteNode()" > <i class="el-icon-delete"></i> 删除 </div> --> <!-- <div class="edit" @click="editNode()" > <i class="el-icon-edit"></i> 重命名 </div> --> <div class="edit" @click="showLayerAttribute()" v-if="!showlocal && !shwoHistogram" v-show="!firstLevel" > <i class="el-icon-tickets"></i> 属性 </div> <div class="edit" @click="positioning()" v-if="showLocal"> <div class="edit" @click="positioning()" v-if="showlocal" > <i class="el-icon-tickets"></i> 定位 </div> <div class="edit" @click="pellucidity()" v-if="showOpacity"> <div class="edit" @click="pellucidity()" v-if="showopaque" > <i class="el-icon-tickets"></i> 透明度 </div> <div class="edit" @click="histogram()" v-show="shwoHistogram"> <div class="edit" @click="histogram()" v-show="shwoHistogram" > <i class="el-icon-tickets"></i> 钻孔柱状图 </div> <!-- <div class="edit" v-show="showModelAttach" @click="modelAttach()" > <i class="el-icon-tickets"></i> 模型属性 </div> --> <!-- <div class="edit" @click="menuMoveF( 'up')" > <i class="el-icon-top"></i> 上移 </div> <div class="edit" @click="menuMoveF( 'down')" > <i class="el-icon-bottom"></i> 下移 </div> --> </el-card> <el-dialog :title="appendNodetitle" :visible.sync="dialogVisible" width="30%" top="20vh" :modal="false" :before-close="handleClose" > <el-form ref="form" :model="addFormServer" label-width="100px" > <el-form-item label="服务类型"> <!-- <el-input v-model="addFormServer.type"></el-input> --> <el-select style="width: 100%" :popper-append-to-body="false" v-model="addFormServer.serveType" placeholder="请选择" > <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="图层名称"> <el-input v-model="addFormServer.cnName"></el-input> </el-form-item> <el-form-item label="服务名称"> <el-input v-model="addFormServer.url"></el-input> </el-form-item> <el-form-item label="服务地址"> <el-input v-model="addFormServer.resource"></el-input> </el-form-item> <el-form-item label="透明度"> <el-slider v-model="addFormServer.opacity"></el-slider> </el-form-item> </el-form> <span slot="footer" class="dialog-footer" > <el-button type="primary" @click="setAddServer" >确 定</el-button> </span> </el-dialog> </div> </template> <script> import { image_layer } from "../../assets/js/index.js"; import ImageWMS from "ol/source/ImageWMS"; import Image from "ol/layer/Image"; import GeoJSON from "ol/format/GeoJSON.js"; import Map from "ol/Map.js"; import queryinfo from "./queryinfo.vue"; import { Vector as VectorSource } from "ol/source"; import { Vector as VectorLayer } from "ol/layer"; import { perms_selectLayers, comprehensive_selectPubById, project_selectDirAll, project_selectByDirid, } from "../../api/api.js"; import View from "ol/View.js"; import { Fill, Stroke, Style } from "ol/style.js"; import { perms_selectLayers, inquiry_selectDomains, comprehensive_selectPubById, project_selectDirAll, project_selectByDirid, dataQuerySelectWktById } from "../../api/api.js"; export default { name: "tree", components: { queryinfo }, data () { data() { return { isBusy: false, // 正忙 lastPrjCode: "", // 最后选择项目编码 showProp: false, // 属性 shwoHistogram: false, // 钻孔柱状图 showLocal: false, // 定位 showOpacity: false, // 不透明度 menuVisible: false, // 菜单 levelArray: [ // 高程数组 0, 40000000, 20000000, 10000000, 5000000, 2000000, 1000000, 500000, 250000, 200000, 100000, 50000, 17000, 9000, 5000, 2000, 1000, 500, 200, 100, 50, 25, 10, 0, ], filterText: "", // 关键字过滤 currentData: "", // 当前数据 currentNode: "", // 当前节点 rightClickMenuStyle: {}, // 右键菜单样式 handleTreeCheck: [], // 默认选中键 shwoHistogram: false, showlocal: false, showopaque: false, eleId: "", isShow: false, currentData: "", currentNode: "", menuVisible: false, firstLevel: false, filterText: "", appendNodetitle: "", maxexpandId: 4, rightClickMenuStyle: {}, handleTreeCheck: [], dialogVisible: false, showModelAttach: false, addFormServer: { opacity: 100, serveType: "WMS", type: 2, }, layerId: [ "m_pipeline", "th_strategic_channel", "bs_project", "m_sitepoint", ], treeData: [], // 树数据 defaultProps: { // 默认属性值 treeData: [], defaultProps: { children: "children", label: "cnName", }, mptLayer: [], // Mpt图层 menus: [] // 菜单项 options: [ { value: "WMS", label: "WMS", }, { value: "WFS", label: "WFS", }, ], childOption: [], mptLayer: [], optionts: [], proValue: null, }; }, watch: { filterText (val) { this.$refs.tree.filter(val); }, }, mounted () { this.getMenus(); this.$bus.$on("treeDataCopy", (res) => { this.$store.state.treeData = this.treeData; this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys(); }); if (this.$store.state.showAllLayers) { this.layersStart(); this.$store.state.showAllLayers = false; } else { this.treeData = this.$store.state.treeData; this.$refs.tree.setCheckedKeys(this.$store.state.checkedKeys); } }, methods: { // 获取菜单 async getMenus () { let data = await project_selectDirAll(); if (data && data.code == 200) this.menus = data.result; }, // 初始化图层 async layersStart () { let data = await perms_selectLayers(); if (data.code != 200) { return this.$message.error("图层列表查询失败"); } let checkKey = [], checkedLayers = []; let layers = data.result.filter((lyr) => { if (lyr.url && lyr.type == 2 && lyr.isShow == 1) { checkKey.push(lyr.id); if (lyr.serveType == "WMS") checkedLayers.push(lyr); } return lyr; }); // 存储选中图层 this.treeData = this.setTreeData(layers); this.$refs.tree.setCheckedKeys(checkKey); sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers)); //转孔柱状图 async histogram() { this.menuVisible = false var layer = this.currentData.enName.replaceAll("_", ""); this.$store.state.mapSpaceQueryLayer = layer; this.$store.state.mapPopBoxFlag = "2"; this.$store.state.showPopBoxFlag = true; }, // 设置树数据 setTreeData (source) { let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆 return cloneData.filter((father) => { // 循环所有项 let branchArr = cloneData.filter((child) => father.id == child.pid); // 对比ID,分别上下级菜单,并返回数据 branchArr.length > 0 ? (father.children = branchArr) : ""; // 给父级添加一个children属性,并赋值 // 属于同一对象问题,例如:令 a=b、c=1 ,然后再令 b.c=c ,那么 a.c=b.c=c=1 ;同理,后续令 c.d=2 ,那么 a.c.d 也是=2; return father.pid == 0; // 返回一级菜单 }); }, // 节点获得焦点事件 nodeBlur (node, data) { if (!data.label.length) return this.$message.error("菜单名不可为空!"); if (data.isEdit) this.$set(data, "isEdit", false); this.$nextTick(() => { this.$refs["slotTreeInput" + data.id].$refs.input.focus(); }); }, // 鼠标左击事件 handleLeftclick (data, node) { this.rmListener(); }, // 取消鼠标监听事件 rmListener () { modelAttach() { this.menuVisible = false; // 要及时关掉监听,不关掉的是一个坑,不信你试试,虽然前台显示的时候没有啥毛病,加一个alert你就知道了 document.removeEventListener("click", this.rmListener); this.$store.state.attachinfo = this.currentData; this.$store.state.attachModel = true; }, // 过滤节点 filterNode (value, data) { if (!value) return true; return data.cnName.indexOf(value) !== -1; NodeBlur(Node, data) { if (data.label.length === 0) { this.$message.error("菜单名不可为空!"); return false; } else { if (data.isEdit) { this.$set(data, "isEdit", false); } this.$nextTick(() => { this.$refs["slotTreeInput" + data.id].$refs.input.focus(); }); } }, allowDrop(draggingNode, dropNode, type) { if (dropNode.data.label === "二级 3-1") { return type !== "inner"; } else { return true; } }, allowDrag(draggingNode) { return draggingNode.data.label.indexOf("三级 3-2-2") === -1; }, // 鼠标右击事件 rightClick (event, object, node, element) { if (object.type == 1 || node.data.children != null) return; this.currentNode = node; rightClick(event, object, Node, element) { if (object.type == 1) { return } this.currentData = object; this.$store.state.propertiesName = object; this.currentNode = Node; this.showProp = object.serveType == "WMS"; // 属性 this.shwoHistogram = this.showProp && object.enName == "s_explorationpoint"; // 钻孔柱状图 this.showLocal = ["Tileset", "3DML", "Mpt", "TMS", "DOM", "DEM"].indexOf(object.serveType) > -1; // 定位 this.showOpacity = ["Tileset", "3DML"].indexOf(object.serveType) > -1; // 不透明度 this.menuVisible = this.showProp || this.shwoHistogram || this.showLocal || this.showOpacity; // 菜单 this.$store.state.propertiesName = this.currentData; this.showModelAttach = false; this.shwoTitle = false; this.menuVisible = true; if (this.currentData.serveType == 'TMS') { this.shwoTitle = true } else if (this.currentData.serveType == "Tileset" || this.currentData.serveType == "3DML") { this.showModelAttach = true; } else if (this.currentData.serveType == "DOM" || this.currentData.serveType == "Mpt") { this.menuVisible = false; } if (this.currentData.enName == "s_explorationpoint") { this.shwoHistogram = true; } else { this.shwoHistogram = false; } if (Node.data.children == null) { this.firstLevel = false; } else { this.firstLevel = true; } if (Node.data.children == null && Node.data.serveType == "Tileset" || Node.data.serveType == "3DML") { this.showlocal = true; this.showopaque = true; } else if (Node.data.children == null && Node.data.serveType == "TMS") { this.showlocal = true; this.showopaque = false; } else if (Node.data.children == null && Node.data.serveType != "Tileset") { this.showlocal = false; this.showopaque = false; } if (this.currentData.serveType == "DEM") { this.showlocal = true; this.showopaque = false; } this.$refs.card.$el.style.left = event.pageX + 20 + "px"; this.$refs.card.$el.style.top = event.pageY + "px"; }, // 属性显示 showLayerAttribute (data) { this.rmListener(); this.currentData = data ? data : this.currentData; let layer = this.currentData.enName.replaceAll("_", ""); this.$store.state.mapSpaceQueryLayer = layer; this.$store.state.showPopBoxFlag = true; this.$store.state.mapPopBoxFlag = "2"; }, // 定位 async positioning () { this.rmListener(); if (["Tileset", "3DML"].indexOf(this.currentData.serveType) > -1) { for (let i in Viewer.scene.primitives._primitives) { if (Viewer.scene.primitives._primitives[i].id == this.currentData.cnName) { Viewer.flyTo(Viewer.scene.primitives._primitives[i]); break; // 鼠标左击事件 handleLeftclick(data, node) { this.foo(); if (node.checked == true) { for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { var val_id = window.Viewer.imageryLayers._layers[i].imageryProvider.name; if (val_id == data.label) { const img_layer = window.Viewer.imageryLayers._layers[i]; } } return; } }, // 取消鼠标监听事件 菜单栏 foo() { this.menuVisible = false; // 要及时关掉监听,不关掉的是一个坑,不信你试试,虽然前台显示的时候没有啥毛病,加一个alert你就知道了 document.removeEventListener("click", this.foo); }, // 增加同级节点事件 addSameLevelNode() { this.menuVisible = false this.foo(); if (this.currentNode.level == 2) { this.appendNodetitle = this.currentData.label; this.dialogVisible = true; } else { let id = Math.ceil(Math.random() * 100); var data = { id: id, label: "新增节点" }; this.$refs.tree.append(data, this.currentNode.parent); } }, // 增加子级节点事件 addChildNode() { this.foo(); this.menuVisible = false // if (this.currentNode.level >= 2) { // this.$message.error("最多只支两级!"); // return false; // } this.appendNodetitle = this.currentData.label; this.dialogVisible = true; }, handleClose() { this.dialogVisible = false; this.addFormServer = { opacity: 100, serveType: "WMS", type: 2, }; }, setAddServer() { var val = this.currentNode; if (this.currentNode.level == 2) { val = this.currentNode.parent; } var data = this.addFormServer; data.id = Math.ceil(Math.random() * 100); this.$refs.tree.append(data, val); this.handleClose(); }, // 删除节点 deleteNode() { this.foo(); this.menuVisible = false var label = this.currentNode.data.cnName; if (this.currentNode.data.serveType == "WMS") { var value = this.$refs.tree.getCheckedNodes(); if (["TMS", "DOM", "DEM"].indexOf(this.currentData.serveType) > -1 && this.currentData.pubid) { let data = await comprehensive_selectPubById({ id: this.currentData.pubid }); if (data.result && data.result.geom) { let wkt = this.$wkt.parse(data.result.geom); let height = this.getHeight(wkt.coordinates[2]); Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), // 2000 }); this.$bus.$emit("showMenuLayer", value); } else if (this.currentNode.data.serveType == "WFS") { for (var i in window.Viewer.dataSources._dataSources) { if (window.Viewer.dataSources._dataSources[i].name == label) { window.Viewer.dataSources.remove( window.Viewer.dataSources._dataSources[i] ); } } return; } else if (this.currentNode.data.serveType == "Tileset") { for (var i in Viewer.scene.primitives._primitives) { // Viewer.scene.primitives._primitives[i].show = checked; if (Viewer.scene.primitives._primitives[i].id == label) { Viewer.scene.primitives.remove( Viewer.scene.primitives._primitives[i] ); } } var list = this.$store.state.setAlphaList; for (var i = 0; i < list.length; i++) { if (list[i].name == label) { list.splice(i, 1) } } } var layers_ol = window.map.getAllLayers(); for (var i in layers_ol) { var layerOl = layers_ol[i]; if (layerOl.values_.name == label) { window.map.removeLayer(layerOl); //显示图层 } } if ("Mpt" == this.currentData.serveType) { viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(101.8, 37.9, 10000000.0) }); // 中国 } this.$refs.tree.remove(this.currentNode); }, // 钻孔柱状图 async histogram () { this.rmListener(); let layer = this.currentData.enName.replaceAll("_", ""); //属性显示 showLayerAttribute(data) { this.foo(); this.menuVisible = false this.currentData = data ? data : this.currentData; var layer = this.currentData.enName.replaceAll("_", ""); this.$store.state.mapSpaceQueryLayer = layer; this.$store.state.mapPopBoxFlag = "2"; this.$store.state.showPopBoxFlag = true; this.$store.state.mapPopBoxFlag = "2"; }, // 透明度 pellucidity () { this.rmListener(); for (let j in Viewer.scene.primitives._primitives) { if (Viewer.scene.primitives._primitives[j].id == this.currentData.cnName) { //模型设置透明度 pellucidity() { this.foo(); this.menuVisible = false var tile = this.currentData for (var j in Viewer.scene.primitives._primitives) { if (Viewer.scene.primitives._primitives[j].id == tile.cnName) { this.$store.state.setAlphaDity = this.currentData; this.$bus.$emit("showPellucidity", true); break; } } }, // 获取高度 getHeight (level) { if (level > -1 && level < 23) return this.levelArray[level]; return this.levelArray[this.levelArray.length - 1]; //模型定位 async positioning() { this.menuVisible = false if (this.currentData.serveType == 'Tileset' || this.currentData.serveType == '3DML') { for (var i in Viewer.scene.primitives._primitives) { if ( Viewer.scene.primitives._primitives[i].id == this.currentData.cnName ) { Viewer.flyTo(Viewer.scene.primitives._primitives[i]); } } } else if (this.currentData.pubid && this.currentData.serveType == 'TMS' || this.currentData.serveType == "DEM") { const data = await comprehensive_selectPubById({ id: this.currentData.pubid }) if (data.result.geom) { var wkt = this.$wkt.parse(data.result.geom); Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000), }); } } }, // 图层选中事件 handleCheckChange (data, checked) { if (this.isBusy) return; // 编辑节点 editNode(data) { this.foo(); this.menuVisible = false this.currentData = data ? data : this.currentData; if (!this.currentData.isEdit) { this.$set(this.currentData, "isEdit", true); } // 获取焦点 this.$nextTick(() => { this.$refs["slotTreeInput" + this.currentData.id].focus(); }); }, let nodes = []; this.getNodes(data, nodes); let obj = { WMS: [], Tileset: [], TMS: [], Mpt: [], DEM: [] }; menuMoveF(type) { // 将变动之前的node备份 var node = this.currentNode; var data = this.currentData; let copyNode = this.currentNode; for (let i = 0, c = nodes.length; i < c; i++) { let node = nodes[i]; switch (node.serveType) { case "WMS": obj.WMS.push(node); break; case "3DML": case "Tileset": obj.Tileset.push(node); break; case "TMS": obj.TMS.push(node); break; case "Mpt": obj.Mpt.push(node); break; case "DEM": obj.DEM.push(node); break; // copyNode.previousSibling = {...node. } // copyNode.nextSibling = {...node.nextSibling} // window.sessionStorage.setItem('menuNode',CircularJSON.stringify(copyNode)) let nodeData = {}; if (type === "up") { // 上移 if (node.previousSibling) { // 删除原先的node this.$refs.tree.remove(node.data); // 拿到copy的node // nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode')) // // 复制该node到指定位置(参数:1. 要增加的节点的 data 2. 要增加的节点的后一个节点的 data、key 或者 node) // this.$refs.tree.insertBefore(nodeData.data,nodeData.previousSibling.data) window.sessionStorage.removeItem("menuNode"); } else { this.$message.warning("该菜单已经是当前层最上级"); } } else { // 下移 if (node.nextSibling) { this.$refs.tree.remove(node.data); nodeData = CircularJSON.parse( window.sessionStorage.getItem("menuNode") ); // 参数:1. 要增加的节点的 data 2. 要增加的节点的前一个节点的 data、key 或者 node this.$refs.tree.insertAfter(nodeData.data, nodeData.nextSibling.data); window.sessionStorage.removeItem("menuNode"); } else { this.$message.warning("该菜单已经是当前层最下级"); } } }, handleDragStart(node, ev) { console.log("drag start", node); }, handleDragEnter(draggingNode, dropNode, ev) { console.log("tree drag enter: ", dropNode.label); }, handleDragLeave(draggingNode, dropNode, ev) { console.log("tree drag leave: ", dropNode.label); }, handleDragOver(draggingNode, dropNode, ev) { console.log("tree drag over: ", dropNode.label); }, handleDragEnd(draggingNode, dropNode, dropType, ev) { console.log("tree drag end: ", dropNode && dropNode.label, dropType); }, handleDrop(draggingNode, dropNode, dropType, ev) { console.log("tree drop: ", dropNode.label, dropType); }, handleCheckChange(data, checked, indeterminate) { if (data.type == 1) { this.childOption = []; this.getchilds(data); var listWMS = []; var listWFS = []; var listTileset = []; var listTMS = []; var listMpt = []; var listDEM = []; for (var i in this.childOption) { switch (this.childOption[i].serveType) { case 'WMS': listWMS.push(this.childOption[i]) break; case 'WFS': listWFS.push(this.childOption[i]) break; case '3DML': listTileset.push(this.childOption[i]) break; case 'Tileset': listTileset.push(this.childOption[i]) break; case 'Mpt': listMpt.push(this.childOption[i]) break; case 'TMS': listTMS.push(this.childOption[i]) break; case 'DEM': this.setChangeDEM([data], checked); break; } } this.setChangeWMS(listWMS, checked); this.setChangeWFS(listWFS, checked); this.setChangeTileset(listTileset, checked); this.setChangeTMS(listTMS, checked); this.setChangeMpt(listMpt, checked); } else if (data.type == 2) { if (data.serveType == "WMS") { this.setChangeWMS([data], checked); } else if (data.serveType == "Tileset" || data.serveType == "3DML") { this.setChangeTileset([data], checked); } else if (data.serveType == "TMS") { this.setChangeTMS([data], checked); } else if (data.serveType == "Mpt") { this.setChangeMpt([data], checked); } else if (data.serveType == "DEM") { this.setChangeDEM([data], checked); } } // if (data.type != 2) return; // if (data.serveType == "WFS") { // if (window.Viewer.dataSources._dataSources.length == 0) { // this.setAddLayers(data); // } else { // } // } else if (data.serveType == "Tileset") { // if (Viewer.scene.primitives._primitives.length == 0) { // this.setAddLayers(data); // } else { // var std = []; // for (var i in Viewer.scene.primitives._primitives) { // Viewer.scene.primitives._primitives[i].show = checked; // if (Viewer.scene.primitives._primitives[i].id == data.cnName) { // std.push(data.id); // Viewer.flyTo(Viewer.scene.primitives._primitives[i]); // } // } // } // if (std.length == 0 && checked == true) { // this.setAddLayers(data); // } else { // window.map.getLayers().getArray().forEach(item => { // if (item.get("name") == data.cnName) { // item.setVisible(checked); // } // }); // } // } else if (data.serveType == "TMS") { // if (data.pubid) { // } else { // var res; // if (data.url.indexOf("{host}") != -1) { // res = data.url.replace("{host}", iisHost); // } else { // res = data.url // } // var url = res.split(';') // window.sgworld.Creator.createImageryProvider('mpt影像', "wms", { // url: url[0], // layers: url[1] // }, "0", undefined, true, ""); // } // } // var layers_ol = window.map.getAllLayers(); // for (var i in layers_ol) { // var layerOl = layers_ol[i]; // if (layerOl.values_.name == data.label) { // layerOl.setVisible(checked); //显示图层 // } // } }, setChangeWMS(result, checked) { var value = this.$refs.tree.getCheckedNodes(); this.$bus.$emit("showMenuLayer", value); }, setChangeWFS(result, checked) { var value = this.$refs.tree.getCheckedNodes(); var std = []; for (var i in value) { std.push(value[i].id) } for (var i in result) { var tile = result[i] if (std.indexOf(tile.id) != -1) { this.setAddLayers(tile) } else { for (var i in window.Viewer.dataSources._dataSources) { if (window.Viewer.dataSources._dataSources[i].name == tile.cnName) { window.Viewer.dataSources.remove(window.Viewer.dataSources._dataSources[i]); } } var layers_ol = window.map.getAllLayers(); for (var i in layers_ol) { var layerOl = layers_ol[i]; if (layerOl.values_.name == tile.cnName) { window.map.removeLayer(layerOl) } } } } }, setChangeTileset(result, checked) { var value = this.$refs.tree.getCheckedNodes(); var std = []; for (var i in value) { std.push(value[i].id) } for (var i in result) { var tile = result[i] if (std.indexOf(tile.id) != -1) { this.setAddLayers(tile) } else { for (var j in Viewer.scene.primitives._primitives) { if (Viewer.scene.primitives._primitives[j].id == tile.cnName) { Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]) } } var list = this.$store.state.setAlphaList; for (var i = 0; i < list.length; i++) { if (list[i].name == tile.cnName) { list.splice(i, 1) } } } } if (obj.WMS.length) this.setChangeWMS(obj.WMS, checked); if (obj.Tileset.length) this.setChangeTileset(obj.Tileset, checked); if (obj.TMS.length) this.setChangeTMS(obj.TMS, checked); if (obj.Mpt.length) this.setChangeMpt(obj.Mpt, checked); if (obj.DEM.length) this.setChangeDEM(obj.DEM, checked); // if (checked.checkedKeys) { // for (var i in result) { // // } // } else { // for (var j in result) { // console.log(result[j]) // // // } // } }, // 获取子节点 getNodes (data, arr) { if (data.children) { for (let i = 0, c = data.children.length; i < c; i++) { let node = data.children[i]; if (node.children) { this.getNodes(node, arr) setChangeDEM(result, checked) { var value = this.$refs.tree.getCheckedNodes(); var std = []; var val = []; for (var i in value) { if (value[i].serveType != 'DEM') { val.push(value[i].id) } std.push(value[i].id) } if (window.terrainFlag == 'MPT') { window.terrainLayer.deleteObject(); } else if (window.terrainFlag == 'DEM') { Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); window.terrainLayer = null; } var tile = result[0] if (std.indexOf(tile.id) != -1) { val.push(tile.id); this.$refs.tree.setCheckedKeys(val); window.terrainLayer = new Cesium.CesiumTerrainProvider({ url: tile.url.replace("{host}", iisHost) }); Viewer.terrainProvider = window.terrainLayer window.terrainFlag = 'DEM' } else { var option = { url: window.sceneConfig.SGUrl, layerName: window.sceneConfig.mptName, requestVertexNormals: true, }; window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000), }); window.terrainFlag = 'MPT' } }, setChangeMpt(result, checked) { var value = this.$refs.tree.getCheckedNodes(); var std = []; for (var i in value) { std.push(value[i].id) } for (var i in result) { var tile = result[i] if (std.indexOf(tile.id) != -1) { this.setAddLayers(tile) } else { for (var i in this.mptLayer) { if (this.mptLayer[i].treeobj.name == tile.cnName) { this.mptLayer[i].deleteObject(); this.mptLayer.splice(i, 1) } } } } }, setChangeTMS(result, checked) { var value = this.$refs.tree.getCheckedNodes(); var std = []; for (var i in value) { std.push(value[i].id) } for (var i in result) { var tile = result[i] if (std.indexOf(tile.id) != -1) { this.setAddLayers(tile) } else { for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { var val_id = window.Viewer.imageryLayers._layers[i].name; if (val_id == tile.cnName) { window.Viewer.imageryLayers.remove( window.Viewer.imageryLayers._layers[i] ); } } } } }, getchilds(source) { if (source.children) { var child = source.children for (var i in child) { if (child[i].children) { this.getchilds(child[i]) } else { arr.push(node); this.childOption.push(child[i]) } } } else { arr.push(data); this.childOption.push(source) } }, // 获取节点ID getCheckNodesIds () { let nodes = this.$refs.tree.getCheckedNodes(); let ids = []; for (let i in nodes) { ids.push(nodes[i].id); } return ids; }, // 切换WMS服务 setChangeWMS (layers, checked) { let value = this.$refs.tree.getCheckedNodes(); this.$bus.$emit("showMenuLayer", value); }, // 切换Tileset setChangeTileset (layers, checked) { let ids = this.getCheckNodesIds(), arr = []; for (let k in layers) { let layer = layers[k]; if (ids.indexOf(layer.id) > -1) { arr.push(layer); continue; async setAddLayers(res) { if (res.serveType == "WMS") { var resource = geoServerURl; if (res.resource != null && res.resource != undefined) { resource = res.resource; } var imageryLayers = window.Viewer.scene.imageryLayers; let layerWMS = new Cesium.WebMapServiceImageryProvider({ url: resource, layers: res.url, parameters: { transparent: true, format: "image/png", srs: "EPSG:4490", styles: "", }, tileWidth: 512, tileHeight: 512, }); layerWMS.name = res.cnName; //透明度 var tdtAnnoLayer = imageryLayers.addImageryProvider(layerWMS); if (res.opacity) { tdtAnnoLayer.alpha = parseInt(res.opacity) / 100; } var layer2 = new Image({ name: res.cnName, source: new ImageWMS({ crossOrigin: "anonymous", url: resource, params: { FORMAT: "image/png", VERSION: "1.1.1", LAYERS: res.url, }, }), }); if (res.opacity) { layer2.setOpacity(parseInt(res.opacity) / 100); } window.map.addLayer(layer2); } else if (res.serveType == "WFS") { var url = res.resource + "?service=WFS&version=1.0.0&request=GetFeature&typeName=" + res.url + "&outputFormat=application%2Fjson"; $.ajax({ url: url, cache: false, async: true, success: function (data) { var datasource = Cesium.GeoJsonDataSource.load(data, { stroke: Cesium.Color.YELLOW, fill: Cesium.Color.YELLOW.withAlpha(0.1), alpha: 0.1, strokeWidth: 8, clampToGround: true, //是否贴地 }); datasource.then((data) => { data.name = res.cnName; window.Viewer.dataSources.add(data); }); }, error: function (data) { console.log("error"); }, }); var vectorLayer = new VectorLayer({ name: res.cnName, source: new VectorSource({ url: url, format: new GeoJSON(), }), }); window.map.addLayer(vectorLayer); } else if (res.serveType == "Tileset" || res.serveType == "3DML") { var url; if (res.url.indexOf("{host}") != -1) { url = res.url.replace("{host}", iisHost); } else { url = modelUrl + "/" + res.url } for (let j in Viewer.scene.primitives._primitives) { if (Viewer.scene.primitives._primitives[j].id == layer.cnName) { Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]); break; } } let list = this.$store.state.setAlphaList; for (let i = 0; i < list.length; i++) { if (list[i].name == layer.cnName) { list.splice(i, 1); } } } if (arr.length) this.addTilesetLayers(arr); }, // 添加Tileset图层 addTilesetLayers (layers) { for (let i in layers) { let res = layers[i]; let url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : modelUrl + "/" + res.url; let tileset = Viewer.scene.primitives.add( var tileset = Viewer.scene.primitives.add( new Cesium.Cesium3DTileset({ name: res.cnName, url: url, url: url, //192.168.20.106,to4 maximumScreenSpaceError: 64, // 最大屏幕空间错误:16 maximumMemoryUsage: 768, // 最大内存:512 dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false skipLevelOfDetail: true, // 在遍历时候跳过详情:false baseScreenSpaceError: 1024, maximumScreenSpaceError: 64, // 最大屏幕空间错误:16,数值加大能让最终成像变模糊 skipScreenSpaceErrorFactor: 16, skipLevels: 1, immediatelyLoadDesiredLevelOfDetail: false, loadSiblings: true, // 自动从中心开始超清化模型:false cullWithChildrenBounds: true, // 使用子项边界体积的并集来剔除图块:true cullRequestsWhileMoving: true, cullRequestsWhileMovingMultiplier: 10, // 值越小能够更快的剔除:60 preloadWhenHidden: true, preferLeaves: true, // 预装子节点:false maximumMemoryUsage: 768, // 内存分配变小有利于内存回收,提升性能体验 progressiveResolutionHeightFraction: 0.5, // 数值偏于0能够让初始加载变得模糊 dynamicScreenSpaceErrorDensity: 0.5, // 数值加大,能让周边加载变快 dynamicScreenSpaceErrorFactor: 2, // 动态屏幕空间误差的系数 dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false,全屏加载完之后才清晰化房屋 }) ); tileset.readyPromise.then((tileset) => { tileset.id = res.cnName; tileset.layerId = res.id; tileset.pubid = res.pubid; if (res.serveType != '3DML') { // Cesium.Matrix4.equals(a,b) 判断矩阵是否相等,整个根节点模型矩阵,该tileSet=>世界坐标系,单位矩阵对角线值为1.0的4*4矩阵 // Cesium.Matrix4.equals(a,b)判断两个四维矩阵是否相等 // 整个根节点模型矩阵,该tileSet=>世界坐标系 // 单位矩阵,对角线值为1.0的4*4矩阵 if (!Cesium.Matrix4.equals(tileset.root.transform, Cesium.Matrix4.IDENTITY)) { // 获取模型的世界坐标(笛卡尔),Cesium.Matrix4.getTranslation 通过仿射变换矩阵获取该tileSet的世界坐标 const transformCenter = Cesium.Matrix4.getTranslation(tileset.root.transform, new Cesium.Cartesian3()); // 获取模型的世界坐标(笛卡尔) // Cesium.Matrix4.getTranslation 通过仿射变换矩阵获取该tileSet的世界坐标 const transformCenter = Cesium.Matrix4.getTranslation( tileset.root.transform, new Cesium.Cartesian3() ); // 将笛卡尔坐标转换为WGS84经纬度坐标(模型的) const transformCartographic = Cesium.Cartographic.fromCartesian(transformCenter); const transformCartographic = Cesium.Cartographic.fromCartesian( transformCenter ); // 将笛卡尔坐标转换为WGS84经纬度坐标(截面的) const boundingSphereCartographic = Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center); const boundingSphereCartographic = Cesium.Cartographic.fromCartesian( tileset.boundingSphere.center ); const height = boundingSphereCartographic.height - transformCartographic.height; // 从一个Cartesian3对象生成Matrix4变换矩阵(裁切面的) window.modelHeight = height; } else { window.modelHeight = 0; } this.setTilesetArgs(tileset, res); } else window.modelHeight = 0; this.getTilesetArgs(tileset, res); } }); } }, // 切换TMS setChangeTMS (layers, checked) { let ids = this.getCheckNodesIds(), arr = []; for (let j in layers) { let layer = layers[j]; if (ids.indexOf(layer.id) > -1) { arr.push(layer); continue; this.$store.state.setAlphaList.push({ name: res.cnName, alpha: 1 }) window.model = tileset } else if (res.serveType == "TMS") { var url = res.url; if (res.url.indexOf("{host}") != -1) { url = res.url.replace("{host}", iisHost); } for (let i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { if (window.Viewer.imageryLayers._layers[i].name == layer.cnName) { window.Viewer.imageryLayers.remove(window.Viewer.imageryLayers._layers[i]); break; } } } if (arr.length) this.addTMSLayers(arr); }, // 添加TMS图层 addTMSLayers (layers) { for (let i in layers) { let res = layers[i]; res.url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : res.url; if (res.pubid) { this.setTMSLayerByPubid(res); continue; this.setQueryPubid(res); } else { var layer = Viewer.imageryLayers.addImageryProvider( new Cesium.UrlTemplateImageryProvider({ url: url, maximumLevel: 22, }) ); layer.name = res.cnName; this.setChangeWMS(); } let layer = Viewer.imageryLayers.addImageryProvider(new Cesium.UrlTemplateImageryProvider({ url: res.url, maximumLevel: 22, })); layer.id = res.id; layer.name = res.cnName; } }, // 切换Mpt setChangeMpt (layers, checked) { let ids = this.getCheckNodesIds(), arr = []; for (let j in layers) { let layer = layers[j]; if (ids.indexOf(layer.id) != -1) { arr.push(layer); continue; } else if (res.serveType == "Mpt") { if (res.url.indexOf("{host}") != -1) { res.url = res.url.replace("{host}", iisHost); } var url = res.url.split(';') for (let i in this.mptLayer) { if (this.mptLayer[i].treeobj.name == layer.cnName) { this.mptLayer[i].deleteObject(); this.mptLayer.splice(i, 1); } } } if (arr.length) this.addMptLayers(arr); }, // 添加Mpt图层 addMptLayers (layers) { for (let i in layers) { let res = layers[i]; if (res.url.indexOf("{host}") > -1) res.url = res.url.replace("{host}", iisHost); let urls = res.url.split(';') let layer = sgworld.Creator.createImageryProvider(res.cnName, "wms", { url: urls[0], layers: urls[1] var layer = sgworld.Creator.createImageryProvider(res.cnName, "wms", { url: url[0], layers: url[1] }, "0", undefined, true, ""); this.mptLayer.push(layer); this.mptLayer.push(layer) setTimeout(() => { this.setChangeWMS(); }, 500); } }, // 切换DEM setChangeDEM (layers, checked) { let ids = this.getCheckNodesIds(), arr = [], isDel = false, useSG = false; for (let i in layers) { let layer = layers[i]; if (ids.indexOf(layer.id) != -1) { arr.push(layer.url); continue; async getTilesetArgs(tileset, res) { if (res.pubid > 0) { const data = await comprehensive_selectPubById({ id: res.pubid }) if (data.code != 200) { } else { if (res.serveType != '3DML') { this.reload(tileset, data.result.json) } else { this.tileSet(tileset, parseFloat(res.elev)) } } } else { this.tileSet(tileset, parseFloat(res.elev)) } }, async setQueryPubid(res) { const data = await comprehensive_selectPubById({ id: res.pubid }) if (data.code != 200) { } else { var url = data.result.url; if (res.url.indexOf("{host}") != -1) { url = res.url.replace("{host}", iisHost); } var min = data.result.min; var max = data.result.max; var layer; if (max > 0) { layer = Viewer.imageryLayers.addImageryProvider( new Cesium.UrlTemplateImageryProvider({ url: url, minimumLevel: min, maximumLevel: max, }) ); } else { layer = Viewer.imageryLayers.addImageryProvider( new Cesium.UrlTemplateImageryProvider({ url: url, minimumLevel: min, }) ); } if (window.Viewer.terrainProvider._layers[0].resource._url == layer.url) isDel = true; // 删除DEM } layer.name = res.cnName; if (!arr.length && isDel) useSG = true; // demLayer if (arr.length) this.addDEMLayers(arr[0], useSG); }, // 添加DEM图层 addDEMLayer (url, useSG) { if (useSG) { let option = { url: window.sceneConfig.SGUrl, layerName: window.sceneConfig.mptName, requestVertexNormals: true }; window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); } else { window.terrainLayer = new Cesium.CesiumTerrainProvider({ url: url, requestVertexNormals: true }); if (data.result.geom) { // var wkt = this.$wkt.parse(data.result.geom); // Viewer.camera.flyTo({ // destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000), // }); } this.setChangeWMS(); } Viewer.terrainProvider = terrainLayer; }, // 设置Tileset参数 async setTilesetArgs (tileset, res) { if (res.serveType == '3DML' || !res.pubid) { this.setTilesetHeigth(tileset, parseFloat(res.elev)); return; } const data = await comprehensive_selectPubById({ id: res.pubid }) if (data.code == 200) this.setTilesetCoord(tileset, data.result.json); reload(tileset, res) { var vm = JSON.parse(res) var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height); var converter = Cesium.Transforms.eastNorthUpToFixedFrame; var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0); var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter); tileset._root.transform = matrix; // Viewer.flyTo(tileset); }, // 设置Tileset高度 setTilesetHeigth (tileset, height) { tileSet(tileset, height) { //3dtile模型的边界球体 let boundingSphere = tileset.boundingSphere; var boundingSphere = tileset.boundingSphere; //迪卡尔空间直角坐标=>地理坐标(弧度制) let cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center); var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center); //地理坐标(弧度制)=>迪卡尔空间直角坐标 let Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height); let Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height); var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height); var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height); //获得地面和offset的转换 let translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3()); var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3()); //修改模型矩阵 tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); // Viewer.flyTo(tileset); }, // 设置Tileset坐标 setTilesetCoord (tileset, json) { let vm = JSON.parse(json); let pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height); let converter = Cesium.Transforms.eastNorthUpToFixedFrame; let hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0); let matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter); tileset._root.transform = matrix; // Viewer.flyTo(tileset); setTreeData(source) { let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆 return cloneData.filter((father) => { // 循环所有项 let branchArr = cloneData.filter((child) => father.id == child.pid); // 对比ID,分别上下级菜单,并返回数据 branchArr.length > 0 ? (father.children = branchArr) : ""; // 给父级添加一个children属性,并赋值 // 属于同一对象问题,例如:令 a=b、c=1 ,然后再令 b.c=c , 那么 a.c=b.c=c=1 ;同理,后续令 c.d=2 ,那么 a.c.d 也是=2; // 由此循环多次后,就能形成相应的树形数据结构 return father.pid == 0; // 返回一级菜单 }); }, // 根据Pubid设置TMS图层 async setTMSLayerByPubid (res) { const data = await comprehensive_selectPubById({ id: res.pubid }); if (!data || data.code != 200) return; async layersStart() { const data = await perms_selectLayers(); if (data.code != 200) { return this.$message.error("图层列表查询失败"); } var std = data.result; var that = this; var checkKey = []; let checkedLayers = []; var val = std.filter((str) => { if (str.type == 1) { return str; } if (str.url != null && str.type == 2) { if (str.isShow == 1) { checkKey.push(str.id); // that.setAddLayers(str); if (str.serveType == "WMS" && str.url) { checkedLayers.push(str); } } return str; } }); let provider = data.result.max > 0 ? new Cesium.UrlTemplateImageryProvider({ url: res.url, minimumLevel: data.result.min, maximumLevel: data.result.max }) : new Cesium.UrlTemplateImageryProvider({ url: res.url, minimumLevel: data.result.min }); //存储选中图层 sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers)); var res = this.setTreeData(val); let layer = Viewer.imageryLayers.addImageryProvider(provider); layer.name = res.cnName; // if (data.result.geom) { // let wkt = this.$wkt.parse(data.result.geom); // Viewer.camera.flyTo({ // destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000) // for (var i in res) { // res[i].children = res[i].children.filter((val) => { // if (val.children != null) { // return val; // } // }); // } this.treeData = res; this.$refs.tree.setCheckedKeys(checkKey); }, // 切换项目 prjChanged (code) { this.$store.state.pigCode = code; if (code) { this.isBusy = true; let checkedLayers = this.getCheckedLayersByCode(code); let checkedKeys = []; for (let i in checkedLayers) { checkedKeys.push(checkedLayers[i].id); } this.$refs.tree.setCheckedKeys(checkedKeys); sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers)); this.isBusy = false; async treelayersStart() { const data = await perms_selectLayers(); if (data.code != 200) { return this.$message.error("图层列表查询失败"); } for (let i = 0, c = this.treeData.length; i < c; i++) { this.handleCheckChange(this.treeData[i], true); } }, // 根据项目编码获取选中图层 getCheckedLayersByCode (code) { let layers = []; for (let i = 0, c = this.treeData.length; i < c; i++) { this.getCheckedChildLayersByCode(this.treeData[i], code, layers, false); } return layers; }, // 根据项目编码获取选中子图层 getCheckedChildLayersByCode (data, code, layers, isPrj) { if (data.children && data.children.length) { for (let i = 0, c = data.children.length; i < c; i++) { let layer = data.children[i]; if (layer.children && layer.children.length) { let flag = layer.type == 1 && layer.isProject && layer.enName == code; this.getCheckedChildLayersByCode(layer, code, layers, flag); continue; } if (layer.type == 2 && (layer.isProject || isPrj)) { layers.push(layer); var std = []; var layer_list = []; var layer_groups = []; for (var i in data.result) { if (data.result[i].type == 1) { layer_groups.push({ id: data.result[i].id, label: data.result[i].cnName, type: data.result[i].type, isEdit: false, children: [], }); } else if (data.result[i].type == 2) { if (data.result[i].url != null) { var layer_entity = { id: data.result[i].id, pid: data.result[i].pid, label: data.result[i].cnName, resource: data.result[i].url, type: data.result[i].type, isEdit: false, }; layer_list.push(layer_entity); } } return; } for (var i in layer_list) { for (var j in layer_groups) { if (layer_list[i].pid === layer_groups[j].id) { layer_groups[j].children.push(layer_list[i]); } } } layer_groups = layer_groups.filter((res) => { if (res.children && res.children.length != 0) { return res; } }); this.treeData = layer_groups; if (data.type == 2 && (data.isProject || isPrj)) { layers.push(data); for (var i in data.result) { if (data.result[i].type == 2 && data.result[i].url != null) { for (var j = 0; j < window.Viewer.imageryLayers._layers.length; j++) { var val_id = window.Viewer.imageryLayers._layers[j]; if (val_id.show == true) { if (val_id.imageryProvider.name == data.result[i].cnName) { std.push(data.result[i].id); } } } } } this.$refs.tree.setCheckedKeys(std); }, // 查询 filterNode(value, data) { if (!value) return true; return data.cnName.indexOf(value) !== -1; }, async setproChange(res) { if (res) { this.setCheeckedLayer = this.$refs.tree.getCheckedKeys(); this.$store.state.pigCode = res; var st_code = this.optionts.filter(rs => { if (rs.code == res) { return rs } }) var val = this.$store.state.oldTree.filter(rs => { if (rs.enName == st_code[0].code) { return rs } }) this.removeAllLayer(); var obj = { dirid: res, pageIndex: 1, pageSize: 10, } const data = await project_selectByDirid(obj); if (data.code != 200) { this.$message.error("列表获取失败"); return; } if (data.result[0]) { var geom = data.result[0].geom if (geom) { var wkt = this.$wkt.parse(geom) Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0].toFixed(6), wkt.coordinates[1].toFixed(6), 5000), }); } } this.cannelTerrainLayer(); this.setTerrainMptLayer(); //清空图层树选中状态 this.$refs.tree.setCheckedKeys([]); if (val.length > 0) { if (val[0].type == 1 && val[0].isProject == 1) {//项目分类 var std_check = []; for (var i in val) { var std_val = this.getNewTree([this.$refs.tree.getNode(val[i].id).data], []) for (var j in std_val) { std_check.push(std_val[j]) } } var value = this.$store.state.isProjectLayer; for (var i in value) { std_check.push(value[i]) } this.setProjectLayer(std_check); } else { this.setChangeProLayer(); } } else { this.setChangeProLayer(); } } else { this.removeAllLayer(); this.$store.state.pigCode = null; this.$refs.tree.setCheckedKeys(this.setCheeckedLayer); var std = []; for (var i in this.setCheeckedLayer) { std.push(this.$refs.tree.getNode(this.setCheeckedLayer[i]).data) } this.setProjectLayer(std); } }, // 添加WFS图层 * addWFSLayers (res) { let url = res.resource + "?service=WFS&version=1.0.0&request=GetFeature&typeName=" + res.url + "&outputFormat=application%2Fjson"; $.ajax({ url: url, cache: false, async: true, success: function (data) { let datasource = Cesium.GeoJsonDataSource.load(data, { stroke: Cesium.Color.YELLOW, fill: Cesium.Color.YELLOW.withAlpha(0.1), alpha: 0.1, strokeWidth: 8, clampToGround: true, //是否贴地 }); datasource.then((data) => { data.name = res.cnName; window.Viewer.dataSources.add(data); }); }, error: function (data) { console.log("error"); }, removeAllLayer() { for (var j in Viewer.scene.primitives._primitives) { Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]) } for (var i in window.Viewer.dataSources._dataSources) { window.Viewer.dataSources.remove( window.Viewer.dataSources._dataSources[i] ); } for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { var val_id = window.Viewer.imageryLayers._layers[i].id; if (val_id == 'TMS') { window.Viewer.imageryLayers.remove( window.Viewer.imageryLayers._layers[i] ); } } for (var i in this.mptLayer) { this.mptLayer[i].deleteObject(); this.mptLayer.splice(i, 1) } this.mptLayer = []; }, setProjectLayer(res) { var layerid = []; for (var i in res) { layerid.push(res[i].id) } this.$refs.tree.setCheckedKeys(layerid); // var value = this.$refs.tree.getCheckedNodes(); // this.$bus.$emit("showMenuLayer", value); var listWMS = []; var listWFS = []; var listTileset = []; var listTMS = []; var listMpt = []; for (var i in res) { if (res[i].type == 2) { switch (res[i].serveType) { case 'WMS': listWMS.push(res[i]) break; case 'WFS': listWFS.push(res[i]) break; case '3DML': case 'Tileset': listTileset.push(res[i]) break; case 'Mpt': listMpt.push(res[i]) break; case 'TMS': listTMS.push(res[i]) break; } } } // this.setChangeProLayer(); this.setChangeWMS(listWMS, true); this.setChangeWFS(listWFS, true); this.setChangeTileset(listTileset, true); this.setChangeTMS(listTMS, true); this.setChangeMpt(listMpt, true); }, getNewTree(obj, result) { for (const i in obj) { console.log(obj[i].cnName) result.push(obj[i]) if (obj[i].children && obj[i].children.length > 0) { this.getNewTree(obj[i].children, result) } } return result }, cannelTerrainLayer() { //清空地形 if (window.terrainMptLayer) { window.terrainMptLayer.deleteObject(); window.terrainMptLayer = null; } if (window.terrainDemLayer) { Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); window.terrainDemLayer = null; } }, setTerrainMptLayer() { // //默认地形MPT // var option = { // url: window.sceneConfig.SGUrl, // layerName: window.sceneConfig.mptName, // requestVertexNormals: true, // }; // window.terrainMptLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); window.terrainDemLayer = new Cesium.CesiumTerrainProvider({ // url: LFData + '/3d/terrain/dem20230321' url: demLayer }); let vectorLayer = new VectorLayer({ name: res.cnName, source: new VectorSource({ url: url, format: new GeoJSON(), }), }); window.map.addLayer(vectorLayer); Viewer.terrainProvider = window.terrainDemLayer }, setChangeProLayer() { var value = this.$store.state.isProjectLayer; if (value.length != 0) { var std = []; for (var i in value) { std.push(value[i].id) } this.$refs.tree.setCheckedKeys(std); this.$bus.$emit("showMenuLayer", value); } }, async getMenuProject() { const data = await project_selectDirAll(); if (data.code != 200) { return } this.optionts = data.result; }, }, watch: { filterText(val) { this.$refs.tree.filter(val); }, }, mounted() { this.getMenuProject() this.$bus.$on("treeDataCopy", (res) => { this.$store.state.treeData = this.treeData; this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys(); }); if (this.$store.state.showAllLayers == true) { this.layersStart(); this.$store.state.showAllLayers = false; } else { this.treeData = this.$store.state.treeData; this.$refs.tree.setCheckedKeys(this.$store.state.checkedKeys); } }, }; @@ -717,6 +1517,7 @@ .tree-container /deep/ .el-tree-node { position: relative; padding-left: 10px; // text-indent: 16px; } .tree-container /deep/ .el-tree-node__children { @@ -840,11 +1641,9 @@ position: absolute; right: auto; } /deep/.el-table__placeholder { padding-left: 8px; } /deep/.el-card__body { padding: 10px !important; > div { @@ -855,15 +1654,15 @@ } } } /deep/ .el-form .el-form-item { padding-right: 0px !important; } /deep/ .el-form-item { margin-bottom: 10px !important; } /*.lalala {*/ /*position: relative;*/ /*}*/ .text { font-size: 14px; } src/views/Tools/queryinfo.vue
@@ -1,16 +1,20 @@ <template> <div class="InfoPopup"> <Popup ref="pop" v-for="(data, index) in PopupData" :key="data.id" :title="data.title || '提示'" maxHeight="400" @close="close(data.id)" left="calc(90% - 900px)" top="calc(100% - 470px) "> <Popup ref="pop" v-for="(data, index) in PopupData" :key="data.id" :title="data.title || '提示'" maxHeight="400" @close="close(data.id)" left="calc(90% - 900px)" top="calc(100% - 470px) " > <div> <div style="width:940px;height:400px;" v-drag> <div style="width:940px;height:400px;" v-drag > <map-menu-pop v-if="$store.state.mapPopBoxFlag == '1'" /> <map-space-pop v-if="$store.state.mapPopBoxFlag == '2'" /> <pipe-line-analy v-if="$store.state.mapPopBoxFlag == '3'" /> @@ -37,7 +41,7 @@ pipeLineAnaly, mapPickUpPop }, data () { data() { return { // 弹窗数据 PopupData: ['queryinfo'], @@ -46,7 +50,11 @@ }; }, computed: {}, mounted () { }, mounted() { }, directives: { drag: { inserted: function (el) { @@ -57,8 +65,7 @@ const disX = e.clientX; const w = dragDom.clientWidth; const minW = 500; const maxW = 1024; const maxW = 940; var nw; document.onmousemove = function (e) { // 通过事件委托,计算移动的距离 @@ -80,14 +87,14 @@ }, methods: { // 关闭所有 closeAll () { closeAll() { this.PopupData.forEach((item) => { item.close && item.close(); }); this.PopupData = []; }, // 关闭弹窗 close (id) { close(id) { let index = this.PopupData.findIndex((item) => { console.log(item); return item.id === id; @@ -98,6 +105,7 @@ for (var i in this.$store.state.pipelineEntity) { sgworld.Viewer.entities.remove(this.$store.state.pipelineEntity[i]); } } if (this.$store.state.primitLayer != null) { sgworld.Viewer.entities.remove(this.$store.state.primitLayer); @@ -125,7 +133,7 @@ this.$store.state.histLenged = false; }, // 打开弹窗 open (title, value, style = {}) { open(title, value, style = {}) { this.PopupData.push({ id: this.createRandomId(), title, @@ -139,7 +147,7 @@ return this.PopupData[index]; }, // 随机id createRandomId () { createRandomId() { return ( (Math.random() * 10000000).toString(16).substr(0, 4) + '-' + @@ -148,10 +156,12 @@ Math.random().toString().substr(2, 5) ); }, mouseDown (event) { mouseDown(event) { // document.addEventListener("mousemove", this.mouseMove); // this.lastX = event.screenX; }, }, }; </script> </script> src/views/datamanage/catalogueManage.vue
@@ -184,7 +184,6 @@ :key="item.value" :label="item.label" :value="item.value" > </el-option> </el-select> @@ -230,7 +229,6 @@ disabled type="textarea" style=" max-width: 420px" autosize /> </el-form-item> @@ -335,7 +333,7 @@ type="textarea" resize="none" style="height: 100%; overflow: auto" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuesuffix')" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuesuffix')" /> </el-form-item> <el-form-item @@ -352,7 +350,7 @@ v-model="ruleForm.checks" multiple style="width:100%;" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexamine')" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexamine')" > <el-option v-for="item in options" @@ -702,6 +700,7 @@ queryDirTree().then((res) => { // console.log(res); if (res.code == 200) { this.oriData = res.result; this.newData = res.result; this.dirList = this.treeData(res.result); @@ -754,19 +753,22 @@ if (currentId != 0) { const tempChildrenNodex1 = pchildNodes[currentId - 1]; const tempChildrenNodex2 = pchildNodes[currentId]; tempChildrenNodex2.orderNum = pchildNodes[currentId - 1].data.orderNum; tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum; // tempChildrenNodex2.orderNum = // pchildNodes[currentId - 1].data.orderNum; // tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum; var arr = []; this.oriData.filter((res) => { if (res.id == tempChildrenNodex2.data.id) { res.orderNum = tempChildrenNodex2.orderNum; // res.orderNum = tempChildrenNodex2.orderNum; arr.push(res); } else if (res.id == tempChildrenNodex1.data.id) { res.orderNum = tempChildrenNodex1.orderNum; // res.orderNum = tempChildrenNodex1.orderNum; arr.push(res); } }); const orderNum = arr[1].orderNum arr[1].orderNum = arr[0].orderNum arr[0].orderNum = orderNum this.newData = arr; this.sendChange(); } else { @@ -780,19 +782,22 @@ if (currentId < pchildNodes.length - 1) { const tempChildrenNodex1 = pchildNodes[currentId + 1]; const tempChildrenNodex2 = pchildNodes[currentId]; tempChildrenNodex2.orderNum = pchildNodes[currentId + 1].data.orderNum; tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum; // tempChildrenNodex2.orderNum = // pchildNodes[currentId + 1].data.orderNum; // tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum; var arr = []; this.oriData.filter((res) => { if (res.id == tempChildrenNodex2.data.id) { res.orderNum = tempChildrenNodex2.orderNum; // res.orderNum = tempChildrenNodex2.orderNum; arr.push(res); } else if (res.id == tempChildrenNodex1.data.id) { res.orderNum = tempChildrenNodex1.orderNum; // res.orderNum = tempChildrenNodex1.orderNum; arr.push(res); } }); const orderNum = arr[1].orderNum arr[1].orderNum = arr[0].orderNum arr[0].orderNum = orderNum this.newData = arr; this.sendChange(); } else { @@ -870,7 +875,13 @@ if (valid) { this.fullscreenLoading = true; var val = this.ruleForm; val.checks = this.ruleForm.checks.toString() if (this.ruleForm.checks) { val.checks = this.ruleForm.checks.toString() } else { val.checks = '' } insertDir(val) .then((res) => { setTimeout(() => { @@ -1041,11 +1052,11 @@ this.getDirTree(); return; } else { this.$message.error("修改失败,请重试!"); this.$message.error("移动失败,请重试!"); } }) .catch(() => { this.$message.error("修改失败,请重试!"); this.$message.error("移动失败,请重试!"); }); }, src/views/datamanage/dictionaryManage.vue
@@ -152,7 +152,7 @@ min-width="100" prop="tab" :label=" $t('dataManage.dictionaryManageObj.rangeAssociationTable') $t('dataManage.dictionaryManageObj.tableName') " /> <el-table-column src/views/datamanage/metadataManage.vue
@@ -1,14 +1,19 @@ <template> <div class="authorityManagement_box"> <My-bread :list="[ <My-bread :list="[ `${$t('dataManage.dataManage')}`, `${$t('dataManage.metadataManage')}`, ]" ></My-bread> ]"></My-bread> <el-divider /> <div class="inquire subpage_Div" ref="container"> <el-form ref="queryForm" :model="queryForm" :inline="true"> <div class="inquire subpage_Div" ref="container" > <el-form ref="queryForm" :model="queryForm" :inline="true" > <div class="flex_box"> <div style="margin-right: auto"> <el-form-item size="small"> @@ -95,19 +100,21 @@ </el-option> </el-select> </el-form-item> <el-form-item prop="name" size="small"> <el-form-item prop="name" size="small" > <!-- suffix-icon="el-icon-edit" :placeholder="$t('common.pleaseInput')"--> <el-input v-model="queryForm.name" :placeholder="$t('shuJuGuanLi.lable2')" style="width: 200px" ><i ><i slot="suffix" class="el-icon-search" @click="queryInfo()" style="padding-right: 8px" ></i ></el-input> ></i></el-input> </el-form-item> </div> <div> @@ -127,7 +134,7 @@ size="small" @click="deleteMetaInfo" icon="el-icon-delete" >{{ $t("common.delete") }} >{{ $t("common.delete") }} </el-button> </el-form-item> <el-form-item v-if="btnStatus.download"> @@ -136,7 +143,7 @@ icon="el-icon-download" type="success" size="small" >{{ $t("common.download") }} >{{ $t("common.download") }} </el-button> </el-form-item> @@ -146,7 +153,7 @@ icon="el-icon-refresh" type="info" size="small" >{{ $t("common.reset") }} >{{ $t("common.reset") }} </el-button> </el-form-item> </div> @@ -197,7 +204,10 @@ </el-form> </div> <div class="dividing-line"></div> <div class="table_box subpage_Div" :style="styleVar"> <div class="table_box subpage_Div" :style="styleVar" > <el-table :data="tableData" style="width: 100%" @@ -205,7 +215,10 @@ @selection-change="handleSelectionChange" height="calc(100% - 57px)" > <el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" /> <el-table-column :label="$t('dataManage.dictionaryManageObj.number')" type="index" @@ -220,8 +233,7 @@ title="源数据查询" @click="setQueryMetaData(scope.row)" target="_blank" >{{ scope.row.name }}</el-link > >{{ scope.row.name }}</el-link> </span> <span v-else-if="scope.row.metaid > 0"> <el-link @@ -229,14 +241,15 @@ title="元数据查询" @click="setMetaDataQuery(scope.row)" target="_blank" >{{ scope.row.name }}</el-link ></span > >{{ scope.row.name }}</el-link></span> <span v-else>{{ scope.row.name }}</span> </template> </el-table-column> <el-table-column prop="type" :label="$t('dataManage.vmobj.format')" /> <el-table-column prop="type" :label="$t('dataManage.vmobj.format')" /> <el-table-column prop="sizes" :label="$t('dataManage.vmobj.size')" @@ -259,7 +272,10 @@ <template slot-scope="scope"> <!-- <span ></span> --> <el-link></el-link> <el-link :underline="false" @click="detail(scope.row)">{{ <el-link :underline="false" @click="detail(scope.row)" >{{ scope.row.tab }}</el-link> </template> @@ -270,7 +286,10 @@ :label="$t('dataManage.vmobj.tab')" :formatter="formatData" /> --> <el-table-column prop="rows" :label="$t('dataManage.vmobj.row')" /> <el-table-column prop="rows" :label="$t('dataManage.vmobj.row')" /> <el-table-column prop="uname" :label="$t('dataManage.vmobj.createonuser')" @@ -280,14 +299,17 @@ :label="$t('dataManage.vmobj.createontime')" :formatter="formatData" /> <el-table-column min-width="210" :label="$t('common.operate')"> <el-table-column min-width="210" :label="$t('common.operate')" > <template slot-scope="scope"> <el-button @click="showDetail(scope.row)" type="primary" plain size="small" >{{ $t("common.details") }} >{{ $t("common.details") }} </el-button> <el-button type="warning" @@ -296,7 +318,7 @@ v-if="btnStatus.update" @click="editInfo(scope.row)" style="margin-left: 10px" >{{ $t("common.edit") }} >{{ $t("common.edit") }} </el-button> <el-button plain @@ -304,12 +326,15 @@ v-if="showPreview(scope.row)" @click="handlePreview(scope.row)" style="margin-left: 10px" >{{ $t("common.preview") }} >{{ $t("common.preview") }} </el-button> </template> </el-table-column> </el-table> <div class="pagination_box" style="margin-top: 15px"> <div class="pagination_box" style="margin-top: 15px" > <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" @@ -322,16 +347,28 @@ </el-pagination> </div> </div> <div class="infoBox_box" v-show="showinfoBox"> <div class="infoBox_box" v-show="showinfoBox" > <div class="infoBox box_div"> <div slot="header" class="clearfix"> <div slot="header" class="clearfix" > <span>{{ $t("common.details") }}</span> <div style="float: right; cursor: pointer" @click="closeDetial"> <div style="float: right; cursor: pointer" @click="closeDetial" > <i class="el-icon-close"></i> </div> </div> <el-divider></el-divider> <div class="contentBox" style="padding: 1%"> <div class="contentBox" style="padding: 1%" > <p>{{ $t("dataManage.vmobj.name") }}:{{ itemdetail.name }}</p> <el-divider></el-divider> <p>{{ $t("dataManage.vmobj.format") }}:{{ itemdetail.type }}</p> @@ -348,7 +385,7 @@ <el-divider></el-divider> <p>{{ $t("dataManage.vmobj.tab") }}:{{ itemdetail.tab }}</p> <el-divider></el-divider> <p>{{ $t("dataManage.vmobj.row") }}:{{ itemdetail.row }}</p> <p>{{ $t("dataManage.vmobj.row") }}:{{ itemdetail.rows }}</p> <el-divider></el-divider> <p> {{ $t("dataManage.vmobj.createonuser") }}:{{ itemdetail.uname }} @@ -360,7 +397,7 @@ }} </p> <el-divider></el-divider> <p> <!-- <p> {{ $t("dataManage.vmobj.depName") }}:{{ itemdetail.updateUser }} </p> <el-divider></el-divider> @@ -368,7 +405,7 @@ {{ $t("dataManage.vmobj.depName") }}:{{ setInfoBoxTime(itemdetail.updateTime) }} </p> </p> --> </div> </div> </div> @@ -384,24 +421,36 @@ :visible.sync="dialogFormVisible" :before-close="handleClose" > <el-form :model="editForm" ref="editForm"> <el-form :model="editForm" ref="editForm" > <el-form-item :label="$t('dataManage.vmobj.name')" :label-width="formLabelWidth" > <el-input v-model="editForm.name" autocomplete="off"></el-input> <el-input v-model="editForm.name" autocomplete="off" ></el-input> </el-form-item> <el-form-item :label="$t('dataManage.vmobj.format')" :label-width="formLabelWidth" > <el-input v-model="editForm.type" autocomplete="off"></el-input> <el-input v-model="editForm.type" autocomplete="off" ></el-input> </el-form-item> <el-form-item :label="$t('dataManage.vmobj.size')" :label-width="formLabelWidth" > <el-input v-model="editForm.sizes" autocomplete="off"></el-input> <el-input v-model="editForm.sizes" autocomplete="off" ></el-input> </el-form-item> <el-form-item :label="$t('dataManage.vmobj.depName')" @@ -467,7 +516,10 @@ :label="$t('dataManage.vmobj.describe')" :label-width="formLabelWidth" > <el-input v-model="editForm.describe" autocomplete="off"></el-input> <el-input v-model="editForm.describe" autocomplete="off" ></el-input> </el-form-item> <!-- <el-form-item :label="$t('dataManage.vmobj.gather')" @@ -476,28 +528,40 @@ <el-input v-model="editForm.gather" autocomplete="off"></el-input> </el-form-item> --> </el-form> <div v-if="behavior == '修改信息'" slot="footer" class="dialog-footer"> <el-button size="small" @click="cancelEdit()" >{{ $t("common.reset") }} <div v-if="behavior == '修改信息'" slot="footer" class="dialog-footer" > <el-button size="small" @click="cancelEdit()" >{{ $t("common.reset") }} </el-button> <el-button size="small" type="primary" @click="sendEdit('editForm')" v-loading.fullscreen.lock="fullscreenLoading" >{{ $t("common.submit") }} >{{ $t("common.submit") }} </el-button> </div> <div v-else slot="footer" class="dialog-footer"> <el-button size="small" @click="cancelAdd('editForm')" >{{ $t("common.reset") }} <div v-else slot="footer" class="dialog-footer" > <el-button size="small" @click="cancelAdd('editForm')" >{{ $t("common.reset") }} </el-button> <el-button size="small" type="primary" @click="sendAdd('editForm')" v-loading.fullscreen.lock="fullscreenLoading" >{{ $t("common.submit") }} >{{ $t("common.submit") }} </el-button> </div> </el-dialog> @@ -529,7 +593,10 @@ align="center" ></el-table-column> </el-table> <div style="margin-top: 10px" class="pagination_box"> <div style="margin-top: 10px" class="pagination_box" > <el-pagination @size-change="handleLoaderSizeChange" @current-change="handleLoaderCurrentChange" @@ -543,7 +610,10 @@ </div> </div> </el-dialog> <div class="downloadBox box_div subpage_Div" v-if="showCodeBox"> <div class="downloadBox box_div subpage_Div" v-if="showCodeBox" > <h4 style="padding: 20px">{{ $t("common.passworld") }}</h4> <el-form :model="codeForm" @@ -552,14 +622,20 @@ label-width="100px" class="codeForm" > <el-form-item :label="$t('common.passworld')" prop="password"> <el-form-item :label="$t('common.passworld')" prop="password" > <el-input type="password" v-model="codeForm.password" show-password ></el-input> </el-form-item> <el-form-item :label="$t('common.SPassword')" prop="repassword"> <el-form-item :label="$t('common.SPassword')" prop="repassword" > <el-input type="password" v-model="codeForm.repassword" @@ -567,11 +643,17 @@ ></el-input> </el-form-item> <el-form-item> <el-button class="primary" size="small" @click="download('codeForm')" >{{ $t("common.confirm") }} <el-button class="primary" size="small" @click="download('codeForm')" >{{ $t("common.confirm") }} </el-button> <el-button type="info" size="small" @click="closeDown('codeForm')" >{{ $t("common.cancel") }} <el-button type="info" size="small" @click="closeDown('codeForm')" >{{ $t("common.cancel") }} </el-button> </el-form-item> </el-form> @@ -582,17 +664,30 @@ width="70%" > <div style="height: 65vh; width: 100%"> <el-form :inline="true" :model="fromQueryMeta" class="demo-form-inline"> <el-form :inline="true" :model="fromQueryMeta" class="demo-form-inline" > <el-form-item> <el-input size="small" v-model="fromQueryMeta.name"></el-input> <el-input size="small" v-model="fromQueryMeta.name" ></el-input> </el-form-item> <el-form-item> <el-button type="primary" size="small" @click="setSearchMetaData()" >查询 <el-button type="primary" size="small" @click="setSearchMetaData()" >查询 </el-button> <el-button type="info" size="small" @click="setRestMetaData()" >重置 <el-button type="info" size="small" @click="setRestMetaData()" >重置 </el-button> </el-form-item> </el-form> @@ -648,7 +743,10 @@ :label="$t('dataManage.dataUpObj.tableName')" > <template slot-scope="scope"> <a class="scopeRowColor" @click="detail(scope.row)">{{ <a class="scopeRowColor" @click="detail(scope.row)" >{{ scope.row.tab }}</a> </template> @@ -664,7 +762,10 @@ :label="$t('dataManage.dataUpObj.describe')" /> </el-table> <div class="pagination_box" style="margin-top: 15px"> <div class="pagination_box" style="margin-top: 15px" > <el-pagination @size-change="handleMetaSizeChange" @current-change="handMetaCurrentChange" @@ -736,7 +837,10 @@ :label="$t('dataManage.dataUpObj.tableName')" > <template slot-scope="scope"> <a class="scopeRowColor" @click="detail(scope.row)">{{ <a class="scopeRowColor" @click="detail(scope.row)" >{{ scope.row.tab }}</a> </template> @@ -762,7 +866,10 @@ width="70%" :close-on-click-modal="false" > <div v-if="dialog.isPdf" class="pdfClass"> <div v-if="dialog.isPdf" class="pdfClass" > <iframe :src="dialog.src" type="application/x-google-chrome-pdf" @@ -771,7 +878,10 @@ > </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" @@ -789,7 +899,11 @@ :close-on-click-modal="false" :show-close="false" > <el-form ref="form" :model="fileFrom" label-width="100px"> <el-form ref="form" :model="fileFrom" label-width="100px" > <el-form-item label="审核单位"> <div> <ul> @@ -815,14 +929,12 @@ class="primary" size="small" @click="getFileInsertApply()" >{{ $t("common.confirm") }}</el-button > >{{ $t("common.confirm") }}</el-button> <el-button type="info" size="small" @click="handleInsertFileClose()" >{{ $t("common.cancel") }}</el-button > >{{ $t("common.cancel") }}</el-button> </el-form-item> </el-form> </el-dialog> @@ -907,8 +1019,8 @@ dirid: "", depid: "", verid: "", depName:"", depName: "", }, behavior: "", initialForm: "", @@ -1016,11 +1128,11 @@ }, watch: { "queryForm.depName"() { this.$refs.treeSelect.visible = false; }, "queryForm.dirid"() { this.$refs.treeSelect1.visible = false; }, }, @@ -1480,7 +1592,9 @@ showDetail(row) { // console.log(index, row); this.showinfoBox = true; debugger this.itemdetail = row; }, // 关闭查看 closeDetial() { @@ -1506,7 +1620,7 @@ this.editForm = {}; done(); }) .catch((_) => {}); .catch((_) => { }); }, // 提交修改 @@ -1771,5 +1885,8 @@ position: relative; } } .el-divider--horizontal { margin: 15px 0; } } </style> src/views/datamanage/styleManage.vue
@@ -638,7 +638,7 @@ v-model="insertform.type" autocomplete="off" style="width:85%" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.type')" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.type')" ></el-input> </el-form-item> <el-form-item @@ -650,7 +650,6 @@ :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('dataManage.styleObj.dirid')" style="width:85%" @focus="setOptionWidth" > <el-option :value="insertform.dirid" @@ -692,10 +691,9 @@ > <el-select v-model="insertform.depid" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('dataManage.styleObj.depid')" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('dataManage.styleObj.depid')" style="width:85%" @focus="setOptionWidth" > <el-option :value="insertform.depid" @@ -739,7 +737,7 @@ v-model="insertform.ver" autocomplete="off" style="width:85%" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.ver')" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.ver')" ></el-input> </el-form-item> <el-form-item @@ -750,7 +748,6 @@ v-model="insertform.status" style="width:85%" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('dataManage.styleObj.status')" > <el-option value="0" @@ -795,7 +792,6 @@ disabled autocomplete="off" style="width:100%" /> </div> <div> @@ -1557,8 +1553,13 @@ this.upform.vname = this.upform.viewGuid; this.upform.viewGuid = this.viewFile; } this.upform.status = this.status if (this.status == '启用') { this.status = '1' } else if (this.status == '停用') { this.status = '0' } this.upform.status = this.status const data = await updateStyle(this.upform); if (data.code == 200) { this.dialogFormVisible = false; src/views/datamanage/uploadmanage.vue
@@ -576,6 +576,7 @@ publish_update, publish_insert, } from '../../api/api.js' import { conditions } from '../Archive/Archive'; export default { components: { @@ -785,6 +786,7 @@ var url = this.editLayer.url; this.editLayer.url = url.replace(iisHost, "{host}"); } const data = await publish_update(this.editLayer); if (data.code != 200) { this.$message.error("数据修改失败") @@ -1053,18 +1055,20 @@ if (data.result) { var that = this var val = data.result.filter((res) => { if (res.createTime) { res.createTime = that.format(res.createTime); var val = data.result.filter((rs) => { if (rs.createTime) { rs.createTime = that.format(rs.createTime); } if (res.updateTime) { res.updateTime = that.format(res.updateTime); if (rs.updateTime) { rs.updateTime = that.format(rs.updateTime); } if (res.url) { res.url = res.url.replace("{host}", iisHost); if (rs.url) { rs.url = rs.url.replace("{host}", iisHost); } return res return rs }) this.tableData = val; this.listData.count = data.count; } src/views/userManage/templateManage.vue
@@ -200,7 +200,7 @@ <el-input style="width:85%" v-model=" editForm.name" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.name')" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('dataManage.styleObj.name')" ></el-input> </el-form-item> <el-form-item :label="$t('common.templateType')"> @@ -214,7 +214,6 @@ @change="selFileCodeChange" v-model="editForm.code" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('dataManage.common.templateType')" > <el-option v-for="item in options" @@ -274,7 +273,6 @@ :accept="selectFileType" style="display: none" @change="geteditFile(1)" /> <el-button style="margin-left: 6px;" @@ -296,7 +294,7 @@ <el-input style="width:85%" v-model="editForm.bak" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('common.bak')" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('common.bak')" ></el-input> </el-form-item> </el-form> @@ -538,19 +536,19 @@ .catch((_) => { }); }, codeData(row, column) { let data = row[column.property]; if (data == null) { return data; var code = row.code; let val = this.options.filter(res => { if (res.value == code) { return res } }) if (val.length > 0) { return val[0].label } else { return code } var val; if (row.code.indexOf("countSizes") != -1) { val = "数据量统计"; } else if (row.code.indexOf("countServices") != -1) { val = "服务调用量统计"; } else if (row.code.indexOf("countOperates") != -1) { val = "用户流量统计"; } return val; }, //查看 showDetail(index, row) {