Merge branch 'zyl' of http://xny.yj-3d.com:3000/zhouyulong/electron-4 into zyl
@ -1,13 +1,11 @@
|
|||||||
server:
|
server:
|
||||||
host: 127.0.0.1
|
host: 192.168.110.25
|
||||||
port: 8848
|
port: 8848
|
||||||
|
|
||||||
sdk:
|
sdk:
|
||||||
port: 8888
|
port: 8888
|
||||||
|
|
||||||
spring:
|
spring:
|
||||||
main:
|
main:
|
||||||
banner-mode: off
|
banner-mode: false
|
||||||
allow-bean-definition-overriding: true
|
allow-bean-definition-overriding: true
|
||||||
datasource:
|
datasource:
|
||||||
active: sqlite
|
active: sqlite
|
||||||
@ -20,7 +18,6 @@ spring:
|
|||||||
multipart:
|
multipart:
|
||||||
max-file-size: 1024MB
|
max-file-size: 1024MB
|
||||||
max-request-size: 10240MB
|
max-request-size: 10240MB
|
||||||
|
|
||||||
sa-token:
|
sa-token:
|
||||||
token-name: Authorization
|
token-name: Authorization
|
||||||
timeout: 21600
|
timeout: 21600
|
||||||
@ -29,25 +26,20 @@ sa-token:
|
|||||||
is-share: true
|
is-share: true
|
||||||
token-style: random-64
|
token-style: random-64
|
||||||
is-print: false
|
is-print: false
|
||||||
|
|
||||||
mybatis-plus:
|
mybatis-plus:
|
||||||
global-config:
|
global-config:
|
||||||
banner: false
|
banner: false
|
||||||
|
|
||||||
encrypt:
|
encrypt:
|
||||||
aes:
|
aes:
|
||||||
key: "ah62ks8dj7dh3yd6"
|
key: ah62ks8dj7dh3yd6
|
||||||
|
|
||||||
file:
|
file:
|
||||||
upload:
|
upload:
|
||||||
path: upload
|
path: upload
|
||||||
|
|
||||||
graphhopper:
|
graphhopper:
|
||||||
graphLocation: ./target/graphhopper
|
graphLocation: ./target/graphhopper
|
||||||
profiles:
|
profiles:
|
||||||
- car
|
- car
|
||||||
- bike
|
- bike
|
||||||
- foot
|
- foot
|
||||||
|
|
||||||
sync:
|
sync:
|
||||||
folder: E:\\地理资源
|
folder: E:\\地理资源
|
||||||
BIN
resources/java/app/lib/proj.db
Normal file
1
resources/java/app/license/yjearth.lic
Normal file
@ -0,0 +1 @@
|
|||||||
|
41b/ujShRZRf9Aa433FD3uyIZuxWSSqXWXlc2dyQfJ75ED0HNbadcdsPF5CaMuJ6K2c3U/eBcWiXXw090/O7M5mJze/MavZ4dhk4dZIukMhEma6Itmejr90pn+gFvssT+K8dBcDoUM+RDY1LtwJQK1Q7xhv64OC8hJEz9SZwU6fZUtqT1yBvSl/eVexWpCiXlWycIXbMRGZlcnP79n+JFfbgQ9cOYdBaVOBJnQkRxNy3PEo7PUvWgPQrpixYxT9ynjLJChAg7DYvIou8Zy16Ag==
|
||||||
BIN
src/renderer/public/icon/clt.png
Normal file
|
After Width: | Height: | Size: 346 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 348 B |
BIN
src/renderer/public/icon/jct.png
Normal file
|
After Width: | Height: | Size: 361 B |
BIN
src/renderer/public/icon/json.png
Normal file
|
After Width: | Height: | Size: 321 B |
|
Before Width: | Height: | Size: 995 B After Width: | Height: | Size: 282 B |
BIN
src/renderer/public/icon/kmz.png
Normal file
|
After Width: | Height: | Size: 353 B |
BIN
src/renderer/public/icon/mbtiles.png
Normal file
|
After Width: | Height: | Size: 340 B |
BIN
src/renderer/public/icon/pak.png
Normal file
|
After Width: | Height: | Size: 349 B |
|
Before Width: | Height: | Size: 297 B After Width: | Height: | Size: 362 B |
@ -1,10 +1,6 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
|
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
|
||||||
<defs>
|
<defs>
|
||||||
<style>
|
<style>
|
||||||
.cls-1 {
|
|
||||||
fill: aqua;
|
|
||||||
fill-rule: evenodd;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
</defs>
|
</defs>
|
||||||
<path id="形状_11" data-name="形状 11" class="cls-1" d="M26.129,12.422a1.707,1.707,0,1,0-.853-1.478A1.707,1.707,0,0,0,26.129,12.422Zm2.642,5.35H23.978l-5.925-5.787A1.079,1.079,0,0,0,16.537,12l-6.376,6.376A1.079,1.079,0,0,0,11.686,19.9l5.623-5.622,5.476,5.348a1.079,1.079,0,0,0,.754.307H28.77A1.079,1.079,0,1,0,28.77,17.772ZM39.947,21.6c-0.739-2.919-3.894-3.892-5.483-4.2V4.548A2.555,2.555,0,0,0,31.916,2H8.214A2.555,2.555,0,0,0,5.666,4.548V21.9a15.118,15.118,0,0,0-2.972,2.049C0.413,26-.444,28.32.216,30.664a5.955,5.955,0,0,0,2.325,3.215A11.711,11.711,0,0,0,6.666,35.66a28.784,28.784,0,0,0,6.722.689,51.979,51.979,0,0,0,5.207-.276c0.666-.064,1.331-0.147,1.992-0.243l-0.813,1.109a1.079,1.079,0,1,0,1.74,1.275L23.9,34.961l0.008-.011c0.011-.015.02-0.03,0.03-0.045l0-.006,0.007-.012,0.017-.029,0.009-.017,0.017-.032L24,34.792l0.015-.032,0.008-.018,0.013-.032,0.007-.019,0.01-.03,0.007-.022c0-.009.006-0.019,0.008-0.028l0.006-.024a0.136,0.136,0,0,1,.006-0.026c0-.009,0-0.017.005-0.026s0-.016,0-0.024l0-.029a0.085,0.085,0,0,1,0-.022,0.119,0.119,0,0,0,0-.03,0.169,0.169,0,0,0,0-.021V34.251a0.128,0.128,0,0,0,0-.029c0-.009,0-0.016,0-0.024a0.234,0.234,0,0,0,0-.027,0.1,0.1,0,0,1,0-.025l0-.026c0-.009,0-0.018-0.005-0.026l-0.005-.023-0.007-.027-0.006-.022-0.008-.029-0.007-.02-0.01-.029-0.007-.019L24.018,33.9l-0.008-.019L24,33.849l-0.009-.018L23.972,33.8l-0.011-.019-0.015-.026-0.013-.02-0.016-.024L23.9,33.694l-0.012-.021-0.017-.022-0.015-.019-0.02-.023-0.014-.016L23.8,33.569l-0.014-.014-0.025-.024-0.014-.013L23.722,33.5l-0.016-.012-0.027-.02-0.011-.008-0.008-.005-0.023-.016-0.024-.016-0.007-.005-3.413-2.15a1.079,1.079,0,1,0-1.15,1.825l1.017,0.64q-0.835.116-1.677,0.2a34.883,34.883,0,0,1-11.2-.36c-2.783-.682-4.427-1.854-4.887-3.487-0.426-1.509.183-3.022,1.809-4.494A12.075,12.075,0,0,1,5.667,24.4v0.052A2.555,2.555,0,0,0,8.215,27h23.7a2.555,2.555,0,0,0,2.548-2.548V19.606a8.192,8.192,0,0,1,1.073.336,3.415,3.415,0,0,1,2.317,2.186c0.514,2.029-.78,3.865-1.956,5.05a21.62,21.62,0,0,1-7.955,4.635,1.079,1.079,0,1,0,.732,2.029A23.731,23.731,0,0,0,37.429,28.7C39.679,26.437,40.549,23.98,39.947,21.6Zm-7.64,2.849a0.4,0.4,0,0,1-.391.391H8.214a0.4,0.4,0,0,1-.391-0.391V4.548a0.4,0.4,0,0,1,.391-0.391h23.7a0.4,0.4,0,0,1,.391.391v19.9Z"/>
|
<path id="形状_11" data-name="形状 11" class="cls-1" d="M26.129,12.422a1.707,1.707,0,1,0-.853-1.478A1.707,1.707,0,0,0,26.129,12.422Zm2.642,5.35H23.978l-5.925-5.787A1.079,1.079,0,0,0,16.537,12l-6.376,6.376A1.079,1.079,0,0,0,11.686,19.9l5.623-5.622,5.476,5.348a1.079,1.079,0,0,0,.754.307H28.77A1.079,1.079,0,1,0,28.77,17.772ZM39.947,21.6c-0.739-2.919-3.894-3.892-5.483-4.2V4.548A2.555,2.555,0,0,0,31.916,2H8.214A2.555,2.555,0,0,0,5.666,4.548V21.9a15.118,15.118,0,0,0-2.972,2.049C0.413,26-.444,28.32.216,30.664a5.955,5.955,0,0,0,2.325,3.215A11.711,11.711,0,0,0,6.666,35.66a28.784,28.784,0,0,0,6.722.689,51.979,51.979,0,0,0,5.207-.276c0.666-.064,1.331-0.147,1.992-0.243l-0.813,1.109a1.079,1.079,0,1,0,1.74,1.275L23.9,34.961l0.008-.011c0.011-.015.02-0.03,0.03-0.045l0-.006,0.007-.012,0.017-.029,0.009-.017,0.017-.032L24,34.792l0.015-.032,0.008-.018,0.013-.032,0.007-.019,0.01-.03,0.007-.022c0-.009.006-0.019,0.008-0.028l0.006-.024a0.136,0.136,0,0,1,.006-0.026c0-.009,0-0.017.005-0.026s0-.016,0-0.024l0-.029a0.085,0.085,0,0,1,0-.022,0.119,0.119,0,0,0,0-.03,0.169,0.169,0,0,0,0-.021V34.251a0.128,0.128,0,0,0,0-.029c0-.009,0-0.016,0-0.024a0.234,0.234,0,0,0,0-.027,0.1,0.1,0,0,1,0-.025l0-.026c0-.009,0-0.018-0.005-0.026l-0.005-.023-0.007-.027-0.006-.022-0.008-.029-0.007-.02-0.01-.029-0.007-.019L24.018,33.9l-0.008-.019L24,33.849l-0.009-.018L23.972,33.8l-0.011-.019-0.015-.026-0.013-.02-0.016-.024L23.9,33.694l-0.012-.021-0.017-.022-0.015-.019-0.02-.023-0.014-.016L23.8,33.569l-0.014-.014-0.025-.024-0.014-.013L23.722,33.5l-0.016-.012-0.027-.02-0.011-.008-0.008-.005-0.023-.016-0.024-.016-0.007-.005-3.413-2.15a1.079,1.079,0,1,0-1.15,1.825l1.017,0.64q-0.835.116-1.677,0.2a34.883,34.883,0,0,1-11.2-.36c-2.783-.682-4.427-1.854-4.887-3.487-0.426-1.509.183-3.022,1.809-4.494A12.075,12.075,0,0,1,5.667,24.4v0.052A2.555,2.555,0,0,0,8.215,27h23.7a2.555,2.555,0,0,0,2.548-2.548V19.606a8.192,8.192,0,0,1,1.073.336,3.415,3.415,0,0,1,2.317,2.186c0.514,2.029-.78,3.865-1.956,5.05a21.62,21.62,0,0,1-7.955,4.635,1.079,1.079,0,1,0,.732,2.029A23.731,23.731,0,0,0,37.429,28.7C39.679,26.437,40.549,23.98,39.947,21.6Zm-7.64,2.849a0.4,0.4,0,0,1-.391.391H8.214a0.4,0.4,0,0,1-.391-0.391V4.548a0.4,0.4,0,0,1,.391-0.391h23.7a0.4,0.4,0,0,1,.391.391v19.9Z"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.3 KiB |
@ -1,10 +1,6 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
|
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
|
||||||
<defs>
|
<defs>
|
||||||
<style>
|
<style>
|
||||||
.cls-1 {
|
|
||||||
fill: aqua;
|
|
||||||
fill-rule: evenodd;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
</defs>
|
</defs>
|
||||||
<path id="形状_14" data-name="形状 14" class="cls-1" d="M26.575,13.886a4.476,4.476,0,0,0,3.2-1.316A4.584,4.584,0,0,0,31.1,9.323a4.475,4.475,0,0,0-1.317-3.181,4.543,4.543,0,0,0-7.746,3.181,4.5,4.5,0,0,0,1.317,3.247A4.565,4.565,0,0,0,26.575,13.886Zm-1.6-6.164A2.239,2.239,0,0,1,26.6,7.064a2.283,2.283,0,0,1,1.646.658,2.386,2.386,0,0,1,0,3.291,2.371,2.371,0,0,1-3.27,0,2.347,2.347,0,0,1-.68-1.667A2.149,2.149,0,0,1,24.973,7.722Zm5.464,14.9a0.814,0.814,0,0,0-.593.257l-5.42,5.309-4.63-4.629,2.3-2.347a0.943,0.943,0,0,0-.066-1.25,0.9,0.9,0,0,0-1.229-.088l-2.326,2.369-4.542-4.519H13.847l-4.433-4.5a1.1,1.1,0,0,0-1.426.088,1.217,1.217,0,0,0,0,1.47l3.533,3.554-5.9,6.23a1.066,1.066,0,0,0-.11,1.36,1.108,1.108,0,0,0,1.361.154l6.145-6.34,4.037,3.993-9.48,9.389a0.965,0.965,0,0,0,.022,1.316,0.987,0.987,0,0,0,1.295.022l9.524-9.433,7.878,7.788a0.972,0.972,0,0,0,1.251-1.448l-1.8-1.821,5.4-5.4a0.951,0.951,0,0,0-.11-1.272A0.813,0.813,0,0,0,30.437,22.624Zm5.947-12.4a3.7,3.7,0,0,0-.329-0.812V9.3a9.059,9.059,0,0,0-2.721-6.537A9.394,9.394,0,0,0,26.772,0a9.284,9.284,0,0,0-6.517,2.7H20.211a9.084,9.084,0,0,0-2.282,3.729H5.245A5.244,5.244,0,0,0,0,11.693V34.245a5.178,5.178,0,0,0,5.245,5.243H31.38a5.267,5.267,0,0,0,3.687-1.514,5.461,5.461,0,0,0,1.58-3.729V11.737A5.213,5.213,0,0,0,36.384,10.223ZM21.879,4.5h0.044A6.923,6.923,0,0,1,33.728,9.433a7.194,7.194,0,0,1-1.207,3.949,7.352,7.352,0,0,1-3.27,2.545,0.814,0.814,0,0,0-.351.219l-2.085,2.589-2.129-2.589a0.549,0.549,0,0,0-.351-0.219,7.176,7.176,0,0,1-3.248-2.545A7,7,0,0,1,21.879,4.5Zm9.458,32.2H5.223a2.414,2.414,0,0,1-1.734-.724,2.3,2.3,0,0,1-.7-1.711V11.737a2.325,2.325,0,0,1,.7-1.711A2.5,2.5,0,0,1,5.223,9.3H17.512a9.411,9.411,0,0,0,1.624,5.287A9.3,9.3,0,0,0,23.283,17.9l2.809,3.444h0.022l0.11,0.11a0.812,0.812,0,0,0,1.185-.11L30.217,17.9a9,9,0,0,0,3.555-2.545v18.91h0.044A2.479,2.479,0,0,1,31.337,36.7Z"/>
|
<path id="形状_14" data-name="形状 14" class="cls-1" d="M26.575,13.886a4.476,4.476,0,0,0,3.2-1.316A4.584,4.584,0,0,0,31.1,9.323a4.475,4.475,0,0,0-1.317-3.181,4.543,4.543,0,0,0-7.746,3.181,4.5,4.5,0,0,0,1.317,3.247A4.565,4.565,0,0,0,26.575,13.886Zm-1.6-6.164A2.239,2.239,0,0,1,26.6,7.064a2.283,2.283,0,0,1,1.646.658,2.386,2.386,0,0,1,0,3.291,2.371,2.371,0,0,1-3.27,0,2.347,2.347,0,0,1-.68-1.667A2.149,2.149,0,0,1,24.973,7.722Zm5.464,14.9a0.814,0.814,0,0,0-.593.257l-5.42,5.309-4.63-4.629,2.3-2.347a0.943,0.943,0,0,0-.066-1.25,0.9,0.9,0,0,0-1.229-.088l-2.326,2.369-4.542-4.519H13.847l-4.433-4.5a1.1,1.1,0,0,0-1.426.088,1.217,1.217,0,0,0,0,1.47l3.533,3.554-5.9,6.23a1.066,1.066,0,0,0-.11,1.36,1.108,1.108,0,0,0,1.361.154l6.145-6.34,4.037,3.993-9.48,9.389a0.965,0.965,0,0,0,.022,1.316,0.987,0.987,0,0,0,1.295.022l9.524-9.433,7.878,7.788a0.972,0.972,0,0,0,1.251-1.448l-1.8-1.821,5.4-5.4a0.951,0.951,0,0,0-.11-1.272A0.813,0.813,0,0,0,30.437,22.624Zm5.947-12.4a3.7,3.7,0,0,0-.329-0.812V9.3a9.059,9.059,0,0,0-2.721-6.537A9.394,9.394,0,0,0,26.772,0a9.284,9.284,0,0,0-6.517,2.7H20.211a9.084,9.084,0,0,0-2.282,3.729H5.245A5.244,5.244,0,0,0,0,11.693V34.245a5.178,5.178,0,0,0,5.245,5.243H31.38a5.267,5.267,0,0,0,3.687-1.514,5.461,5.461,0,0,0,1.58-3.729V11.737A5.213,5.213,0,0,0,36.384,10.223ZM21.879,4.5h0.044A6.923,6.923,0,0,1,33.728,9.433a7.194,7.194,0,0,1-1.207,3.949,7.352,7.352,0,0,1-3.27,2.545,0.814,0.814,0,0,0-.351.219l-2.085,2.589-2.129-2.589a0.549,0.549,0,0,0-.351-0.219,7.176,7.176,0,0,1-3.248-2.545A7,7,0,0,1,21.879,4.5Zm9.458,32.2H5.223a2.414,2.414,0,0,1-1.734-.724,2.3,2.3,0,0,1-.7-1.711V11.737a2.325,2.325,0,0,1,.7-1.711A2.5,2.5,0,0,1,5.223,9.3H17.512a9.411,9.411,0,0,0,1.624,5.287A9.3,9.3,0,0,0,23.283,17.9l2.809,3.444h0.022l0.11,0.11a0.812,0.812,0,0,0,1.185-.11L30.217,17.9a9,9,0,0,0,3.555-2.545v18.91h0.044A2.479,2.479,0,0,1,31.337,36.7Z"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.9 KiB |
116
src/renderer/src/views/components/propertyBox/vector.vue
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
<template>
|
||||||
|
<Dialog ref="baseDialog" title="编辑属性" left="180px" top="100px" :closeCallback="closeCallback">
|
||||||
|
<template #content>
|
||||||
|
<span class="custom-divider"></span>
|
||||||
|
<div class="div-item">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<span class="label">文件名称</span>
|
||||||
|
<input class="input" v-model="entityOptions.name">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<span class="label">名称字段选择</span>
|
||||||
|
<el-select v-model="entityOptions.field">
|
||||||
|
<el-option v-for="item in keyData" :label="item.name" :value="item.key"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #footer>
|
||||||
|
<button @click="confirm">确定</button>
|
||||||
|
<button @click="close">关闭</button>
|
||||||
|
</template>
|
||||||
|
</Dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref } from 'vue'
|
||||||
|
import { inject } from 'vue'
|
||||||
|
import { TreeApi } from '@/api/tree'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
import Dialog from '@/components/dialog/baseDialog.vue'
|
||||||
|
import { useTreeNode } from '../tree/hooks/treeNode'
|
||||||
|
|
||||||
|
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
|
||||||
|
|
||||||
|
const baseDialog: any = ref(null)
|
||||||
|
const eventBus: any = inject('bus')
|
||||||
|
const keyData: any = ref([])
|
||||||
|
const entityOptions: any = ref({});
|
||||||
|
let originalOptions: any
|
||||||
|
let that: any
|
||||||
|
const closeCallback = () => {
|
||||||
|
entityOptions.value.originalOptions = structuredClone(originalOptions)
|
||||||
|
entityOptions.value.reset()
|
||||||
|
eventBus.emit("destroyComponent")
|
||||||
|
}
|
||||||
|
const getKeys = () => {
|
||||||
|
for (let key in that.geojson.features[0].properties) {
|
||||||
|
let label = key
|
||||||
|
for (let index = 0; index < that.options.headTables.length; index++) {
|
||||||
|
if (that.options.headTables[index].key === key) {
|
||||||
|
label = that.options.headTables[index].label
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
keyData.value.push({
|
||||||
|
name: label,
|
||||||
|
value: label,
|
||||||
|
key: key
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let node
|
||||||
|
const open = async (id: any) => {
|
||||||
|
that = window.earth.entityMap.get(id)
|
||||||
|
node = window.treeObj.getNodeByParam("id", id, null);
|
||||||
|
getKeys()
|
||||||
|
originalOptions = structuredClone(that.options)
|
||||||
|
entityOptions.value = that
|
||||||
|
baseDialog.value?.open()
|
||||||
|
await nextTick()
|
||||||
|
}
|
||||||
|
const confirm = () => {
|
||||||
|
originalOptions = structuredClone(that.options)
|
||||||
|
baseDialog.value?.close()
|
||||||
|
let params = {
|
||||||
|
name: entityOptions.value.name,
|
||||||
|
show: entityOptions.value.show,
|
||||||
|
id: entityOptions.value.options.id,
|
||||||
|
}
|
||||||
|
let params2 = {
|
||||||
|
"id": params.id,
|
||||||
|
"sourceName": params.name,
|
||||||
|
"params": params,
|
||||||
|
"isShow": params.show ? 1 : 0
|
||||||
|
}
|
||||||
|
TreeApi.updateDirectoryInfo(params2)
|
||||||
|
cusUpdateNode({ "id": params.id, "sourceName": params.name, "params": JSON.stringify(params) })
|
||||||
|
updateNode(node.children, entityOptions.value.field)
|
||||||
|
|
||||||
|
}
|
||||||
|
const updateNode = (children, field) => {
|
||||||
|
for(let i=0;i<children.length;i++) {
|
||||||
|
if(children[i].children) {
|
||||||
|
updateNode(children[i].children, field)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(children[i].params) {
|
||||||
|
cusUpdateNode({ "id": children[i].id, "sourceName": children[i].params.properties[field], "params": children[i].params })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const close = () => {
|
||||||
|
baseDialog.value?.close()
|
||||||
|
}
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
close
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
||||||
@ -48,62 +48,111 @@ export const useRightOperate = () => {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取最后一个点的位置
|
|
||||||
const lastDotIndex = filePaths[0].lastIndexOf('.');
|
|
||||||
|
|
||||||
// 如果没有点或者点是最后一个字符,则不是有效的文件后缀
|
|
||||||
if (lastDotIndex === -1 || lastDotIndex === filePaths[0].length - 1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提取后缀并转换为小写进行比较
|
|
||||||
const extension = filePaths[0].slice(lastDotIndex + 1).toLowerCase();
|
|
||||||
|
|
||||||
let params2: any = {
|
|
||||||
id: id,
|
|
||||||
show: true,
|
|
||||||
}
|
|
||||||
if (extension === 'mbtiles') {
|
|
||||||
params2.alpha = 1
|
|
||||||
params2.brightness = 1
|
|
||||||
params2.layerIndex = 99999
|
|
||||||
}
|
|
||||||
if (extension === 'apk') {
|
|
||||||
// params2.exaggeration = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let params: any = {
|
|
||||||
id: id,
|
let item = filePaths[0]
|
||||||
sourcePath: filePaths[0],
|
|
||||||
parentId: parentId,
|
//@ts-ignore
|
||||||
params: params2,
|
let name = getLastPathComponent(item, ['clt', 'json', 'pak', 'kml', 'kmz', 'shp', 'geojson', 'geoJson', 'czml', 'jct', 'mif', 'tab', 'csv']);
|
||||||
|
let sourceType = "layer";
|
||||||
|
if (item.endsWith(".clt") || item.endsWith(".json")) {
|
||||||
|
sourceType = "tileset";
|
||||||
|
} else if (item.endsWith(".pak")) {
|
||||||
|
sourceType = "Terrain";
|
||||||
|
} else if (item.endsWith(".kml") || item.endsWith(".kmz")) {
|
||||||
|
sourceType = "kml";
|
||||||
|
} else if (item.endsWith(".shp")) {
|
||||||
|
sourceType = "shp";
|
||||||
|
} else if (item.endsWith(".geojson") || item.endsWith(".geoJson")) {
|
||||||
|
sourceType = "geojson";
|
||||||
|
} else if (item.endsWith(".czml")) {
|
||||||
|
sourceType = "czml";
|
||||||
|
} else if (item.endsWith(".jct")) {
|
||||||
|
sourceType = "bim";
|
||||||
|
} else if (item.endsWith(".mif")) {
|
||||||
|
sourceType = "shp";
|
||||||
|
} else if (item.endsWith(".tab")) {
|
||||||
|
sourceType = "shp";
|
||||||
|
} else if (item.endsWith(".csv")) {
|
||||||
|
sourceType = "csv";
|
||||||
}
|
}
|
||||||
// filePaths[0].split('\\').pop()
|
if (["shp", "tab", "mif", "kml", "kmz"].includes(sourceType)) {
|
||||||
let res = await TreeApi.addModelSource(params)
|
let params: any = {
|
||||||
console.log('res', res)
|
id: id,
|
||||||
if (res.code === 0 || res.code === 200) {
|
parentId: parentId,
|
||||||
ElMessage({
|
sourceName: name,
|
||||||
message: '添加成功',
|
sourceType: 'vector',
|
||||||
type: 'success'
|
sourcePath: filePaths[0],
|
||||||
})
|
params: {
|
||||||
res.data.params = JSON.parse(res.data.params)
|
id: id,
|
||||||
if (!res.data.params.name) {
|
path: filePaths[0],
|
||||||
res.data.params.name = res.data.sourceName
|
field: 'id',
|
||||||
|
name: name,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
if (!res.data.params.id) {
|
TreeApi.addOtherSource(params)
|
||||||
res.data.params.id = res.data.id
|
params.isShow = true
|
||||||
}
|
params.params = JSON.stringify(params.params)
|
||||||
let detail = JSON.parse(res.data.detail)
|
cusAddNodes(window.treeObj, params.parentId, [params])
|
||||||
let mapParams = { ...detail, ...res.data.params }
|
renderVector(params, true)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// 获取最后一个点的位置
|
||||||
|
const lastDotIndex = filePaths[0].lastIndexOf('.');
|
||||||
|
|
||||||
await initMapData(res.data.sourceType, mapParams, (entity) => {
|
// 如果没有点或者点是最后一个字符,则不是有效的文件后缀
|
||||||
entity.flyTo()
|
if (lastDotIndex === -1 || lastDotIndex === filePaths[0].length - 1) {
|
||||||
})
|
return false;
|
||||||
if (res.data.sourceType) { }
|
}
|
||||||
res.data.params = JSON.stringify(res.data.params)
|
|
||||||
res.data.detail = JSON.stringify(res.data.detail)
|
let params2: any = {
|
||||||
cusAddNodes(window.treeObj, params.parentId, [res.data])
|
id: id,
|
||||||
|
show: true,
|
||||||
|
}
|
||||||
|
if (item.endsWith(".mbtiles")) {
|
||||||
|
params2.alpha = 1
|
||||||
|
params2.brightness = 1
|
||||||
|
params2.layerIndex = 99999
|
||||||
|
}
|
||||||
|
if (item.endsWith(".apk")) {
|
||||||
|
// params2.exaggeration = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let params: any = {
|
||||||
|
id: id,
|
||||||
|
sourcePath: filePaths[0],
|
||||||
|
parentId: parentId,
|
||||||
|
params: params2,
|
||||||
|
}
|
||||||
|
// filePaths[0].split('\\').pop()
|
||||||
|
let res = await TreeApi.addModelSource(params)
|
||||||
|
console.log('res', res)
|
||||||
|
if (res.code === 0 || res.code === 200) {
|
||||||
|
ElMessage({
|
||||||
|
message: '添加成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
res.data.params = JSON.parse(res.data.params)
|
||||||
|
if (!res.data.params.name) {
|
||||||
|
res.data.params.name = res.data.sourceName
|
||||||
|
}
|
||||||
|
if (!res.data.params.id) {
|
||||||
|
res.data.params.id = res.data.id
|
||||||
|
}
|
||||||
|
let detail = JSON.parse(res.data.detail)
|
||||||
|
let mapParams = { ...detail, ...res.data.params }
|
||||||
|
|
||||||
|
await initMapData(res.data.sourceType, mapParams, (entity) => {
|
||||||
|
entity.flyTo()
|
||||||
|
})
|
||||||
|
if (res.data.sourceType) { }
|
||||||
|
|
||||||
|
res.data.params = JSON.stringify(res.data.params)
|
||||||
|
res.data.detail = JSON.stringify(res.data.detail)
|
||||||
|
cusAddNodes(window.treeObj, params.parentId, [res.data])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -197,7 +246,9 @@ export const useRightOperate = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//属性
|
//属性
|
||||||
const showAttr = () => { }
|
const showAttr = (eventBus, node) => {
|
||||||
|
console.log(eventBus, node)
|
||||||
|
}
|
||||||
//导入模型
|
//导入模型
|
||||||
const importHeader = () => { }
|
const importHeader = () => { }
|
||||||
//导入模型
|
//导入模型
|
||||||
@ -213,7 +264,6 @@ export const useRightOperate = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (node) {
|
if (node) {
|
||||||
eventBus.emit("openDialog", node.sourceType, node.id);
|
|
||||||
if (node.sourceType == 'pressModel') {
|
if (node.sourceType == 'pressModel') {
|
||||||
eventBus.emit("openDialog", node.sourceType, node);
|
eventBus.emit("openDialog", node.sourceType, node);
|
||||||
} else {
|
} else {
|
||||||
@ -435,7 +485,7 @@ export const useRightOperate = () => {
|
|||||||
let nodes = window.treeObj.transformToArray(
|
let nodes = window.treeObj.transformToArray(
|
||||||
window.treeObj.getNodes()
|
window.treeObj.getNodes()
|
||||||
);
|
);
|
||||||
let layers:any = [];
|
let layers: any = [];
|
||||||
let arr = [
|
let arr = [
|
||||||
"ArcgisWXImagery",
|
"ArcgisWXImagery",
|
||||||
"ArcgisBLUEImagery",
|
"ArcgisBLUEImagery",
|
||||||
@ -551,117 +601,90 @@ export const useRightOperate = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// function renderVector(node, ifFly = true) {
|
function renderVector(node, ifFly = true) {
|
||||||
// // if (node.detail != "") node.detail.field = node.detail.fieldName || "id";
|
// if (node.detail != "") node.detail.field = node.detail.fieldName || "id";
|
||||||
// let head_tables;
|
let headTables;
|
||||||
// if (node.head_tables) {
|
if (node.headTables) {
|
||||||
// head_tables == "" ? node.head_tables : JSON.parse(node.head_tables);
|
headTables == "" ? node.headTables : JSON.parse(node.headTables);
|
||||||
// }
|
}
|
||||||
// let vectorParams = {
|
let vectorParams = {
|
||||||
// id: node.source_id,
|
id: node.id,
|
||||||
// path: node.source_path,
|
path: node.sourcePath,
|
||||||
// fileName: node.source_name,
|
fileName: node.sourceName,
|
||||||
// head_tables,
|
headTables,
|
||||||
// ...node.detail,
|
...node.params,
|
||||||
// };
|
};
|
||||||
// console.log("node", node);
|
console.log("node", node);
|
||||||
// console.log("vectorParams", vectorParams);
|
console.log("vectorParams", vectorParams);
|
||||||
// let Vector = new YJ.Obj.Vector((window as any).Earth1, vectorParams);
|
let Vector = new YJ.Obj.Vector(window.earth, vectorParams);
|
||||||
// console.log("Vector", Vector);
|
console.log("Vector", Vector);
|
||||||
// Vector.on().then((res) => {
|
Vector.on().then((res) => {
|
||||||
// (window as any)._entityMap.set(node.source_id, Vector);
|
Vector.load(() => {
|
||||||
// let treeObj = $.fn.zTree.getZTreeObj("treeDemo");
|
let childNode = {
|
||||||
// Vector.load(() => {
|
id: new YJ.Tools().randomString(),
|
||||||
// let newnodes = Vector.getAllNode();
|
sourceType: 'FeatureCollection',
|
||||||
// console.log("newnodes1111", newnodes);
|
sourceName: node.sourceName,
|
||||||
// if (newnodes) {
|
isShow: true
|
||||||
// if (newnodes.list.length) {
|
}
|
||||||
// newnodes.list.forEach((it) => {
|
cusAddNodes(window.treeObj, node.id, [childNode])
|
||||||
// let arrt = node.detail.hasOwnProperty("fieldName")
|
let newnodes = Vector.getAllNode();
|
||||||
// ? node.detail.fieldName
|
console.log("newnodes1111", newnodes);
|
||||||
// : Vector.field;
|
if (newnodes) {
|
||||||
// let zijiNodes:any = [];
|
if (newnodes.list.length) {
|
||||||
// if (it.features && it.features.length) {
|
newnodes.list.forEach((it) => {
|
||||||
// it.features.forEach((item) => {
|
let zijiNodes: any = [];
|
||||||
// let ziNode = {
|
if (it.features && it.features.length) {
|
||||||
// source_id: item.id,
|
it.features.forEach((item) => {
|
||||||
// source_type: item.type,
|
let ziNode = {
|
||||||
// source_name:
|
id: item.id,
|
||||||
// item.properties[arrt] || Object.keys(item.properties)[0] || '未知',
|
sourceType: item.type,
|
||||||
// detail: {
|
sourceName:
|
||||||
// ...item,
|
item.properties[Vector.field] || Object.keys(item.properties)[0] || '未知',
|
||||||
// info: { type: "richText" },
|
params: {
|
||||||
// },
|
...item,
|
||||||
// is_show: 1,
|
},
|
||||||
// fid: node.source_id,
|
isShow: true
|
||||||
// };
|
};
|
||||||
// zijiNodes.push(ziNode);
|
zijiNodes.push(ziNode);
|
||||||
// });
|
});
|
||||||
// }
|
}
|
||||||
// let fuNode = {
|
|
||||||
// source_id:
|
cusAddNodes(window.treeObj, childNode.id, zijiNodes)
|
||||||
// it.id || md5(new Date().getTime().toString() + Math.random()),
|
});
|
||||||
// source_type: it.type,
|
}
|
||||||
// source_name: it.name || '未知',
|
}
|
||||||
// detail: {
|
if (ifFly) Vector.flyTo();
|
||||||
// defaultfieldName: Vector.field,
|
// Vector.onClick = shpTotal;
|
||||||
// ...node.detail,
|
Vector.onClick = () => {
|
||||||
// },
|
alert('left')
|
||||||
// is_show: 1,
|
};
|
||||||
// fid: node.source_id,
|
//鼠标右键点击事件
|
||||||
// children: zijiNodes.length > 0 ? zijiNodes : [], // 关键:把子节点挂到父节点
|
// Vector.onRightClick = shpSelect;
|
||||||
// };
|
Vector.onRightClick = () => {
|
||||||
// let parentNode = treeObj.getNodeByParam(
|
alert('right')
|
||||||
// "source_id",
|
};
|
||||||
// node.source_id,
|
});
|
||||||
// null
|
});
|
||||||
// );
|
}
|
||||||
// if (parentNode) {
|
|
||||||
// treeObj.addNodes(parentNode, [fuNode], true);
|
function getLastPathComponent(path, extensionsToRemove = []) {
|
||||||
// }
|
// 处理路径分隔符
|
||||||
// });
|
const normalizedPath = path.replace(/\\/g, '/');
|
||||||
// } else {
|
const lastComponent = normalizedPath.split('/').pop();
|
||||||
// let arrt = node.detail.hasOwnProperty("fieldName")
|
|
||||||
// ? node.detail.fieldName
|
// 如果没有提供需要移除的后缀列表,直接返回原始名称
|
||||||
// : Vector.field;
|
if (extensionsToRemove.length === 0) return lastComponent;
|
||||||
// newnodes.list.forEach((it) => {
|
|
||||||
// let zijiNodes = [];
|
// 检查是否匹配任何需要移除的后缀
|
||||||
// let childNode = treeObj.getNodeByParam(
|
for (const ext of extensionsToRemove) {
|
||||||
// "source_id",
|
const extWithDot = ext.startsWith('.') ? ext : `.${ext}`;
|
||||||
// node.source_id,
|
if (lastComponent.endsWith(extWithDot)) {
|
||||||
// null
|
return lastComponent.slice(0, -extWithDot.length);
|
||||||
// );
|
}
|
||||||
// console.log("1111111111111111111111111111", it);
|
}
|
||||||
// if (it.features && it.features.length) {
|
|
||||||
// it.features.forEach((item) => {
|
return lastComponent;
|
||||||
// let ziNode = {
|
}
|
||||||
// source_id: item.id,
|
|
||||||
// source_type: item.type,
|
|
||||||
// source_name: item.properties[arrt] || "",
|
|
||||||
// detail: {
|
|
||||||
// ...item,
|
|
||||||
// info: { type: "richText" },
|
|
||||||
// },
|
|
||||||
// is_show: 1,
|
|
||||||
// fid: node.source_id,
|
|
||||||
// };
|
|
||||||
// zijiNodes.push(ziNode);
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// console.log("zijiNodes", "childNode", childNode, zijiNodes);
|
|
||||||
// if (childNode) {
|
|
||||||
// treeObj.addNodes(childNode, zijiNodes, true);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if (ifFly) Vector.flyTo();
|
|
||||||
// Vector.onClick = shpTotal;
|
|
||||||
// //鼠标右键点击事件
|
|
||||||
// Vector.onRightClick = shpSelect;
|
|
||||||
// });
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
rightMenus
|
rightMenus
|
||||||
|
|||||||
@ -56,6 +56,7 @@ export const useTree = () => {
|
|||||||
const menus = showRightMenu(event, treeObj.value)
|
const menus = showRightMenu(event, treeObj.value)
|
||||||
console.log('menus', menus)
|
console.log('menus', menus)
|
||||||
if (menus.length == 0) {
|
if (menus.length == 0) {
|
||||||
|
$changeComponentShow('.rightMenu', false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
|
|||||||
@ -330,7 +330,7 @@ export const useTreeNode = () => {
|
|||||||
// detailFun: get_detail_fountain,
|
// detailFun: get_detail_fountain,
|
||||||
allowChildren: false
|
allowChildren: false
|
||||||
},
|
},
|
||||||
shp: {
|
vector: {
|
||||||
rightMenus: ['edit', 'del', 'setView', 'resetView', 'showAttr', 'importHeader']
|
rightMenus: ['edit', 'del', 'setView', 'resetView', 'showAttr', 'importHeader']
|
||||||
// render: renderShp,
|
// render: renderShp,
|
||||||
// detailFun: get_detail_shp,
|
// detailFun: get_detail_shp,
|
||||||
@ -361,7 +361,7 @@ export const useTreeNode = () => {
|
|||||||
// allowChildren: false
|
// allowChildren: false
|
||||||
},
|
},
|
||||||
Feature: {
|
Feature: {
|
||||||
rightMenus: ['setView', 'resetView', 'showAttr']
|
rightMenus: ['showAttr']
|
||||||
// render: renderShp,
|
// render: renderShp,
|
||||||
// detailFun: get_detail_shp,
|
// detailFun: get_detail_shp,
|
||||||
// allowChildren: false,
|
// allowChildren: false,
|
||||||
@ -445,7 +445,23 @@ export const useTreeNode = () => {
|
|||||||
|
|
||||||
const cusNodeIcon = async (node) => {
|
const cusNodeIcon = async (node) => {
|
||||||
let availablePort = await ipcRenderer.invoke('get-available-port');
|
let availablePort = await ipcRenderer.invoke('get-available-port');
|
||||||
let type = node.sourceType || node.type;
|
let type
|
||||||
|
if(node.sourcePath) {
|
||||||
|
// 获取最后一个点的位置
|
||||||
|
const lastDotIndex = node.sourcePath.lastIndexOf('.');
|
||||||
|
|
||||||
|
// 如果没有点或者点是最后一个字符,则不是有效的文件后缀
|
||||||
|
if (lastDotIndex === -1 || lastDotIndex === node.sourcePath.length - 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提取后缀并转换为小写进行比较
|
||||||
|
const extension = node.sourcePath.slice(lastDotIndex + 1).toLowerCase();
|
||||||
|
type = extension
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
type = node.sourceType || node.type;
|
||||||
|
}
|
||||||
console.log("----------", type);
|
console.log("----------", type);
|
||||||
let name = [
|
let name = [
|
||||||
"GDSLImagery",
|
"GDSLImagery",
|
||||||
@ -458,7 +474,7 @@ export const useTreeNode = () => {
|
|||||||
if (type == "Terrain") name = "terrain";
|
if (type == "Terrain") name = "terrain";
|
||||||
if (type == "road" && node.detail.imageType == "arrowRoad")
|
if (type == "road" && node.detail.imageType == "arrowRoad")
|
||||||
name = "lineDrawing";
|
name = "lineDrawing";
|
||||||
return type === 'directory' ? undefined : `http://localhost:${availablePort}/icon/${name}.png`;
|
return (type === 'directory' || type === 'FeatureCollection') ? undefined : `http://localhost:${availablePort}/icon/${name}.png`;
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* 获取选中节点
|
* 获取选中节点
|
||||||
@ -608,7 +624,7 @@ export const useTreeNode = () => {
|
|||||||
try {
|
try {
|
||||||
arr = nodeType[selectedNodes[0].sourceType].rightMenus
|
arr = nodeType[selectedNodes[0].sourceType].rightMenus
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log('e', e)
|
console.log('e', e, selectedNodes[0].sourceType)
|
||||||
arr = []
|
arr = []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -112,6 +112,7 @@ import modelObject from '../components/propertyBox/modelObject.vue'
|
|||||||
import particleEffects from '../components/propertyBox/particleEffects.vue'
|
import particleEffects from '../components/propertyBox/particleEffects.vue'
|
||||||
import flyLine from '../components/propertyBox/flyLine.vue'
|
import flyLine from '../components/propertyBox/flyLine.vue'
|
||||||
import explosion from '../components/propertyBox/explosion.vue'
|
import explosion from '../components/propertyBox/explosion.vue'
|
||||||
|
import vector from '../components/propertyBox/vector.vue'
|
||||||
|
|
||||||
import graphObject from '../components/propertyBox/graphObject.vue'
|
import graphObject from '../components/propertyBox/graphObject.vue'
|
||||||
import graph from '../components/propertyBox/graph.vue'
|
import graph from '../components/propertyBox/graph.vue'
|
||||||
@ -294,6 +295,11 @@ eventBus.on('openDialog', async (sourceType: any, id: any) => {
|
|||||||
await nextTick()
|
await nextTick()
|
||||||
dynamicComponentRef.value?.open(id)
|
dynamicComponentRef.value?.open(id)
|
||||||
break
|
break
|
||||||
|
case 'vector':
|
||||||
|
currentComponent.value = vector
|
||||||
|
await nextTick()
|
||||||
|
dynamicComponentRef.value?.open(id)
|
||||||
|
break
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -424,8 +430,9 @@ const getStatus = (time) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
let baseURL = localStorage.getItem('service')
|
||||||
getAuthInfo()
|
getAuthInfo()
|
||||||
await YJ.on()
|
await YJ.on({ host: baseURL })
|
||||||
createEarth()
|
createEarth()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||