This commit is contained in:
2025-12-08 14:56:57 +08:00
parent 1474dd3b9c
commit ec2ba238cb
4 changed files with 281 additions and 17 deletions

File diff suppressed because one or more lines are too long

View File

@ -49,8 +49,13 @@
--color-text-shadow: rgba(20, 118, 255, 1);
}
/* .cesium-viewer.\32 d{
opacity: 0;
} */
.cesium-viewer-cesiumWidgetContainer {
position: relative;
overflow: hidden;
}
.cesium-viewer-cesiumWidgetContainer .cesium-widget:nth-of-type(1) {
@ -171,9 +176,14 @@
.YJ-custom-base-dialog button:not(button[disabled]):hover {
border-color: rgba(var(--color-base1), 1) !important;
color: rgba(var(--color-base1), 1) !important;
cursor: pointer;
}
.YJ-custom-base-dialog button:not(button[disabled]):hover svg {
fill: rgba(var(--color-base1), 1) !important;
}
.YJ-custom-base-dialog button:focus-visible {
outline: none;
}
@ -279,6 +289,10 @@
padding: 0px 24px;
}
.YJ-custom-base-dialog>.content .el-tabs .el-tabs__header {
margin-bottom: 0;
}
.YJ-custom-base-dialog>.content .div-item {
/* border-top: 1px solid rgba(204, 204, 204, 0.2); */
padding: 12px 0;
@ -329,7 +343,7 @@
.YJ-custom-base-dialog>.content input,
.YJ-custom-base-dialog>.content textarea {
font-size: 16px;
font-size: 14px;
background-color: rgba(0, 0, 0, 0.5);
border: 1px solid rgba(var(--color-base1), 0.5);
border-radius: 5px;
@ -473,6 +487,9 @@
.YJ-custom-base-dialog>.content .table .table-body .tr:first-child {
border-top: none;
}
.YJ-custom-base-dialog>.content .table .table-body .tr:last-child {
border-bottom: 1px solid rgba(var(--color-base1), 0.5);
}
.YJ-custom-base-dialog>.content .table .table-empty {
display: flex;
@ -1501,8 +1518,6 @@
list-style: none;
display: inline-block;
user-select: none;
margin: 0 2px !important;
padding: 0 2px !important;
}
.YJ-custom-base-dialog>.content .pagination .list-items {
@ -1775,7 +1790,7 @@
/* 轨迹运动 */
.YJ-custom-base-dialog.trajectory-motion>.content {
width: 550px;
width: 562px;
}
.YJ-custom-base-dialog.trajectory-motion>.content .div-item>.row>.col {
@ -1804,6 +1819,10 @@
.YJ-custom-base-dialog.trajectory-motion>.content .btn.is-active {
border-color: rgba(var(--color-base1));
color: rgba(var(--color-base1));
}
.YJ-custom-base-dialog.trajectory-motion>.content .btn.is-active svg {
fill: rgba(var(--color-base1));
}
.YJ-custom-base-dialog.trajectory-motion>.content .btn-group .btn.is-active>span {
@ -1829,7 +1848,6 @@
.YJ-custom-base-dialog.trajectory-motion>.content .icon-rubric {
width: 16px;
height: 16px;
margin-left: 12px;
}
.YJ-custom-base-dialog.trajectory-motion>.content .custom__popper__arrow::after {
@ -2519,8 +2537,8 @@
.YJ-custom-base-dialog.polygon>.content .attribute-content-vr .table .tr .td:nth-child(3),
.YJ-custom-base-dialog.polygon>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
.YJ-custom-base-dialog.polygon>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
flex: 0 0 165px;
width: 165px;
flex: 0 0 175px;
width: 175px;
justify-content: center;
}
@ -2603,8 +2621,8 @@
.YJ-custom-base-dialog.assemble>.content .attribute-content-vr .table .tr .td:nth-child(3),
.YJ-custom-base-dialog.assemble>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
.YJ-custom-base-dialog.assemble>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
flex: 0 0 165px;
width: 165px;
flex: 0 0 175px;
width: 175px;
justify-content: center;
}
@ -2663,8 +2681,8 @@
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-vr .table .tr .td:nth-child(3),
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
flex: 0 0 165px;
width: 165px;
flex: 0 0 175px;
width: 175px;
justify-content: center;
}
@ -2746,7 +2764,7 @@
/* 折线 */
.YJ-custom-base-dialog.polyline>.content {
width: 580px;
width: 600px;
}
.YJ-custom-base-dialog.polyline>.content>div #dashTextureDom {
@ -3781,7 +3799,7 @@
.yj-custom-icon {
display: inline-block;
width: 22px;
height: 10px;
height: 18px;
margin-right: 5px;
}

View File

@ -38,7 +38,108 @@
<div>
<div style="display: flex; margin-bottom: 12px; align-items: center">
<span class="label" style="flex: 0 0 60px">椭圆基准</span>
<div class="datalist_left"></div>
<!-- <div class="datalist_left"></div> -->
<el-select
class="datalist_left"
style="width: 175px"
v-model="coordinate"
@change="sysChange"
>
<div
class="group-header"
:class="
name_map1.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'arrowActive'
: ''
"
@click="toggleGroup('hot')"
>
地理坐标系
<svg-icon
v-if="isHotGroupOpen"
name="arrow2"
:size="10"
:color="
name_map1.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
<svg-icon
v-else
name="arrow1"
:size="10"
:color="
name_map1.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
</div>
<div v-show="isHotGroupOpen">
<el-option
v-for="item in name_map1"
:key="item.epsg"
:label="item.name"
:value="item.epsg"
></el-option>
</div>
<div
class="group-header"
:class="
name_map2.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'arrowActive'
: ''
"
@click="toggleGroup('ty')"
>
投影坐标系
<svg-icon
v-if="isHotGroupOpen2"
name="arrow2"
:size="10"
:color="
name_map2.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
<svg-icon
v-else
name="arrow1"
:size="10"
:color="
name_map2.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
</div>
<div v-show="isHotGroupOpen2">
<el-option
v-for="item in name_map2"
:key="item.epsg"
:label="item.name"
:value="item.epsg"
></el-option>
</div>
</el-select>
</div>
<div style="display: flex; margin-bottom: 12px; align-items: center">
<span class="label" style="flex: 0 0 60px">经度(x)</span>
@ -87,7 +188,108 @@
<div>
<div style="display: flex; margin-bottom: 12px; align-items: center">
<span class="label" style="flex: 0 0 60px">椭圆基准</span>
<div class="datalist_right"></div>
<!-- <div class="datalist_right"></div> -->
<el-select
class="datalist_right"
style="width: 175px"
v-model="coordinate2"
@change="sysChange"
>
<div
class="group-header"
:class="
name_map1.filter((item) => {
return item.epsg == coordinate2
}).length > 0
? 'arrowActive'
: ''
"
@click="toggleGroup('hot')"
>
地理坐标系
<svg-icon
v-if="isHotGroupOpen"
name="arrow2"
:size="10"
:color="
name_map1.filter((item) => {
return item.epsg == coordinate2
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
<svg-icon
v-else
name="arrow1"
:size="10"
:color="
name_map1.filter((item) => {
return item.epsg == coordinate2
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
</div>
<div v-show="isHotGroupOpen">
<el-option
v-for="item in name_map1"
:key="item.epsg"
:label="item.name"
:value="item.epsg"
></el-option>
</div>
<div
class="group-header"
:class="
name_map2.filter((item) => {
return item.epsg == coordinate2
}).length > 0
? 'arrowActive'
: ''
"
@click="toggleGroup('ty')"
>
投影坐标系
<svg-icon
v-if="isHotGroupOpen2"
name="arrow2"
:size="10"
:color="
name_map2.filter((item) => {
return item.epsg == coordinate2
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
<svg-icon
v-else
name="arrow1"
:size="10"
:color="
name_map2.filter((item) => {
return item.epsg == coordinate2
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
</div>
<div v-show="isHotGroupOpen2">
<el-option
v-for="item in name_map2"
:key="item.epsg"
:label="item.name"
:value="item.epsg"
></el-option>
</div>
</el-select>
</div>
<div style="display: flex; margin-bottom: 12px; align-items: center">
<span class="label" style="flex: 0 0 60px">经度(x)</span>
@ -118,6 +320,48 @@ const eventBus: any = inject('bus')
var status1: any = ref(false)
var tools: any = reactive([])
//新坐标下拉选项
var coordinate: any = ref('EPSG:4326')
var coordinate2: any = ref('EPSG:4326')
const isHotGroupOpen: any = ref(true)
const isHotGroupOpen2: any = ref(true)
const name_map: any = ref([])
const name_map1: any = ref([])
const name_map2: any = ref([
{
epsg: 'EPSG:32601',
name: 'WGS84 通用横轴墨卡托投影'
},
{
epsg: 'EPSG:4534',
name: '2000 坐标 3 度不带代号'
},
{
epsg: 'EPSG:4513',
name: '2000 坐标 3 度带代号'
},
{
epsg: 'EPSG:4502',
name: '2000 坐标 6 度不带代号'
},
{
epsg: 'EPSG:4491',
name: '2000 坐标 6 度带代号'
}
])
let tool = new YJ.Tools(window.earth)
name_map.value = Array.from(tool.name_map.values())
name_map1.value = name_map.value.splice(0, 2)
const toggleGroup = (type: string) => {
if (type === 'hot') isHotGroupOpen.value = !isHotGroupOpen.value
if (type === 'ty') isHotGroupOpen2.value = !isHotGroupOpen2.value
}
const sysChange = () => {
tools && tools.updateCoordinates(coordinate.value, coordinate2.value)
}
eventBus.on('ProjectionConvertDialog', () => {
baseDialog.value?.open()
if (status1.value) {
@ -151,6 +395,8 @@ const open = () => {
}
const closeCallBack = (e) => {
coordinate.value = 'EPSG:4326'
coordinate2.value = 'EPSG:4326'
status1.value = false
tools && tools.projectionConvert(status1.value, () => {})
}