number输入框最大值最小值限制;标绘默认名称

This commit is contained in:
zh
2025-11-11 11:09:16 +08:00
parent 64cad82a92
commit 1472bd1ecf
35 changed files with 217 additions and 101 deletions

View File

@ -149,6 +149,7 @@ export default {
curve: '曲线标注', curve: '曲线标注',
panel: '面标注', panel: '面标注',
roam: '漫游路径', roam: '漫游路径',
untitled: '未命名对象'
}, },
system: { system: {
systemTitle: '系统面板', systemTitle: '系统面板',

View File

@ -149,6 +149,7 @@ export default {
curve: 'Curve', curve: 'Curve',
panel: 'Panel', panel: 'Panel',
roam: 'roam', roam: 'roam',
untitled: 'untitled'
}, },
system: { system: {
systemTitle: 'Settings', systemTitle: 'Settings',

View File

@ -148,6 +148,7 @@ export default {
curve: '曲線標注', curve: '曲線標注',
panel: '面標注', panel: '面標注',
roam: '漫遊路徑', roam: '漫遊路徑',
untitled: '未命名對象'
}, },
system: { system: {
systemTitle: '系統面板', systemTitle: '系統面板',

View File

@ -47,7 +47,6 @@ export const initMapData = async (type, data, cd) => {
entityObject = new YJ.Obj.SectorObject(window.earth, data) entityObject = new YJ.Obj.SectorObject(window.earth, data)
break break
case 'model': case 'model':
console.log('model', data)
entityObject = new YJ.Obj.Model(window.earth, data) entityObject = new YJ.Obj.Model(window.earth, data)
break break
case 'military': case 'military':

View File

@ -67,6 +67,10 @@ export function getNamefromPath(path) {
} }
export function handleInputLimit(e) { export function handleInputLimit(e) {
if (e.data === '-') {
}
else {
e.target.value = e.target.value || 0
const minValue = parseFloat(e.target.min); const minValue = parseFloat(e.target.min);
const maxValue = parseFloat(e.target.max); const maxValue = parseFloat(e.target.max);
if (!isNaN(maxValue) && e.target.value > maxValue) { if (!isNaN(maxValue) && e.target.value > maxValue) {
@ -77,4 +81,5 @@ export function handleInputLimit(e) {
e.target.value = minValue e.target.value = minValue
e.target.dispatchEvent(new Event('input')) e.target.dispatchEvent(new Event('input'))
} }
}
} }

View File

@ -43,7 +43,7 @@
<div class="col"> <div class="col">
<span class="label">Z值统一增加</span> <span class="label">Z值统一增加</span>
<div class="input-number input-number-unit-1 height-box" :class="{ 'disabled': heightMode == 2 }"> <div class="input-number input-number-unit-1 height-box" :class="{ 'disabled': heightMode == 2 }">
<input class="input height" type="number" title="" min="-9999999" max="999999999" v-model="height"> <input class="input height" type="number" title="" min="-9999999" max="999999999" v-model="height" @input="$handleInputLimit">
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -66,18 +66,18 @@
<div class="td">圆心坐标</div> <div class="td">圆心坐标</div>
<div class="td lng align-center" @dblclick="inputDblclick($event, 1, 'lng')"> <div class="td lng align-center" @dblclick="inputDblclick($event, 1, 'lng')">
<input class="input" @blur="inputBlurCallBack($event, 1, 'lng', 8)" type="number" <input class="input" @blur="inputBlurCallBack($event, 1, 'lng', 8)" type="number"
v-model="entityOptions.center.lng" min="-180" max="180" v-if="activeTd.index == 1 && activeTd.name == 'lng'"> v-model="entityOptions.center.lng" min="-180" max="180" v-if="activeTd.index == 1 && activeTd.name == 'lng'" @input="$handleInputLimit">
<span style="pointer-events: none;" v-else>{{ entityOptions.center.lng.toFixed(8) }}</span> <span style="pointer-events: none;" v-else>{{ entityOptions.center.lng.toFixed(8) }}</span>
</div> </div>
<div class="td lat align-center" @dblclick="inputDblclick($event, 1, 'lat')"> <div class="td lat align-center" @dblclick="inputDblclick($event, 1, 'lat')">
<input class="input" @blur="inputBlurCallBack($event, 1, 'lat', 8)" type="number" <input class="input" @blur="inputBlurCallBack($event, 1, 'lat', 8)" type="number"
v-model="entityOptions.center.lat" min="-180" max="180" v-if="activeTd.index == 1 && activeTd.name == 'lat'"> v-model="entityOptions.center.lat" min="-180" max="180" v-if="activeTd.index == 1 && activeTd.name == 'lat'" @input="$handleInputLimit">
<span style="pointer-events: none;" v-else>{{ entityOptions.center.lat.toFixed(8) }}</span> <span style="pointer-events: none;" v-else>{{ entityOptions.center.lat.toFixed(8) }}</span>
</div> </div>
<div class="td alt align-center" @dblclick="inputDblclick($event, 1, 'alt')"> <div class="td alt align-center" @dblclick="inputDblclick($event, 1, 'alt')">
<input class="input" @blur="inputBlurCallBack($event, 1, 'alt', 2)" type="number" <input class="input" @blur="inputBlurCallBack($event, 1, 'alt', 2)" type="number"
v-model="entityOptions.height" min="-9999999" max="999999999" v-model="entityOptions.height" min="-9999999" max="999999999"
v-if="activeTd.index == 1 && activeTd.name == 'alt'"> v-if="activeTd.index == 1 && activeTd.name == 'alt'" @input="$handleInputLimit">
<span style="pointer-events: none;" v-else>{{ entityOptions.height.toFixed(2) }}</span> <span style="pointer-events: none;" v-else>{{ entityOptions.height.toFixed(2) }}</span>
</div> </div>
</div> </div>
@ -98,7 +98,7 @@
<div class="col"> <div class="col">
<span class="label">描边宽度</span> <span class="label">描边宽度</span>
<div class="input-number input-number-unit-2"> <div class="input-number input-number-unit-2">
<input class="input" type="number" title="" min="0" max="99" v-model="entityOptions.lineWidth"> <input class="input" type="number" title="" min="0" max="99" v-model="entityOptions.lineWidth" @input="$handleInputLimit">
<span class="unit">px</span> <span class="unit">px</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -132,6 +132,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { ref } from 'vue';
import { inject } from "vue"; import { inject } from "vue";
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue' import Dialog from '@/components/dialog/baseDialog.vue'
@ -139,6 +140,7 @@ import attribute from './attribute.vue'
import labelStyle from './labelStyle.vue' import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode' import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const title = ref('圆') const title = ref('圆')
@ -312,9 +314,10 @@ const nodeEdit = () => {
} }
const confirm = () => { const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = structuredClone(that.options) let params = structuredClone(that.options)
baseDialog.value?.close()
delete params.host delete params.host
let params2 = { let params2 = {
"id": params.id, "id": params.id,

View File

@ -1,5 +1,5 @@
<template> <template>
<Dialog ref="baseDialog" :title="t('bottomMenu.groundText')" left="calc(50% - 160px)" top="calc(50% - 120px)"> <Dialog ref="baseDialog" :title="t('bottomMenu.groundText')" left="calc(50% - 160px)" top="calc(50% - 120px)" :closeCallback="closeCallBack">
<template #content> <template #content>
<textarea style="height: 76px; width: 270px" v-model="text"></textarea> <textarea style="height: 76px; width: 270px" v-model="text"></textarea>
</template> </template>
@ -34,9 +34,9 @@ const confirm = () => {
if(!text.value) { if(!text.value) {
return return
} }
baseDialog.value?.close()
let name = text.value let name = text.value
text.value = '' text.value = ''
baseDialog.value?.close()
let Draw = new YJ.Draw.DrawPolyline(window.earth, { number: 2 }) let Draw = new YJ.Draw.DrawPolyline(window.earth, { number: 2 })
Draw.start(async (a, positions) => { Draw.start(async (a, positions) => {
if (!positions || positions.length < 2) { if (!positions || positions.length < 2) {
@ -78,6 +78,9 @@ const confirm = () => {
cusAddNodes(window.treeObj, params.parentId, [params]) cusAddNodes(window.treeObj, params.parentId, [params])
}) })
} }
const closeCallBack = () => {
text.value = ''
}
defineExpose({ defineExpose({
open open
}) })

View File

@ -1,5 +1,5 @@
<template> <template>
<Dialog ref="baseDialog" :title="t('bottomMenu.standText')" left="calc(50% - 160px)" top="calc(50% - 120px)"> <Dialog ref="baseDialog" :title="t('bottomMenu.standText')" left="calc(50% - 160px)" top="calc(50% - 120px)" :closeCallback="closeCallBack">
<template #content> <template #content>
<textarea style="height: 76px; width: 270px" v-model="text"></textarea> <textarea style="height: 76px; width: 270px" v-model="text"></textarea>
</template> </template>
@ -34,9 +34,9 @@ const confirm = () => {
if(!text.value) { if(!text.value) {
return return
} }
baseDialog.value?.close()
let name = text.value let name = text.value
text.value = '' text.value = ''
baseDialog.value?.close()
let Draw = new YJ.Draw.DrawPolyline(window.earth) let Draw = new YJ.Draw.DrawPolyline(window.earth)
Draw.start(async (a, positions) => { Draw.start(async (a, positions) => {
if (!positions || positions.length < 2) { if (!positions || positions.length < 2) {
@ -50,7 +50,6 @@ const confirm = () => {
}, null) }, null)
delete options.host delete options.host
delete options.name delete options.name
console.log('options', options)
let selectedNodes = window.treeObj.getSelectedNodes() let selectedNodes = window.treeObj.getSelectedNodes()
let node = selectedNodes && selectedNodes[selectedNodes.length - 1] let node = selectedNodes && selectedNodes[selectedNodes.length - 1]
let parentId let parentId
@ -77,6 +76,9 @@ const confirm = () => {
cusAddNodes(window.treeObj, params.parentId, [params]) cusAddNodes(window.treeObj, params.parentId, [params])
}) })
} }
const closeCallBack = () => {
text.value = ''
}
defineExpose({ defineExpose({
open open
}) })

View File

@ -155,12 +155,14 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { ref } from 'vue';
import { inject } from "vue"; import { inject } from "vue";
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import Dialog from '@/components/dialog/baseDialog.vue' import Dialog from '@/components/dialog/baseDialog.vue'
import attribute from './attribute.vue' import attribute from './attribute.vue'
import labelStyle from './labelStyle.vue' import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode' import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { t } = useI18n()
const { cusUpdateNode, cusRemoveNode } = useTreeNode() const { cusUpdateNode, cusRemoveNode } = useTreeNode()
const title = ref('箭头') const title = ref('箭头')
@ -334,6 +336,7 @@ const nodeEdit = () => {
} }
const confirm = () => { const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
let params = structuredClone(that.options) let params = structuredClone(that.options)
baseDialog.value?.close() baseDialog.value?.close()

View File

@ -211,7 +211,7 @@
<div class="td" style="width: 60px; flex: 0 60px;min-width: 60px;">{{ index + 1 }}</div> <div class="td" style="width: 60px; flex: 0 60px;min-width: 60px;">{{ index + 1 }}</div>
<div class="td" style="flex: 0 0 280px;">{{ item.name }}</div> <div class="td" style="flex: 0 0 280px;">{{ item.name }}</div>
<div class="td"><input class="input" type="number" title="" min="0" max="999999999" v-model="item.cnt" <div class="td"><input class="input" type="number" title="" min="0" max="999999999" v-model="item.cnt"
@blur="changeAttributeGoods(item)"> @blur="changeAttributeGoods(item)" @input="$handleInputLimit">
</div> </div>
</div> </div>
</div> </div>
@ -531,7 +531,7 @@ const _addRr = () => {
ipcRenderer.once('selectedItem', (event, filePaths) => { ipcRenderer.once('selectedItem', (event, filePaths) => {
if (filePaths.length > 0) { if (filePaths.length > 0) {
filePaths.forEach((item) => { filePaths.forEach((item) => {
attribute.value.link.content.push({ attribute.value.vr.content.push({
name: '全景图', name: '全景图',
url: item url: item
}) })

View File

@ -13,7 +13,7 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label" style="flex: unset">{{ t('dialog.name') }}</span> <span class="label" style="flex: unset">{{ t('dialog.name') }}</span>
<input class="input" type="text" v-model="entityOptions.name" @change="changeName" /> <input class="input" type="text" v-model="entityOptions.labelText" @change="changeName" />
</div> </div>
<div class="col"></div> <div class="col"></div>
</div> </div>
@ -36,6 +36,7 @@
max="180" max="180"
v-model="entityOptions.lng" v-model="entityOptions.lng"
@change="changLng" @change="changLng"
@input="$handleInputLimit"
/> />
</div> </div>
</div> </div>
@ -50,6 +51,7 @@
max="90" max="90"
v-model="entityOptions.lat" v-model="entityOptions.lat"
@change="changLat" @change="changLat"
@input="$handleInputLimit"
/> />
</div> </div>
</div> </div>
@ -68,6 +70,7 @@
max="999999999" max="999999999"
v-model="entityOptions.alt" v-model="entityOptions.alt"
@change="changAlt" @change="changAlt"
@input="$handleInputLimit"
/> />
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
@ -149,6 +152,7 @@
min="1" min="1"
max="99999999" max="99999999"
v-model="entityOptions.near" v-model="entityOptions.near"
@input="$handleInputLimit"
/> />
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
@ -164,6 +168,7 @@
min="1" min="1"
max="99999999" max="99999999"
v-model="entityOptions.far" v-model="entityOptions.far"
@input="$handleInputLimit"
/> />
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
@ -206,6 +211,7 @@
max="999999999" max="999999999"
v-model="height" v-model="height"
@change="changHeight" @change="changHeight"
@input="$handleInputLimit"
/> />
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
@ -384,6 +390,7 @@
min="0.1" min="0.1"
max="99" max="99"
v-model="entityOptions.billboardScale" v-model="entityOptions.billboardScale"
@input="$handleInputLimit"
/> />
<span class="unit"></span> <span class="unit"></span>
<span class="arrow"></span> <span class="arrow"></span>
@ -425,6 +432,7 @@
max="99" max="99"
v-model="entityOptions.labelFontSize" v-model="entityOptions.labelFontSize"
style="width: 70px" style="width: 70px"
@input="$handleInputLimit"
/> />
<span class="unit">px</span> <span class="unit">px</span>
<span class="arrow"></span> <span class="arrow"></span>
@ -581,9 +589,9 @@ const coordinateChange = () => {
let position = window.earth.proj.convert( let position = window.earth.proj.convert(
[ [
{ {
x: entityOptions.value.lng, x: entityOptions.value.lng || 0,
y: entityOptions.value.lat, y: entityOptions.value.lat || 0,
z: entityOptions.value.alt z: entityOptions.value.alt || 0
} }
], ],
'EPSG:4326', 'EPSG:4326',
@ -598,7 +606,7 @@ const heightModeChange = (val) => {
switch (val) { switch (val) {
case 0: case 0:
case '0': case '0':
height.value = entityOptions.value.alt height.value = entityOptions.value.alt || 0
break break
case 1: case 1:
case '1': case '1':
@ -606,10 +614,10 @@ const heightModeChange = (val) => {
window.Cesium.sampleTerrainMostDetailed(window.earth.viewer.scene.terrainProvider, [ window.Cesium.sampleTerrainMostDetailed(window.earth.viewer.scene.terrainProvider, [
window.Cesium.Cartographic.fromDegrees(entityOptions.value.lng, entityOptions.value.lat) window.Cesium.Cartographic.fromDegrees(entityOptions.value.lng, entityOptions.value.lat)
]).then((position) => { ]).then((position) => {
height.value = entityOptions.value.alt - Number(position[0].height.toFixed(2)) height.value = (entityOptions.value.alt || 0) - Number(position[0].height.toFixed(2))
}) })
} else { } else {
height.value = entityOptions.value.alt height.value = entityOptions.value.alt || 0
} }
break break
case 2: case 2:
@ -635,14 +643,17 @@ const heightModeChange = (val) => {
} }
const changLng = () => { const changLng = () => {
entityOptions.value.lng = entityOptions.value.lng || 0
projConvert() projConvert()
coordinateChange() coordinateChange()
} }
const changLat = () => { const changLat = () => {
entityOptions.value.lat = entityOptions.value.lat || 0
projConvert() projConvert()
coordinateChange() coordinateChange()
} }
const changAlt = () => { const changAlt = () => {
entityOptions.value.alt = entityOptions.value.alt || 0
heightModeChange(heightMode.value) heightModeChange(heightMode.value)
coordinateChange() coordinateChange()
} }
@ -707,8 +718,8 @@ const projConvert = () => {
latdnsArr1, latdnsArr1,
latdnsArr2, latdnsArr2,
latdnsArr3 latdnsArr3
lng = entityOptions.value.lng lng = entityOptions.value.lng || 0
lat = entityOptions.value.lat lat = entityOptions.value.lat || 0
lngDM = that._proj.degreesToDMS(lng, true) lngDM = that._proj.degreesToDMS(lng, true)
latDM = that._proj.degreesToDMS(lat, true) latDM = that._proj.degreesToDMS(lat, true)
lngdnArr1 = lngDM.split('°') lngdnArr1 = lngDM.split('°')
@ -746,6 +757,7 @@ const translate = () => {
}) })
} }
const confirm = () => { const confirm = () => {
entityOptions.value.labelText = entityOptions.value.labelText || t("default.untitled")
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
baseDialog.value?.close() baseDialog.value?.close()
let params = structuredClone(that.options) let params = structuredClone(that.options)

View File

@ -11,7 +11,7 @@
</div> </div>
<div class="col"> <div class="col">
<span class="label">透明度</span> <span class="label">透明度</span>
<input type="range" min="0" max="1" step="0.01" v-model="entityOptions.transparency"> <input type="range" min="0" max="1" step="0.01" v-model="entityOptions.transparency" @input="$handleInputLimit">
</div> </div>
</div> </div>
</div> </div>
@ -20,12 +20,12 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">经度</span> <span class="label">经度</span>
<input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lng"> <input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lng" @input="$handleInputLimit">
</div> </div>
<div class="col"> <div class="col">
<span class="label">波纹层数</span> <span class="label">波纹层数</span>
<div class="input-number input-number-unit"> <div class="input-number input-number-unit">
<input class="input" type="number" title="" min="1" max="10" v-model="entityOptions.count"> <input class="input" type="number" title="" min="1" max="10" v-model="entityOptions.count" @input="$handleInputLimit">
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
</div> </div>
@ -33,12 +33,12 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">纬度</span> <span class="label">纬度</span>
<input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lat"> <input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lat" @input="$handleInputLimit">
</div> </div>
<div class="col"> <div class="col">
<span class="label">扩散速度</span> <span class="label">扩散速度</span>
<div class="input-number input-number-unit"> <div class="input-number input-number-unit">
<input class="input" type="number" title="" min="0" max="20" v-model="entityOptions.speed"> <input class="input" type="number" title="" min="0" max="20" v-model="entityOptions.speed" @input="$handleInputLimit">
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
</div> </div>
@ -64,7 +64,7 @@
<div class="col"> <div class="col">
<span class="label">半径</span> <span class="label">半径</span>
<input class="input" type="number" title="" min="0" max="999999" v-model="item.radius" <input class="input" type="number" title="" min="0" max="999999" v-model="item.radius"
@input="changeRadius(index)"> @input="changeRadius">
</div> </div>
<div class="col" style="flex-direction: row-reverse;"> <div class="col" style="flex-direction: row-reverse;">
<div class="color" :ref="el => colorRefs[index] = el"></div> <div class="color" :ref="el => colorRefs[index] = el"></div>
@ -110,7 +110,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { ref } from 'vue';
import { inject } from "vue"; import { inject, getCurrentInstance } from "vue";
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue' import Dialog from '@/components/dialog/baseDialog.vue'
@ -118,7 +118,7 @@ import attribute from './attribute.vue'
import labelStyle from './labelStyle.vue' import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode' import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const { proxy } = getCurrentInstance()!
const baseDialog: any = ref(null); const baseDialog: any = ref(null);
const eventBus: any = inject("bus"); const eventBus: any = inject("bus");
@ -213,7 +213,8 @@ const minusCircle = async (index) => {
}) })
} }
} }
const changeRadius = async (index) => { const changeRadius = async (e) => {
proxy.$handleInputLimit(e)
let newCircle = JSON.parse(JSON.stringify(circle.value)) let newCircle = JSON.parse(JSON.stringify(circle.value))
if (radiusUnit.value == 'km') { if (radiusUnit.value == 'km') {
for (let i = 0; i < newCircle.length; i++) { for (let i = 0; i < newCircle.length; i++) {

View File

@ -73,6 +73,7 @@
title="" title=""
min="-9999999" min="-9999999"
max="999999999" max="999999999"
@input="$handleInputLimit"
v-model="height" v-model="height"
/> />
<span class="unit">m</span> <span class="unit">m</span>
@ -109,6 +110,7 @@
v-model="item.lng" v-model="item.lng"
min="-180" min="-180"
max="180" max="180"
@input="$handleInputLimit"
v-if="activeTd.index == i && activeTd.name == 'lng'" v-if="activeTd.index == i && activeTd.name == 'lng'"
/> />
<span style="pointer-events: none" v-else>{{ item.lng.toFixed(8) }}</span> <span style="pointer-events: none" v-else>{{ item.lng.toFixed(8) }}</span>
@ -121,6 +123,7 @@
v-model="item.lat" v-model="item.lat"
min="-180" min="-180"
max="180" max="180"
@input="$handleInputLimit"
v-if="activeTd.index == i && activeTd.name == 'lat'" v-if="activeTd.index == i && activeTd.name == 'lat'"
/> />
<span style="pointer-events: none" v-else>{{ item.lat.toFixed(8) }}</span> <span style="pointer-events: none" v-else>{{ item.lat.toFixed(8) }}</span>
@ -133,6 +136,7 @@
v-model="item.alt" v-model="item.alt"
min="-9999999" min="-9999999"
max="999999999" max="999999999"
@input="$handleInputLimit"
v-if="activeTd.index == i && activeTd.name == 'alt'" v-if="activeTd.index == i && activeTd.name == 'alt'"
/> />
<span style="pointer-events: none" v-else>{{ item.alt.toFixed(2) }}</span> <span style="pointer-events: none" v-else>{{ item.alt.toFixed(2) }}</span>
@ -157,6 +161,7 @@
title="" title=""
min="1" min="1"
max="999" max="999"
@input="$handleInputLimit"
v-model="entityOptions.lineWidth" v-model="entityOptions.lineWidth"
/> />
<span class="unit">px</span> <span class="unit">px</span>
@ -198,6 +203,7 @@
min="0" min="0"
data-min="0.01" data-min="0.01"
max="999999" max="999999"
@input="$handleInputLimit"
v-model="entityOptions.extendWidth" v-model="entityOptions.extendWidth"
/> />
<span class="unit">m</span> <span class="unit">m</span>
@ -224,6 +230,7 @@
min="0" min="0"
max="999999" max="999999"
step="1" step="1"
@input="$handleInputLimit"
v-model="entityOptions.speed" v-model="entityOptions.speed"
/> />
<span class="arrow"></span> <span class="arrow"></span>
@ -247,6 +254,7 @@
min="0" min="0"
max="4.5" max="4.5"
step="0.1" step="0.1"
@input="$handleInputLimit"
v-model="entityOptions.space" v-model="entityOptions.space"
/> />
<span class="unit"></span> <span class="unit"></span>
@ -287,6 +295,7 @@
import { ref, getCurrentInstance } from 'vue' import { ref, getCurrentInstance } from 'vue'
import { inject } from 'vue' import { inject } from 'vue'
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import { useI18n } from 'vue-i18n'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue' import Dialog from '@/components/dialog/baseDialog.vue'
import { getFontList } from './fontSelect' import { getFontList } from './fontSelect'
@ -294,6 +303,7 @@ import attribute from './attribute.vue'
import labelStyle from './labelStyle.vue' import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode' import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const baseDialog: any = ref(null) const baseDialog: any = ref(null)
@ -537,9 +547,10 @@ const closeCallback = () => {
eventBus.emit('destroyComponent') eventBus.emit('destroyComponent')
} }
const confirm = () => { const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = structuredClone(that.options) let params = structuredClone(that.options)
baseDialog.value?.close()
delete params.host delete params.host
let params2 = { let params2 = {
id: params.id, id: params.id,

View File

@ -20,12 +20,12 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">经度</span> <span class="label">经度</span>
<input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lng"> <input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lng" @input="$handleInputLimit">
</div> </div>
<div class="col"> <div class="col">
<span class="label">爆炸范围</span> <span class="label">爆炸范围</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="1" max="999999" v-model="entityOptions.size"> <input class="input" type="number" title="" min="1" max="999999" v-model="entityOptions.size" @input="$handleInputLimit">
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -34,12 +34,12 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">纬度</span> <span class="label">纬度</span>
<input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat"> <input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat" @input="$handleInputLimit">
</div> </div>
<div class="col"> <div class="col">
<span class="label">高度</span> <span class="label">高度</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="-9999999" max="999999999" v-model="entityOptions.alt"> <input class="input" type="number" title="" min="-9999999" max="999999999" v-model="entityOptions.alt" @input="$handleInputLimit">
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>

View File

@ -21,14 +21,14 @@
<div class="col"> <div class="col">
<span class="label">飞线数量</span> <span class="label">飞线数量</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="1" max="99999" v-model="entityOptions.pointNumber"> <input class="input" type="number" title="" min="1" max="99999" v-model="entityOptions.pointNumber" @input="$handleInputLimit">
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
</div> </div>
<div class="col"> <div class="col">
<span class="label">飞线宽度</span> <span class="label">飞线宽度</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" max="99999" min="1" step="1" v-model="entityOptions.width"> <input class="input" type="number" title="" max="99999" min="1" step="1" v-model="entityOptions.width" @input="$handleInputLimit">
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
</div> </div>
@ -40,14 +40,14 @@
<div class="col"> <div class="col">
<span class="label">飞线高度</span> <span class="label">飞线高度</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="0" max="999999" step="1" v-model="entityOptions.height"> <input class="input" type="number" title="" min="0" max="999999" step="1" v-model="entityOptions.height" @input="$handleInputLimit">
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
</div> </div>
<div class="col"> <div class="col">
<span class="label">飞线高度差</span> <span class="label">飞线高度差</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" max="99999" min="0" step="1" v-model="entityOptions.heightDifference"> <input class="input" type="number" title="" max="99999" min="0" step="1" v-model="entityOptions.heightDifference" @input="$handleInputLimit">
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
</div> </div>
@ -58,14 +58,14 @@
<div class="col"> <div class="col">
<span class="label">单次运动时长s</span> <span class="label">单次运动时长s</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" max="999999999" min="1" step="1" v-model="entityOptions.duration"> <input class="input" type="number" title="" max="999999999" min="1" step="1" v-model="entityOptions.duration" @input="$handleInputLimit">
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
</div> </div>
<div class="col"> <div class="col">
<span class="label">轨迹透明度</span> <span class="label">轨迹透明度</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" max="1" min="0.01" step="0.01" v-model="entityOptions.lineBackAlpha"> <input class="input" type="number" title="" max="1" min="0.01" step="0.01" v-model="entityOptions.lineBackAlpha" @input="$handleInputLimit">
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
</div> </div>

View File

@ -26,7 +26,7 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">旋转角度</span> <span class="label">旋转角度</span>
<input type="range" min="0" max="360" step="0.01" v-model="entityOptions.angle" /> <input type="range" min="0" max="360" step="0.01" v-model="entityOptions.angle" @input="$handleInputLimit"/>
<div class="input-number input-number-unit-1" style="width: auto; margin-left: 10px"> <div class="input-number input-number-unit-1" style="width: auto; margin-left: 10px">
<input <input
style="width: 100px" style="width: 100px"
@ -35,6 +35,7 @@
min="0" min="0"
max="360" max="360"
step="0.1" step="0.1"
@input="$handleInputLimit"
v-model="entityOptions.angle" v-model="entityOptions.angle"
/> />
<span class="unit">°</span> <span class="unit">°</span>
@ -50,6 +51,7 @@
min="0.001" min="0.001"
max="200" max="200"
step="0.001" step="0.001"
@input="$handleInputLimit"
v-model="entityOptions.scale.x" v-model="entityOptions.scale.x"
/> />
<div class="input-number input-number-unit-1" style="width: auto; margin-left: 10px"> <div class="input-number input-number-unit-1" style="width: auto; margin-left: 10px">
@ -60,6 +62,7 @@
min="0.001" min="0.001"
max="200" max="200"
step="0.001" step="0.001"
@input="$handleInputLimit"
v-model="entityOptions.scale.x" v-model="entityOptions.scale.x"
/> />
<span class="arrow"></span> <span class="arrow"></span>
@ -74,6 +77,7 @@
min="0.001" min="0.001"
max="200" max="200"
step="0.001" step="0.001"
@input="$handleInputLimit"
v-model="entityOptions.scale.y" v-model="entityOptions.scale.y"
/> />
<div class="input-number input-number-unit-1" style="width: auto; margin-left: 10px"> <div class="input-number input-number-unit-1" style="width: auto; margin-left: 10px">
@ -84,6 +88,7 @@
min="0.001" min="0.001"
max="200" max="200"
step="0.001" step="0.001"
@input="$handleInputLimit"
v-model="entityOptions.scale.y" v-model="entityOptions.scale.y"
/> />
<span class="arrow"></span> <span class="arrow"></span>
@ -120,6 +125,7 @@
title="" title=""
min="1" min="1"
max="99" max="99"
@input="$handleInputLimit"
v-model="entityOptions.textFontSize" v-model="entityOptions.textFontSize"
/> />
<span class="unit">px</span> <span class="unit">px</span>
@ -147,6 +153,7 @@
title="" title=""
min="1" min="1"
max="99999999" max="99999999"
@input="$handleInputLimit"
v-model="entityOptions.textNear" v-model="entityOptions.textNear"
/> />
<span class="unit">m</span> <span class="unit">m</span>
@ -162,6 +169,7 @@
title="" title=""
min="1" min="1"
max="99999999" max="99999999"
@input="$handleInputLimit"
v-model="entityOptions.textFar" v-model="entityOptions.textFar"
/> />
<span class="unit">m</span> <span class="unit">m</span>

View File

@ -20,12 +20,12 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">经度</span> <span class="label">经度</span>
<input class="input" type="number" title="" min="-180" max="180" <input class="input" type="number" title="" min="-180" max="180" @input="$handleInputLimit"
v-model="entityOptions.lng"> v-model="entityOptions.lng">
</div> </div>
<div class="col"> <div class="col">
<span class="label">纬度</span> <span class="label">纬度</span>
<input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat"> <input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat" @input="$handleInputLimit">
</div> </div>
</div> </div>
</div> </div>
@ -37,7 +37,7 @@
<input type="range" max="360" min="0" step="1" v-model="entityOptions.angle"> <input type="range" max="360" min="0" step="1" v-model="entityOptions.angle">
<div class="input-number input-number-unit" <div class="input-number input-number-unit"
style="width: 100px;flex: 0 0 100px;margin-left: 10px;"> style="width: 100px;flex: 0 0 100px;margin-left: 10px;">
<input class="input" type="number" title="" min="0" max="360" step="1" <input class="input" type="number" title="" min="0" max="360" step="1" @input="$handleInputLimit"
v-model="entityOptions.angle"> v-model="entityOptions.angle">
<span class="unit">°</span> <span class="unit">°</span>
<span class="arrow"></span> <span class="arrow"></span>
@ -60,7 +60,7 @@
<span class="label">滚动速度</span> <span class="label">滚动速度</span>
<input type="range" max="100" min="0" step="1" v-model="entityOptions.speed"> <input type="range" max="100" min="0" step="1" v-model="entityOptions.speed">
<div class="input-number" style="width: 100px;flex: 0 0 100px;margin-left: 10px;"> <div class="input-number" style="width: 100px;flex: 0 0 100px;margin-left: 10px;">
<input class="input" type="number" title="" min="0" max="100" step="1" <input class="input" type="number" title="" min="0" max="100" step="1" @input="$handleInputLimit"
v-model="entityOptions.speed"> v-model="entityOptions.speed">
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -85,10 +85,13 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { ref } from 'vue';
import { inject } from "vue"; import { inject } from "vue";
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue' import Dialog from '@/components/dialog/baseDialog.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode' import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const baseDialog: any = ref(null); const baseDialog: any = ref(null);
@ -123,9 +126,10 @@ const open = async (id: any) => {
}) })
} }
const confirm = () => { const confirm = () => {
entityOptions.value.text = entityOptions.value.text || t("default.untitled")
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = structuredClone(that.options) let params = structuredClone(that.options)
baseDialog.value?.close()
// 删除不必要的属性 // 删除不必要的属性
delete params.host delete params.host
delete params.name delete params.name

View File

@ -30,6 +30,7 @@
title="" title=""
min="1" min="1"
max="99999999" max="99999999"
@input="$handleInputLimit"
v-model="entityOptions.labelNear" v-model="entityOptions.labelNear"
/> />
<span class="unit">m</span> <span class="unit">m</span>
@ -45,6 +46,7 @@
title="" title=""
min="1" min="1"
max="99999999" max="99999999"
@input="$handleInputLimit"
v-model="entityOptions.labelFar" v-model="entityOptions.labelFar"
/> />
<span class="unit">m</span> <span class="unit">m</span>
@ -73,6 +75,7 @@
title="" title=""
min="1" min="1"
max="99" max="99"
@input="$handleInputLimit"
v-model="entityOptions.labelFontSize" v-model="entityOptions.labelFontSize"
/> />
<span class="unit">px</span> <span class="unit">px</span>
@ -126,6 +129,7 @@
title="" title=""
min="1" min="1"
max="999" max="999"
@input="$handleInputLimit"
v-model="entityOptions.labelLineWidth" v-model="entityOptions.labelLineWidth"
/> />
<span class="unit">px</span> <span class="unit">px</span>
@ -141,6 +145,7 @@
title="" title=""
min="0" min="0"
max="999" max="999"
@input="$handleInputLimit"
v-model="entityOptions.labelPixelOffset" v-model="entityOptions.labelPixelOffset"
/> />
<span class="unit">px</span> <span class="unit">px</span>

View File

@ -32,6 +32,7 @@
title="" title=""
min="-180" min="-180"
max="180" max="180"
@input="$handleInputLimit"
v-model="entityOptions.lng" v-model="entityOptions.lng"
/> />
</div> </div>
@ -44,6 +45,7 @@
title="" title=""
min="0.1" min="0.1"
max="99999" max="99999"
@input="$handleInputLimit"
v-model="entityOptions.maximumScale" v-model="entityOptions.maximumScale"
/> />
<span class="unit"></span> <span class="unit"></span>
@ -60,6 +62,7 @@
title="" title=""
min="-90" min="-90"
max="90" max="90"
@input="$handleInputLimit"
v-model="entityOptions.lat" v-model="entityOptions.lat"
/> />
</div> </div>
@ -72,6 +75,7 @@
title="" title=""
min="1" min="1"
max="99999" max="99999"
@input="$handleInputLimit"
v-model="entityOptions.minimumPixelSize" v-model="entityOptions.minimumPixelSize"
/> />
<span class="unit">px</span> <span class="unit">px</span>
@ -89,6 +93,7 @@
title="" title=""
min="-99999" min="-99999"
max="9999999" max="9999999"
@input="$handleInputLimit"
v-model="entityOptions.alt" v-model="entityOptions.alt"
/> />
<span class="unit">m</span> <span class="unit">m</span>
@ -133,6 +138,7 @@
title="" title=""
min="0" min="0"
max="360" max="360"
@input="$handleInputLimit"
v-model="entityOptions.rotateX" v-model="entityOptions.rotateX"
/> />
<span class="unit">°</span> <span class="unit">°</span>
@ -160,6 +166,7 @@
title="" title=""
min="0" min="0"
max="360" max="360"
@input="$handleInputLimit"
v-model="entityOptions.rotateY" v-model="entityOptions.rotateY"
/> />
<span class="unit">°</span> <span class="unit">°</span>
@ -187,6 +194,7 @@
title="" title=""
min="0" min="0"
max="360" max="360"
@input="$handleInputLimit"
v-model="entityOptions.rotateZ" v-model="entityOptions.rotateZ"
/> />
<span class="unit">°</span> <span class="unit">°</span>
@ -225,6 +233,7 @@
title="" title=""
min="0" min="0"
max="360" max="360"
@input="$handleInputLimit"
@change="scaleChange" @change="scaleChange"
v-model="entityOptions.scaleX" v-model="entityOptions.scaleX"
/> />
@ -254,6 +263,7 @@
title="" title=""
min="0" min="0"
max="360" max="360"
@input="$handleInputLimit"
v-model="entityOptions.scaleX" v-model="entityOptions.scaleX"
/> />
<span class="unit">°</span> <span class="unit">°</span>
@ -281,6 +291,7 @@
title="" title=""
min="0" min="0"
max="360" max="360"
@input="$handleInputLimit"
v-model="entityOptions.scaleY" v-model="entityOptions.scaleY"
/> />
<span class="unit">°</span> <span class="unit">°</span>
@ -308,6 +319,7 @@
title="" title=""
min="0" min="0"
max="360" max="360"
@input="$handleInputLimit"
v-model="entityOptions.scaleZ" v-model="entityOptions.scaleZ"
/> />
<span class="unit">°</span> <span class="unit">°</span>
@ -340,6 +352,7 @@
title="" title=""
min="0" min="0"
max="360" max="360"
@input="$handleInputLimit"
v-model="entityOptions.alt" v-model="entityOptions.alt"
/> />
<span class="unit">m</span> <span class="unit">m</span>
@ -386,6 +399,7 @@
title="" title=""
min="1" min="1"
max="99" max="99"
@input="$handleInputLimit"
v-model="entityOptions.labelFontSize" v-model="entityOptions.labelFontSize"
/> />
<span class="unit">px</span> <span class="unit">px</span>
@ -413,6 +427,7 @@
title="" title=""
min="1" min="1"
max="99999999" max="99999999"
@input="$handleInputLimit"
v-model="entityOptions.labelNear" v-model="entityOptions.labelNear"
/> />
<span class="unit">m</span> <span class="unit">m</span>
@ -428,6 +443,7 @@
title="" title=""
min="1" min="1"
max="99999999" max="99999999"
@input="$handleInputLimit"
v-model="entityOptions.labelFar" v-model="entityOptions.labelFar"
/> />
<span class="unit">m</span> <span class="unit">m</span>
@ -462,6 +478,7 @@
title="" title=""
min="1" min="1"
max="999" max="999"
@input="$handleInputLimit"
v-model="entityOptions.labelLineWidth" v-model="entityOptions.labelLineWidth"
/> />
<span class="unit">px</span> <span class="unit">px</span>
@ -477,6 +494,7 @@
title="" title=""
min="0" min="0"
max="999" max="999"
@input="$handleInputLimit"
v-model="entityOptions.labelPixelOffset" v-model="entityOptions.labelPixelOffset"
/> />
<span class="unit">px</span> <span class="unit">px</span>
@ -514,6 +532,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { ref } from 'vue'
import { inject } from 'vue' import { inject } from 'vue'
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import Dialog from '@/components/dialog/baseDialog.vue' import Dialog from '@/components/dialog/baseDialog.vue'
import attribute from './attribute.vue' import attribute from './attribute.vue'
@ -521,6 +540,7 @@ import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode' import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
import { getFontList } from './fontSelect' import { getFontList } from './fontSelect'
const { t } = useI18n()
const { cusUpdateNode, cusRemoveNode } = useTreeNode() const { cusUpdateNode, cusRemoveNode } = useTreeNode()
const fontList = ref(getFontList()) const fontList = ref(getFontList())
@ -713,9 +733,10 @@ const nodeEdit = () => {
} }
const confirm = () => { const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = structuredClone(that.options) let params = structuredClone(that.options)
baseDialog.value?.close()
delete params.attributeType delete params.attributeType
delete params.attribute.ISC delete params.attribute.ISC
delete params.attribute.camera delete params.attribute.camera

View File

@ -15,18 +15,18 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">经度</span> <span class="label">经度</span>
<input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lng" /> <input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lng" @input="$handleInputLimit" />
</div> </div>
<div class="col"> <div class="col">
<span class="label">纬度</span> <span class="label">纬度</span>
<input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat" /> <input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat" @input="$handleInputLimit" />
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">高度</span> <span class="label">高度</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" v-model="entityOptions.alt"> <input class="input" type="number" title="" v-model="entityOptions.alt" @input="$handleInputLimit" />
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>

View File

@ -43,7 +43,7 @@
<div class="col"> <div class="col">
<span class="label">Z值统一增加</span> <span class="label">Z值统一增加</span>
<div class="input-number input-number-unit-1 height-box" :class="{ 'disabled': heightMode == 2 }"> <div class="input-number input-number-unit-1 height-box" :class="{ 'disabled': heightMode == 2 }">
<input class="input height" type="number" title="" min="-9999999" max="999999999" v-model="height"> <input class="input height" type="number" title="" min="-9999999" max="999999999" v-model="height" @input="$handleInputLimit" />
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -66,15 +66,15 @@
<div class="td">{{ i + 1 }}</div> <div class="td">{{ i + 1 }}</div>
<div class="td lng align-center" @dblclick="inputDblclick($event, i, 'lng')"> <div class="td lng align-center" @dblclick="inputDblclick($event, i, 'lng')">
<input class="input" @blur="inputBlurCallBack($event, i, 'lng', 8)" type="number" <input class="input" @blur="inputBlurCallBack($event, i, 'lng', 8)" type="number"
v-model="item.lng" min="-180" max="180" v-if="activeTd.index == i && activeTd.name == 'lng'"> v-model="item.lng" min="-180" max="180" v-if="activeTd.index == i && activeTd.name == 'lng'" @input="$handleInputLimit" />
<span style="pointer-events: none;" v-else>{{ (item.lng).toFixed(8) }}</span> <span style="pointer-events: none;" v-else>{{ (item.lng).toFixed(8) }}</span>
</div> </div>
<div class="td lat align-center" @dblclick="inputDblclick($event, i, 'lat')"> <div class="td lat align-center" @dblclick="inputDblclick($event, i, 'lat')">
<input class="input" @blur="inputBlurCallBack($event, i, 'lat', 8)" type="number" <input class="input" @blur="inputBlurCallBack($event, i, 'lat', 8)" type="number"
v-model="item.lat" min="-180" max="180" v-if="activeTd.index == i && activeTd.name == 'lat'"> v-model="item.lat" min="-180" max="180" v-if="activeTd.index == i && activeTd.name == 'lat'" @input="$handleInputLimit">
<span style="pointer-events: none;" v-else>{{ (item.lat).toFixed(8) }}</span> <span style="pointer-events: none;" v-else>{{ (item.lat).toFixed(8) }}</span>
</div> </div>
<div class="td alt align-center" @dblclick="inputDblclick($event, i, 'alt')"> <div class="td alt align-center" @dblclick="inputDblclick($event, i, 'alt')" @input="$handleInputLimit">
<input class="input" @blur="inputBlurCallBack($event, i, 'alt', 2)" type="number" <input class="input" @blur="inputBlurCallBack($event, i, 'alt', 2)" type="number"
v-model="entityOptions.height" min="-9999999" max="999999999" v-model="entityOptions.height" min="-9999999" max="999999999"
v-if="activeTd.index == i && activeTd.name == 'alt'"> v-if="activeTd.index == i && activeTd.name == 'alt'">
@ -98,7 +98,7 @@
<div class="col"> <div class="col">
<span class="label">描边宽度</span> <span class="label">描边宽度</span>
<div class="input-number input-number-unit-2"> <div class="input-number input-number-unit-2">
<input class="input" type="number" title="" min="0" max="99" v-model="entityOptions.lineWidth"> <input class="input" type="number" title="" min="0" max="99" v-model="entityOptions.lineWidth" @input="$handleInputLimit">
<span class="unit">px</span> <span class="unit">px</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -132,6 +132,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { ref } from 'vue';
import { inject } from "vue"; import { inject } from "vue";
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue' import Dialog from '@/components/dialog/baseDialog.vue'
@ -139,6 +140,7 @@ import attribute from './attribute.vue'
import labelStyle from './labelStyle.vue' import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode' import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const title = ref('面') const title = ref('面')
@ -310,9 +312,10 @@ const nodeEdit = () => {
} }
const confirm = () => { const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = structuredClone(that.options) let params = structuredClone(that.options)
baseDialog.value?.close()
delete params.host delete params.host
let params2 = { let params2 = {
"id": params.id, "id": params.id,

View File

@ -32,7 +32,7 @@
<div class="col" style="flex: 0 0 60%;"> <div class="col" style="flex: 0 0 60%;">
<span class="label">多面体高度</span> <span class="label">多面体高度</span>
<div class="input-number input-number-unit-2" style="width: 100px;"> <div class="input-number input-number-unit-2" style="width: 100px;">
<input class="input" type="number" title="" min="0" max="99" v-model="entityOptions.height"> <input class="input" type="number" title="" min="0" max="99" v-model="entityOptions.height" @input="$handleInputLimit" />
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>

View File

@ -74,6 +74,7 @@
min="-9999999" min="-9999999"
max="999999999" max="999999999"
v-model="height" v-model="height"
@input="$handleInputLimit"
/> />
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
@ -109,6 +110,7 @@
v-model="item.lng" v-model="item.lng"
min="-180" min="-180"
max="180" max="180"
@input="$handleInputLimit"
v-if="activeTd.index == i && activeTd.name == 'lng'" v-if="activeTd.index == i && activeTd.name == 'lng'"
/> />
<span style="pointer-events: none" v-else>{{ item.lng.toFixed(8) }}</span> <span style="pointer-events: none" v-else>{{ item.lng.toFixed(8) }}</span>
@ -121,6 +123,7 @@
v-model="item.lat" v-model="item.lat"
min="-180" min="-180"
max="180" max="180"
@input="$handleInputLimit"
v-if="activeTd.index == i && activeTd.name == 'lat'" v-if="activeTd.index == i && activeTd.name == 'lat'"
/> />
<span style="pointer-events: none" v-else>{{ item.lat.toFixed(8) }}</span> <span style="pointer-events: none" v-else>{{ item.lat.toFixed(8) }}</span>
@ -133,6 +136,7 @@
v-model="item.alt" v-model="item.alt"
min="-9999999" min="-9999999"
max="999999999" max="999999999"
@input="$handleInputLimit"
v-if="activeTd.index == i && activeTd.name == 'alt'" v-if="activeTd.index == i && activeTd.name == 'alt'"
/> />
<span style="pointer-events: none" v-else>{{ item.alt.toFixed(2) }}</span> <span style="pointer-events: none" v-else>{{ item.alt.toFixed(2) }}</span>
@ -157,6 +161,7 @@
title="" title=""
min="1" min="1"
max="999" max="999"
@input="$handleInputLimit"
v-model="entityOptions.lineWidth" v-model="entityOptions.lineWidth"
/> />
<span class="unit">px</span> <span class="unit">px</span>
@ -209,6 +214,7 @@
min="0" min="0"
data-min="0.01" data-min="0.01"
max="999999" max="999999"
@input="$handleInputLimit"
v-model="entityOptions.extendWidth" v-model="entityOptions.extendWidth"
/> />
<span class="unit">m</span> <span class="unit">m</span>
@ -235,6 +241,7 @@
min="0" min="0"
max="999999" max="999999"
step="1" step="1"
@input="$handleInputLimit"
v-model="entityOptions.speed" v-model="entityOptions.speed"
/> />
<span class="arrow"></span> <span class="arrow"></span>
@ -258,6 +265,7 @@
min="0" min="0"
max="4.5" max="4.5"
step="0.1" step="0.1"
@input="$handleInputLimit"
v-model="entityOptions.space" v-model="entityOptions.space"
/> />
<span class="unit"></span> <span class="unit"></span>
@ -294,6 +302,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, getCurrentInstance } from 'vue' import { ref, getCurrentInstance } from 'vue'
import { inject } from 'vue' import { inject } from 'vue'
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue' import Dialog from '@/components/dialog/baseDialog.vue'
@ -301,6 +310,7 @@ import attribute from './attribute.vue'
import labelStyle from './labelStyle.vue' import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode' import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const baseDialog: any = ref(null) const baseDialog: any = ref(null)
@ -479,6 +489,7 @@ const heightConfirm = () => {
(entityOptions.value.options.positions[i].alt + Number(height.value)).toFixed(2) (entityOptions.value.options.positions[i].alt + Number(height.value)).toFixed(2)
) )
} }
that.positionEditing = false
that.smooth = that.smooth that.smooth = that.smooth
} }
const inputDblclick = async (event, i, anme) => { const inputDblclick = async (event, i, anme) => {
@ -542,9 +553,10 @@ const closeCallback = () => {
eventBus.emit('destroyComponent') eventBus.emit('destroyComponent')
} }
const confirm = () => { const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = structuredClone(that.options) let params = structuredClone(that.options)
baseDialog.value?.close()
delete params.host delete params.host
let params2 = { let params2 = {
id: params.id, id: params.id,

View File

@ -20,7 +20,7 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">经度</span> <span class="label">经度</span>
<input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lng"> <input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lng" @input="$handleInputLimit">
</div> </div>
<div class="col"> <div class="col">
<span class="label">扫描半径</span> <span class="label">扫描半径</span>
@ -38,11 +38,11 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">纬度</span> <span class="label">纬度</span>
<input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat"> <input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat" @input="$handleInputLimit">
</div> </div>
<div class="col"> <div class="col">
<span class="label">扫描速度</span> <span class="label">扫描速度</span>
<input class="input" type="number" title="" min="0" max="100" v-model="entityOptions.speed"> <input class="input" type="number" title="" min="0" max="100" v-model="entityOptions.speed" @input="$handleInputLimit">
</div> </div>
</div> </div>
</div> </div>
@ -72,7 +72,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { ref, getCurrentInstance } from 'vue';
import { inject } from "vue"; import { inject } from "vue";
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
@ -82,6 +82,7 @@ import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode' import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const { proxy } = getCurrentInstance()!
const baseDialog: any = ref(null); const baseDialog: any = ref(null);
const eventBus: any = inject("bus"); const eventBus: any = inject("bus");
@ -166,7 +167,8 @@ const remove = () => {
// 用户点击取消,不执行任何操作 // 用户点击取消,不执行任何操作
}) })
} }
const changeRadius = (val)=>{ const changeRadius = (e)=>{
proxy.$handleInputLimit(e)
if (radiusUnit.value == 'km') { if (radiusUnit.value == 'km') {
entityOptions.value.radius = radius.value * 1000 entityOptions.value.radius = radius.value * 1000
} }

View File

@ -17,7 +17,7 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">经度</span> <span class="label">经度</span>
<input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lng"> <input class="input" type="number" title="" min="-180" max="180" v-model="entityOptions.lng" @input="$handleInputLimit">
</div> </div>
<div class="col"> <div class="col">
<span class="label">扫描半径</span> <span class="label">扫描半径</span>
@ -36,17 +36,17 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">纬度</span> <span class="label">纬度</span>
<input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat"> <input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat" @input="$handleInputLimit">
</div> </div>
<div class="col"> <div class="col">
<span class="label">持续时间</span> <span class="label">持续时间</span>
<input class="input" type="number" title="" min="0" max="100" v-model="entityOptions.duration"> <input class="input" type="number" title="" min="0" max="100" v-model="entityOptions.duration" @input="$handleInputLimit">
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">高度</span> <span class="label">高度</span>
<input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.alt"> <input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.alt" @input="$handleInputLimit">
</div> </div>
<div class="col"> <div class="col">
<div class="row"> <div class="row">
@ -88,7 +88,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { ref, getCurrentInstance } from 'vue';
import { inject } from "vue"; import { inject } from "vue";
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
@ -98,6 +98,7 @@ import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode' import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const { proxy } = getCurrentInstance()!
const baseDialog: any = ref(null); const baseDialog: any = ref(null);
const eventBus: any = inject("bus"); const eventBus: any = inject("bus");
@ -197,7 +198,8 @@ const remove = () => {
// 用户点击取消,不执行任何操作 // 用户点击取消,不执行任何操作
}) })
} }
const changeRadius = (val) => { const changeRadius = (e) => {
proxy.$handleInputLimit(e)
if (radiusUnit.value == 'km') { if (radiusUnit.value == 'km') {
entityOptions.value.radius = radius.value * 1000 entityOptions.value.radius = radius.value * 1000
} }

View File

@ -22,7 +22,7 @@
<span class="label">滚动速度</span> <span class="label">滚动速度</span>
<input type="range" max="100" min="0" step="1" v-model="entityOptions.speed"> <input type="range" max="100" min="0" step="1" v-model="entityOptions.speed">
<div class="input-number" style="width: 100px;flex: 0 0 100px;margin-left: 10px;"> <div class="input-number" style="width: 100px;flex: 0 0 100px;margin-left: 10px;">
<input class="input" type="number" title="" min="0" max="100" step="1" v-model="entityOptions.speed"> <input class="input" type="number" title="" min="0" max="100" step="1" v-model="entityOptions.speed" @input="$handleInputLimit">
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
</div> </div>
@ -84,8 +84,8 @@ const open = async (id: any) => {
} }
const confirm = () => { const confirm = () => {
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = structuredClone(that.options) let params = structuredClone(that.options)
baseDialog.value?.close()
// 删除不必要的属性 // 删除不必要的属性
delete params.host delete params.host
delete params.name delete params.name

View File

@ -22,11 +22,13 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { ref } from 'vue'
import { inject } from 'vue' import { inject } from 'vue'
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue' import Dialog from '@/components/dialog/baseDialog.vue'
import { useTreeNode } from '../tree/hooks/treeNode' import { useTreeNode } from '../tree/hooks/treeNode'
const { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const baseDialog: any = ref(null) const baseDialog: any = ref(null)
@ -52,6 +54,7 @@ const open = async (id: any) => {
await nextTick() await nextTick()
} }
const confirm = () => { const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
baseDialog.value?.close() baseDialog.value?.close()
let params = { let params = {

View File

@ -1,5 +1,5 @@
<template> <template>
<Dialog ref="baseDialog" title="倾斜摄影属性" left="calc(50% - 160px)" top="calc(50% - 120px)" :closeCallback="closeCallback"> <Dialog ref="baseDialog" title="倾斜摄影属性" left="180px" top="100px" :closeCallback="closeCallback">
<template #content> <template #content>
<span class="custom-divider"></span> <span class="custom-divider"></span>
<div class="div-item"> <div class="div-item">
@ -24,7 +24,7 @@
<div class="col"> <div class="col">
<span class="label">精度</span> <span class="label">精度</span>
<div class="input-number input-number-unit-3"> <div class="input-number input-number-unit-3">
<input class="input" type="number" title="" min="0.1" max="10" step="0.1" v-model="entityOptions.accuracy"> <input class="input" type="number" title="" min="0.1" max="10" step="0.1" v-model="entityOptions.accuracy" @input="$handleInputLimit">
<span class="unit"></span> <span class="unit"></span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -57,11 +57,13 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { ref } from 'vue'
import { inject } from 'vue' import { inject } from 'vue'
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue' import Dialog from '@/components/dialog/baseDialog.vue'
import { useTreeNode } from '../tree/hooks/treeNode' import { useTreeNode } from '../tree/hooks/treeNode'
const { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const baseDialog: any = ref(null) const baseDialog: any = ref(null)
@ -87,6 +89,7 @@ const open = async (id: any) => {
await nextTick() await nextTick()
} }
const confirm = () => { const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.newData) originalOptions = structuredClone(that.newData)
baseDialog.value?.close() baseDialog.value?.close()
let params = { let params = {

View File

@ -19,7 +19,7 @@
<div class="col"> <div class="col">
<span class="label" style="flex: 0 0 70px;">起始点高度</span> <span class="label" style="flex: 0 0 70px;">起始点高度</span>
<div class="input-number input-number-unit-1 height-box"> <div class="input-number input-number-unit-1 height-box">
<input class="input" type="number" title="" min="-9999999" max="999999999" v-model="entityOptions.height"> <input class="input" type="number" title="" min="-9999999" max="999999999" v-model="entityOptions.height" @input="$handleInputLimit">
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -27,7 +27,7 @@
<div class="col"> <div class="col">
<span class="label">模型倍数</span> <span class="label">模型倍数</span>
<div class="input-number input-number-unit-2"> <div class="input-number input-number-unit-2">
<input class="input" type="number" title="" min="0" max="99999" step="1" v-model="entityOptions.scale"> <input class="input" type="number" title="" min="0" max="99999" step="1" v-model="entityOptions.scale" @input="$handleInputLimit">
<span class="unit"></span> <span class="unit"></span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -37,7 +37,7 @@
<div class="col"> <div class="col">
<span class="label" style="flex: 0 0 70px;">运行速度</span> <span class="label" style="flex: 0 0 70px;">运行速度</span>
<div class="input-number input-number-unit-3"> <div class="input-number input-number-unit-3">
<input class="input" type="number" title="" min="0" max="99999999" step="1" v-model="entityOptions.speed"> <input class="input" type="number" title="" min="0" max="99999999" step="1" v-model="entityOptions.speed" @input="$handleInputLimit">
<span class="unit">m/s</span> <span class="unit">m/s</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -45,7 +45,7 @@
<div class="col"> <div class="col">
<span class="label">延迟运动</span> <span class="label">延迟运动</span>
<div class="input-number input-number-unit-3"> <div class="input-number input-number-unit-3">
<input class="input" type="number" title="" min="0" max="9999999" v-model="entityOptions.delay"> <input class="input" type="number" title="" min="0" max="9999999" v-model="entityOptions.delay" @input="$handleInputLimit">
<span class="unit">ms</span> <span class="unit">ms</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -171,7 +171,7 @@
<div class="col"> <div class="col">
<span class="label">字体大小</span> <span class="label">字体大小</span>
<div class="input-number input-number-unit-2" style="width: 82px;"> <div class="input-number input-number-unit-2" style="width: 82px;">
<input class="input" type="number" title="" min="1" max="99" v-model="entityOptions.labelFontSize"> <input class="input" type="number" title="" min="1" max="99" v-model="entityOptions.labelFontSize" @input="$handleInputLimit">
<span class="unit">px</span> <span class="unit">px</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -185,7 +185,7 @@
<div class="col"> <div class="col">
<span class="label">最近距离</span> <span class="label">最近距离</span>
<div class="input-number input-number-unit-1" style="width: 82px;"> <div class="input-number input-number-unit-1" style="width: 82px;">
<input class="input" type="number" title="" min="1" max="99999999" v-model="entityOptions.labelNear"> <input class="input" type="number" title="" min="1" max="99999999" v-model="entityOptions.labelNear" @input="$handleInputLimit">
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -193,7 +193,7 @@
<div class="col"> <div class="col">
<span class="label">最远距离</span> <span class="label">最远距离</span>
<div class="input-number input-number-unit-1" style="width: 82px;"> <div class="input-number input-number-unit-1" style="width: 82px;">
<input class="input" type="number" title="" min="1" max="99999999" v-model="entityOptions.labelFar"> <input class="input" type="number" title="" min="1" max="99999999" v-model="entityOptions.labelFar" @input="$handleInputLimit">
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -217,12 +217,14 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { ref } from 'vue'
import { inject } from 'vue' import { inject } from 'vue'
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree' import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue' import Dialog from '@/components/dialog/baseDialog.vue'
import { useTreeNode } from '../tree/hooks/treeNode' import { useTreeNode } from '../tree/hooks/treeNode'
import { getFontList } from './fontSelect' import { getFontList } from './fontSelect'
const { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const baseDialog: any = ref(null) const baseDialog: any = ref(null)
@ -265,9 +267,10 @@ const open = async (id: any) => {
}) })
} }
const confirm = () => { const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = structuredClone(that.options) let params = structuredClone(that.options)
baseDialog.value?.close()
// 删除不必要的属性 // 删除不必要的属性
delete params.host delete params.host
delete params.label.text delete params.label.text

View File

@ -22,7 +22,7 @@
<span class="label">宽度</span> <span class="label">宽度</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" data-min="0.01" min="0.01" max="999999" <input class="input" type="number" title="" data-min="0.01" min="0.01" max="999999"
v-model="entityOptions.width"> v-model="entityOptions.width" @input="$handleInputLimit">
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -31,7 +31,7 @@
<span class="label">拉伸高度</span> <span class="label">拉伸高度</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="0" max="999999999" <input class="input" type="number" title="" min="0" max="999999999"
v-model="entityOptions.extrudedHeight"> v-model="entityOptions.extrudedHeight" @input="$handleInputLimit">
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>

View File

@ -22,7 +22,7 @@
<span class="label">拉伸高度</span> <span class="label">拉伸高度</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="0" max="999999999" <input class="input" type="number" title="" min="0" max="999999999"
v-model="entityOptions.extrudedHeight"> v-model="entityOptions.extrudedHeight" @input="$handleInputLimit">
<span class="unit">m</span> <span class="unit">m</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>

View File

@ -30,7 +30,7 @@
<span class="label">水面振幅</span> <span class="label">水面振幅</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="0" max="100" step="1" <input class="input" type="number" title="" min="0" max="100" step="1"
v-model="entityOptions.amplitude"> v-model="entityOptions.amplitude" @input="$handleInputLimit">
<span class="unit"></span> <span class="unit"></span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -41,7 +41,7 @@
<span class="label">动画速度</span> <span class="label">动画速度</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="0" max="10" step="0.1" <input class="input" type="number" title="" min="0" max="10" step="0.1"
v-model="entityOptions.animationSpeed"> v-model="entityOptions.animationSpeed" @input="$handleInputLimit">
<span class="unit"></span> <span class="unit"></span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -50,7 +50,7 @@
<span class="label">水面振幅</span> <span class="label">水面振幅</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="0" max="100" step="1" <input class="input" type="number" title="" min="0" max="100" step="1"
v-model="entityOptions.frequency"> v-model="entityOptions.frequency" @input="$handleInputLimit">
<span class="unit"></span> <span class="unit"></span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>

View File

@ -429,9 +429,13 @@ export const useRightOperate = () => {
let entityObject = (window as any)._entityMap.get(params.id) let entityObject = (window as any)._entityMap.get(params.id)
entityObject.resetCustomView() entityObject.resetCustomView()
params.customView = entityObject.customView params.customView = entityObject.customView
let sourceName = params.name
if(node.sourceType == 'standText' || node.sourceType == 'groundText') {
sourceName = params.text
}
let params2 = { let params2 = {
"id": node.id, "id": node.id,
"sourceName": params.name, "sourceName": sourceName,
// "sourceType": node.sourceType, // "sourceType": node.sourceType,
// "parentId": node.parentId, // "parentId": node.parentId,
// "treeIndex": node.treeIndex, // "treeIndex": node.treeIndex,

View File

@ -72,7 +72,9 @@ function leftClick(options) {
// item.previewUrl = res.url; // item.previewUrl = res.url;
// }); // });
// }); // });
if (node) { if (node && (node.sourceType === "point" || node.sourceType === "linkImage" || node.sourceType === "vrImage" || node.sourceType === "line" || node.sourceType === "curve" || node.sourceType === "panel" || node.sourceType === "rectangle"
|| node.sourceType === "circle" || node.sourceType === "ellipse" || node.sourceType === "sector" || node.sourceType === "rendezvous" || node.sourceType === "attackArrow" || node.sourceType === "pincerArrow" || node.sourceType === "straightArrow"
|| node.sourceType === "model" || node.sourceType === "military" || node.sourceType === "wallStereoscopic" || node.sourceType === "entityWall" || node.sourceType === "diffuseScan" || node.sourceType === "radarScan" || node.sourceType === "scanStereoscopic")) {
if ( if (
!options.richTextContent && !options.richTextContent &&
!info.hrefs.length && !info.hrefs.length &&

View File

@ -783,9 +783,11 @@ defineExpose({
.el-select-dropdown__wrap { .el-select-dropdown__wrap {
max-height: 260px !important; max-height: 260px !important;
width: 380px !important;
} }
.custom-dropdown { .custom-dropdown {
margin-top: 75px; margin-top: 75px;
} }
.custom-dropdown2 {
width: 380px !important;
}
</style> </style>