DESKTOP-GBVU60Q\dell 2 gadi atpakaļ
vecāks
revīzija
9485fb4e26

+ 2 - 5
index.html

@@ -10,14 +10,11 @@
 				height: 100vh;
 			}
 		</style>
-		<link rel="stylesheet" type="text/css"
-			href="http://218.59.194.82:14080/api/ThirdParty/Cesium-1.93/Widgets/widgets.css" />
-		<script src="http://218.59.194.82:14080/api/ThirdParty/Cesium-1.93/Cesium.js"></script>
+		<link rel="stylesheet" type="text/css" href="./public/ThirdParty/Cesium-1.93/Widgets/widgets.css" />
+		<script src="./ThirdParty/Cesium-1.93/Cesium.js"></script>
 		<!-- 引入生成热力图 -->
 		<script src="./ThirdParty/CesiumHeatmap.js"></script>
 		<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
-		<script src="src/assets/js/plus.js"></script>
-		<script src="src/assets/js/mui.min.js"></script>
 
 	</head>
 

BIN
public/imgs/point/cq.png


BIN
public/imgs/point/mq.png


BIN
public/imgs/point/qx.png


BIN
public/imgs/point/sq.png


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
public/jt3dSDK/jt3d.es.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 11165 - 0
public/jt3dSDK/jt3d.es1.js


BIN
src/assets/images/ZHNYhome.png


BIN
src/assets/images/login/ZHNYlogo.png


BIN
src/assets/images/siqing/ZHNYlogo.png


+ 48 - 40
src/components/jt-popup/jt-popup.vue

@@ -9,7 +9,7 @@
 	<!-- 弹出框组件 -->
 	<div :class="['popup-main',animationClass]" v-show="isshow" :isEmit="isEmit" id="popup"
 		:style="{height:height,width:width,top:top,bottom:bottom,right:right,minWidth:minWidth}" ref="popup">
-		<div class="borderstyle" :style="{height:height}">
+		<div class="borderstyle" :style="{height:height,backgroundColor:backcolor}">
 			<!-- <div class="angle-border-blue left-top-border"></div> -->
 			<!-- <div class="angle-border-blue right-top-border"></div> -->
 			<div class="angle-border left-bottom-border"></div>
@@ -17,8 +17,8 @@
 			<div :class="longheader?'header long':'header'">
 				<div style="width: 20rem;"></div>
 				<span>{{title}}</span>
-				<!-- <i :class="store.userport == 'PC'?'iconfont icon-youjiantou':'iconfont icon-youjiantou'"
-					@click="closebasicLayer" style="font-size: 16rem;" /> -->
+				<i v-if="isclose" class="iconfont icon-chahao"
+					@click="closebasicLayer" style="font-size: 16rem;" />
 			</div>
 			<div class="middle">
 				<slot></slot>
