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: '曲线标注',
panel: '面标注',
roam: '漫游路径',
untitled: '未命名对象'
},
system: {
systemTitle: '系统面板',

View File

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

View File

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

View File

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

View File

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

View File

@ -43,7 +43,7 @@
<div class="col">
<span class="label">Z值统一增加</span>
<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="arrow"></span>
</div>
@ -66,18 +66,18 @@
<div class="td">圆心坐标</div>
<div class="td lng align-center" @dblclick="inputDblclick($event, 1, 'lng')">
<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>
</div>
<div class="td lat align-center" @dblclick="inputDblclick($event, 1, 'lat')">
<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>
</div>
<div class="td alt align-center" @dblclick="inputDblclick($event, 1, 'alt')">
<input class="input" @blur="inputBlurCallBack($event, 1, 'alt', 2)" type="number"
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>
</div>
</div>
@ -98,7 +98,7 @@
<div class="col">
<span class="label">描边宽度</span>
<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="arrow"></span>
</div>
@ -132,6 +132,7 @@
<script setup lang="ts">
import { ref } from 'vue';
import { inject } from "vue";
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue'
@ -139,6 +140,7 @@ import attribute from './attribute.vue'
import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const title = ref('圆')
@ -312,9 +314,10 @@ const nodeEdit = () => {
}
const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = structuredClone(that.options)
baseDialog.value?.close()
delete params.host
let params2 = {
"id": params.id,

View File

@ -1,5 +1,5 @@
<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>
<textarea style="height: 76px; width: 270px" v-model="text"></textarea>
</template>
@ -34,9 +34,9 @@ const confirm = () => {
if(!text.value) {
return
}
baseDialog.value?.close()
let name = text.value
text.value = ''
baseDialog.value?.close()
let Draw = new YJ.Draw.DrawPolyline(window.earth, { number: 2 })
Draw.start(async (a, positions) => {
if (!positions || positions.length < 2) {
@ -78,6 +78,9 @@ const confirm = () => {
cusAddNodes(window.treeObj, params.parentId, [params])
})
}
const closeCallBack = () => {
text.value = ''
}
defineExpose({
open
})

View File

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

View File

@ -155,12 +155,14 @@
<script setup lang="ts">
import { ref } from 'vue';
import { inject } from "vue";
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree'
import Dialog from '@/components/dialog/baseDialog.vue'
import attribute from './attribute.vue'
import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { t } = useI18n()
const { cusUpdateNode, cusRemoveNode } = useTreeNode()
const title = ref('箭头')
@ -334,6 +336,7 @@ const nodeEdit = () => {
}
const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options)
let params = structuredClone(that.options)
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="flex: 0 0 280px;">{{ item.name }}</div>
<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>
@ -531,7 +531,7 @@ const _addRr = () => {
ipcRenderer.once('selectedItem', (event, filePaths) => {
if (filePaths.length > 0) {
filePaths.forEach((item) => {
attribute.value.link.content.push({
attribute.value.vr.content.push({
name: '全景图',
url: item
})

View File

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

View File

@ -11,7 +11,7 @@
</div>
<div class="col">
<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>
@ -20,12 +20,12 @@
<div class="row">
<div class="col">
<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 class="col">
<span class="label">波纹层数</span>
<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>
</div>
</div>
@ -33,12 +33,12 @@
<div class="row">
<div class="col">
<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 class="col">
<span class="label">扩散速度</span>
<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>
</div>
</div>
@ -64,7 +64,7 @@
<div class="col">
<span class="label">半径</span>
<input class="input" type="number" title="" min="0" max="999999" v-model="item.radius"
@input="changeRadius(index)">
@input="changeRadius">
</div>
<div class="col" style="flex-direction: row-reverse;">
<div class="color" :ref="el => colorRefs[index] = el"></div>
@ -110,7 +110,7 @@
<script setup lang="ts">
import { ref } from 'vue';
import { inject } from "vue";
import { inject, getCurrentInstance } from "vue";
import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue'
@ -118,7 +118,7 @@ import attribute from './attribute.vue'
import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const { proxy } = getCurrentInstance()!
const baseDialog: any = ref(null);
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))
if (radiusUnit.value == 'km') {
for (let i = 0; i < newCircle.length; i++) {

View File

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

View File

@ -20,12 +20,12 @@
<div class="row">
<div class="col">
<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 class="col">
<span class="label">爆炸范围</span>
<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="arrow"></span>
</div>
@ -34,12 +34,12 @@
<div class="row">
<div class="col">
<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 class="col">
<span class="label">高度</span>
<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="arrow"></span>
</div>

View File

@ -21,14 +21,14 @@
<div class="col">
<span class="label">飞线数量</span>
<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>
</div>
</div>
<div class="col">
<span class="label">飞线宽度</span>
<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>
</div>
</div>
@ -40,14 +40,14 @@
<div class="col">
<span class="label">飞线高度</span>
<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>
</div>
</div>
<div class="col">
<span class="label">飞线高度差</span>
<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>
</div>
</div>
@ -58,14 +58,14 @@
<div class="col">
<span class="label">单次运动时长s</span>
<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>
</div>
</div>
<div class="col">
<span class="label">轨迹透明度</span>
<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>
</div>
</div>

View File

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

View File

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

View File

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

View File

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

View File

@ -15,18 +15,18 @@
<div class="row">
<div class="col">
<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 class="col">
<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="row">
<div class="col">
<span class="label">高度</span>
<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="arrow"></span>
</div>

View File

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

View File

@ -32,7 +32,7 @@
<div class="col" style="flex: 0 0 60%;">
<span class="label">多面体高度</span>
<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="arrow"></span>
</div>

View File

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

View File

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

View File

@ -17,7 +17,7 @@
<div class="row">
<div class="col">
<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 class="col">
<span class="label">扫描半径</span>
@ -36,17 +36,17 @@
<div class="row">
<div class="col">
<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 class="col">
<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 class="row">
<div class="col">
<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 class="col">
<div class="row">
@ -88,7 +88,7 @@
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { ref, getCurrentInstance } from 'vue';
import { inject } from "vue";
import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus'
@ -98,6 +98,7 @@ import labelStyle from './labelStyle.vue'
import { useTreeNode } from '@/views/components/tree/hooks/treeNode'
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const { proxy } = getCurrentInstance()!
const baseDialog: any = ref(null);
const eventBus: any = inject("bus");
@ -197,7 +198,8 @@ const remove = () => {
// 用户点击取消,不执行任何操作
})
}
const changeRadius = (val) => {
const changeRadius = (e) => {
proxy.$handleInputLimit(e)
if (radiusUnit.value == 'km') {
entityOptions.value.radius = radius.value * 1000
}

View File

@ -22,7 +22,7 @@
<span class="label">滚动速度</span>
<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;">
<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>
</div>
</div>
@ -84,8 +84,8 @@ const open = async (id: any) => {
}
const confirm = () => {
originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = structuredClone(that.options)
baseDialog.value?.close()
// 删除不必要的属性
delete params.host
delete params.name

View File

@ -22,11 +22,13 @@
<script setup lang="ts">
import { ref } from 'vue'
import { inject } from 'vue'
import { useI18n } from 'vue-i18n'
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 { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const baseDialog: any = ref(null)
@ -52,6 +54,7 @@ const open = async (id: any) => {
await nextTick()
}
const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = {

View File

@ -1,5 +1,5 @@
<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>
<span class="custom-divider"></span>
<div class="div-item">
@ -24,7 +24,7 @@
<div class="col">
<span class="label">精度</span>
<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="arrow"></span>
</div>
@ -57,11 +57,13 @@
<script setup lang="ts">
import { ref } from 'vue'
import { inject } from 'vue'
import { useI18n } from 'vue-i18n'
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 { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const baseDialog: any = ref(null)
@ -87,6 +89,7 @@ const open = async (id: any) => {
await nextTick()
}
const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.newData)
baseDialog.value?.close()
let params = {

View File

@ -19,7 +19,7 @@
<div class="col">
<span class="label" style="flex: 0 0 70px;">起始点高度</span>
<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="arrow"></span>
</div>
@ -27,7 +27,7 @@
<div class="col">
<span class="label">模型倍数</span>
<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="arrow"></span>
</div>
@ -37,7 +37,7 @@
<div class="col">
<span class="label" style="flex: 0 0 70px;">运行速度</span>
<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="arrow"></span>
</div>
@ -45,7 +45,7 @@
<div class="col">
<span class="label">延迟运动</span>
<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="arrow"></span>
</div>
@ -171,7 +171,7 @@
<div class="col">
<span class="label">字体大小</span>
<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="arrow"></span>
</div>
@ -185,7 +185,7 @@
<div class="col">
<span class="label">最近距离</span>
<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="arrow"></span>
</div>
@ -193,7 +193,7 @@
<div class="col">
<span class="label">最远距离</span>
<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="arrow"></span>
</div>
@ -217,12 +217,14 @@
<script setup lang="ts">
import { ref } from 'vue'
import { inject } from 'vue'
import { useI18n } from 'vue-i18n'
import { TreeApi } from '@/api/tree'
import { ElMessage, ElMessageBox } from 'element-plus'
import Dialog from '@/components/dialog/baseDialog.vue'
import { useTreeNode } from '../tree/hooks/treeNode'
import { getFontList } from './fontSelect'
const { t } = useI18n()
const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
const baseDialog: any = ref(null)
@ -265,9 +267,10 @@ const open = async (id: any) => {
})
}
const confirm = () => {
entityOptions.value.name = entityOptions.value.name || t("default.untitled")
originalOptions = structuredClone(that.options)
baseDialog.value?.close()
let params = structuredClone(that.options)
baseDialog.value?.close()
// 删除不必要的属性
delete params.host
delete params.label.text

View File

@ -22,7 +22,7 @@
<span class="label">宽度</span>
<div class="input-number input-number-unit-1">
<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="arrow"></span>
</div>
@ -31,7 +31,7 @@
<span class="label">拉伸高度</span>
<div class="input-number input-number-unit-1">
<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="arrow"></span>
</div>

View File

@ -22,7 +22,7 @@
<span class="label">拉伸高度</span>
<div class="input-number input-number-unit-1">
<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="arrow"></span>
</div>

View File

@ -30,7 +30,7 @@
<span class="label">水面振幅</span>
<div class="input-number input-number-unit-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="arrow"></span>
</div>
@ -41,7 +41,7 @@
<span class="label">动画速度</span>
<div class="input-number input-number-unit-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="arrow"></span>
</div>
@ -50,7 +50,7 @@
<span class="label">水面振幅</span>
<div class="input-number input-number-unit-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="arrow"></span>
</div>

View File

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

View File

@ -72,7 +72,9 @@ function leftClick(options) {
// 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 (
!options.richTextContent &&
!info.hrefs.length &&

View File

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