合并
This commit is contained in:
		| @ -8,17 +8,13 @@ VITE_APP_ENV = 'development' | |||||||
|  |  | ||||||
| # VITE_APP_BASE_API = 'http://192.168.110.209:8899' | # VITE_APP_BASE_API = 'http://192.168.110.209:8899' | ||||||
| # 李陈杰 209 | # 李陈杰 209 | ||||||
| <<<<<<< HEAD | 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.209:8899' |  | ||||||
| >>>>>>> 2cd70eb41584033214fe707b9f16b5037fc2beba |  | ||||||
| # 曾涛 | # 曾涛 | ||||||
| # 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.188: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' | # 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