number输入框最大值最小值限制;标绘默认名称
This commit is contained in:
@ -149,6 +149,7 @@ export default {
|
||||
curve: '曲线标注',
|
||||
panel: '面标注',
|
||||
roam: '漫游路径',
|
||||
untitled: '未命名对象'
|
||||
},
|
||||
system: {
|
||||
systemTitle: '系统面板',
|
||||
|
||||
@ -149,6 +149,7 @@ export default {
|
||||
curve: 'Curve',
|
||||
panel: 'Panel',
|
||||
roam: 'roam',
|
||||
untitled: 'untitled'
|
||||
},
|
||||
system: {
|
||||
systemTitle: 'Settings',
|
||||
|
||||
@ -148,6 +148,7 @@ export default {
|
||||
curve: '曲線標注',
|
||||
panel: '面標注',
|
||||
roam: '漫遊路徑',
|
||||
untitled: '未命名對象'
|
||||
},
|
||||
system: {
|
||||
systemTitle: '系統面板',
|
||||
|
||||
@ -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':
|
||||
|
||||
@ -67,6 +67,10 @@ export function getNamefromPath(path) {
|
||||
}
|
||||
|
||||
export function handleInputLimit(e) {
|
||||
if (e.data === '-') {
|
||||
}
|
||||
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) {
|
||||
@ -77,4 +81,5 @@ export function handleInputLimit(e) {
|
||||
e.target.value = minValue
|
||||
e.target.dispatchEvent(new Event('input'))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
})
|
||||
|
||||
@ -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
|
||||
})
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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
|
||||
})
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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++) {
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 = {
|
||||
|
||||
@ -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 = {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 &&
|
||||
|
||||
@ -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>
|
||||
|
||||
Reference in New Issue
Block a user