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" !addincludedir "G:\YUANJIE\4.0\build"
!include "G:\YUANJIE\4.0\installer.nsh" !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" !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-BcnJuD\1-messages.nsh"
!include "C:\Users\YC\AppData\Local\Temp\t-P7VRbu\0-messages.nsh" !include "C:\Users\YC\AppData\Local\Temp\t-BcnJuD\0-messages.nsh"
Var newStartMenuLink Var newStartMenuLink
Var oldStartMenuLink Var oldStartMenuLink

View File

@ -12,8 +12,8 @@ extraFiles:
to: ./ffplay to: ./ffplay
- from: ./build/icons/ - from: ./build/icons/
to: ./icons to: ./icons
productName: 实景三维电子沙盘系统 productName: 便携式应急指挥电子沙盘系统
appId: org.dzsp_shijing_offline_Y_save appId: org.dzsp_yingjizhihui_offline_Y_save
files: files:
- filter: - filter:
- dist/electron/**/* - dist/electron/**/*
@ -29,12 +29,12 @@ dmg:
mac: mac:
icon: build/icons/icon.icns icon: build/icons/icon.icns
win: win:
icon: build/icons/earth.ico icon: build/icons/81.ico
linux: linux:
target: deb target: deb
icon: build/icons/81.png icon: build/icons/81.png
desktop: desktop:
Icon: /opt/实景三维电子沙盘系统/icons/earth.png Icon: /opt/便携式应急指挥电子沙盘系统/icons/81.png
executableArgs: executableArgs:
- '--no-sandbox' - '--no-sandbox'
nsis: 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 !macro preInit
SetRegView 64 SetRegView 64
WriteRegExpandStr HKLM "${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_shijing_offline_Y_save" WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "D:\ProgramFiles\dzsp_yingjizhihui_offline_Y_save"
#writeUninstaller $INSTDIR\uninstaller.exe #writeUninstaller $INSTDIR\uninstaller.exe
SetRegView 32 SetRegView 32
WriteRegExpandStr HKLM "${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_shijing_offline_Y_save" WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "D:\ProgramFiles\dzsp_yingjizhihui_offline_Y_save"
!macroend !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; height: 32px !important;
} }
.modelBox .el-collapse-item__header { .modelBox .el-collapse-item__header,
.modelBoxg .el-collapse-item__header {
padding-left: 10px; padding-left: 10px;
background: transparent !important; background: transparent !important;
} }
.modelBox .el-collapse-item__content { .modelBox .el-collapse-item__content,
.modelBoxg .el-collapse-item__content
{
padding-left: 15px; padding-left: 15px;
padding-bottom: 0; padding-bottom: 0;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
.junbiao .el-tree { .junbiao .el-tree {
height: 100%; height: 100%;
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -679,13 +679,13 @@ const tree = {
}); });
return; 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); 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; entity.show = status;
if (status) {
return; // 如果是这些类型且status为true直接返回不执行后续逻辑
}
} }
} }
if (node.source_type == "node" || node.source_type == "element") { if (node.source_type == "node" || node.source_type == "element") {

View File

@ -211,8 +211,8 @@ export default {
source_id, source_id,
source_name: option.source_name, source_name: option.source_name,
source_type: option.source_type, source_type: option.source_type,
p_id: findParentId(this.treeObj), // p_id: findParentId(this.treeObj),
// p_id:biaohui_id, p_id:biaohui_id,
}; };
let draw let draw
if (option.source_type == "curve") { if (option.source_type == "curve") {
@ -262,7 +262,7 @@ export default {
if ([0, 200].includes(res.code)) { if ([0, 200].includes(res.code)) {
cusRenderNode(DbOption); cusRenderNode(DbOption);
// DbOption.p_id // DbOption.p_id
cusAddNodes(this.treeObj, DbOption.p_id, [node]); cusAddNodes(this.treeObj,biaohui_id, [node]);
} }
}); });
} }
@ -284,7 +284,7 @@ export default {
}, },
// 贴地文字 // 贴地文字
groundText() { groundText() {
// let biaohui_id = "标绘图层"; let biaohui_id = "标绘图层";
let that = this; let that = this;
this.$sendChanel("textTetlie", "贴地文字"); this.$sendChanel("textTetlie", "贴地文字");
this.$changeComponentShow(".textModelBox", true); this.$changeComponentShow(".textModelBox", true);
@ -307,7 +307,7 @@ export default {
source_id, source_id,
source_name: data.text, source_name: data.text,
source_type: "groundText", source_type: "groundText",
p_id: findParentId(that.treeObj), p_id: biaohui_id,
}; };
let detailOption = JSON.parse(JSON.stringify(option)); let detailOption = JSON.parse(JSON.stringify(option));
@ -321,7 +321,7 @@ export default {
addSource(node).then((res) => { addSource(node).then((res) => {
if ([0, 200].includes(res.code)) { if ([0, 200].includes(res.code)) {
// cusRenderNode(DbOption) // cusRenderNode(DbOption)
cusAddNodes(that.treeObj,DbOption.p_id, [node]); cusAddNodes(that.treeObj,biaohui_id, [node]);
} }
}); });
} }
@ -331,7 +331,7 @@ export default {
}, },
// 立体文字 // 立体文字
standText() { standText() {
// let biaohui_id = "标绘图层"; let biaohui_id = "标绘图层";
let that = this; let that = this;
this.$sendChanel("textTetlie", "立体文字"); this.$sendChanel("textTetlie", "立体文字");
this.$changeComponentShow(".textModelBox", true); this.$changeComponentShow(".textModelBox", true);
@ -353,7 +353,7 @@ export default {
source_id, source_id,
source_name: data.text, source_name: data.text,
source_type: "standText", source_type: "standText",
p_id: findParentId(that.treeObj), p_id: biaohui_id,
}; };
let detailOption = JSON.parse(JSON.stringify(option)); let detailOption = JSON.parse(JSON.stringify(option));
let node = getNodeData(DbOption, detailOption); let node = getNodeData(DbOption, detailOption);
@ -361,7 +361,7 @@ export default {
addSource(node).then((res) => { addSource(node).then((res) => {
if ([0, 200].includes(res.code)) { if ([0, 200].includes(res.code)) {
// cusRenderNode(DbOption) // cusRenderNode(DbOption)
cusAddNodes(that.treeObj, DbOption.p_id, [node]); cusAddNodes(that.treeObj, biaohui_id, [node]);
} }
}); });
} }
@ -381,7 +381,7 @@ export default {
source_id, source_id,
source_name: "扇形", source_name: "扇形",
source_type: "sector", source_type: "sector",
p_id: findParentId(this.treeObj), p_id: biaohui_id,
}; };
console.log("params", params); console.log("params", params);
@ -399,7 +399,7 @@ export default {
addSource(node).then((res) => { addSource(node).then((res) => {
if ([0, 200].includes(res.code)) { if ([0, 200].includes(res.code)) {
cusRenderNode(DbOption) cusRenderNode(DbOption)
cusAddNodes(this.treeObj, DbOption.p_id, [node]); cusAddNodes(this.treeObj, biaohui_id, [node]);
} }
}); });
} }
@ -417,7 +417,7 @@ export default {
source_id, source_id,
source_name: "椭圆", source_name: "椭圆",
source_type: "ellipse", source_type: "ellipse",
p_id: findParentId(this.treeObj), p_id: biaohui_id,
}; };
let option = { let option = {
id: source_id, id: source_id,
@ -432,7 +432,7 @@ export default {
addSource(node).then((res) => { addSource(node).then((res) => {
if ([0, 200].includes(res.code)) { if ([0, 200].includes(res.code)) {
cusRenderNode(DbOption) 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="box" v-draggable>
<div class="boxHeader nav"> <div class="boxHeader nav">
<span></span> <span></span>
<span class="boxHeaderTitle"></span> <span class="boxHeaderTitle">军标选择</span>
<span class="closeBox"> <span class="closeBox">
<span @click="close"></span> <span @click="close"></span>
</span> </span>
@ -255,7 +255,6 @@ export default {
this.selectedGraphLabelType = ""; this.selectedGraphLabelType = "";
// if (this.graphLabelTypeList.length !== 0) { // if (this.graphLabelTypeList.length !== 0) {
this.getGraphLabelTypeList(); this.getGraphLabelTypeList();
this.$refs.myTree.setCurrentKey(this.graphLabelTypeList[0].type_id);
// } else { // } else {
// } // }
}, },
@ -263,7 +262,7 @@ export default {
handleClick() { }, handleClick() { },
selectImg({ key, url, name }) { selectImg({ key, url, name }) {
// 军标库图层 // 军标库图层
let jun_biao_id = "二维军标图层"; // let jun_biao_id = "二维军标图层";
//jun_biao_id: "67bee03d6370434d7e98bcda940e67e7" //jun_biao_id: "67bee03d6370434d7e98bcda940e67e7"
// name: "a常用new_37 (23)" // name: "a常用new_37 (23)"
// p_id: "8277e0910d750195b448797616e091ad" // p_id: "8277e0910d750195b448797616e091ad"
@ -343,7 +342,9 @@ export default {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
.el-tree-node:focus>.el-tree-node__content{
background-color:transparent;
}
.box { .box {
// width: 30vw; // width: 30vw;
// height: 23vw; // height: 23vw;
@ -389,9 +390,11 @@ export default {
display: inline-block; display: inline-block;
width: 230px; width: 230px;
height: 34px; height: 34px;
background: url('../../assets/images/junbiaoTitle.png'); background: url('../../assets/images/titlebg.png');
background-size: 100% 100%; background-size: 100% 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
text-align: center;
line-height: 34px;
} }
i { i {

View File

@ -120,8 +120,8 @@ export default {
handleClick() { handleClick() {
}, },
selectImg({ key, url, name, glbUrl }) { selectImg({ key, url, name, glbUrl }) {
let jun_biao_id = "三维军标图层" // let jun_biao_id = "三维军标图层"
console.log('glbUrlglbUrlglbUrl', glbUrl); // console.log('glbUrlglbUrlglbUrl', glbUrl);
//jun_biao_id: "67bee03d6370434d7e98bcda940e67e7" //jun_biao_id: "67bee03d6370434d7e98bcda940e67e7"
// name: "a常用new_37 (23)" // name: "a常用new_37 (23)"
// p_id: "8277e0910d750195b448797616e091ad" // p_id: "8277e0910d750195b448797616e091ad"
@ -169,7 +169,7 @@ export default {
if ([0, 200].includes(res.code)) { if ([0, 200].includes(res.code)) {
// cusRenderNode(DbOption) // cusRenderNode(DbOption)
// DbOption.p_id // 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="box" v-draggable>
<div class="boxHeader nav"> <div class="boxHeader nav">
<span></span> <span></span>
<span class="boxHeaderTitle"></span> <span class="boxHeaderTitle">模型选择</span>
<span> <span>
<i class="el-icon-close" @click="close"></i> <i class="el-icon-close" @click="close"></i>
</span> </span>
@ -22,7 +22,7 @@
<template v-if="searchRes.length"> <template v-if="searchRes.length">
<div class="el-collapse-item__content"> <div class="el-collapse-item__content">
<template v-for="model in searchRes"> <template v-for="model in searchRes">
<div class="itemBox" @click="selectModel(model)"> <div class="itemBox" @click="editModel(model)">
<div class="imgbox"> <div class="imgbox">
<img :src="model.poster_url" alt=""></img> <img :src="model.poster_url" alt=""></img>
</div> </div>
@ -36,8 +36,8 @@
<template v-for="item in modelTypeList"> <template v-for="item in modelTypeList">
<el-collapse-item :title="item.type_name" :name="item.type_id"> <el-collapse-item :title="item.type_name" :name="item.type_id">
<template v-for="model in item.children"> <template v-for="model in item.children">
<!-- --> <!-- @dblclick="selectModel(model)" -->
<div class="itemBox" @click="editModel(model)" @dblclick="selectModel(model)"> <div class="itemBox" @click="editModel(model)" >
<div class="imgbox" :class="{ selectModel: editModelId == model.model_id }"> <div class="imgbox" :class="{ selectModel: editModelId == model.model_id }">
<el-image :src="model.poster_url" alt=""></el-image> <el-image :src="model.poster_url" alt=""></el-image>
<!-- + '?' + Math.random() --> <!-- + '?' + Math.random() -->
@ -92,37 +92,36 @@ export default {
}, },
methods: { methods: {
modelSet() { modelSet() {
if (this.editModelData) { this.$sendChanel("ModelSetTitle", "默认模型参数设置");
let url = this.editModelData.model_url; this.$changeComponentShow(".ModelSetBox", true);
let source_id = this.$md5(new Date().getTime() + this.editModelData.model_name); this.$recvChanel("ModelSetContent", (data) => {
console.log(this.editModelData, url, source_id); if (data) {
let models = new YJ.Obj.BatchModel(window.Earth1, { localStorage.setItem("ModelSetContent", JSON.stringify(data));
id: source_id, }
url });
}, function (data) {
console.log('data,url,source_id', data, url, source_id);
// this.renderModel(data, this.editModelData);
})
} else {
}
this.close();
}, },
async renderModel(data, model) { renderModel(that, data, model) {
// let p_id = '模型图层'
let selectedNode = getSelectedNode(this.treeObj); let selectedNode = getSelectedNode(this.treeObj);
let p_id = selectedNode let p_id = selectedNode
? nodeType[selectedNode.source_type].allowChildren ? nodeType[selectedNode.source_type].allowChildren
? selectedNode.source_id ? selectedNode.source_id
: selectedNode.p_id : selectedNode.p_id
: -1; : -1;
let z let z
if (data.positions.length>0) { if (data.positions.length >= 100) {
data.positions.forEach( async (position,index) => { that.$message.warning("添加模型数量过多,请减少数量后!");
let source_id = this.$md5(new Date().getTime() + model.model_name+index); return;
if (data.type=="面") { }
z = data.rotate.z; if (data.positions.length > 0) {
}else if (data.type=="线") { 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]; z = data.rotate[index];
} else if (data.type == "点") {
z = 0
} }
let DbOption = { let DbOption = {
source_id, source_id,
@ -139,7 +138,7 @@ export default {
url: model.model_url, url: model.model_url,
maximumScale: 1, maximumScale: 1,
host: getIP(), host: getIP(),
rotate:{ rotate: {
x: 0, x: 0,
y: 0, y: 0,
z z
@ -163,8 +162,35 @@ export default {
} }
}, },
editModel(model) { editModel(model) {
this.editModelData = model; let that = this
this.editModelId = model.model_id; 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) { searchContent(val) {
if (val) { if (val) {
@ -271,7 +297,7 @@ export default {
this.allModels = []; this.allModels = [];
this.modelTypeList = []; this.modelTypeList = [];
this.activeName = ""; this.activeName = "";
this.editModelData = null; // this.editModelData = null;
this.editModelId = null; this.editModelId = null;
this.$changeComponentShow(".modelBox", false); this.$changeComponentShow(".modelBox", false);
}, },
@ -323,9 +349,11 @@ export default {
display: inline-block; display: inline-block;
width: 230px; width: 230px;
height: 34px; height: 34px;
background: url('../../assets/images/title.png'); background: url('../../assets/images/titlebg.png');
background-size: 100% 100%; background-size: 100% 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
text-align: center;
line-height: 34px;
} }
i { 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: [ setList: [
//北斗图标 //北斗图标
// 标准版本 // 标准版本
// { {
// id: 0, id: 0,
// index: 0, index: 0,
// icon: "locate", icon: "locate",
// className: "header_public", className: "header_public",
// dbcallback: this.flyTo, dbcallback: this.flyTo,
// callback: this.locate, callback: this.locate,
// }, },
{ {
id: 1, id: 1,
index: 1, index: 1,

View File

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

View File

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

View File

@ -252,7 +252,7 @@ export default {
selectedService: "接口服务", selectedService: "接口服务",
serviceOptions: [ serviceOptions: [
{ name: "接口服务" }, { name: "接口服务" },
// { name: "北斗串口" } { name: "北斗串口" }
], ],
servVal: "单机", servVal: "单机",
gpsVal: "", 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{ .popup-textarea{
/* width: 212px; */ /* width: 212px; */
width: 161.6px; width: 161px;
/* height: 154px; */ /* height: 154px; */
height: 119.2px; height: 119px;
display: block; display: block;
pointer-events: none; pointer-events: none;
position: absolute; position: absolute;
@ -3134,6 +3134,8 @@
padding: 5px 5px 0px 5px; padding: 5px 5px 0px 5px;
} }
.popup-textarea textarea{ .popup-textarea textarea{
width: 158px;
height: 95px;
background-color: unset!important; background-color: unset!important;
border: unset!important; border: unset!important;
color: #fff; color: #fff;
@ -3491,6 +3493,7 @@
cursor: e-resize; cursor: e-resize;
background-color: #d3d3d3; background-color: #d3d3d3;
user-select: none; user-select: none;
z-index: 1;
} }
.cesium-performanceDisplay-defaultContainer { .cesium-performanceDisplay-defaultContainer {
@ -3625,6 +3628,7 @@
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
backdrop-filter: blur(2px);
} }
.billboard-attribute-box .DIV-cy-tabs .DIV-cy-tab-top .DIV-cy-tab-pane-title { .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 { .billboard-attribute-box .table .table-body .tr:first-child {
border-top: none; 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.