This commit is contained in:
2025-09-02 10:01:05 +08:00
parent 1484bd44fc
commit ff5f583326
68 changed files with 983 additions and 14306 deletions

View File

@ -93,8 +93,8 @@ nsis:
!addincludedir "G:\YUANJIE\4.0\build"
!include "G:\YUANJIE\4.0\installer.nsh"
!addplugindir /x86-unicode "C:\Users\YC\AppData\Local\electron-builder\Cache\nsis\nsis-resources-3.4.1\plugins\x86-unicode"
!include "C:\Users\YC\AppData\Local\Temp\t-P7VRbu\1-messages.nsh"
!include "C:\Users\YC\AppData\Local\Temp\t-P7VRbu\0-messages.nsh"
!include "C:\Users\YC\AppData\Local\Temp\t-BcnJuD\1-messages.nsh"
!include "C:\Users\YC\AppData\Local\Temp\t-BcnJuD\0-messages.nsh"
Var newStartMenuLink
Var oldStartMenuLink

View File

@ -12,8 +12,8 @@ extraFiles:
to: ./ffplay
- from: ./build/icons/
to: ./icons
productName: 实景三维电子沙盘系统
appId: org.dzsp_shijing_offline_Y_save
productName: 便携式应急指挥电子沙盘系统
appId: org.dzsp_yingjizhihui_offline_Y_save
files:
- filter:
- dist/electron/**/*
@ -29,12 +29,12 @@ dmg:
mac:
icon: build/icons/icon.icns
win:
icon: build/icons/earth.ico
icon: build/icons/81.ico
linux:
target: deb
icon: build/icons/81.png
desktop:
Icon: /opt/实景三维电子沙盘系统/icons/earth.png
Icon: /opt/便携式应急指挥电子沙盘系统/icons/81.png
executableArgs:
- '--no-sandbox'
nsis:

10522
dist/electron/main.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,9 @@
!macro preInit
SetRegView 64
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "D:\ProgramFiles\dzsp_shijing_offline_Y_save"
WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "D:\ProgramFiles\dzsp_shijing_offline_Y_save"
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "D:\ProgramFiles\dzsp_yingjizhihui_offline_Y_save"
WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "D:\ProgramFiles\dzsp_yingjizhihui_offline_Y_save"
#writeUninstaller $INSTDIR\uninstaller.exe
SetRegView 32
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "D:\ProgramFiles\dzsp_shijing_offline_Y_save"
WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "D:\ProgramFiles\dzsp_shijing_offline_Y_save"
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "D:\ProgramFiles\dzsp_yingjizhihui_offline_Y_save"
WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "D:\ProgramFiles\dzsp_yingjizhihui_offline_Y_save"
!macroend

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

@ -1 +1 @@
{"name":"dzsp_shijing_offline_Y_save","version":"v4.0.0","author":{"email":"1114042468@qq.com","name":"1114042468@qq.com"},"maintainers":[],"license":"MIT","main":"./dist/electron/main.js","homepage":"./dist/electron/main.js","description":"","private":true,"scripts":{"dev":"cross-env TERGET_ENV=development node .electron-vue/dev-runner.js","build":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder","build:win32":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --win --ia32","build:win64":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --win --x64","build:linux64":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --linux --x64","build:arm64":" cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --linux --arm64","build:mac":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --mac","build:dir":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --dir","build:clean":"cross-env BUILD_TARGET=clean node .electron-vue/build.js","build:web":"cross-env BUILD_TARGET=web node .electron-vue/build.js","pack":"npm run pack:main && npm run pack:renderer","pack:main":"cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.main.config.js","pack:renderer":"cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.renderer.config.js","update:serve":"node server/index.js","dep:upgrade":"yarn upgrade-interactive --latest","postinstall":"electron-builder install-app-deps"},"build":{"extraFiles":[{"from":"./collada2gltf/","to":"./collada2gltf"},{"from":"./convert/","to":"./convert"},{"from":"./yjearth4_0/","to":"./yjearth4_0"},{"from":"./ffplay/","to":"./ffplay"},{"from":"./build/icons/","to":"./icons"}],"productName":"实景三维电子沙盘系统","appId":"org.dzsp_shijing_offline_Y_save","directories":{"output":"build"},"files":["dist/electron/**/*"],"dmg":{"contents":[{"x":410,"y":150,"type":"link","path":"/Applications"},{"x":130,"y":150,"type":"file"}]},"mac":{"icon":"build/icons/icon.icns"},"win":{"icon":"build/icons/earth.ico"},"linux":{"target":"deb","icon":"build/icons/81.png","desktop":{"Icon":"/opt/实景三维电子沙盘系统/icons/earth.png"},"executableArgs":["--no-sandbox"]},"nsis":{"include":"installer.nsh","oneClick":false,"perMachine":true,"allowToChangeInstallationDirectory":true,"language":"2052"}},"dependencies":{"@amap/amap-jsapi-loader":"^1.0.1","@smallwei/avue":"^2.10.10","archiver":"^5.3.0","axios":"0.17.1","compressing":"^1.5.1","date-fns":"^3.6.0","electron-store":"^8.1.0","electron-wpc":"^2.0.1","element-ui":"^2.15.13","express":"^4.18.2","fbx2gltf":"^0.9.7-p1","file-saver":"^2.0.5","gltf-pipeline":"^4.1.0","ini":"^4.1.2","js-cookie":"^2.2.0","js-md5":"^0.7.3","jszip":"^3.10.1","log4js":"^6.9.1","moment":"^2.30.1","normalize.css":"7.0.0","nprogress":"0.2.0","obj2gltf":"^3.1.6","polyfill-object.fromentries":"^1.0.1","three":"^0.158.0","viewerjs":"^1.11.6","vue":"2.5.17","vue-electron":"^1.0.6","vue-i18n":"8.2.1","vue-router":"3.0.1","vuex":"^3.0.1","xlsx":"^0.18.5"},"devDependencies":{"@babel/core":"^7.24.7","@babel/preset-env":"^7.24.7","babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-loader":"^7.1.5","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.6.0","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","babili-webpack-plugin":"^0.1.2","cfonts":"^1.1.3","chalk":"^2.1.0","copy-webpack-plugin":"^4.0.1","cross-env":"^5.2.1","css-loader":"^0.28.4","del":"^3.0.0","devtron":"^1.4.0","electron":"^13.6.9","electron-builder":"^22.11.7","electron-debug":"^1.4.0","electron-devtools-installer":"^2.2.0","eslint":"^4.4.1","eslint-friendly-formatter":"^3.0.0","eslint-loader":"^1.9.0","eslint-plugin-html":"^3.1.1","extract-text-webpack-plugin":"^3.0.0","file-loader":"^0.11.2","html-webpack-plugin":"^2.30.1","multispinner":"^0.2.1","node-loader":"^0.6.0","sass":"^1.37.0","sass-loader":"^7.3.1","sass-resources-loader":"^2.2.4","style-loader":"^0.18.2","svg-sprite-loader":"3.5.2","url-loader":"^0.5.9","vue-html-loader":"^1.2.4","vue-loader":"^13.0.5","vue-style-loader":"^3.0.1","vue-template-compiler":"2.5.17","webpack":"^3.5.2","webpack-dev-server":"^2.7.1","webpack-hot-middleware":"^2.18.2"}}
{"name":"dzsp_yingjizhihui_offline_Y_save","version":"v4.0.0","author":{"email":"1114042468@qq.com","name":"1114042468@qq.com"},"maintainers":[],"license":"MIT","main":"./dist/electron/main.js","homepage":"./dist/electron/main.js","description":"","private":true,"scripts":{"dev":"cross-env TERGET_ENV=development node .electron-vue/dev-runner.js","build":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder","build:win32":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --win --ia32","build:win64":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --win --x64","build:linux64":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --linux --x64","build:arm64":" cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --linux --arm64","build:mac":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --mac","build:dir":"cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --dir","build:clean":"cross-env BUILD_TARGET=clean node .electron-vue/build.js","build:web":"cross-env BUILD_TARGET=web node .electron-vue/build.js","pack":"npm run pack:main && npm run pack:renderer","pack:main":"cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.main.config.js","pack:renderer":"cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.renderer.config.js","update:serve":"node server/index.js","dep:upgrade":"yarn upgrade-interactive --latest","postinstall":"electron-builder install-app-deps"},"build":{"extraFiles":[{"from":"./collada2gltf/","to":"./collada2gltf"},{"from":"./convert/","to":"./convert"},{"from":"./yjearth4_0/","to":"./yjearth4_0"},{"from":"./ffplay/","to":"./ffplay"},{"from":"./build/icons/","to":"./icons"}],"productName":"便携式应急指挥电子沙盘系统","appId":"org.dzsp_yingjizhihui_offline_Y_save","directories":{"output":"build"},"files":["dist/electron/**/*"],"dmg":{"contents":[{"x":410,"y":150,"type":"link","path":"/Applications"},{"x":130,"y":150,"type":"file"}]},"mac":{"icon":"build/icons/icon.icns"},"win":{"icon":"build/icons/81.ico"},"linux":{"target":"deb","icon":"build/icons/81.png","desktop":{"Icon":"/opt/便携式应急指挥电子沙盘系统/icons/81.png"},"executableArgs":["--no-sandbox"]},"nsis":{"include":"installer.nsh","oneClick":false,"perMachine":true,"allowToChangeInstallationDirectory":true,"language":"2052"}},"dependencies":{"@amap/amap-jsapi-loader":"^1.0.1","@smallwei/avue":"^2.10.10","archiver":"^5.3.0","axios":"0.17.1","compressing":"^1.5.1","date-fns":"^3.6.0","electron-store":"^8.1.0","electron-wpc":"^2.0.1","element-ui":"^2.15.13","express":"^4.18.2","fbx2gltf":"^0.9.7-p1","file-saver":"^2.0.5","gltf-pipeline":"^4.1.0","ini":"^4.1.2","js-cookie":"^2.2.0","js-md5":"^0.7.3","jszip":"^3.10.1","log4js":"^6.9.1","moment":"^2.30.1","normalize.css":"7.0.0","nprogress":"0.2.0","obj2gltf":"^3.1.6","polyfill-object.fromentries":"^1.0.1","three":"^0.158.0","viewerjs":"^1.11.6","vue":"2.5.17","vue-electron":"^1.0.6","vue-i18n":"8.2.1","vue-router":"3.0.1","vuex":"^3.0.1","xlsx":"^0.18.5"},"devDependencies":{"@babel/core":"^7.24.7","@babel/preset-env":"^7.24.7","babel-core":"^6.25.0","babel-eslint":"^7.2.3","babel-loader":"^7.1.5","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.6.0","babel-preset-stage-0":"^6.24.1","babel-register":"^6.24.1","babili-webpack-plugin":"^0.1.2","cfonts":"^1.1.3","chalk":"^2.1.0","copy-webpack-plugin":"^4.0.1","cross-env":"^5.2.1","css-loader":"^0.28.4","del":"^3.0.0","devtron":"^1.4.0","electron":"^13.6.9","electron-builder":"^22.11.7","electron-debug":"^1.4.0","electron-devtools-installer":"^2.2.0","eslint":"^4.4.1","eslint-friendly-formatter":"^3.0.0","eslint-loader":"^1.9.0","eslint-plugin-html":"^3.1.1","extract-text-webpack-plugin":"^3.0.0","file-loader":"^0.11.2","html-webpack-plugin":"^2.30.1","multispinner":"^0.2.1","node-loader":"^0.6.0","sass":"^1.37.0","sass-loader":"^7.3.1","sass-resources-loader":"^2.2.4","style-loader":"^0.18.2","svg-sprite-loader":"3.5.2","url-loader":"^0.5.9","vue-html-loader":"^1.2.4","vue-loader":"^13.0.5","vue-style-loader":"^3.0.1","vue-template-compiler":"2.5.17","webpack":"^3.5.2","webpack-dev-server":"^2.7.1","webpack-hot-middleware":"^2.18.2"}}

View File

@ -177,18 +177,22 @@ img {
height: 32px !important;
}
.modelBox .el-collapse-item__header {
.modelBox .el-collapse-item__header,
.modelBoxg .el-collapse-item__header {
padding-left: 10px;
background: transparent !important;
}
.modelBox .el-collapse-item__content {
.modelBox .el-collapse-item__content,
.modelBoxg .el-collapse-item__content
{
padding-left: 15px;
padding-bottom: 0;
display: flex;
flex-wrap: wrap;
}
.junbiao .el-tree {
height: 100%;
}

View File

@ -46,10 +46,9 @@ import {
renderFlyLine,
} from "../Tree/renderNode";
import { shpTotalDict } from "../../api/shpTotalDict";
import e from "express";
let newp_id = "特效图层"
let model_p_id = "模型图层"
let newp_id = "特效图层";
let model_p_id = "模型图层";
const secondMenuFun = {
data() {
@ -933,7 +932,8 @@ const secondMenuFun = {
source_id,
source_name: item.model_name,
source_type: "model",
p_id: DbOption.source_id,
// p_id: DbOption.source_id,
p_id: model_p_id,
};
let option = {
@ -1000,10 +1000,10 @@ const secondMenuFun = {
// this.$message.warning("请在图层指挥舱中选中对应图层添加");
// return;
// }
$changeComponentShow(".modelBox", true);
$root_home_index.$refs.model.open("rightMenu");
this.$recvChanel("selectModel", (data) => {
this.$changeComponentShow(".modelSelectBox", false);
$changeComponentShow(".modelBoxg", true);
$root_home_index.$refs.modelg.open("rightMenu");
this.$recvChanel("selectModelg", (data) => {
this.$changeComponentShow(".modelBoxg", false);
let url = data.model_id + ".glb";
console.log("urlurlurlurlurlurl", url);
@ -1059,7 +1059,7 @@ const secondMenuFun = {
cusRenderNode(node);
addSource(node).then((res) => {
if ([0, 200].includes(res.code)) {
cusAddNodes(this.$parent.treeObj, DbOption.p_id, [node]);
cusAddNodes(this.$parent.treeObj, newp_id, [node]);
}
});
}
@ -1200,10 +1200,13 @@ const secondMenuFun = {
source_name: "漫游路径",
source_type: "roam",
p_id: findParentId(this.treeObj),
is_show: data.repeat == "Infinity" ? true : false,
detail: {
...data,
},
};
console.log(DbOption);
cusRenderNode(DbOption);
addSource(DbOption).then((res) => {
YJ.Global.FlyRoam.close();
@ -1374,7 +1377,7 @@ const secondMenuFun = {
let rightWidth = doms[1].offsetWidth;
combineBase64Images(res2, leftWidth, res, rightWidth)
.then((result) => {
this.downloadScreen(result)
this.downloadScreen(result);
// window.splitScreen = false;
})
.catch((err) => console.error("拼接失败:", err));
@ -1702,12 +1705,12 @@ const secondMenuFun = {
window.$dth.open();
},
//鼠标坐标
mouseLocation(item) {
mouseLocation(item,list) {
item.status = !item.status;
const onKeyDown = (e) => {
if (e.keyCode === 27) {
item.status = !item.status;
YJ.Global.MouseCoordinate(window.Earth1, item.status);
item.status = false;
YJ.Global.MouseCoordinate(window.Earth1, false);
document.removeEventListener("keydown", onKeyDown);
}
};
@ -1719,6 +1722,7 @@ const secondMenuFun = {
document.removeEventListener("keydown", onKeyDown);
}
YJ.Global.MouseCoordinate(window.Earth1, item.status);
},
// 根据VR图片查找其邻居并计算距离和方位角
importImg() {

View File

@ -115,8 +115,8 @@
</el-table-column>
<el-table-column align="left" prop="channel" label="通道号" width="100">
</el-table-column>
<el-table-column align="left" prop="flvUrl" label="flv地址" width="200">
</el-table-column>
<!-- <el-table-column align="left" prop="flvUrl" label="flv地址" width="200">
</el-table-column> -->
<el-table-column fixed="right" label="操作" width="auto" align="center">
<template slot-scope="scope">
<el-button type="text" @click="edit(scope.row)">编辑</el-button>

View File

@ -754,9 +754,9 @@ const rightMenuOption = {
//模型压平的编辑方式不同
if (this.rightClickTreeNode.source_type === "path") {
editNode.Dialog.changeModelCallBack = () => {
$changeComponentShow(".modelBox", true);
$root_home_index.$refs.model.open("rightMenuChange");
$recvChanel("selectModelChange", (data) => {
$changeComponentShow(".modelBoxg", true);
$root_home_index.$refs.modelg.open("rightMenuChange");
$recvChanel("selectModelChangeg", (data) => {
editNode.changeModelUrl(data.model_url);
$offChanel("selectModelChange");
});
@ -1018,6 +1018,10 @@ const rightMenuOption = {
let doUpdateInfo = true;
let node = getSelectedNode(this.$parent.treeObj);
let detail = JSON.parse(JSON.stringify(node.detail));
// console.log("detail111111111111111111", );
if (typeof detail==='string') {
detail = JSON.parse(detail);
}
if (flag) {
_entityMap.get(node.source_id).setCustomView();
detail.customView = _entityMap.get(node.source_id).options.customView;
@ -1063,13 +1067,12 @@ const rightMenuOption = {
});
},
addTrajectory() {
$changeComponentShow(".modelBox", true);
$root_home_index.$refs.model.open("rightMenu");
$changeComponentShow(".modelBoxg", true);
$root_home_index.$refs.model.open("rightMenu");g
// this.$changeComponentShow(".modelSelectBox", true)
// $root_home_index.$refs.modelSelect.init()
this.$recvChanel("selectModel", (data) => {
console.log("addTrajectoryaddTrajectoryaddTrajectory");
this.$changeComponentShow(".modelSelectBox", false);
this.$recvChanel("selectModelg", (data) => {
this.$changeComponentShow(".modelSelectBoxg", false);
let url = data.model_id + ".glb";
let draw = new YJ.Draw.DrawPolyline(window.Earth1);
draw.start((err, positions) => {

View File

@ -163,7 +163,7 @@ function leftClick(nodes) {
);
} else {
index--;
$root_home.$message.error("视频流错误");
$root_home.$message.error("视频流错误,请检查设备用户名和密码");
}
// start({

View File

@ -765,21 +765,21 @@ export default {
},
// 添加文本框
addTextBox(position) {
this.$sendChanel("textTetlie", "标注");
this.$changeComponentShow(".textModelBox", true);
this.$recvChanel("textModelContent", (data) => {
console.log(data.text);
// this.$sendChanel("textTetlie", "标注");
// this.$changeComponentShow(".textModelBox", true);
// this.$recvChanel("textModelContent", (data) => {
// console.log(data.text);
let that = this;
let source_id = that.$md5(new Date().getTime() + "文本框");
let textBox = {
id: source_id,
position: position,
text: data.text,
text: '',
show: true,
};
let DbOption = {
source_id,
source_name: data.text,
source_name: '文本框',
source_type: "textBox",
p_id: findParentId(that.treeObj),
};
@ -791,7 +791,7 @@ export default {
cusAddNodes(that.$parent.treeObj, DbOption.p_id, [node]);
}
});
})
// })
},
// 获取当前得node

View File

@ -287,7 +287,7 @@ function renderShp(node, ifFly = true) {
source_id: item.id,
source_type: item.type,
source_name:
item.properties[arrt] || Object.keys(item.properties)[0],
item.properties[arrt] || Object.keys(item.properties)[0] || '未知',
detail: {
...item,
info: { type: "richText" },
@ -302,14 +302,14 @@ function renderShp(node, ifFly = true) {
source_id:
it.id || md5(new Date().getTime().toString() + Math.random()),
source_type: it.type,
source_name: it.name,
source_name: it.name || '未知',
detail: {
defaultfieldName: Vector.field,
...node.detail,
},
is_show: 1,
fid: node.source_id,
children: zijiNodes.length > 0 ? zijiNodes : undefined, // 关键:把子节点挂到父节点
children: zijiNodes.length > 0 ? zijiNodes : [], // 关键:把子节点挂到父节点
};
let parentNode = treeObj.getNodeByParam(
"source_id",
@ -1267,7 +1267,7 @@ function renderFlyLine(node) {
window._entityMap.set(node.source_id, FlowLine);
}
// 飞线
// 文本框
function renderTextBox(node) {
let nodecopy = JSON.parse(JSON.stringify(node));
if (typeof nodecopy.detail == "string")
@ -1277,11 +1277,13 @@ function renderTextBox(node) {
id: nodecopy.source_id,
name: nodecopy.source_name,
};
// console.log('option',option);
let TextBox = new YJ.Obj.TextBox(window.Earth1, option, (e) => {
console.log("ssssssssssssssssssssssss", e);
console.log("ssssssssssssssssssssssss");
let obj = {
source_id: node.source_id,
source_name: e.text,
source_name: e.text || '文本框',
detail: JSON.stringify(e),
};
updateInfo(obj, () => {
@ -1289,13 +1291,14 @@ function renderTextBox(node) {
});
});
//鼠标右键点击事件
TextBox.onRightClick = () => {
rightClick(nodecopy);
};
//鼠标左键点击事件
// //鼠标右键点击事件
// TextBox.onRightClick = () => {
// console.log(123);
// rightClick(nodecopy);
// };
// //鼠标左键点击事件
TextBox.onClick = () => {
leftClick(nodecopy);
rightClick(nodecopy);
};
window._entityMap.set(node.source_id, TextBox);
}

View File

@ -604,7 +604,7 @@ let get_detail_textbox = (DetailOption)=>{
//定义树形节点的属性
const nodeType = {
textBox:{
rightMenus: ["edit", "del", "setView", "resetView"],
rightMenus: ["del", "setView", "resetView"],
render: renderTextBox,
detailFun: get_detail_textbox,
},
@ -1385,12 +1385,15 @@ function updataVector({ source_id }) {
let newnodes = Vector.getAllNode();
if (newnodes) {
if (newnodes.list.length > 1) {
let arrt = node.detail.hasOwnProperty("fieldName")
? node.detail.fieldName
: "id";
newnodes.list.forEach((it) => {
let treeFuNodes = [];
let fuNode = {
source_id: new Date().getTime().toString(),
source_type: it.type,
source_name: it.name,
source_name: it.name||'',
detail: {
defaultfieldName: "id",
...node.detail,
@ -1425,7 +1428,7 @@ function updataVector({ source_id }) {
let ziNode = {
source_id: item.id,
source_type: item.type,
source_name: item.properties[arrt],
source_name: item.properties[arrt] || '',
detail: { ...item, info: { type: "richText" } },
is_show: 1,
fid: node.source_id,

View File

@ -679,13 +679,13 @@ const tree = {
});
return;
}
if (["kml", "gdb", "shp"].includes(node.source_type)) {
if (node.source_type == "pressModel") {
let p_entity = window._entityMap.get(node.p_id);
let entity = window._entityMap.get(node.source_id);
if (entity) {
if (p_entity && status == true) {
p_entity.show = status;
}else if(entity){
entity.show = status;
if (status) {
return; // 如果是这些类型且status为true直接返回不执行后续逻辑
}
}
}
if (node.source_type == "node" || node.source_type == "element") {

View File

@ -211,8 +211,8 @@ export default {
source_id,
source_name: option.source_name,
source_type: option.source_type,
p_id: findParentId(this.treeObj),
// p_id:biaohui_id,
// p_id: findParentId(this.treeObj),
p_id:biaohui_id,
};
let draw
if (option.source_type == "curve") {
@ -262,7 +262,7 @@ export default {
if ([0, 200].includes(res.code)) {
cusRenderNode(DbOption);
// DbOption.p_id
cusAddNodes(this.treeObj, DbOption.p_id, [node]);
cusAddNodes(this.treeObj,biaohui_id, [node]);
}
});
}
@ -284,7 +284,7 @@ export default {
},
// 贴地文字
groundText() {
// let biaohui_id = "标绘图层";
let biaohui_id = "标绘图层";
let that = this;
this.$sendChanel("textTetlie", "贴地文字");
this.$changeComponentShow(".textModelBox", true);
@ -307,7 +307,7 @@ export default {
source_id,
source_name: data.text,
source_type: "groundText",
p_id: findParentId(that.treeObj),
p_id: biaohui_id,
};
let detailOption = JSON.parse(JSON.stringify(option));
@ -321,7 +321,7 @@ export default {
addSource(node).then((res) => {
if ([0, 200].includes(res.code)) {
// cusRenderNode(DbOption)
cusAddNodes(that.treeObj,DbOption.p_id, [node]);
cusAddNodes(that.treeObj,biaohui_id, [node]);
}
});
}
@ -331,7 +331,7 @@ export default {
},
// 立体文字
standText() {
// let biaohui_id = "标绘图层";
let biaohui_id = "标绘图层";
let that = this;
this.$sendChanel("textTetlie", "立体文字");
this.$changeComponentShow(".textModelBox", true);
@ -353,7 +353,7 @@ export default {
source_id,
source_name: data.text,
source_type: "standText",
p_id: findParentId(that.treeObj),
p_id: biaohui_id,
};
let detailOption = JSON.parse(JSON.stringify(option));
let node = getNodeData(DbOption, detailOption);
@ -361,7 +361,7 @@ export default {
addSource(node).then((res) => {
if ([0, 200].includes(res.code)) {
// cusRenderNode(DbOption)
cusAddNodes(that.treeObj, DbOption.p_id, [node]);
cusAddNodes(that.treeObj, biaohui_id, [node]);
}
});
}
@ -381,7 +381,7 @@ export default {
source_id,
source_name: "扇形",
source_type: "sector",
p_id: findParentId(this.treeObj),
p_id: biaohui_id,
};
console.log("params", params);
@ -399,7 +399,7 @@ export default {
addSource(node).then((res) => {
if ([0, 200].includes(res.code)) {
cusRenderNode(DbOption)
cusAddNodes(this.treeObj, DbOption.p_id, [node]);
cusAddNodes(this.treeObj, biaohui_id, [node]);
}
});
}
@ -417,7 +417,7 @@ export default {
source_id,
source_name: "椭圆",
source_type: "ellipse",
p_id: findParentId(this.treeObj),
p_id: biaohui_id,
};
let option = {
id: source_id,
@ -432,7 +432,7 @@ export default {
addSource(node).then((res) => {
if ([0, 200].includes(res.code)) {
cusRenderNode(DbOption)
cusAddNodes(this.treeObj, DbOption.p_id, [node]);
cusAddNodes(this.treeObj, biaohui_id, [node]);
}
});
}

View File

@ -0,0 +1,262 @@
<template>
<div class="ModelSet">
<div class="box" v-draggable>
<div class="boxHeader nav">
<!-- <span></span> -->
<span class="label">{{ title }}</span>
<div class="close-box" @click="close">
<span class="close"></span>
<i>x</i>
</div>
</div>
<div class="boxBody">
<el-form :label-position="labelPosition" label-width="120px" :model="form">
<!-- label="请输入文本信息" -->
<el-form-item label="添加方式">
<el-select v-model="form.type" placeholder="请选择" style="width: 100%;">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item v-if="form.type != '点'" label="间距">
<el-input type="number" placeholder="请输入间距" v-model:number="form.spacing" @input="handleInput"></el-input>
</el-form-item>
</el-form>
<div style="display: flex;justify-content: flex-end;">
<el-button type="primary" @click="confirm">确认</el-button>
<el-button @click="cancel">取消</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "ModelSet",
data() {
return {
labelPosition: "top",
form: {
type: "",
spacing: null
},
title: "",
options: [{
value: '点',
label: '点'
}, {
value: '线',
label: '线'
}, {
value: '面',
label: '面'
}
],
};
},
methods: {
handleInput(value) {
let filtered = value
.replace(/[^\d]/g, '') // 只保留数字
.replace(/^0+/, '') // 去除前导零
if (!filtered) {
this.form.spacing = 1;
} else {
// 将过滤后的字符串转为数字与1000比较取较小值
const num = parseInt(filtered, 10);
this.form.spacing = num > 1000 ? 1000 : num;
}
},
close() {
this.$changeComponentShow(".ModelSet", false);
},
cancel() {
this.$changeComponentShow(".ModelSet", false);
this.$sendChanel("ModelSetContent", null);
},
isOnlyWhitespace(str) {
// 使用正则表达式匹配一个或多个空白字符
const regex = /^\s+$/;
return regex.test(str);
},
confirm() {
//this.form.text去除空格
// this.form.text = this.form.text.replace(/\s+/g, "");
let bool = this.isOnlyWhitespace(this.form.number)
if (this.form.number <= 0 || bool) {
this.$message.warning("请输入内容");
return;
}
if (this.form.type == '点' ) {
this.form.spacing = null
}
this.$sendChanel("ModelSetContent", this.form);
this.$changeComponentShow(".ModelSet", false);
},
},
mounted() {
this.$recvChanel("ModelSetTitle", (text) => {
this.title = text;
console.log(localStorage.getItem("ModelSetContent"));
this.form = JSON.parse(localStorage.getItem("ModelSetContent")) || {
type: "",
spacing: null
};
});
},
};
</script>
<style lang="scss">
.ModelSet {
user-select: none;
width: 100vw;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
.el-input__inner {
background-color: transparent;
color: #fff;
padding: 0;
padding-left: 20px;
}
input::-webkit-inner-spin-button {
appearance: none !important;
}
input::-webkit-outer-spin-button {
appearance: none !important;
}
input[type='number'] {
appearance: textfield;
}
// 解决光标上移
.el-input__inner {
line-height: 1px !important;
}
.el-form-item {
margin-bottom: 10px;
}
.box {
width: 20vw;
display: flex;
flex-direction: column;
position: absolute;
left: 50%;
top: 45%;
transform: translate(-50%, -50%);
color: var(--color-sdk-auxiliary-public);
font-size: 14px;
// z-index: 999999;
background: linear-gradient(0deg, var(--color-sdk-bg-gradual)),
rgba(0, 0, 0, 0.6);
border: 1.5px solid;
border-image: linear-gradient(to bottom, var(--color-sdk-gradual)) 1;
text-align: left;
font-family: "sy-boldface";
.boxHeader {
display: flex;
justify-content: space-between;
font-size: 18px;
line-height: 46px;
padding: 5px 16px 5px 16px;
height: 46px;
.label {
font-family: "Ali-mother-counts-bold";
font-size: 18px;
font-weight: 400;
color: rgba(255, 255, 255, 1);
text-align: left;
text-shadow: 0px 0px 9px rgb(20 118 255);
}
.close-box {
position: absolute;
top: -1px;
right: 0;
height: 30px;
cursor: pointer;
width: 30px;
border-radius: 0 0 0 90%;
overflow: hidden;
.close {
display: block;
width: 100%;
height: 100%;
background: rgba(var(--color-sdk-base-rgb), 1);
opacity: 0.5;
}
i {
font-style: normal;
font-size: 18px;
font-weight: 900;
position: absolute;
top: -13px;
left: 11px;
}
}
}
.boxBody {
flex: auto;
flex-direction: column;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding: 20px;
.el-form--label-top .el-form-item__label {
padding: 0;
}
.el-form-item__label {
color: #fff;
}
.el-textarea__inner {
max-height: 500px;
// overflow: hidden; /* 禁用滚动条 */
resize: none;
/* 禁止用户手动调整文本框的尺寸 */
background-color: transparent;
color: #fff;
border-color: rgba(var(--color-sdk-base-rgb), 0.5) !important;
}
.el-textarea__inner::scrollbar-width {
display: none;
}
.el-button {
background: rgba(var(--color-sdk-base-rgb), 0.2);
border-color: rgba(var(--color-sdk-base-rgb), 0.5) !important;
color: #ffffff;
padding: 8px 16px;
}
.el-button:hover {
border-color: rgba(var(--color-sdk-base-rgb), 1) !important;
}
}
}
}
</style>

View File

@ -3,7 +3,7 @@
<div class="box" v-draggable>
<div class="boxHeader nav">
<span></span>
<span class="boxHeaderTitle"></span>
<span class="boxHeaderTitle">军标选择</span>
<span class="closeBox">
<span @click="close"></span>
</span>
@ -255,7 +255,6 @@ export default {
this.selectedGraphLabelType = "";
// if (this.graphLabelTypeList.length !== 0) {
this.getGraphLabelTypeList();
this.$refs.myTree.setCurrentKey(this.graphLabelTypeList[0].type_id);
// } else {
// }
},
@ -263,7 +262,7 @@ export default {
handleClick() { },
selectImg({ key, url, name }) {
// 军标库图层
let jun_biao_id = "二维军标图层";
// let jun_biao_id = "二维军标图层";
//jun_biao_id: "67bee03d6370434d7e98bcda940e67e7"
// name: "a常用new_37 (23)"
// p_id: "8277e0910d750195b448797616e091ad"
@ -343,7 +342,9 @@ export default {
display: flex;
justify-content: center;
align-items: center;
.el-tree-node:focus>.el-tree-node__content{
background-color:transparent;
}
.box {
// width: 30vw;
// height: 23vw;
@ -389,9 +390,11 @@ export default {
display: inline-block;
width: 230px;
height: 34px;
background: url('../../assets/images/junbiaoTitle.png');
background: url('../../assets/images/titlebg.png');
background-size: 100% 100%;
background-repeat: no-repeat;
text-align: center;
line-height: 34px;
}
i {

View File

@ -120,8 +120,8 @@ export default {
handleClick() {
},
selectImg({ key, url, name, glbUrl }) {
let jun_biao_id = "三维军标图层"
console.log('glbUrlglbUrlglbUrl', glbUrl);
// let jun_biao_id = "三维军标图层"
// console.log('glbUrlglbUrlglbUrl', glbUrl);
//jun_biao_id: "67bee03d6370434d7e98bcda940e67e7"
// name: "a常用new_37 (23)"
// p_id: "8277e0910d750195b448797616e091ad"
@ -169,7 +169,7 @@ export default {
if ([0, 200].includes(res.code)) {
// cusRenderNode(DbOption)
// DbOption.p_id
cusAddNodes(this.treeObj,DbOption.p_id, [node])
cusAddNodes(this.treeObj, DbOption.p_id, [node])
}
});
}

View File

@ -3,7 +3,7 @@
<div class="box" v-draggable>
<div class="boxHeader nav">
<span></span>
<span class="boxHeaderTitle"></span>
<span class="boxHeaderTitle">模型选择</span>
<span>
<i class="el-icon-close" @click="close"></i>
</span>
@ -22,7 +22,7 @@
<template v-if="searchRes.length">
<div class="el-collapse-item__content">
<template v-for="model in searchRes">
<div class="itemBox" @click="selectModel(model)">
<div class="itemBox" @click="editModel(model)">
<div class="imgbox">
<img :src="model.poster_url" alt=""></img>
</div>
@ -36,8 +36,8 @@
<template v-for="item in modelTypeList">
<el-collapse-item :title="item.type_name" :name="item.type_id">
<template v-for="model in item.children">
<!-- -->
<div class="itemBox" @click="editModel(model)" @dblclick="selectModel(model)">
<!-- @dblclick="selectModel(model)" -->
<div class="itemBox" @click="editModel(model)" >
<div class="imgbox" :class="{ selectModel: editModelId == model.model_id }">
<el-image :src="model.poster_url" alt=""></el-image>
<!-- + '?' + Math.random() -->
@ -92,23 +92,16 @@ export default {
},
methods: {
modelSet() {
if (this.editModelData) {
let url = this.editModelData.model_url;
let source_id = this.$md5(new Date().getTime() + this.editModelData.model_name);
console.log(this.editModelData, url, source_id);
let models = new YJ.Obj.BatchModel(window.Earth1, {
id: source_id,
url
}, function (data) {
console.log('data,url,source_id', data, url, source_id);
// this.renderModel(data, this.editModelData);
})
} else {
this.$sendChanel("ModelSetTitle", "默认模型参数设置");
this.$changeComponentShow(".ModelSetBox", true);
this.$recvChanel("ModelSetContent", (data) => {
if (data) {
localStorage.setItem("ModelSetContent", JSON.stringify(data));
}
this.close();
});
},
async renderModel(data, model) {
renderModel(that, data, model) {
// let p_id = '模型图层'
let selectedNode = getSelectedNode(this.treeObj);
let p_id = selectedNode
? nodeType[selectedNode.source_type].allowChildren
@ -116,13 +109,19 @@ export default {
: selectedNode.p_id
: -1;
let z
if (data.positions.length>0) {
data.positions.forEach( async (position,index) => {
let source_id = this.$md5(new Date().getTime() + model.model_name+index);
if (data.type=="面") {
z = data.rotate.z;
}else if (data.type=="线") {
if (data.positions.length >= 100) {
that.$message.warning("添加模型数量过多,请减少数量后!");
return;
}
if (data.positions.length > 0) {
data.positions.forEach(async (position, index) => {
let source_id = this.$md5(new Date().getTime() + model.model_name + index);
if (data.type == "面") {
z = data.rotate;
} else if (data.type == "线") {
z = data.rotate[index];
} else if (data.type == "点") {
z = 0
}
let DbOption = {
source_id,
@ -139,7 +138,7 @@ export default {
url: model.model_url,
maximumScale: 1,
host: getIP(),
rotate:{
rotate: {
x: 0,
y: 0,
z
@ -163,8 +162,35 @@ export default {
}
},
editModel(model) {
this.editModelData = model;
this.editModelId = model.model_id;
let that = this
let form = JSON.parse(localStorage.getItem("ModelSetContent"))
if (form) {
let url = model.model_url;
let source_id = this.$md5(new Date().getTime() + model.model_name);
let op = {}
if (form.spacing) {
op = {
id: source_id,
url,
type: form.type,
spacing: form.spacing
}
} else {
op = {
id: source_id,
url,
type: form.type,
}
}
console.log('opopopopopopopopopopopopopop',op);
let models = new YJ.Obj.BatchModel(window.Earth1, op, function (data) {
that.renderModel(that, data, model);
})
this.close();
} else {
this.modelSet()
}
},
searchContent(val) {
if (val) {
@ -271,7 +297,7 @@ export default {
this.allModels = [];
this.modelTypeList = [];
this.activeName = "";
this.editModelData = null;
// this.editModelData = null;
this.editModelId = null;
this.$changeComponentShow(".modelBox", false);
},
@ -323,9 +349,11 @@ export default {
display: inline-block;
width: 230px;
height: 34px;
background: url('../../assets/images/title.png');
background: url('../../assets/images/titlebg.png');
background-size: 100% 100%;
background-repeat: no-repeat;
text-align: center;
line-height: 34px;
}
i {

View File

@ -0,0 +1,450 @@
<template>
<div class="model666">
<div class="box" v-draggable>
<div class="boxHeader nav">
<span></span>
<span class="boxHeaderTitle">模型选择</span>
<span>
<i class="el-icon-close" @click="close"></i>
</span>
</div>
<div class="boxBody custom_scroll_bar">
<div style="display: flex;justify-content: space-between;">
<el-input size="small" suffix-icon="el-icon-search" placeholder="输入关键字进行过滤" @input="searchContent"
v-model="filterText">
</el-input>
<!--<el-button type="primary" @click="searchContent('type')" size="small">搜类型</el-button>-->
<!--<el-button type="primary" @click="searchContent('junbiao')" size="small">搜军标</el-button>-->
</div>
<template v-if="searchRes.length">
<div class="el-collapse-item__content">
<template v-for="model in searchRes">
<div class="itemBox" @click="selectModel(model)">
<div class="imgbox">
<img :src="model.poster_url" alt=""></img>
</div>
<span>{{ model.model_name }}</span>
</div>
</template>
</div>
</template>
<template v-else>
<el-collapse v-model="activeName" accordion v-if="!filterText" @change="openModel">
<template v-for="item in modelTypeList">
<el-collapse-item :title="item.type_name" :name="item.type_id">
<template v-for="model in item.children">
<!-- -->
<div class="itemBox" @click="selectModel(model)">
<div class="imgbox" :class="{ selectModel: editModelId == model.model_id }">
<el-image :src="model.poster_url" alt=""></el-image>
<!-- + '?' + Math.random() -->
</div>
<span>{{ model.model_name }}</span>
</div>
</template>
<template v-if="!item.children || item.children.length == 0">
<div style="height: 60px;visibility: hidden"></div>
</template>
</el-collapse-item>
</template>
</el-collapse>
</template>
</div>
</div>
</div>
</template>
<script>
import { getModelType } from "../../api/gisAPI";
import {
getSelectedNode,
cusAddNodes,
getNodeData,
nodeType,
} from "../Tree/treeNode";
import { addSource } from "@/api/gisAPI";
import { leftClick } from "../Tree/entityClick";
import { getIP } from "../../utils";
export default {
name: "model",
data() {
return {
treeObj: null,
activeName: "",
filterText: "",
modelTypeList: [],
data: [],
defaultProps: {
children: "children",
label: "label",
},
type: "",
allModels: [],
searchRes: [],
arrModel: [],
editModelData: null,
editModelId: null,
};
},
methods: {
modelSet() {
this.$sendChanel("ModelSetTitle", "默认模型参数设置");
this.$changeComponentShow(".ModelSetBox", true);
this.$recvChanel("ModelSetContent", (data) => {
if (data) {
localStorage.setItem("ModelSetContent", JSON.stringify(data));
}
});
},
renderModel(that, data, model) {
let p_id = '模型图层'
let z
if (data.positions.length >= 100) {
that.$message.warning("添加模型数量过多,请减少数量后!");
return;
}
if (data.positions.length > 0) {
data.positions.forEach(async (position, index) => {
let source_id = this.$md5(new Date().getTime() + model.model_name + index);
if (data.type == "面") {
z = data.rotate;
} else if (data.type == "线") {
z = data.rotate[index];
} else if (data.type == "点") {
z = 0
}
let DbOption = {
source_id,
source_name: model.model_name + index,
source_type: "model",
p_id,
};
let option = {
id: source_id,
position,
name: model.model_name + index,
show: true,
scale: 1,
url: model.model_url,
maximumScale: 1,
host: getIP(),
rotate: {
x: 0,
y: 0,
z
}
};
let Model = await new YJ.Obj.Model(window.Earth1, option);
window._entityMap.set(option.id, Model);
Model.onClick = () => {
leftClick(node);
};
let detailOption = JSON.parse(JSON.stringify(Model.options));
detailOption.url = model.model_id + ".glb";
let node = getNodeData(DbOption, detailOption);
addSource(node).then((res) => {
if ([0, 200].includes(res.code)) {
// cusRenderNode(DbOption) DbOption.p_id
cusAddNodes(this.treeObj, p_id, [node]);
}
});
});
}
},
editModel(model) {
let that = this
let form = JSON.parse(localStorage.getItem("ModelSetContent"))
if (form) {
let url = model.model_url;
let source_id = this.$md5(new Date().getTime() + model.model_name);
let op = {}
if (form.spacing) {
op = {
id: source_id,
url,
type: form.type,
spacing: form.spacing
}
} else {
op = {
id: source_id,
url,
type: form.type,
}
}
console.log('opopopopopopopopopopopopopop',op);
let models = new YJ.Obj.BatchModel(window.Earth1, op, function (data) {
that.renderModel(that, data, model);
})
this.close();
} else {
this.modelSet()
}
},
searchContent(val) {
if (val) {
this.searchRes = this.allModels.filter((item) => {
return item.model_name.indexOf(val) !== -1;
});
} else {
this.searchRes = [];
}
},
selectModel(model) {
let model_p_id = "模型图层"
console.log("选中了模型", model, this.type);
this.close();
if (this.type == "rightMenu") {
this.$sendChanel("selectModelg", model);
} else if (this.type == "rightMenuChange") {
this.$sendChanel("selectModelChangeg", model);
} else {
let selectedNode = getSelectedNode(this.treeObj);
new YJ.Draw.DrawPoint(window.Earth1).start(async (err, position) => {
if (err == null || err != false) {
let source_id = this.$md5(new Date().getTime() + model.model_name);
let p_id = selectedNode
? nodeType[selectedNode.source_type].allowChildren
? selectedNode.source_id
: selectedNode.p_id
: -1;
let DbOption = {
source_id,
source_name: model.model_name,
source_type: "model",
p_id,
};
let option = {
id: source_id,
position,
name: model.model_name,
show: true,
scale: 1,
url: model.model_url,
maximumScale: 1,
host: getIP(),
};
let Model = await new YJ.Obj.Model(window.Earth1, option);
window._entityMap.set(option.id, Model);
Model.onClick = () => {
leftClick(node);
};
let detailOption = JSON.parse(JSON.stringify(Model.options));
detailOption.url = model.model_id + ".glb";
let node = getNodeData(DbOption, detailOption);
console.log(node);
addSource(node).then((res) => {
if ([0, 200].includes(res.code)) {
// cusRenderNode(DbOption) DbOption.p_id
cusAddNodes(this.treeObj, DbOption.p_id, [node]);
}
});
}
});
}
},
openModel(val) {
if (val) {
let arr = this.arrModel
.filter((item) => item.type_id == val)
.map((item) => item.children)
.flat();
this.modelTypeList.forEach((item) => {
if (item.type_id == val) {
item.children = arr;
}
});
}
},
open(key = "second") {
this.searchRes = [];
this.allModels = [];
this.modelTypeList = [];
this.arrModel = [];
this.filterText = "";
this.type = key;
getModelType((res) => {
console.log('resresres',res);
if (res.list) {
this.arrModel = res.list;
this.modelTypeList = res.list.map(({ children, ...rest }) => rest);
this.modelTypeList[0].children = res.list[0].children;
console.log(this.modelTypeList);
res.list.forEach((item) => {
if (item.children)
this.allModels = this.allModels.concat(item.children);
});
// this.modelTotal = res.total.list[0].length
}
});
},
handleNodeClick(data) {
console.log(data);
},
close() {
this.searchRes = [];
this.allModels = [];
this.modelTypeList = [];
this.activeName = "";
// this.editModelData = null;
this.editModelId = null;
this.$changeComponentShow(".modelBoxg", false);
},
},
mounted() {
// this.open()
this.$recvChanel("getTreeObj", (treeObj) => {
this.treeObj = treeObj;
// this.$removeChanel("getTreeObj")
});
},
};
</script>
<style lang="scss">
.model666 {
user-select: none;
width: 100vw;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
.box {
width: 30vw;
height: 21vw;
display: flex;
flex-direction: column;
position: absolute;
left: 50%;
top: 45%;
transform: translate(-50%, -50%);
margin-top: 16px;
background: linear-gradient(180deg, rgba(0, 255, 255, 0.2) 0%, rgba(0, 255, 255, 0) 100%), rgba(0, 0, 0, 0.6);
padding: 10px;
border: 1.5px solid rgba(0, 255, 255, 1);
.boxHeader {
display: flex;
justify-content: space-between;
color: #fff;
font-size: 18px;
padding: 0.5vh 0;
padding-top: 6px;
padding-bottom: 22px;
.boxHeaderTitle {
display: inline-block;
width: 230px;
height: 34px;
background: url('../../assets/images/titlebg.png');
background-size: 100% 100%;
background-repeat: no-repeat;
text-align: center;
line-height: 34px;
}
i {
cursor: pointer;
}
}
.boxBody {
height: 500px;
flex: auto;
overflow-y: auto;
.modelSet {
.el-button {
background: rgba(var(--color-sdk-base-rgb), 0.2);
border: 1px solid rgba(var(--color-sdk-base-rgb), 0.5);
}
}
.selectModel {
border: 1px solid red !important;
}
.itemBox {
width: 20%;
display: flex;
flex-wrap: wrap;
flex-direction: column;
align-items: center;
color: #fff;
cursor: pointer;
.imgbox {
width: 100px;
height: 100px;
padding: 5px;
background: url('../../assets/images/modelbg.png');
background-size: 100% 100%;
background-repeat: no-repeat;
box-sizing: border-box;
text-align: center;
border: 1px solid rgba(0, 0, 0, 0);
}
img {
height: 90px;
width: 90px;
vertical-align: middle;
}
span {
text-align: center;
width: 100px;
overflow: hidden;
/* 确保超出容器的文本被裁剪 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示文本超出 */
}
}
.el-collapse-item__content {
padding-top: 20px;
display: flex;
flex-wrap: wrap;
}
.el-input {
width: 50%;
margin-bottom: 18px;
}
.el-input__inner {
background-color: transparent;
border: 1px solid rgba(0, 255, 255, 0.5);
color: #fff;
}
.el-input__inner::placeholder {
color: rgba(173, 241, 255, 1);
}
}
.boxBody::-webkit-scrollbar {
background: transparent;
}
.boxBody::-webkit-scrollbar-thumb {
background: rgba(0, 255, 255, 1) !important;
}
.boxBody::-webkit-scrollbar-track {
background: rgba(0, 51, 51, .1) !important;
border-radius: 10px;
}
}
}
</style>

View File

@ -51,14 +51,14 @@ export default {
setList: [
//北斗图标
// 标准版本
// {
// id: 0,
// index: 0,
// icon: "locate",
// className: "header_public",
// dbcallback: this.flyTo,
// callback: this.locate,
// },
{
id: 0,
index: 0,
icon: "locate",
className: "header_public",
dbcallback: this.flyTo,
callback: this.locate,
},
{
id: 1,
index: 1,

View File

@ -177,6 +177,7 @@ class viewGlbByEarth {
baseLayerPicker: false,
sceneModePicker: false,
animation: false,
geocoder: false
});
const scene = this.viewer.scene;
/*this.viewer.scene.screenSpaceCameraController.tiltEventTypes = [

View File

@ -62,6 +62,7 @@
<textModel class="textModelBox absolute zIndex999"></textModel>
<adddirectory class="adddirectoryBox absolute zIndex999"></adddirectory>
<model ref="model" class="modelBox absolute zIndex999"></model>
<modelg ref="modelg" class="modelBoxg absolute zIndex999"></modelg>
<modelSelect ref="modelSelect" class="modelSelectBox absolute zIndex999"></modelSelect>
<bimInfo ref="bimInfo" class="bimInfoBox absolute zIndex99"></bimInfo>
<echartsTotal ref="echartsTotal" class="echartsTotalBox absolute zIndex99"></echartsTotal>
@ -255,6 +256,8 @@
<excelSet ref="excelSet" class="excelSetBox absolute zIndex99"></excelSet>
<!-- tufu_select -->
<tufuSelect style="top: 115px;right: 50px;" class="tufuSelect absolute zIndex99"></tufuSelect>
<!-- modelSet -->
<ModelSet class="ModelSetBox absolute"></ModelSet>
</div>
</template>
@ -276,8 +279,10 @@ import flyToLocation from "@/components/dialog/flyToLocation.vue";
import junbiao from "@/components/dialog/junbiao.vue";
import junbiao3d from "@/components/dialog/junbiao3d.vue";
import model from "@/components/dialog/model.vue";
import modelg from "@/components/dialog/modelg.vue";
import vrModel from "@/components/dialog/vrModel.vue";
import textModel from "@/components/dialog/textModel.vue";
import ModelSet from "@/components/dialog/ModelSet.vue";
import modelSelect from "@/components/dialog/modelSelect.vue";
import echartsTotal from "@/components/dialog/echartsTotal.vue";
import bimInfo from "@/components/dialog/bimInfo.vue";
@ -369,7 +374,9 @@ export default {
// New,
// WangEditor
excelSet,
tufuSelect
tufuSelect,
ModelSet,
modelg
},
data() {
@ -1096,12 +1103,17 @@ export default {
.videoStop,
.adddirectoryBox,
.excelSetBox,
.tufuSelect {
.tufuSelect,
.ModelSetBox,
.modelBoxg{
display: none;
}
.selectImgBox{
z-index: 9999999;
}
.ModelSetBox{
z-index: 10000;
}
.scene {
//width: 5vw;
//height: 5vw;

View File

@ -252,7 +252,7 @@ export default {
selectedService: "接口服务",
serviceOptions: [
{ name: "接口服务" },
// { name: "北斗串口" }
{ name: "北斗串口" }
],
servVal: "单机",
gpsVal: "",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -3122,9 +3122,9 @@
/* 文本框 */
.popup-textarea{
/* width: 212px; */
width: 161.6px;
width: 161px;
/* height: 154px; */
height: 119.2px;
height: 119px;
display: block;
pointer-events: none;
position: absolute;
@ -3134,6 +3134,8 @@
padding: 5px 5px 0px 5px;
}
.popup-textarea textarea{
width: 158px;
height: 95px;
background-color: unset!important;
border: unset!important;
color: #fff;
@ -3491,6 +3493,7 @@
cursor: e-resize;
background-color: #d3d3d3;
user-select: none;
z-index: 1;
}
.cesium-performanceDisplay-defaultContainer {
@ -3625,6 +3628,7 @@
height: 100%;
display: flex;
flex-direction: column;
backdrop-filter: blur(2px);
}
.billboard-attribute-box .DIV-cy-tabs .DIV-cy-tab-top .DIV-cy-tab-pane-title {
@ -3760,3 +3764,60 @@
.billboard-attribute-box .table .table-body .tr:first-child {
border-top: none;
}
/* 自定义提示 */
#YJ-custom-message {
/* 固定在顶部中央 */
position: fixed;
top: 0;
left: 50%;
transform: translate(-50%, 0%);
/* 初始位置在屏幕顶部外 */
/* 样式美化 */
display: flex;
border-radius: 4px;
font-size: 14px;
padding: 15px 20px;
width: 380px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
z-index: 9999999;
/* 动画定义 */
animation: YJ-custom-message-slideDown 0.5s forwards,
YJ-custom-message-fadeOut 0.5s 1500ms forwards;
}
#YJ-custom-message i {
margin: 2px 10px 0 0;
display: flex;
align-items: center;
width: 16px;
}
#YJ-custom-message.success {
background-color: #f0f9eb;
color: rgb(82, 196, 26);
}
#YJ-custom-message.warning {
background-color: #fdf6ec;
color: #e6a23c;
}
/* 滑入动画 */
@keyframes YJ-custom-message-slideDown {
to {
top: 20px;
/* 移动到屏幕顶部 */
}
}
/* 淡出动画 - 1500ms后执行 */
@keyframes YJ-custom-message-fadeOut {
to {
opacity: 0;
top: -200px
/* 移回顶部外 */
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +0,0 @@
2025-08-21 09:39:22.595 [INFO] {dcf550b68ea45d18b387471271b7d773} gps.go:101: 查询串口数据
2025-08-21 09:39:22.597 [INFO] {842772b68ea45d18b4874712ab1b6925} gps.go:105: 没有查询到串口数据
2025-08-21 19:35:44.669 [INFO] {986d1fe019c55d18d309df3ac18912f0} gps.go:101: 查询串口数据
2025-08-21 19:35:44.670 [INFO] {70032fe019c55d18d409df3afa90f681} gps.go:105: 没有查询到串口数据
2025-08-21 19:41:49.876 [INFO] {88d618e86ec55d186628232887bd2331} gps.go:101: 查询串口数据
2025-08-21 19:41:49.876 [INFO] {24192be86ec55d18672823280ba6422f} gps.go:105: 没有查询到串口数据

View File

@ -1,8 +0,0 @@
2025-08-22 09:10:38.368 [INFO] {7099eed191f15d184012250fe3558563} gps.go:101: 查询串口数据
2025-08-22 09:10:38.369 [INFO] {e05ec6d391f15d184112250f0cbea3e9} gps.go:105: 没有查询到串口数据
2025-08-22 09:15:21.612 [INFO] {c42956c6d3f15d180ee1f90d279c349c} gps.go:101: 查询串口数据
2025-08-22 09:15:21.613 [INFO] {d8ce65c6d3f15d180fe1f90d7cdbcaa9} gps.go:105: 没有查询到串口数据
2025-08-22 09:18:14.767 [INFO] {a8983417fcf15d186b67d37c08c0f081} gps.go:101: 查询串口数据
2025-08-22 09:18:14.768 [INFO] {e83e4417fcf15d186c67d37cde1e0dcf} gps.go:105: 没有查询到串口数据
2025-08-22 09:59:06.098 [INFO] {d475dfd536f45d186cd8bd20f836b128} gps.go:101: 查询串口数据
2025-08-22 09:59:06.099 [INFO] {c433f0d536f45d186dd8bd20df6afc69} gps.go:105: 没有查询到串口数据

View File

@ -0,0 +1,4 @@
2025-08-27 00:15:42.888 [INFO] {24b260d9475d5f1867330d7f0cd9bef1} gps.go:101: 查询串口数据
2025-08-27 00:15:42.889 [INFO] {80209fda475d5f1868330d7fcadeefb7} gps.go:105: 没有查询到串口数据
2025-08-27 18:36:00.802 [INFO] {fc09d6d852995f18d3e2fb476b15e7cb} gps.go:101: 查询串口数据
2025-08-27 18:36:00.803 [INFO] {c846f0d852995f18d4e2fb47be7f14e9} gps.go:105: 没有查询到串口数据

View File

@ -0,0 +1,4 @@
2025-08-28 14:28:39.651 [INFO] {346464ee67da5f18feb2560d2f11e5e9} gps.go:101: 查询串口数据
2025-08-28 14:28:39.652 [INFO] {3c6dabf067da5f18ffb2560d5df92233} gps.go:105: 没有查询到串口数据
2025-08-28 14:36:04.102 [INFO] {3c7be76bcfda5f188e27a77ae33fd23d} gps.go:101: 查询串口数据
2025-08-28 14:36:04.103 [INFO] {d8570a6ccfda5f188f27a77ae1cba623} gps.go:105: 没有查询到串口数据

Binary file not shown.