| | |
| | | :model="formData" |
| | | :rules="rules" |
| | | :disabled="readonly" |
| | | label-width="110px" |
| | | label-width="120px" |
| | | > |
| | | <el-form-item label="场景名称" prop="sceneName"> |
| | | <el-input |
| | |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | :disabled-date="disablePastDate" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | |
| | | import { ElMessage } from 'element-plus' |
| | | import { fwDefenseSceneManageDetailApi, fwDefenseSceneManageSubmitApi } from './sceneManageApi' |
| | | import { fwDefenseSceneListApi } from '../sceneConfig/sceneConfigApi' |
| | | import { fieldRules } from '@ztzf/utils' |
| | | import { fieldRules, contactPhoneRules } from '@ztzf/utils' |
| | | import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue' |
| | | import * as Cesium from 'cesium' |
| | | import commandPost from '@/assets/images/dataCockpit/legend/command-post.png' |
| | | import { saveOperationLog } from '@ztzf/apis' |
| | | import { useRoute } from 'vue-router' |
| | | import { fwAreaDivideDetailApi, fwAreaDivideListApi } from '../partition/partitionApi' |
| | | import { buildEllipsePositions } from '@/utils/cesium/shapeTools' |
| | | import { |
| | | addBufferRadiusLabelEntity, |
| | | buildEllipsePositions, |
| | | } from '@/utils/cesium/shapeTools' |
| | | import { cartesian3Convert } from '@/utils/cesium/mapUtil' |
| | | import { AREA_TYPE_STYLE_MAP, BUFFER_LEVEL_STYLES, DEFAULT_AREA_STYLE } from '@ztzf/constants' |
| | | import { MapTooltip } from '@ztzf/utils' |
| | |
| | | const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' }) |
| | | const effectiveDateRange = ref([]) // 有效时间范围 |
| | | const sceneConfigList = ref([]) // 场景配置列表 |
| | | const areaList = ref([]) // ???? |
| | | const areaList = ref([]) // 区域列表 |
| | | const mapRef = ref(null) |
| | | const route = useRoute() |
| | | let viewer |
| | |
| | | let mapTooltip |
| | | let publicCesium |
| | | const tooltipEventKey = 'scene-manage-point-tip' |
| | | const disablePastDate = date => { |
| | | if (!date) return false |
| | | const todayStart = new Date() |
| | | todayStart.setHours(0, 0, 0, 0) |
| | | return date.getTime() < todayStart.getTime() |
| | | } |
| | | |
| | | // 表单验证规则 |
| | | const rules = { |
| | | sceneName: fieldRules(true, 50), |
| | | defenseLeader: fieldRules(true, 50), |
| | | leaderPhone: fieldRules(true, 50), |
| | | leaderPhone: contactPhoneRules(true, 50), |
| | | effectiveDateStart: fieldRules(true), |
| | | longitude: fieldRules(true), |
| | | defenseSceneId: fieldRules(true), |
| | |
| | | } |
| | | |
| | | // 获取场景配置列表 |
| | | // ????? |
| | | // 区域展示数据源 |
| | | function ensureAreaDisplaySource() { |
| | | if (!viewer) return null |
| | | if (!areaDisplaySource) { |
| | |
| | | material: style.outline, |
| | | }, |
| | | }) |
| | | addBufferRadiusLabelEntity(dataSource, centerCartesian, radius, { |
| | | name: 'scene-manage-area-display', |
| | | customData: { drawType: 'buffer', label: 'radius' }, |
| | | }) |
| | | }) |
| | | return |
| | | } |
| | |
| | | }) |
| | | } |
| | | |
| | | // ?????????? |
| | | // 加载区域列表 |
| | | async function loadAreaList(sceneId) { |
| | | if (!sceneId) { |
| | | areaList.value = [] |
| | |
| | | const list = res?.data?.data ?? [] |
| | | areaList.value = await ensureAreaExtList(list) |
| | | renderSceneAreas() |
| | | await nextTick() |
| | | fitViewToSceneAreas() |
| | | } |
| | | |
| | | async function getSceneConfigList() { |