@@ -86,46 +86,54 @@
 			top:{//距离顶端
 				type:String,
 				default:""
+			},
+			isclose:{//是否显示关闭按钮
+				type:Boolean,
+				default:false
+			},
+			backcolor:{//背景色
+				type:String,
+				default:""
 			}
 		},
 		methods: {
 			closebasicLayer() {
 				console.log("animationClass", this.animationClass)
 
-				let style = document.styleSheets[0];
-				if (this.animationClass === "slide-right") {
-					style.insertRule(
-						"@keyframes move-right {0% {opacity: 1;transform: translateX(-100%)}100% {opacity: 1;transform: translateX(0%)}}",
-						10);
-					style.insertRule(
-						"@keyframes slide-right {0% {opacity: 1;transform: translateX(100%)}100% {opacity: 1;transform: translateX(0%)}}",
-						11);
-					let popup = this.$refs.popup
-					popup.style.right = '-400rem'
-					popup.style.animation = 'move-right 0.4s linear';
-					setTimeout(res => {
-						popup.style.animation = 'slide-right 0.4s linear'
-						this.isshow = false
-					}, 400)
-				} else if (this.animationClass === "fadein-left") {
-					style.insertRule(
-						"@keyframes move-rightL {0% {opacity: 1;transform: translateX(0%)}100% {opacity: 1;transform: translateX(-100%)}}",
-						8);
-					style.insertRule(
-						"@keyframes slide-right {0% {opacity: 1;transform: translateX(100%)}100% {opacity: 1;transform: translateX(0%)}}",
-						9);
-					style.insertRule(
-						"@keyframes slide-left {0% {opacity: 1;transform: translateX(-100%)}100% {opacity: 1;transform: translateX(0%)}}",
-						10);
-					let popup = this.$refs.popup
-					// popup.style.left = '-400rem'
-					popup.style.animation = 'move-rightL 0.4s linear';
-					setTimeout(res => {
-						popup.style.animation = 'slide-left 0.4s linear'
-						this.isshow = false
-					}, 400)
-				}
-
+				// let style = document.styleSheets[0];
+				// if (this.animationClass === "slide-right") {
+				// 	style.insertRule(
+				// 		"@keyframes move-right {0% {opacity: 1;transform: translateX(-100%)}100% {opacity: 1;transform: translateX(0%)}}",
+				// 		10);
+				// 	style.insertRule(
+				// 		"@keyframes slide-right {0% {opacity: 1;transform: translateX(100%)}100% {opacity: 1;transform: translateX(0%)}}",
+				// 		11);
+				// 	let popup = this.$refs.popup
+				// 	popup.style.right = '-400rem'
+				// 	popup.style.animation = 'move-right 0.4s linear';
+				// 	setTimeout(res => {
+				// 		popup.style.animation = 'slide-right 0.4s linear'
+				// 		this.isshow = false
+				// 	}, 400)
+				// } else if (this.animationClass === "fadein-left") {
+				// 	style.insertRule(
+				// 		"@keyframes move-rightL {0% {opacity: 1;transform: translateX(0%)}100% {opacity: 1;transform: translateX(-100%)}}",
+				// 		8);
+				// 	style.insertRule(
+				// 		"@keyframes slide-right {0% {opacity: 1;transform: translateX(100%)}100% {opacity: 1;transform: translateX(0%)}}",
+				// 		9);
+				// 	style.insertRule(
+				// 		"@keyframes slide-left {0% {opacity: 1;transform: translateX(-100%)}100% {opacity: 1;transform: translateX(0%)}}",
+				// 		10);
+				// 	let popup = this.$refs.popup
+				// 	// popup.style.left = '-400rem'
+				// 	popup.style.animation = 'move-rightL 0.4s linear';
+				// 	setTimeout(res => {
+				// 		popup.style.animation = 'slide-left 0.4s linear'
+				// 		this.isshow = false
+				// 	}, 400)
+				// }
+				this.isshow = false
 				if (this.isEmit) {
 					this.$emit('closeJTPopup');
 				}
@@ -168,10 +176,10 @@
 		//头部背景图
 		.header {
 			height: 51rem;
-			width: calc(100% + 20rem);
+			width: calc(100%);
 			background: url('@/assets/images/PopupHeader.png') no-repeat;
 			background-size: 100% 100%;
-			margin: -10rem;
+			// margin: -10rem;
 			margin-bottom: 0rem;
 			line-height: 51rem;
 			display: flex;
@@ -244,7 +252,7 @@
 			height: calc(100vh - 200rem);
 			// padding: 10rem;
 			border: 1rem solid #008aff70 !important;
-			background-color: rgba(5, 45, 115, 0.5) !important;
+			background-color: rgba(5, 45, 115, 0.4) !important;
 			box-shadow: 0 4rem 15rem 1rem #02213bb3;
 
 

+ 8 - 1
src/router/index.js

@@ -51,7 +51,14 @@ export const constantRoutes = [
 				meta: {
 					keepAlive: false // 不需要缓存
 				}
-			}, {
+			},{
+				path: 'yunwei',
+				name: 'yunwei',
+				component: () => import('../views/yunwei/yunwei.vue'),
+				meta: {
+					keepAlive: false // 需要缓存
+				}
+			},{
 				
 				path: 'siqing', //四情
 				name: 'siqing',

+ 1 - 0
src/store/index.ts

@@ -15,6 +15,7 @@ export const Store = defineStore({
 	state: () => {
 		return {
 			queryMapTables: [],//地图查询表
+			queryTables: [],//地图查询表
 			roleId: '',//用户权限ID
 			realName: '',//登录账号的用户名
 			layerID: '',//控制唯一底图加载id

+ 1 - 1
src/views/Login/Login.vue

@@ -264,7 +264,7 @@
 		width: calc(100% - 0rem);
 		height: 70rem;
 		line-height: 70rem;
-		background: url(@/assets/images/login/login-title1.png) 0rem no-repeat, linear-gradient(100deg, rgba(16, 96, 210, .2) 30%, rgba(16, 106, 250, .1) 70%);
+		background: url(@/assets/images/login/ZHNYlogo.png) 0rem no-repeat, linear-gradient(100deg, rgba(16, 96, 210, .2) 30%, rgba(16, 106, 250, .1) 70%);
 		background-size: 510rem 70rem, 100% 70rem;
 		background-repeat: no-repeat;
 		user-select: none;

+ 23 - 8
src/views/Main/MainView.vue

@@ -6,7 +6,7 @@
 	import modifyModule from './components/modifyPassword.vue';
 	import ZhHeader from "./components/ZhHeader.vue";
 	import map3d from './components/map.vue';
-
+	import queryResult from './components/queryResult.vue';
 	// import basicLayer from './components/basicLayer.vue';
 	const layer = defineAsyncComponent(() => import('./components/layer.vue'));
 	const basicLayer = defineAsyncComponent(() => import('./components/basicLayer.vue'));
@@ -38,14 +38,12 @@
 			<!-- 图层列表 -->
 			<jt-popup width="300rem" height="650rem" title="图层列表" bottom="140rem" right="1240rem" v-show="layershow"
 				class="layerStyle">
-				<layer></layer>
+				<layer ref="reflayer"></layer>
 			</jt-popup>
 
-
-
-			<!-- <div  v-show="layershow" class="layerStyle">
-				<layer></layer>
-			</div> -->
+			<jt-popup :showfooter='isshowfooter' v-drag :isclose="true" right="550rem" backcolor="rgba(5, 45, 115, 0.8) !important" height="400rem" top="200rem" width="800rem" title="信息展示" ref="refQueryResultPopup" :isEmit="true" @closeJTPopup="closeQueryResult">
+				<queryResult ref="refQueryResult" />
+			</jt-popup>
 
 			<!-- 控制路由页面是否缓存 -->
 			<router-view v-slot="{ Component }">
@@ -77,7 +75,7 @@
 			return {
 				mapLoaded: false, //保证地图加载完成,在加载子路由
 				layershow: false, //图层是否显示
-
+				isshowfooter:false,
 			}
 		},
 		computed: {
@@ -110,6 +108,23 @@
 			layerIsShow() {
 				this.layershow = !this.layershow
 			},
+			
+			/**
+			 * 关闭查询结果
+			 */
+			closeQueryResult() {
+				//清除高亮显示
+				let list = jt3d._dataSources.getByName("单击高亮显示")
+				list.forEach(res => {
+					jt3d._dataSources.remove(res)
+				})
+			
+				//清除定位样式
+				if (jt3d.LocateUtil._locationEntity) {
+					window["viewer"].entities.remove(jt3d.LocateUtil._locationEntity);
+				}
+				// this.$refs.refMap3d.fullMap(jt3d)
+			},
 
 
 		},

+ 8 - 5
src/views/Main/components/ZhHeader.vue

@@ -1,6 +1,6 @@
 <script setup>
 </script>
-<template>
+<template >
 	<!-- 标题logo-->
 
 	<div class="header">
@@ -16,8 +16,11 @@
 		<router-link to="/home/siqing">
 			<div :class="[sqTitle?'SqTitle':'SqXzTitle']" @click="slideTitle('SqTitle')"></div>
 		</router-link>
+		
+		<router-link to="/home/yunwei">
+			<div :class="[ywTitle?'YwTitle':'YwXzTitle']" @click="slideTitle('YwTitle')"></div>
+		</router-link>
 
-		<div :class="[ywTitle?'YwTitle':'YwXzTitle']" @click="slideTitle('YwTitle')"></div>
 	</div>
 	<div class="dataTime">
 		<DataTime></DataTime>
@@ -43,7 +46,8 @@
 				yztTitle: false,
 				sqTitle: true,
 				ggTitle: true,
-				ywTitle: true
+				ywTitle: true,
+				isyunwei:true
 
 			}
 		},
@@ -79,7 +83,6 @@
 					this.sqTitle = true;
 					this.ggTitle = true;
 					localStorage.setItem("currenttab", "YwTitle");
-
 				}
 			}
 
@@ -100,7 +103,7 @@
 	.header {
 		width: 100%;
 		height: 90rem;
-		background: url('@/assets/images/logo2.png') no-repeat;
+		background: url('@/assets/images/ZHNYhome.png') no-repeat;
 		background-repeat: no-repeat;
 		background-size: contain;
 		position: absolute;

+ 1 - 1
src/views/Main/components/basicLayer.vue

@@ -175,7 +175,7 @@
 					url: this.markData.markUrl
 				}, function(serviceId) {
 					store.markID = serviceId;
-
+					console.log('标注层添加完成')
 					var imageryLayers = window["viewer"].imageryLayers;
 					imageryLayers.raiseToTop(window[store.markID]);
 				})

+ 180 - 12
src/views/Main/components/layer.vue

@@ -3,7 +3,8 @@
 	 * element-plus组件
 	 */
 	import {
-		ElMessage
+		ElMessage,
+		ElLoading
 	} from 'element-plus';
 
 	import {
@@ -65,6 +66,7 @@
 <script>
 	let store = undefined
 	let jt3d = undefined;
+	let loading = undefined;
 	export default {
 
 		/* 数据 */
@@ -293,18 +295,21 @@
 				}
 
 				//在显示的图层中,如果图层配置可以查询,则进行查询
-				if (layertype === '矢量面' && data.querytable) {
-					if (checked) {
-						if (store.queryMapTables.indexOf(data.querytable) === -1) {
-							store.queryMapTables.push(data.querytable);
+				setTimeout(res=>{
+					if (layertype == '矢量数据' && data.querytable) {
+						if (checked) {
+							if (store.queryTables.indexOf(data.querytable) === -1) {
+								store.queryTables.push(data.querytable);
+							}
+						} else {
+							//过滤
+							store.queryTables = store.queryTables.filter(tableName => {
+								return tableName !== data.querytable
+							})
 						}
-					} else {
-						//过滤
-						store.queryMapTables = store.queryMapTables.filter(tableName => {
-							return tableName !== data.querytable
-						})
 					}
-				}
+				},100)
+				
 
 				await new Promise((resolve, reject) => {
 					switch (data.loadtype) {
@@ -548,7 +553,6 @@
 								console.log('加载图层',jt3d)
 								//加载服务
 								jt3d.layer.addUrlTemplateImagery(_options, function(serviceId) {
-
 									//重置图层顺序
 									_self.setLayerNumber(serviceId)
 								});
@@ -805,6 +809,7 @@
 							break;
 					}
 				})
+				
 			},
 
 			/**
@@ -838,6 +843,169 @@
 					}
 				})
 			},
+			
+			/* *
+			 **  注册大球单击事件
+			 * 
+			 * */
+			initQuery(options) {
+				let _self = this;
+				let treeNodes = [];
+			
+				//清除高亮显示
+				let list = jt3d._dataSources.getByName("单击高亮显示")
+				list.forEach(res => {
+					jt3d._dataSources.remove(res)
+				})
+			
+				//清除定位样式
+				if (jt3d.LocateUtil._locationEntity) {
+					window["viewer"].entities.remove(jt3d.LocateUtil._locationEntity);
+				}
+			
+				const getData = () => {
+			
+					if (store.queryTables.length > 0) {
+						//查询等待框
+						loading = ElLoading.service({
+							lock: true,
+							text: 'Loading',
+							background: 'rgba(0, 0, 0, 0.7)',
+						});
+			
+						let data = [];
+						store.queryTables.forEach((itemTable, index) => {
+							let result = getAxios(itemTable, options);
+							console.log('result',result)
+							data.push(result);
+						})
+			
+						Promise.all(data).then(itemList => {
+			
+							console.log("itemList", itemList) //itemList返回的数据是按顺序的
+							//执行自己接下来的操作
+							//doSomething
+			
+							itemList.forEach((item, index) => {
+								let field = item.table;
+								let tableName = item.table[0].tableName;
+								let tableDescription = item.table[0].tableDescription;
+			
+								if (item.data.features.length > 0) {
+									//添加父节点
+									let parentNode = {
+										id: tableName,
+										parentid: "CIM",
+										label: tableDescription + "(" + item.data.features.length + ")",
+									};
+									treeNodes.push(parentNode);
+									
+									item.data.features.forEach((itemData, index) => {
+			
+										//**************高亮显示****************
+				
+										let childNode = {
+											id: itemData.properties["id"],
+											parentid: tableName,
+											field: field,
+											data: itemData,
+										};
+										console.log('label名称',itemData)
+			
+										switch (tableName) {
+											//==============规划管理数据-重要控制线=========================
+											case "dltb": //地类图斑
+												childNode.label = itemData.properties["dlmc"] + "(" + itemData.properties["zldwmc"] + ")"
+												break;
+											case "xzbyq": //现状变压器
+												childNode.label = itemData.properties["qsdw"] + "(" + itemData.properties["bh"] + ")"
+												break;
+											case "bnrgdbh": //不纳入耕地保护目标
+												childNode.label = itemData.properties["zldwmc"] + "(" + itemData.properties["dlmc"] + ")"
+												break;
+											case "gdbhrw": //耕地保护任务
+												childNode.label = itemData.properties["zldwmc"] + "(" + itemData.properties["dlmc"] + ")"
+												break;
+			
+												//==============规划管理数据-历史规划==============
+											case "tdzgh": //土地利用总体规划
+												childNode.label = itemData.properties["ghdlmc"]
+												break;
+											case "jsyd": //建设用地管制区
+												childNode.label = itemData.properties["id"]
+												break;
+			
+												//==============现状类数据-森林资源-森林资源调查==============
+											case "slyzt": //2019年森林资源管理一张图
+												childNode.label = itemData.properties["id"]
+												break;
+			
+												//==============现状类数据-国土调查==============
+											case "ed2009": //二调
+												childNode.label = itemData.properties["zldwmc"] + "(" + itemData.properties["dlmc"] + ")"
+												break;
+											case "ed2020": //二调2020
+												childNode.label = itemData.properties["zldwmc"] + "(" + itemData.properties["dlmc"] + ")"
+												break;
+											case "ed2021": //二调2021
+												childNode.label = itemData.properties["zldwmc"] + "(" + itemData.properties["dlmc"] + ")"
+												break;
+											case "sddltb": //三调   
+												childNode.label = itemData.properties["zldwmc"] + "(" + itemData.properties["dlmc"] + ")"
+												break;
+										}
+			
+										treeNodes.push(childNode);
+									});
+								}
+							});
+			
+							//处理查询结果树
+							if (treeNodes.length > 0) {
+								_self.$parent.$parent.$parent.$refs.refQueryResult.expandedKeys = []
+								_self.$parent.$parent.$parent.$refs.refQueryResultPopup.isshow = true;
+								_self.$parent.$parent.$parent.$refs.refQueryResult.treeData = deepTree(treeNodes);
+								//默认选中第一个节点并赋予选中样式
+								_self.$nextTick(function() {
+									let currentNode = _self.$parent.$parent.$parent.$refs.refQueryResult.treeData[0].children[0];
+									console.log('查询结果',currentNode)
+									let currentKey = currentNode.id;
+									_self.$parent.$parent.$parent.$refs.refQueryResult.currentKey = currentKey;
+									_self.$parent.$parent.$parent.$refs.refQueryResult.$refs.tree.setCurrentKey(currentKey);
+									_self.$parent.$parent.$parent.$refs.refQueryResult.handleNodeClick(currentNode);
+								});
+			
+								//expandedKeys默认展开treedata第一层,加载第一层数据
+								_self.$parent.$parent.$parent.$refs.refQueryResult.expandedKeys.push(_self.$parent.$parent.$parent.$refs.refQueryResult.treeData[0].id)
+							}
+			
+							//清除绘制
+							jt3d.CommonTools.clear();
+			
+							//关闭等待框
+							loading.close()
+			
+						})
+					}
+				}
+			
+				const getAxios = (itemTable, options) => {
+					return new Promise(function(resolve, reject) {
+						_self.$http.get('/getSpatialQuery', {
+							tableName: itemTable,
+							spatialType: options.spatialType,
+							coordinate: options.coordinate,
+							buffer: options.buffer
+						}).then(res => {
+							resolve(res)
+						});
+					}).catch(err => {
+			
+					})
+				}
+			
+				getData();
+			}
 		},
 
 		mounted() {

+ 31 - 16
src/views/Main/components/map.vue

@@ -132,7 +132,7 @@
 
 
 				//单击事件
-				// this.clickEntity(jt3d);
+				this.clickEntity(jt3d);
 
 				// 添加镇街边界线——精灵线
 				this.addBoundaryLine(jt3d);
@@ -149,12 +149,13 @@
 				// 	duration: 3000,
 				// 	imgUrl: "/jt3dSDK/imgs/polylinematerial/spriteline1.png"
 				// });
-				jt3d.WallObject.drawWallByGeoJson('datafiles/fanweixian2.json',{
+				console.log('围墙实例', jt3d.WallObject)
+				jt3d.WallObject.drawWallByGeoJson('datafiles/fanweixian2.json', {
 					maximumHeights: 100,
 					minimumHeights: 0,
-					color:[0,238,255]
+					color: [0, 238, 255]
 				}).then(res => {
-				
+
 				});
 			},
 
@@ -169,8 +170,8 @@
 				// that.entity = jt3d._viewer.entities.add(that.entity1, {
 				// 	range: 1000,
 				// });
-				jt3d.LocateUtil.flyToEntity(that.entity1,{
-					range:400
+				jt3d.LocateUtil.flyToEntity(that.entity1, {
+					range: 400
 				}).then(res1 => {
 					console.log('定位成功?' + JSON.stringify(res1))
 				})
@@ -192,22 +193,35 @@
 				);
 				//注册大球单机事件
 				jt3d.handlerLeftClick.setInputAction(function(e) {
+					var cartesian = undefined;
+					var cartographic = undefined
 					var pick = jt3d._viewer.scene.pick(e.position); //拾取当前的entity对象
-					var cartesian = jt3d._viewer.scene.pickPosition(e.position); //获取当前点坐标
-					if (Cesium.defined(cartesian)) {
+					let radius = ''
+					if (pick) {
+						cartographic = Cesium.Cartographic.fromCartesian(pick.primitive._position);
+						radius = 0.001
+					} else {
+						cartesian = jt3d._viewer.scene.pickPosition(e.position); //获取当前点坐标
 						//将笛卡尔坐标转换为地理坐标
-						let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
+						cartographic = Cesium.Cartographic.fromCartesian(cartesian);
+					}
+					if (Cesium.defined(cartographic)) {
+						console.log('cartographic', cartographic)
 						//将弧度转为度的十进制度表示
 						let lng = Cesium.Math.toDegrees(cartographic.longitude);
 						let lat = Cesium.Math.toDegrees(cartographic.latitude);
 						let alt = cartographic.height; //高度
-
-						_self.$parent.$refs._refQueryGraphics.initQuery({
+						console.log('cartographic', lng, lat)
+						_self.$parent.layershow = false
+						_self.$parent.$refs.reflayer.initQuery({
 							spatialType: '点',
 							coordinate: lng + " " + lat,
-							buffer: ''
+							buffer: radius
 						});
 					}
+					// console.log('position对象',e.position)
+					console.log('entity对象', pick)
+
 				}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
 			},
 
@@ -215,11 +229,11 @@
 			 * 创建大球
 			 */
 			initMap3d(el) {
-				
+
 				jt3d = new this.jt3dSDK.jtMap3d({
 					container: el,
 				});
-				
+
 				jt3d.statusBar.show = true;
 
 				jt3d.layer = new this.jt3dSDK.layer(jt3d._viewer);
@@ -283,12 +297,13 @@
 
 				window["viewer"] = jt3d._viewer;
 				// window["viewer"].scene.terrainExaggeration = 100;
-				
+
 				//显示帧率
 				window["viewer"].scene.debugShowFramesPerSecond = true;
 			},
 
 
+
 			/**
 			 * 设置默认视图-初始化中国区域范围视角
 			 */
@@ -353,7 +368,7 @@
 		},
 
 		mounted() {
-			
+
 			// }, 1000)
 
 			this.init("cesiumContainer");

+ 361 - 0
src/views/Main/components/queryResult.vue

@@ -0,0 +1,361 @@
+<script setup>
+	import {
+		formattingTime
+	} from '@/assets/js/localtime.js';
+
+	import {
+		inject
+	} from "vue";
+	const getMapInstance = inject("getMapInstance");
+	jt3d = getMapInstance();
+</script>
+<template>
+	<div class="jt-queryResult">
+		<div class="_left">
+			<el-tree class="tree-line queryResultTree" ref="tree" node-key="id" :data="treeData"
+				:default-expanded-keys="expandedKeys" :current-node-key="currentKey" @node-click="handleNodeClick"
+				highlight-current />
+		</div>
+		<div class="_right">
+			<div id="detailDiv"></div>
+		</div>
+	</div>
+</template>
+
+<script>
+	let jt3d = undefined;
+
+	export default {
+		props: {
+			tree: {
+				type: Object,
+				default () {
+					return []
+				}
+			}
+		},
+		data() {
+			return {
+				treeData: this.tree,
+				currentKey: "",
+				expandedKeys: [], //对应要展开的节点id
+			}
+		},
+		methods: {
+			/**
+			 * 树单击事件
+			 */
+			handleNodeClick(treeNode) {
+
+				let _self = this;
+				console.log('查询',treeNode)
+				return new Promise((resolve, reject) => {
+
+					if (treeNode.parentid != 'CIM') {
+						console.log('查询11',treeNode.data.geometry)
+						//清除高亮显示
+						let list = jt3d._dataSources.getByName("单击高亮显示")
+						list.forEach(res => {
+							jt3d._dataSources.remove(res)
+						})
+						if(treeNode.data.geometry.type == 'Point'){
+							let strHtml = "";
+							strHtml += "<table style='z-index:100;width:98%';border:2px solid #fff;>";
+							strHtml += "<thead>";
+							strHtml += "<tr>";
+							strHtml += "<th>属性名</th>";
+							strHtml += "<th>属性值</th>";
+							strHtml += "</tr> ";
+							strHtml += " </thead>";
+							strHtml += "<tbody>";
+											
+							var field = treeNode.field;
+							var properties = treeNode.data.properties
+							field.forEach(itemField => {
+								if (itemField.isDisplay === 1) {
+									var fieldDesc = itemField.fieldDescription || itemField
+										.fieldName;
+									var fieldVals = properties[itemField.fieldName];
+											
+									//日期格式
+									if (itemField.fieldType === 1) {
+										let time = new Date(fieldVals).getTime();
+										fieldVals = formattingTime(time);
+									}
+											
+									if (fieldVals != null && fieldVals != "" && fieldVals !=
+										undefined) {
+										strHtml += "<tr>";
+										strHtml += "<td>" + fieldDesc + "</td>";
+										strHtml += "<td>" + fieldVals + "</td>";
+										strHtml += "</tr>";
+									}
+								}
+							});
+							strHtml += "</tbody>";
+							strHtml += "</table>";
+							let divb = document.getElementById('detailDiv')
+							divb.innerHTML = strHtml; //设置显示的数据,可以是标签.
+						}else if(treeNode.data.geometry.type == "MultiPolygon"){
+							this.polygon(treeNode)
+						}
+					}
+
+					resolve(1)
+				})
+			},
+			
+			//面查询
+			polygon(treeNode){
+				//高亮显示并定位显示详细信息
+				jt3d.PolygonObject.generatePolygonByPoints(treeNode.data.geometry.coordinates[0][0], {
+					color: [255, 0, 255, 0],
+					outline: true,
+					outlineWidth: 5,
+					outlineColor: [0, 255, 180, 1]
+				}).then((locationEntity) => {
+					// 初始化定位参数
+					let options = {};
+					options.duration = Cesium.defaultValue(options.duration, 2);
+					options.heading = Cesium.defaultValue(options.heading, 0);
+					options.pitch = Cesium.defaultValue(options.pitch, -60);
+					options.range = Cesium.defaultValue(options.range, 800.0);
+					console.log('查询12',treeNode)
+					// let flyToEntity = jt3d.LocateUtil.flyToEntity(locationEntity, options);
+					// flyToEntity.then(function(flag) {
+					//详细信息
+					let strHtml = "";
+					strHtml += "<table style='z-index:100;width:98%';border:2px solid #fff;>";
+					strHtml += "<thead>";
+					strHtml += "<tr>";
+					strHtml += "<th>属性名</th>";
+					strHtml += "<th>属性值</th>";
+					strHtml += "</tr> ";
+					strHtml += " </thead>";
+					strHtml += "<tbody>";
+				
+					var field = treeNode.field;
+					var properties = treeNode.data.properties
+					field.forEach(itemField => {
+						if (itemField.isDisplay === 1) {
+							var fieldDesc = itemField.fieldDescription || itemField
+								.fieldName;
+							var fieldVals = properties[itemField.fieldName];
+				
+							//日期格式
+							if (itemField.fieldType === 1) {
+								let time = new Date(fieldVals).getTime();
+								fieldVals = formattingTime(time);
+							}
+				
+							if (fieldVals != null && fieldVals != "" && fieldVals !=
+								undefined) {
+								strHtml += "<tr>";
+								strHtml += "<td>" + fieldDesc + "</td>";
+								strHtml += "<td>" + fieldVals + "</td>";
+								strHtml += "</tr>";
+							}
+						}
+					});
+					strHtml += "</tbody>";
+					strHtml += "</table>";
+				
+					let divb = document.getElementById('detailDiv')
+					divb.innerHTML = strHtml; //设置显示的数据,可以是标签.
+				
+				});
+			}
+
+		},
+		mounted() {}
+	}
+</script>
+
+<style lang="scss">
+	.jt-queryResult {
+		position: relative;
+		width: 100%;
+		height: 100%;
+		overflow: hidden;
+		z-index: 100000;
+
+		// overflow-y: hidden;
+		._right {
+			// overflow-y: hidden;
+		}
+
+		//左侧树
+		&>div:nth-child(1) {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 220rem;
+			height: 380rem;
+			float: left;
+			overflow: auto !important;
+			border-right: 5rem solid #ddd;
+
+			.el-tree {
+				background: rgb(28 59 112 / 0%);
+				height: calc(100% - 2rem);
+				color: #fff;
+				--el-tree-node-hover-bg-color: #2a67c3;
+				--el-font-size-base: 14rem;
+
+				.overflowtext {
+					width: auto !important;
+					padding: 0;
+				}
+			}
+
+
+
+			.tree-line {
+				.el-tree-node {
+					position: relative;
+				}
+
+				.el-tree-node__children {
+					padding-left: 16rem !important; // 缩进量
+
+					.el-tree-node__content {
+						padding-left: 18rem !important;
+					}
+				}
+
+				//高亮显示选中样式
+				.el-tree-node.is-current>.el-tree-node__content {
+					background: #2a67c3;
+				}
+
+				// 竖线
+				.el-tree-node::before {
+					content: "";
+					height: 100%;
+					width: 1rem;
+					position: absolute;
+					left: -3rem;
+					top: -26rem;
+					border-width: 1rem;
+					border-left: 1rem dashed rgba(255, 255, 255, .8);
+				}
+
+				// 当前层最后一个节点的竖线高度固定
+				.el-tree-node:last-child::before {
+					height: 38rem; // 可以自己调节到合适数值
+				}
+
+				// 横线
+				.el-tree-node::after {
+					content: "";
+					width: 24rem;
+					height: 20rem;
+					position: absolute;
+					left: -3rem;
+					top: 12rem;
+					border-width: 1rem;
+					border-top: 1rem dashed rgba(255, 255, 255, .8);
+				}
+
+				// 去掉最顶层的虚线,放最下面样式才不会被上面的覆盖了
+				&>.el-tree-node::after {
+					border-top: none;
+				}
+
+				&>.el-tree-node::before {
+					border-left: none;
+				}
+
+				// 展开关闭的icon
+				.el-tree-node__expand-icon {
+					font-size: 16rem;
+
+					// 叶子节点(无子节点)
+					&.is-leaf {
+						color: transparent;
+						display: none; // 也可以去掉
+					}
+				}
+			}
+
+		}
+
+		//右侧基本信息
+		&>div:nth-child(2) {
+			position: absolute;
+			left: 220rem;
+			top: 0;
+			width: calc(100% - 240rem);
+			height: calc(100% - 0rem);
+			float: left;
+			margin-left: 10rem;
+			font-size: 14rem;
+			padding-top: 5rem;
+			overflow: auto;
+
+			table {
+				border-collapse: collapse;
+				margin: 0 auto;
+				text-align: center;
+				width: 100%;
+				height: 100%;
+				border-right: 2px solid rgb(221, 221, 221);
+			}
+
+			table td,
+			table th {
+				// border: 1rem solid #ddd;
+				color: #fff;
+				height: 30rem;
+			}
+
+			table thead th {
+				background-color: rgb(28 59 112 / 100%);
+				border: 2rem solid #ddd;
+			}
+
+			table tr:nth-child(odd) {
+				background: rgb(40 89 172 / 60%);
+				border-left: 2rem solid #ddd;
+				border-right: 2rem solid #ddd;
+				border-bottom: 1rem solid #ddd;
+			}
+
+			table tr:nth-child(even) {
+				background: rgb(28 59 112 / 60%);
+				border-left: 2rem solid #ddd;
+				border-right: 2rem solid #ddd;
+				border-bottom: 1rem solid #ddd;
+			}
+
+			// thead 表头固定,tbody 滚动
+			table>thead>tr {
+				display: table;
+				width: 100%;
+				table-layout: fixed;
+			}
+
+			table>tbody {
+				display: block;
+				height: 340rem;
+				/* 隐藏水平溢出内容 */
+				overflow-x: hidden;
+				/* 当垂直内容超出显示高度时以滚动条形式展示 */
+				overflow-y: auto;
+			}
+
+			table>tbody>tr {
+				/* 将tr设置为table元素,以此达到内容沾满table的效果 */
+				display: table;
+				/* 将tr宽度设置为100%,以此达到内容沾满table的效果 */
+				width: 100%;
+				/* 设置table-layout为fixed以达到首行和内容行对其的效果 */
+				table-layout: fixed;
+			}
+
+			table>tbody>tr>td {
+				border-right: 2rem solid #ddd;
+			}
+		}
+	}
+</style>

+ 11 - 7
src/views/Main/components/weather.vue

@@ -29,17 +29,21 @@
 		},
 		methods: {
 			getWeather() { // 第三方天气api接口
-				axios.get('https://restapi.amap.com/v3/weather/weatherInfo', {
+				axios.get('https://v0.yiketianqi.com/api', {
 					params: {
-						key: "3e7e20b74481bb09b90dade55acc35c3",
-						city: '370100',
-						output: 'JSON',
+						unescape: "1",
+						version: 'v61',
+						appid: '66192398',
+						appsecret:'cqIyJ5ZP'
 						// version: 'v91'
 					}
 				}).then(res => {
-
-					if (res.data.lives) {
-						this.weatcherData = res.data.lives[0];
+					
+                       
+					if (res.data) {
+						this.weatcherData.city = res.data.city;
+						this.weatcherData.weather=res.data.wea_day;
+						this.weatcherData.temperature_float=res.data.tem1
 					}
 				}).catch(err => {
 					console.log(err)

+ 1 - 1
src/views/Map3d/Map3DMain.vue

@@ -72,7 +72,7 @@
 		},
 		created() {
 			store.markID = ''
-			store.queryMapTables = []
+			store.queryTables = []
 			jt3d = store.jt3d
 		},
 		mounted() {

+ 3 - 2
src/views/Map3d/components/sbyxjc.vue

@@ -111,7 +111,6 @@
 			flyto(num) {
 				let that = this
 				let PointObject = new this.jt3dSDK.PointObject(window.viewer);
-				var LocateUtil = new this.jt3dSDK.LocateUtil(window["viewer"]);
 				let Drawtools = new this.jt3dSDK.DrawTools(window.viewer)
 				//_createCircle
 				PointObject.addBillboard([117.47510856,36.33764451, 0], {
@@ -121,7 +120,9 @@
 					}
 				}).then(res1 => {
 					var LocateUtil = new this.jt3dSDK.LocateUtil(window["viewer"]);
-					LocateUtil.flyToEntity(res1,{range:500}).then(res2 => {
+					console.log(LocateUtil)
+					LocateUtil.flyToEntity(res1,{range:500,pitch:-45}).then(res2 => {
+						console.log(res2)
 						let html = "";
 						html +=
 							"<div style='text-align: left;backfround-color:rgba(61, 198, 205, 0.6);width:300rem;height:150rem;font-family: TTTGB-Medium, sans-serif !important;'>";

+ 2 - 2
src/views/Table/components/special-effects.vue

@@ -37,7 +37,7 @@
 					</el-col>
 				</el-row>
 			</el-collapse-item>
-			<el-collapse-item name="粒子效果">
+			<!-- <el-collapse-item name="粒子效果">
 				<template #title>
 					<span class='iconfont icon-tianqizitiku43' />粒子效果
 				</template>
@@ -54,7 +54,7 @@
 					<el-button color="rgb(20 136 255)" @click="HeatMap('add')">添加热力图</el-button>
 					<el-button color="rgb(255 100 100)" @click="HeatMap('remove')"><span style="color: #fff;">清除热力图</span></el-button>
 				</div>
-			</el-collapse-item>
+			</el-collapse-item> -->
 		</el-collapse>
 	</div>
 </template>

+ 1 - 1
src/views/test/components/cqjcyj.vue

@@ -64,7 +64,7 @@
 					}
 				}).then(res1 => {
 					var LocateUtil = new this.jt3dSDK.LocateUtil(window["viewer"]);
-					LocateUtil.flyToEntity(res1,{range:500}).then(res2 => {
+					LocateUtil.flyToEntity(res1,{range:500,pitch:-45}).then(res2 => {
 						let html = "";
 						html +=
 							"<div style='text-align: left;backfround-color:rgba(61, 198, 205, 0.6);width:300rem;height:150rem;font-family: TTTGB-Medium, sans-serif !important;'>";

+ 8 - 0
src/views/yunwei/yunwei.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels