修改bug文档

This commit is contained in:
2025-11-13 16:39:01 +08:00
parent a575b0a11b
commit f0e3848322
9 changed files with 328 additions and 78 deletions

File diff suppressed because one or more lines are too long

View File

@ -161,7 +161,7 @@
background: rgba(var(--color-sdk-base-rgb), 0.2); background: rgba(var(--color-sdk-base-rgb), 0.2);
border: 1px solid rgba(var(--color-sdk-base-rgb), 0.5); border: 1px solid rgba(var(--color-sdk-base-rgb), 0.5);
display: flex; display: flex;
justify-content: center; justify-content: flex-start;
align-items: center; align-items: center;
padding: 5px 16px 4px 16px; padding: 5px 16px 4px 16px;
color: #ffffff; color: #ffffff;
@ -448,7 +448,6 @@
.YJ-custom-base-dialog>.content .table { .YJ-custom-base-dialog>.content .table {
background-color: #ffffff00; background-color: #ffffff00;
color: #000; color: #000;
font-size: 12px;
} }
.YJ-custom-base-dialog>.content .table { .YJ-custom-base-dialog>.content .table {
@ -476,6 +475,9 @@
border-top: none; border-top: none;
} }
.YJ-custom-base-dialog>.content .attribute-content-link .table .tr,
.YJ-custom-base-dialog>.content .attribute-content-vr .table .tr {}
.YJ-custom-base-dialog>.content .table .table-empty { .YJ-custom-base-dialog>.content .table .table-empty {
display: flex; display: flex;
align-items: center; align-items: center;
@ -552,6 +554,8 @@
background-color: rgba(var(--color-sdk-base-rgb), 0.1); background-color: rgba(var(--color-sdk-base-rgb), 0.1);
} }
.YJ-custom-base-dialog>.content .table .table-body .tr:last-child {}
.YJ-custom-base-dialog>.content .table .tr .th, .YJ-custom-base-dialog>.content .table .tr .th,
.YJ-custom-base-dialog>.content .table .tr .td { .YJ-custom-base-dialog>.content .table .tr .td {
flex: 1; flex: 1;
@ -569,7 +573,40 @@
justify-content: center; justify-content: center;
} }
.YJ-custom-base-dialog>.content .attribute-content-link .table .tr .th:nth-child(1),
.YJ-custom-base-dialog>.content .attribute-content-link .table .tr .td:nth-child(1),
.YJ-custom-base-dialog>.content .attribute-content-vr .table .tr .th:nth-child(1),
.YJ-custom-base-dialog>.content .attribute-content-vr .table .tr .td:nth-child(1) {
width: 164px;
flex: 0 0 164px;
}
.YJ-custom-base-dialog>.content .attribute-content-link .table .tr .th:nth-child(2),
.YJ-custom-base-dialog>.content .attribute-content-link .table .tr .td:nth-child(2),
.YJ-custom-base-dialog>.content .attribute-content-vr .table .tr .th:nth-child(2),
.YJ-custom-base-dialog>.content .attribute-content-vr .table .tr .td:nth-child(2) {
width: 226px;
flex: 0 0 226px;
}
.YJ-custom-base-dialog>.content .attribute-content-link .table .tr .th:nth-child(3),
.YJ-custom-base-dialog>.content .attribute-content-link .table .tr .td:nth-child(3),
.YJ-custom-base-dialog>.content .attribute-content-vr .table .tr .th:nth-child(3),
.YJ-custom-base-dialog>.content .attribute-content-vr .table .tr .td:nth-child(3) {
flex: 0 0 150px;
width: 150px;
justify-content: center;
}
.YJ-custom-base-dialog>.content .attribute-content-link .table .tr .td .input-group .input,
.YJ-custom-base-dialog>.content .attribute-content-vr .table .tr .td .input-group .input {
border-radius: 5px 0 0 5px;
}
.YJ-custom-base-dialog>.content .attribute-content-materials .table .tr .th:nth-child(1),
.YJ-custom-base-dialog>.content .attribute-content-materials .table .tr .td:nth-child(1) {
flex: 0 0 60px;
}
.YJ-custom-base-dialog>.content .table .tr .td .link-edit { .YJ-custom-base-dialog>.content .table .tr .td .link-edit {
min-height: 32px; min-height: 32px;
@ -584,8 +621,6 @@
border-right: none; border-right: none;
} }
<<<<<<< Updated upstream
=======
.YJ-custom-base-dialog>.content .table.camera-table { .YJ-custom-base-dialog>.content .table.camera-table {
overflow-x: auto; overflow-x: auto;
} }
@ -648,7 +683,6 @@
min-width: 74px; min-width: 74px;
} }
>>>>>>> Stashed changes
.YJ-custom-base-dialog>.content select>option { .YJ-custom-base-dialog>.content select>option {
color: #000; color: #000;
} }
@ -1171,9 +1205,9 @@
line-height: 28px; line-height: 28px;
} }
/* .YJ-custom-base-dialog .ew-color-picker .ew-color-dropbtngroup button.ew-color-clear { .YJ-custom-base-dialog .ew-color-picker .ew-color-dropbtngroup button.ew-color-clear {
margin-right: 8px; margin-right: 8px;
} */ }
.YJ-custom-base-dialog .ew-color-picker-box { .YJ-custom-base-dialog .ew-color-picker-box {
border-width: 4px; border-width: 4px;
@ -1735,8 +1769,6 @@
top: 10px; top: 10px;
} }
<<<<<<< Updated upstream
=======
/* 点标注 */ /* 点标注 */
.YJ-custom-base-dialog.billboard-object>.content { .YJ-custom-base-dialog.billboard-object>.content {
width: 590px; width: 590px;
@ -1789,7 +1821,6 @@
height: auto; height: auto;
} }
>>>>>>> Stashed changes
/* 富文本 */ /* 富文本 */
.richText-box { .richText-box {
position: absolute; position: absolute;

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

View File

@ -1,27 +1,38 @@
<template> <template>
<div class="model-management-container"> <div class="model-management-container">
<div class="equipment_title" style="margin-bottom: 10px"> <div class="equipment_title" style="margin-bottom: 10px">
<el-button <div>
color="#004b4b" <el-button
style="border: 1px solid rgba(var(--color-base1), 0.5)" color="#004b4b"
@click="importModelDB" style="border: 1px solid rgba(var(--color-base1), 0.5)"
> @click="importModelDB"
<template #icon> >
<svg-icon name="select" /> <template #icon>
</template> <svg-icon name="select" />
<span>选择军标库</span> </template>
</el-button> <span>选择军标库</span>
</el-button>
<el-button <el-button
color="#004b4b" color="#004b4b"
style="border: 1px solid rgba(var(--color-base1), 0.5)" style="border: 1px solid rgba(var(--color-base1), 0.5)"
@click="createModelDB" @click="createModelDB"
>
<template #icon>
<svg-icon name="addDevice" />
</template>
<span>创建军标库</span>
</el-button>
</div>
<el-input
v-model="photoName"
style="max-width: 150px"
placeholder="请输入图标名称进行搜索"
class="input-with-select"
:suffix-icon="Search"
> >
<template #icon> </el-input>
<svg-icon name="addDevice" />
</template>
<span>创建军标库</span>
</el-button>
</div> </div>
<el-row :gutter="20"> <el-row :gutter="20">
<!-- 左侧分类树 --> <!-- 左侧分类树 -->
@ -47,6 +58,7 @@
@node-drag-over="handleDragOver" @node-drag-over="handleDragOver"
@node-drag-end="handleDragEnd" @node-drag-end="handleDragEnd"
@node-drop="handleDrop" @node-drop="handleDrop"
:filter-node-method="filterNode"
> >
<template #default="{ node, data }"> <template #default="{ node, data }">
<!-- <span> {{ node.label }}</span> --> <!-- <span> {{ node.label }}</span> -->
@ -134,6 +146,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref, reactive, onMounted } from 'vue' import { ref, reactive, onMounted } from 'vue'
import { Search } from '@element-plus/icons-vue'
import type { TableColumnCtx } from 'element-plus' import type { TableColumnCtx } from 'element-plus'
import contextMenuCom from './contentMenu.vue' import contextMenuCom from './contentMenu.vue'
import Sortable from 'sortablejs' import Sortable from 'sortablejs'
@ -187,6 +200,18 @@ const treeRef = ref()
// @ts-ignore // @ts-ignore
var sortableInstance: any = reactive(null) var sortableInstance: any = reactive(null)
//搜索
var photoName = ref(null)
watch(photoName, (val) => {
if (treeRef.value && treeRef.value !== '') {
treeRef.value!.filter(val)
}
})
const filterNode: any = (value, data) => {
if (!value) return true
return data.label.includes(value)
}
//--------------添加模型类型---------------- //--------------添加模型类型----------------
var dialogVisible: any = ref(false) var dialogVisible: any = ref(false)
var dialogTitle: any = ref('添加军标类型') var dialogTitle: any = ref('添加军标类型')
@ -857,7 +882,13 @@ onMounted(() => {
--el-input-focus-border-color: rgba(var(--color-base1), 0.5) !important; --el-input-focus-border-color: rgba(var(--color-base1), 0.5) !important;
} }
::v-deep .el-input__wrapper { ::v-deep .el-input__wrapper {
background-color: rgba(0, 0, 0, 0.5) !important; /* background-color: rgba(0, 0, 0, 0.5) !important; */
background-color: unset !important;
}
.equipment_title {
display: flex;
justify-content: space-between;
margin: 0px -10px 10px -10px;
} }
::v-deep .el-dialog__title { ::v-deep .el-dialog__title {
text-shadow: 0px 0px 9px var(--color-sdk-text-shadow) !important; text-shadow: 0px 0px 9px var(--color-sdk-text-shadow) !important;

View File

@ -1,27 +1,36 @@
<template> <template>
<div class="model-management-container"> <div class="model-management-container">
<div class="equipment_title" style="margin-bottom: 10px"> <div class="equipment_title">
<el-button <div>
color="#004b4b" <el-button
style="border: 1px solid rgba(var(--color-base1), 0.5)" color="#004b4b"
@click="importModelDB" style="border: 1px solid rgba(var(--color-base1), 0.5)"
> @click="importModelDB"
<template #icon> >
<svg-icon name="select" /> <template #icon>
</template> <svg-icon name="select" />
<span>选择模型库</span> </template>
</el-button> <span>选择模型库</span>
</el-button>
<el-button <el-button
color="#004b4b" color="#004b4b"
style="border: 1px solid rgba(var(--color-base1), 0.5)" style="border: 1px solid rgba(var(--color-base1), 0.5)"
@click="createModelDB" @click="createModelDB"
> >
<template #icon> <template #icon>
<svg-icon name="addDevice" /> <svg-icon name="addDevice" />
</template> </template>
<span>创建模型库</span> <span>创建模型库</span>
</el-button> </el-button>
</div>
<el-input
v-model="photoName"
style="max-width: 150px"
placeholder="请输入模型名称进行搜索"
class="input-with-select"
:suffix-icon="Search"
/>
</div> </div>
<el-row :gutter="20"> <el-row :gutter="20">
<!-- 左侧分类树 --> <!-- 左侧分类树 -->
@ -47,6 +56,7 @@
@node-drag-over="handleDragOver" @node-drag-over="handleDragOver"
@node-drag-end="handleDragEnd" @node-drag-end="handleDragEnd"
@node-drop="handleDrop" @node-drop="handleDrop"
:filter-node-method="filterNode"
> >
<template #default="{ node, data }"> <template #default="{ node, data }">
<!-- <span> {{ node.label }}</span> --> <!-- <span> {{ node.label }}</span> -->
@ -142,6 +152,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref, reactive, onMounted, nextTick } from 'vue' import { ref, reactive, onMounted, nextTick } from 'vue'
import { Search } from '@element-plus/icons-vue'
import type { TableColumnCtx } from 'element-plus' import type { TableColumnCtx } from 'element-plus'
import contextMenuCom from './contentMenu.vue' import contextMenuCom from './contentMenu.vue'
import Sortable from 'sortablejs' import Sortable from 'sortablejs'
@ -207,6 +218,19 @@ const closeDialog = () => {
modelType.value = '' modelType.value = ''
dialogVisible.value = false dialogVisible.value = false
} }
//搜索
var photoName = ref(null)
watch(photoName, (val) => {
if (treeRef.value && treeRef.value !== '') {
treeRef.value!.filter(val)
}
})
const filterNode: any = (value, data) => {
if (!value) return true
return data.label.includes(value)
}
//@ts-ignore //@ts-ignore
const addType = () => { const addType = () => {
if (!modelType.value) { if (!modelType.value) {
@ -890,7 +914,8 @@ onMounted(() => {
--el-input-focus-border-color: rgba(var(--color-base1), 0.5) !important; --el-input-focus-border-color: rgba(var(--color-base1), 0.5) !important;
} }
::v-deep .el-input__wrapper { ::v-deep .el-input__wrapper {
background-color: rgba(0, 0, 0, 0.5) !important; /* background-color: rgba(0, 0, 0, 0.5) !important; */
background-color: unset !important;
} }
::v-deep .el-dialog__title { ::v-deep .el-dialog__title {
text-shadow: 0px 0px 9px var(--color-sdk-text-shadow) !important; text-shadow: 0px 0px 9px var(--color-sdk-text-shadow) !important;
@ -905,4 +930,9 @@ onMounted(() => {
border-bottom: 1px solid rgba(var(--color-base1), 0.5); border-bottom: 1px solid rgba(var(--color-base1), 0.5);
letter-spacing: 1px; letter-spacing: 1px;
} }
.equipment_title {
display: flex;
justify-content: space-between;
margin: 0px -10px 10px -10px;
}
</style> </style>

View File

@ -1056,6 +1056,7 @@ onMounted(() => {
.equipment_title { .equipment_title {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin: 0px -10px 10px -10px;
} }
::v-deep .typeList { ::v-deep .typeList {
width: 100%; width: 100%;

View File

@ -183,6 +183,9 @@ const handleKeyDown = (e) => {
clickChange.mouseLocation = false clickChange.mouseLocation = false
new YJ.Global.MouseCoordinate(window.earth, clickChange.mouseLocation) new YJ.Global.MouseCoordinate(window.earth, clickChange.mouseLocation)
// window.removeEventListener('keydown', handleKeyDown) // window.removeEventListener('keydown', handleKeyDown)
let dom = document.getElementById('earthContainer')
dom?.classList.remove('custom-cursor')
dom?.classList.add('default-cursor')
} }
//视频录制 //视频录制
@ -674,11 +677,20 @@ const methodMap = {
//鼠标定位 //鼠标定位
mouseLocation() { mouseLocation() {
clickChange.mouseLocation = !clickChange.mouseLocation clickChange.mouseLocation = !clickChange.mouseLocation
ElMessage({
message: '按下键盘ESC键可快速退出',
type: 'warning'
})
new YJ.Global.MouseCoordinate(window.earth, clickChange.mouseLocation) new YJ.Global.MouseCoordinate(window.earth, clickChange.mouseLocation)
let dom = document.getElementById('earthContainer')
if (clickChange.mouseLocation) {
ElMessage({
message: '按下键盘ESC键可快速退出',
type: 'warning'
})
dom?.classList.remove('default-cursor')
dom?.classList.add('custom-cursor')
} else {
dom?.classList.remove('custom-cursor')
dom?.classList.add('default-cursor')
}
// if (clickChange.mouseLocation) { // if (clickChange.mouseLocation) {
// window.addEventListener('keydown', handleKeyDown) // window.addEventListener('keydown', handleKeyDown)
@ -1020,6 +1032,16 @@ defineExpose({
initList initList
}) })
</script> </script>
<style>
.custom-cursor {
cursor:
url('@/assets/img/mouse.png') 16 16,
auto;
}
.default-cursor {
cursor: default;
}
</style>
<style lang="scss" scoped> <style lang="scss" scoped>
.leftSideSecond { .leftSideSecond {
display: none; display: none;

View File

@ -45,7 +45,7 @@
@change="precisionChange" @change="precisionChange"
/> />
<span class="arrow"></span> --> <span class="arrow"></span> -->
<el-slider <!-- <el-slider
v-model="precision" v-model="precision"
:min="0" :min="0"
:max="360" :max="360"
@ -53,14 +53,51 @@
@change="precisionInput" @change="precisionInput"
/> />
<span class="firstTip">0</span> <span class="firstTip">0</span>
<span class="endTip">360</span> <span class="endTip">360</span> -->
</div>
</div>
<div class="row">
<div class="col">
<el-slider
v-model="precision"
:min="0"
:max="maxNum"
placement="bottom"
@change="precisionInput"
:show-tooltip="false"
popper-class="custom-tooltip"
@input="updateDataAttr"
/>
<!-- <span class="firstTip">0</span>
<span class="endTip">360</span> -->
<div class="input-number input-number-unit" style="margin-left: 10px">
<input
class="input"
id="precision"
type="number"
title=""
min="1"
max="360"
v-model="maxNum"
@input="precisionMaxInput"
/>
<span class="arrow"></span>
</div>
</div>
</div>
<div class="row" style="margin-top: 30px">
<div class="col">
<span class="label">绘制区域</span>
<button class="draw-btn" @click="draw">
<svg class="icon-draw"><use xlink:href="#yj-icon-draw"></use></svg>开始绘制
</button>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<template #footer> <!-- <template #footer>
<button @click="draw">绘制</button> <button @click="draw">绘制</button>
</template> </template> -->
</Dialog> </Dialog>
</template> </template>
@ -72,7 +109,7 @@ import Dialog from '@/components/dialog/baseDialog.vue'
const baseDialog: any = ref(null) const baseDialog: any = ref(null)
const eventBus: any = inject('bus') const eventBus: any = inject('bus')
const viewPointHeight: any = ref(1.8) const viewPointHeight: any = ref(1.8)
const precision: any = ref(20) const precision: any = ref(0)
var visibility: any = reactive([]) var visibility: any = reactive([])
eventBus.on('circleViewShedDialog', () => { eventBus.on('circleViewShedDialog', () => {
@ -88,10 +125,12 @@ const open = () => {
viewPointHeight: viewPointHeight.value, viewPointHeight: viewPointHeight.value,
precision: precision.value precision: precision.value
}) })
updateDataAttr()
} }
const closeCallBack = (e) => { const closeCallBack = (e) => {
viewPointHeight.value = 1.8 viewPointHeight.value = 1.8
precision.value = 20 precision.value = 0
maxNum.value = 100
YJ.Measure.SetMeasureStatus(false) YJ.Measure.SetMeasureStatus(false)
} }
onBeforeUnmount(() => { onBeforeUnmount(() => {
@ -116,21 +155,55 @@ const precisionInput = () => {
// } else if (precision.value > dom.max * 1) { // } else if (precision.value > dom.max * 1) {
// precision.value = dom.max * 1 // precision.value = dom.max * 1
// } // }
console.log(precision, 'eeeeee')
visibility.precisions = precision.value visibility.precisions = precision.value
} }
const precisionChange = () => { const precisionChange = () => {}
console.log(precision, 'yyyy')
}
const draw = (e) => { const draw = (e) => {
visibility.draw() visibility.draw()
// visibility.create(this) // visibility.create(this)
// !window.analysisArr && (window.analysisArr = []) // !window.analysisArr && (window.analysisArr = [])
// window.analysisArr.push(visibility) // window.analysisArr.push(visibility)
} }
//滑块
var maxNum: any = ref(100)
const updateDataAttr = async () => {
await nextTick()
const sliderButton = document.querySelector('.el-slider__button-wrapper')
if (sliderButton) {
sliderButton.setAttribute('data-value', precision.value.toString())
}
}
const precisionMaxInput = () => {
let dom: any = document.getElementById('precision')
if (maxNum.value < dom.min * 1) {
maxNum.value = dom.min * 1
} else if (maxNum.value > dom.max * 1) {
maxNum.value = dom.max * 1
}
// cutFill.heights = maxNum.value
}
defineExpose({ defineExpose({
open open
}) })
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
::v-deep .el-slider__button-wrapper::before {
content: attr(data-value);
position: absolute;
width: 30px;
height: 25px;
line-height: 25px;
border-radius: 4px;
text-align: center;
bottom: -15px;
left: 50%;
transform: translateX(-50%);
background: unset;
color: white;
font-size: 12px;
z-index: 10;
}
</style>

View File

@ -12,18 +12,18 @@
<div class="div-item"> <div class="div-item">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label" style="flex: 0 0 70px">绘制分析区域</span> <span class="label" style="flex: 0 0 70px">土方分析区域</span>
<button class="draw-btn" @click="draw"> <button class="draw-btn" @click="draw">
<svg class="icon-edit"><use xlink:href="#yj-icon-edit"></use></svg>开始绘制 <svg class="icon-edit"><use xlink:href="#yj-icon-draw"></use></svg>开始绘制
</button> </button>
</div> </div>
</div> </div>
</div> </div>
<span class="custom-divider"></span> <!-- <span class="custom-divider"></span> -->
<div class="div-item"> <div class="div-item">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">基准高度</span> <span class="label">高度</span>
<div class="input-number input-number-unit-1"> <div class="input-number input-number-unit-1">
<input <input
class="input" class="input"
@ -54,13 +54,34 @@
/> />
<span class="arrow"></span> <span class="arrow"></span>
</div> --> </div> -->
<el-slider v-model="precision" :min="0" :max="360" @change="precisionInput" /> <el-slider
<span class="firstTip">0</span> v-model="precision"
<span class="endTip">360</span> :min="0"
:max="maxNum"
@change="precisionInput"
:show-tooltip="false"
popper-class="custom-tooltip"
@input="updateDataAttr"
/>
<!-- <span class="firstTip">0</span>
<span class="endTip">360</span> -->
<div class="input-number input-number-unit" style="margin-left: 10px">
<input
class="input"
id="precision"
type="number"
title=""
min="1"
max="1250"
v-model="maxNum"
@input="precisionMaxInput"
/>
<span class="arrow"></span>
</div>
</div> </div>
</div> </div>
</div> </div>
<span class="custom-divider"></span> <span class="custom-divider" style="margin-top: 10px"></span>
<div class="div-item"> <div class="div-item">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
@ -126,6 +147,17 @@ var cutVolume: any = ref(0)
var cutFill: any = reactive([]) var cutFill: any = reactive([])
var maxNum: any = ref(1250)
//tooltip
const updateDataAttr = async () => {
await nextTick()
const sliderButton = document.querySelector('.el-slider__button-wrapper')
if (sliderButton) {
sliderButton.setAttribute('data-value', precision.value.toString())
}
}
eventBus.on('cutFillDialog', () => { eventBus.on('cutFillDialog', () => {
baseDialog.value?.open() baseDialog.value?.open()
cutFill = new YJ.Analysis.CutFillAnalysis(window.earth, { cutFill = new YJ.Analysis.CutFillAnalysis(window.earth, {
@ -139,6 +171,7 @@ const open = () => {
height: height.value, height: height.value,
precision: precision.value precision: precision.value
}) })
updateDataAttr() //解决默认打开时没有值
} }
const heightInput = () => { const heightInput = () => {
let dom: any = document.getElementById('height') let dom: any = document.getElementById('height')
@ -149,6 +182,15 @@ const heightInput = () => {
} }
cutFill.heights = height.value cutFill.heights = height.value
} }
const precisionMaxInput = () => {
let dom: any = document.getElementById('precision')
if (maxNum.value < dom.min * 1) {
maxNum.value = dom.min * 1
} else if (maxNum.value > dom.max * 1) {
maxNum.value = dom.max * 1
}
// cutFill.heights = height.value
}
const precisionInput = () => { const precisionInput = () => {
// let dom = document.getElementById('precision') // let dom = document.getElementById('precision')
// if (precision.value < dom.min * 1) { // if (precision.value < dom.min * 1) {
@ -196,4 +238,24 @@ defineExpose({
}) })
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
::v-deep .content {
width: 600px !important;
}
::v-deep .el-slider__button-wrapper::before {
content: attr(data-value);
position: absolute;
width: 30px;
height: 25px;
line-height: 25px;
border-radius: 4px;
text-align: center;
bottom: -15px;
left: 50%;
transform: translateX(-50%);
background: unset;
color: white;
font-size: 12px;
z-index: 10;
}
</style>