合并
This commit is contained in:
		| @ -8,17 +8,13 @@ VITE_APP_ENV = 'development' | ||||
|  | ||||
| # VITE_APP_BASE_API = 'http://192.168.110.209:8899' | ||||
| # 李陈杰 209 | ||||
| <<<<<<< HEAD | ||||
| VITE_APP_BASE_API = 'http://192.168.110.149:8899' | ||||
| ======= | ||||
| # VITE_APP_BASE_API = 'http://192.168.110.209:8899' | ||||
| >>>>>>> 2cd70eb41584033214fe707b9f16b5037fc2beba | ||||
| VITE_APP_BASE_API = 'http://192.168.110.180:8899' | ||||
| # 曾涛 | ||||
| # VITE_APP_BASE_API = 'http://192.168.110.149:8899' | ||||
| # 罗成 | ||||
| # VITE_APP_BASE_API = 'http://192.168.110.188:8899' | ||||
| # 朱银 | ||||
| VITE_APP_BASE_API = 'http://192.168.110.149:8899' | ||||
| # VITE_APP_BASE_API = 'http://192.168.110.149:8899' | ||||
| #曾涛 | ||||
| # VITE_APP_BASE_API = 'http://192.168.110.171:8899' | ||||
|  | ||||
|  | ||||
| @ -1,628 +0,0 @@ | ||||
| <template> | ||||
| 	<div class="earth gis2D" id="earth"> | ||||
| 		<header-top :isShowTab="false" :isShowLog="false"></header-top> | ||||
| 		<!-- <el-button class="btn" type="primary" @click="gengxin">更新</el-button> --> | ||||
| 		<div class="left_title_button"> | ||||
| 			<div class="title">{{ projectName }}</div> | ||||
| 			<div class="btn" @click="updateZhiJiaZhuanDian('zhuangdian')"> | ||||
| 				<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" /> | ||||
| 				<span>桩点-更新高程</span> | ||||
| 			</div> | ||||
| 			<div class="btn" @click="updateHighLevel('nibianqi')"> | ||||
| 				<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" /> | ||||
| 				<span>逆变器-更新高程</span> | ||||
| 			</div> | ||||
| 			<div class="btn" @click="updateHighLevel('xiangbian')"> | ||||
| 				<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" /> | ||||
| 				<span>箱变-更新高程</span> | ||||
| 			</div> | ||||
| 			<div class="btn" @click="updateZhiJiaZhuanDian('zhijia')"> | ||||
| 				<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" /> | ||||
| 				<span>支架-更新高程</span> | ||||
| 			</div> | ||||
| 			<div class="btn" @click="centerHeight()"> | ||||
| 				<SvgIcon :name="bottomSvg" :isStyle="true" :className="'width:250px;height:50px;'" /> | ||||
| 				<span>光伏板-更新高程</span> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 		<progressLoading :progress="progress" :tips="progressTips"></progressLoading> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script lang="ts"> | ||||
| // import { toRefs, reactive, defineComponent, onMounted, getCurrentInstance, ref, nextTick } from 'vue'; | ||||
| // import { ElLoading, ElMessage } from 'element-plus'; | ||||
| // import headerTop from '../components/header/index.vue'; | ||||
| // import { NextLoading } from '/@/utils/loading'; | ||||
| // import { updateProjectId } from '/@/utils/tools'; | ||||
| // import { useUserInfo } from '/@/stores/userInfo'; | ||||
| // import progressLoading from '/@/components/progressLoading/index.vue'; | ||||
| // // 资源接口 | ||||
| // import { listQianqiMoxing } from '/@/api/system/qianqiManage/qianqiMoxing'; | ||||
| // import { manageAll, updateAll, gisList, gisListZhijia, ZhuangdianEdit_detail, ZhijiaEdit_detail } from '/@/api/gis2D/all'; | ||||
| // import { getSysProject } from '/@/api/system/sysProject'; | ||||
| // import bottomSvg from '/@/assets/svg/bottom.svg'; | ||||
| // // json字符判断 | ||||
| // import { typeJSON } from '/@/utils/toolsValidate'; | ||||
| // import { renderGuangfubanGlb } from '../utils/treeRender.js'; | ||||
| // import zjImage from '/@/assets/images/tree_icon/zhijia.png'; | ||||
| // import { Session } from '/@/utils/storage'; | ||||
| // import axios from 'axios'; | ||||
| // // import sign from '/@/utils/sign.js'; | ||||
| import zdImage from '/@/assets/images/tree_icon/zhuangdian.png'; | ||||
| let nibianqi = []; | ||||
| let xiangbian = []; | ||||
| let guanfuban = []; | ||||
| let YJ = window.YJ; | ||||
| // eslint-disable-next-line no-undef | ||||
| export default defineComponent({ | ||||
| 	name: 'index', | ||||
| 	components: { | ||||
| 		headerTop, | ||||
| 		progressLoading, | ||||
| 	}, | ||||
| 	setup() { | ||||
| 		const stores = useUserInfo(); | ||||
| 		const state = reactive({ | ||||
| 			projectId: stores.$state.userInfos.uprojectId, | ||||
| 			queryParam: { | ||||
| 				pageNum: 1, | ||||
| 				pageSize: 10000000000, | ||||
| 				projectId: stores.$state.userInfos.uprojectId, | ||||
| 			}, | ||||
| 			projectName: '', | ||||
| 			bottomSvg, | ||||
| 			tools: null, | ||||
| 			zhuangdian: { | ||||
| 				// 桩点更新高层 | ||||
| 				originArr: [] as any[], //源数据数组 | ||||
| 				poiArr: [] as any[], //位置数据数组 | ||||
| 			}, | ||||
| 			zhijia: { | ||||
| 				// 支架更新高层 | ||||
| 				originArr: [] as any[], //源数据数组 | ||||
| 				poiArr: [] as any[], //位置数据数组 | ||||
| 			}, | ||||
| 			gfbArr: [] as any[], | ||||
| 			bbtArr: [] as any[], | ||||
| 			progress: -1, //加载进度 | ||||
| 			progressTips: '数据更新中,请稍后……', | ||||
| 			loading: null, | ||||
| 		}); | ||||
|  | ||||
| 		onMounted(() => { | ||||
| 			// 关闭Loading效果 | ||||
| 			NextLoading.done(); | ||||
| 			createEarth(); | ||||
| 			// 切换项目 项目ID数据同步 | ||||
| 			let channel = new BroadcastChannel('BC-switchProject'); | ||||
| 			channel.addEventListener('message', function (e) { | ||||
| 				if (e.data !== state.projectId) { | ||||
| 					//保存更新项目id | ||||
| 					updateProjectId(e.data); | ||||
| 					location.reload(); //刷新页面 | ||||
| 				} | ||||
| 			}); | ||||
| 		}); | ||||
| 		const initData = () => { | ||||
| 			getRresource(); | ||||
| 			// 获取所有数据 | ||||
| 			getSourceAll(); | ||||
| 			// 项目名称 | ||||
| 			getProList(state.projectId); | ||||
| 			// 获取桩点 | ||||
| 			getZhiJiaList(); | ||||
| 			getXZhuangDianList(); | ||||
| 		}; | ||||
| 		const commonJson = (item) => { | ||||
| 			if (!item.detail) { | ||||
| 				//是否存在 | ||||
| 				return false; | ||||
| 			} | ||||
| 			if (!typeJSON(item.detail)) { | ||||
| 				//是否是JSON字符 | ||||
| 				return false; | ||||
| 			} | ||||
| 			return true; | ||||
| 		}; | ||||
| 		// 渲染倾斜模型 | ||||
| 		const renderModel = (item) => { | ||||
| 			let Nposition = { | ||||
| 				lng: 0, | ||||
| 				lat: 0, | ||||
| 				alt: 0, | ||||
| 			}; | ||||
| 			let position = null; | ||||
| 			if (commonJson(item)) { | ||||
| 				position = JSON.parse(item.detail).position || Nposition; | ||||
| 			} else { | ||||
| 				position = Nposition; | ||||
| 			} | ||||
| 			let options = { | ||||
| 				id: item.sourceId, | ||||
| 				host: '', | ||||
| 				position, | ||||
| 				show: true, | ||||
| 			}; | ||||
| 			// eslint-disable-next-line no-undef | ||||
| 			let model = new YJ.Zmkg.Source(options); | ||||
| 			model.on().then((res) => { | ||||
| 				if (model.source.tileset) { | ||||
| 					let bim = model.source.tileset.czmObject; | ||||
| 				} | ||||
| 				setTimeout(() => { | ||||
| 					if (model.id != 'dixing') { | ||||
| 						model.flyTo(); | ||||
| 					} | ||||
| 				}, 1000); | ||||
| 			}); | ||||
| 		}; | ||||
| 		const getRresource = () => { | ||||
| 			getQxModelList(); | ||||
| 		}; | ||||
| 		// 渲染光伏板 | ||||
| 		const redenrGfB = () => { | ||||
| 			const loading = ElLoading.service({ | ||||
| 				lock: true, | ||||
| 				text: '加载光伏板中....', | ||||
| 				background: 'rgba(0, 0, 0, 0.7)', | ||||
| 			}); | ||||
| 			let batchSize = 100; | ||||
| 			for (let i = 0; i < guanfuban.length; i += batchSize) { | ||||
| 				const batch = guanfuban.slice(i, i + batchSize); | ||||
| 				renderGuangfubanGlb(batch); | ||||
| 			} | ||||
| 			loading.close(); | ||||
| 		}; | ||||
| 		// 获取所有的数据 | ||||
| 		const getSourceAll = () => { | ||||
| 			const loading = ElLoading.service({ | ||||
| 				lock: true, | ||||
| 				text: '获取数据中...', | ||||
| 				background: 'rgba(0, 0, 0, 0.7)', | ||||
| 			}); | ||||
| 			manageAll({ id: state.projectId }).then((res) => { | ||||
| 				loading.close(); | ||||
| 				const { data } = res; | ||||
| 				let list = data.data; | ||||
| 				console.log('listlistlistlist', list); | ||||
| 				if (list.length > 0) { | ||||
| 					list.forEach((item: any) => { | ||||
| 						if (item.type == 18) { | ||||
| 							nibianqi.push(item); | ||||
| 						} | ||||
| 						if (item.type == 23) { | ||||
| 							xiangbian.push(item); | ||||
| 						} | ||||
| 						if (item.type == 15) { | ||||
| 							guanfuban.push(item); | ||||
| 						} | ||||
| 					}); | ||||
| 					let one = JSON.parse(guanfuban[0].detail); | ||||
| 					if (one.height) { | ||||
| 						redenrGfB(); | ||||
| 					} else { | ||||
| 						ElMessage.warning('请优先更新光伏板'); | ||||
| 					} | ||||
| 				} | ||||
| 			}); | ||||
| 		}; | ||||
| 		// 删除光伏板数据 | ||||
| 		const removeSources = () => { | ||||
| 			window['$PROJECT_MAP'].forEach((item) => { | ||||
| 				// 清空地球上的实例 | ||||
| 				try { | ||||
| 					item[0].remove(); | ||||
| 				} catch (error) {} | ||||
| 			}); | ||||
| 			window['$PROJECT_MAP'].clear(); | ||||
| 		}; | ||||
| 		// 数组分组工具方法 | ||||
| 		const groupArr = (array, subGroupLength) => { | ||||
| 			let index = 0; | ||||
| 			let newArray = []; | ||||
| 			while (index < array.length) { | ||||
| 				newArray.push(array.slice(index, (index += subGroupLength))); | ||||
| 			} | ||||
| 			return newArray; | ||||
| 		}; | ||||
| 		// 根据key去重 | ||||
| 		const duplicateRemoveByKey = (arr: any) => { | ||||
| 			//根据key去重 | ||||
| 			let arrMap = new Map(); | ||||
| 			for (let item of arr) { | ||||
| 				if (!arrMap.has(item.id)) { | ||||
| 					arrMap.set(item.id, item); | ||||
| 				} | ||||
| 			} | ||||
| 			arr = [...arrMap.values()]; //把map中所有的值取出来放进数组 | ||||
| 			return arr; | ||||
| 		}; | ||||
| 		// 采样高层 | ||||
| 		const updateZhiJiaZhuanDian = async (type: any) => { | ||||
| 			console.log(123); | ||||
|  | ||||
| 			let loading = null; | ||||
| 			let load = false; | ||||
| 			if (type == 'zhuangdian' && window.$PROJECT_MAP) { | ||||
| 				removeSources(); | ||||
| 				load = true; | ||||
| 			} else { | ||||
| 				redenrGfB(); | ||||
| 			} | ||||
|  | ||||
| 			if (type != 'zhuangdian' && type != 'zhijia') { | ||||
| 				loading = ElLoading.service({ | ||||
| 					lock: true, | ||||
| 					text: '正在更新中', | ||||
| 					background: 'rgba(0, 0, 0, 0.7)', | ||||
| 				}); | ||||
| 			} else { | ||||
| 				state.progress = 0; | ||||
| 			} | ||||
| 			console.log('statestatestatestatestate', state); | ||||
|  | ||||
| 			if (state[type].poiArr.length && state[type].originArr.length) { | ||||
| 				let poiGroupArr = groupArr(state[type].poiArr, 500); | ||||
| 				let oriGroupArr = groupArr(state[type].originArr, 500); | ||||
| 				if (poiGroupArr.length) { | ||||
| 					for (let i in poiGroupArr) { | ||||
| 						await state.tools!.sampleHeightMostDetailed(poiGroupArr[i]).then((res: any) => { | ||||
| 							if (res.length === oriGroupArr[i].length) { | ||||
| 								// 返填重新赋值 | ||||
| 								oriGroupArr[i] = oriGroupArr[i].map((v: any, i: any) => { | ||||
| 									let position = JSON.parse(v.detail); | ||||
| 									if (type === 'zhijia') { | ||||
| 										position.position.height = res[i].height ? res[i].height : 0; | ||||
| 									} else { | ||||
| 										position.position.alt = res[i].height ? res[i].height : 0; | ||||
| 									} | ||||
| 									v.detail = JSON.stringify(position); | ||||
| 									return v; | ||||
| 								}); | ||||
|  | ||||
| 								state[type].originArr = [...state[type].originArr, ...oriGroupArr[i]]; | ||||
| 								state[type].originArr = duplicateRemoveByKey(state[type].originArr); | ||||
| 								console.log(state[type].originArr); | ||||
| 								state.progressTips = `总计${poiGroupArr.length}组数据,正在进行第${Number(i) + 1}组数据采样`; | ||||
| 								state.progress = Number((((Number(i) + 1) / poiGroupArr.length) * 100).toFixed(2)); | ||||
| 								if (type === 'zhuangdian' || type === 'zhijia') { | ||||
| 									// 全部采样完才请求接口 | ||||
| 									if (Number(i) - 0 == poiGroupArr.length - 1) { | ||||
| 										updateAlt(type, loading); | ||||
| 									} | ||||
| 								} else { | ||||
| 									updateAlt(type, loading); | ||||
| 								} | ||||
| 							} else { | ||||
| 								loading?.close(); | ||||
| 								ElMessage.success('更新失败'); | ||||
| 							} | ||||
| 						}); | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		}; | ||||
|  | ||||
| 		// 更新高层 | ||||
| 		const updateAlt = async (type: any, loading: any = null) => { | ||||
| 			if (type === 'zhuangdian') { | ||||
| 				chunkUpdateAlt(type, '/zm/api/v1/system/qianqiGuangfubanIdsZhuangdian/edit_detail'); | ||||
| 			} | ||||
| 			if (type === 'zhijia') { | ||||
| 				chunkUpdateAlt(type, '/zm/api/v1/system/qianqiGuangfubanIdsZhijia/edit_detail'); | ||||
| 			} | ||||
| 		}; | ||||
|  | ||||
| 		// 更新高程 分组请求接口(桩点 支架) | ||||
| 		const chunkUpdateAlt = async (type: any, url: any) => { | ||||
| 			state.progress = 0; | ||||
| 			console.log(state.zhuangdian.originArr); | ||||
| 			let list = state[type].originArr.map((item: any) => { | ||||
| 				return JSON.parse(item.detail); | ||||
| 			}); | ||||
| 			let groupList = groupArr(list, 5000); | ||||
| 			if (groupList.length) { | ||||
| 				for (let i in groupList) { | ||||
| 					state.progressTips = `总计${groupList.length}组数据,正在进行第${Number(i) + 1}组数据更新`; | ||||
| 					state.progress = Number(((Number(i) / groupList.length) * 100).toFixed(2)); | ||||
| 					await axios({ | ||||
| 						url: url, | ||||
| 						method: 'put', | ||||
| 						timeout: 0, | ||||
| 						headers: { | ||||
| 							Authorization: 'Bearer ' + `${Session.get('token')}`, | ||||
| 							'Content-Type': 'application/json', | ||||
| 							...sign({ projectId: state.projectId, list: groupList[i] }), | ||||
| 						}, | ||||
| 						data: { projectId: state.projectId, list: groupList[i] }, | ||||
| 					}) | ||||
| 						.then((res: any) => { | ||||
| 							if (res.data.code === 0) { | ||||
| 								state.progress = 100; | ||||
| 								ElMessage.success(`第${Number(i) + 1}组数据更新成功,剩余${groupList.length - 1 - Number(i)}组数据`); | ||||
| 								if (type === 'zhuangdian') { | ||||
| 									getZhiJiaList(); | ||||
| 								} | ||||
| 							} else { | ||||
| 								ElMessage.error(res.data.message); | ||||
| 							} | ||||
| 						}) | ||||
| 						.catch((err) => { | ||||
| 							ElMessage.error('请求失败'); | ||||
| 						}); | ||||
| 				} | ||||
| 			} | ||||
| 		}; | ||||
| 		// 获取支架列表 | ||||
| 		const getZhiJiaList = async () => { | ||||
| 			state.zhijia.originArr = []; | ||||
| 			state.zhijia.poiArr = []; | ||||
| 			await gisListZhijia(state.queryParam).then((res: any) => { | ||||
| 				console.log('list接口', res); | ||||
|  | ||||
| 				if (res.code === 0 && res.data.list) { | ||||
| 					let arr = res.data.list.map((item, index) => { | ||||
| 						item.p_id = '106'; | ||||
| 						item.checked = 1; | ||||
| 						item.is_show = 1; | ||||
| 						item.layer_index = 0; | ||||
| 						item.icon = zjImage; | ||||
| 						item.tree_index = 0; | ||||
| 						let detail = null; | ||||
| 						if (commonJson(item)) { | ||||
| 							detail = JSON.parse(item.detail); | ||||
| 							state.zhijia.originArr.push(item); | ||||
| 							state.zhijia.poiArr.push({ lng: detail.position.lng, lat: detail.position.lat }); | ||||
| 						} | ||||
| 						return item; | ||||
| 					}); | ||||
| 				} | ||||
| 			}); | ||||
| 		}; | ||||
| 		// 获取桩点的数据 | ||||
| 		const getXZhuangDianList = async () => { | ||||
| 			await gisList(state.queryParam).then((res: any) => { | ||||
| 				if (res.code === 0 && res.data.list) { | ||||
| 					state.zhuangdian.poiArr = []; | ||||
| 					let arr = res.data.list.map((item: any, index: any) => { | ||||
| 						item.p_id = '102'; | ||||
| 						item.checked = 1; | ||||
| 						item.is_show = 1; | ||||
| 						item.layer_index = 0; | ||||
| 						item.icon = zdImage; | ||||
| 						item.tree_index = 0; | ||||
| 						let detail = null; | ||||
| 						if (commonJson(item)) { | ||||
| 							detail = JSON.parse(item.detail); | ||||
| 							state.zhuangdian.originArr.push(item); | ||||
| 							state.zhuangdian.poiArr.push({ lng: detail.position.lng, lat: detail.position.lat }); | ||||
| 						} | ||||
| 						return item; | ||||
| 					}); | ||||
| 				} | ||||
| 			}); | ||||
| 		}; | ||||
| 		// 获取中心点高程(光伏板) | ||||
| 		const centerHeight = () => { | ||||
| 			const loading = ElLoading.service({ | ||||
| 				lock: true, | ||||
| 				text: '更新高程、中心点...', | ||||
| 				background: 'rgba(0, 0, 0, 0.7)', | ||||
| 			}); | ||||
| 			let arr = []; | ||||
| 			guanfuban.forEach((item) => { | ||||
| 				arr.push(JSON.parse(item.detail)); | ||||
| 			}); | ||||
| 			let heightAndCenter = window.YJ.Zmkg.Guangfu.CenterHeight(arr); | ||||
| 			let center = heightAndCenter.center; | ||||
| 			heightAndCenter.Cartographic.then((Cartographic: any) => { | ||||
| 				if (Cartographic.length > 0) { | ||||
| 					loading.close(); | ||||
| 					assemblingPhotovoltaicPanels(center, Cartographic); | ||||
| 				} | ||||
| 			}); | ||||
| 		}; | ||||
| 		// 组装高程数据 | ||||
| 		const assemblingPhotovoltaicPanels = async (center: any, height: any) => { | ||||
| 			guanfuban.forEach((item, index) => { | ||||
| 				let i = JSON.parse(item.detail); | ||||
| 				i.height = height[index].height; | ||||
| 				i.center = center[index]; | ||||
| 				item.detail = JSON.stringify(i); | ||||
| 			}); | ||||
| 			let data = [...guanfuban]; | ||||
| 			let batchSize = 100000; | ||||
| 			for (let i = 0; i < data.length; i += batchSize) { | ||||
| 				const batch = data.slice(i, i + batchSize); | ||||
| 				await updateElevation(batch); | ||||
| 			} | ||||
| 			getSourceAll(); | ||||
| 		}; | ||||
| 		// 更新高程(箱变、逆变器) | ||||
| 		const updateHighLevel = (str: string) => { | ||||
| 			let gxArr; | ||||
| 			if (str == 'nibianqi') { | ||||
| 				gxArr = nibianqi; | ||||
| 			} | ||||
| 			if (str == 'xiangbian') { | ||||
| 				gxArr = xiangbian; | ||||
| 			} | ||||
| 			if (gxArr.length == 0) { | ||||
| 				ElMessage({ | ||||
| 					message: '数据为空,请确认数据是否上传', | ||||
| 					type: 'warning', | ||||
| 				}); | ||||
| 				return; | ||||
| 			} | ||||
| 			let arr = []; | ||||
| 			gxArr.forEach((item) => { | ||||
| 				let p = JSON.parse(item.detail).positions[0]; | ||||
| 				arr.push(p); | ||||
| 			}); | ||||
| 			const loading = ElLoading.service({ | ||||
| 				lock: true, | ||||
| 				text: '更新高程中...', | ||||
| 				background: 'rgba(0, 0, 0, 0.7)', | ||||
| 			}); | ||||
| 			state.tools.sampleHeightMostDetailed(arr).then((Cartographic) => { | ||||
| 				if (Cartographic.length > 0) { | ||||
| 					loading.close(); | ||||
| 					assemblyData(gxArr, Cartographic); | ||||
| 				} | ||||
| 			}); | ||||
| 		}; | ||||
| 		// 组装数据 | ||||
| 		const assemblyData = (gxArr, arr) => { | ||||
| 			gxArr.forEach((item, index) => { | ||||
| 				let i = JSON.parse(item.detail); | ||||
| 				i.positions[0].alt = arr[index].height; | ||||
| 				item.detail = JSON.stringify(i); | ||||
| 			}); | ||||
| 			updateElevation(gxArr); | ||||
| 		}; | ||||
| 		// 更新高程(更新到后端) | ||||
| 		const updateElevation = (gxArr) => { | ||||
| 			const loading = ElLoading.service({ | ||||
| 				lock: true, | ||||
| 				text: '上传中,请勿关闭页面...', | ||||
| 				background: 'rgba(0, 0, 0, 0.7)', | ||||
| 			}); | ||||
| 			updateAll({ Modules: gxArr }).then((res) => { | ||||
| 				loading.close(); | ||||
| 				if (res.code == 0) { | ||||
| 					ElMessage({ | ||||
| 						message: '上传成功', | ||||
| 						type: 'success', | ||||
| 					}); | ||||
| 				} | ||||
| 			}); | ||||
| 		}; | ||||
| 		// 获取地形数据 | ||||
| 		const getQxModelList = () => { | ||||
| 			listQianqiMoxing(state.queryParam).then((res: any) => { | ||||
| 				if (res.code === 0 && res.data.list && res.data.list.length) { | ||||
| 					res.data.list.forEach((item) => { | ||||
| 						renderModel(item); | ||||
| 					}); | ||||
| 				} | ||||
| 			}); | ||||
| 		}; | ||||
| 		// 获取当前项目信息 | ||||
| 		const getProList = (id: any) => { | ||||
| 			getSysProject(id).then((res: any) => { | ||||
| 				const data = res.data; | ||||
| 				state.projectName = data.projectName; | ||||
| 			}); | ||||
| 		}; | ||||
| 		const createEarth = () => { | ||||
| 			// eslint-disable-next-line no-undef | ||||
| 			YJ.on().then((res: any) => { | ||||
| 				// eslint-disable-next-line no-undef | ||||
| 				let earth = new YJ.YJEarth('earth'); | ||||
| 				// // this.areaShow = true | ||||
| 				// eslint-disable-next-line no-undef | ||||
| 				new YJ.Layer.ArcgisWXImagery(); | ||||
| 				// // new YJ.Layer.ArcgisGRAYImagery() | ||||
| 				// // new YJ.Layer.ArcgisBLUEImagery() | ||||
| 				// // new YJ.Terrain.Arcgis() | ||||
| 				// eslint-disable-next-line no-undef | ||||
| 				new YJ.Layer.GDLWImagery(); | ||||
| 				// eslint-disable-next-line no-undef | ||||
| 				state.tools = new YJ.Tools(); | ||||
| 				// eslint-disable-next-line no-undef | ||||
| 				YJ.getEarth().propertyStyle = new Cesium.Cesium3DTileStyle({ | ||||
| 					// let stayle = new Cesium.Cesium3DTileStyle({ | ||||
| 					/*color: { | ||||
| 					evaluateColor: (feature, result) => { | ||||
| 					  return bimTree.evaluateColor(feature, result) | ||||
| 					} | ||||
| 				  },*/ | ||||
| 					show: { | ||||
| 						evaluate: (feature) => { | ||||
| 							return evaluateShow(feature); | ||||
| 						}, | ||||
| 					}, | ||||
| 				}); | ||||
| 				initData(); | ||||
| 			}); | ||||
| 		}; | ||||
| 		// 监听模型加载显示隐藏 | ||||
| 		const evaluateShow = (feature: any) => { | ||||
| 			return true; | ||||
| 			if (!feature) return true; | ||||
| 			if (!feature.hasProperty('id')) return true; | ||||
| 			var fid = feature.getProperty('id'); | ||||
| 			// //获取tileset | ||||
| 			var tileset = feature.tileset.xbsjTileset; | ||||
| 			if (!tileset) return true; | ||||
| 			// //寻找这个tileset上绑定的配置 | ||||
| 			var config = window._visibleConfig.find((f) => f.tileset === tileset); | ||||
| 			if (!config) return true; | ||||
| 			//如果配置里包含,那么返回可见性 | ||||
| 			if (config.visibleCach.hasOwnProperty(fid)) { | ||||
| 				return config.visibleCach[fid]; | ||||
| 			} else return false; | ||||
| 			//否则返回可见 | ||||
| 		}; | ||||
|  | ||||
| 		return { | ||||
| 			createEarth, | ||||
| 			evaluateShow, | ||||
| 			getRresource, | ||||
| 			getQxModelList, | ||||
| 			centerHeight, | ||||
| 			commonJson, | ||||
| 			updateHighLevel, | ||||
| 			updateZhiJiaZhuanDian, | ||||
| 			redenrGfB, | ||||
| 			...toRefs(state), | ||||
| 		}; | ||||
| 	}, | ||||
| }); | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
| .earth { | ||||
| 	width: 100vw; | ||||
| 	height: 100vh; | ||||
| 	overflow: hidden; | ||||
| 	position: relative; | ||||
|  | ||||
| 	.left_title_button { | ||||
| 		position: absolute; | ||||
| 		top: 10%; | ||||
| 		left: 30px; | ||||
| 		width: 250px; | ||||
| 		height: 100px; | ||||
| 		z-index: 1999; | ||||
|  | ||||
| 		.title { | ||||
| 			color: #fff; | ||||
| 			font-weight: bold; | ||||
| 			font-size: 22px; | ||||
| 			margin-bottom: 20px; | ||||
| 		} | ||||
|  | ||||
| 		.btn { | ||||
| 			width: 100%; | ||||
| 			height: 50px; | ||||
| 			position: relative; | ||||
| 			margin-bottom: 30px; | ||||
|  | ||||
| 			> span { | ||||
| 				width: 100%; | ||||
| 				font-size: 22px; | ||||
| 				font-weight: bold; | ||||
| 				color: #fff; | ||||
| 				position: absolute; | ||||
| 				top: 50%; | ||||
| 				left: 50%; | ||||
| 				transform: translate(-50%, -50%); | ||||
| 				letter-spacing: 3px; | ||||
| 				text-align: center; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
		Reference in New Issue
	
	Block a user