合并
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