diff --git a/packages/mobile/src/views/DisasterManagement/DisasterDetail.vue b/packages/mobile/src/views/DisasterManagement/DisasterDetail.vue index f4fd7d3..a164499 100644 --- a/packages/mobile/src/views/DisasterManagement/DisasterDetail.vue +++ b/packages/mobile/src/views/DisasterManagement/DisasterDetail.vue @@ -6,7 +6,6 @@ @@ -292,8 +237,7 @@ const route = useRoute() // 详情数据(对应 Data 接口) const detailData = ref({ event: null, // Event 对象 - report: null, // Report 对象(首报) - reportList: [], // 续报列表(可选,如果接口返回) + reportList: [], // 填报列表(包含首报和续报) fileList: [], // 附件列表 lossList: [], // 损失列表 occurLocation: '', @@ -302,42 +246,28 @@ const detailData = ref({ routeNo: '' }) -// 首报(优先使用 report,如果没有则从 reportList 中找 reportType === 1) -const firstReport = computed(() => { - if (detailData.value.report) { - return detailData.value.report - } - return detailData.value.reportList?.find(r => r.reportType === 1) -}) - -// 续报列表(reportType === 2) -const continueReports = computed(() => { - return detailData.value.reportList?.filter(r => r.reportType === 2) || [] +const allReports = computed(() => { + const reports = detailData.value.reportList?.map((item, index)=>{ + item.title = index == 0 ? '首报' : ('续报' + index) + return item + }) || [] + return reports.reverse() }) // 是否有填报数据 const hasReportData = computed(() => { - return firstReport.value || continueReports.value.length > 0 + return allReports.value.length > 0 }) -// 判断事件是否已解除(根据实际恢复时间或续报状态判断) -const isEventResolved = computed(() => { - // 如果首报有实际恢复时间且不为空,则认为已解除 - // if (firstReport.value?.actualRecoverTime) { - // return true - // } - // // 检查续报中是否有实际恢复时间 - // return continueReports.value.some(r => r.actualRecoverTime) -}) // 获取事件状态文本 const getEventStatusText = () => { - return isEventResolved.value ? '已解除' : '未解除' + return detailData.eventStatus === 1 ? '已解除' : '未解除' } // 获取事件状态类型 const getEventStatusType = () => { - return isEventResolved.value ? 'success' : 'danger' + return detailData.eventStatus === 1 ? 'success' : 'danger' } // 格式化处置措施(逗号分隔转中文) @@ -396,8 +326,7 @@ const getDisasterDetail = async () => { const data = result.data detailData.value = { event: data.event || null, - report: data.report || null, - reportList: data.reportList || [], + reportList: data.report || [], // 直接使用 reportList,包含首报和续报 fileList: data.fileList || [], lossList: data.lossList || [], occurLocation: data.occurLocation || '', diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue index 8f51399..cf3e45c 100644 --- a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue +++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue @@ -58,7 +58,7 @@ 校准经纬度 - + @@ -71,12 +71,13 @@
处置措施
- - 半幅封闭 - 全副封闭 - 便道通行 - 正常通行 - + + + 半幅封闭 + 全副封闭 + 便道通行 + 正常通行 +
@@ -198,8 +199,8 @@ const route = useRoute() // 是否为续报 const isContinue = computed(() => route.query.isContinue) -// 处置措施数组(用于多选框组,需要转换为逗号分隔的字符串) -const disposalMeasuresArray = ref([]) +// 处置措施单选值(用于单选组件) +const disposalMeasureValue = ref('') // 附件列表 const imageFileList = ref([]) @@ -240,7 +241,7 @@ const formData = reactive({ actualRecoverTime: '', // 实际恢复时间 damagedVehicleCount: '', // 损坏车辆 deadCount: '', // 死亡人员 - disposalMeasures: '', // 处置措施(逗号分隔) + disposalMeasures: '', // 处置措施(单个值,不再用逗号分隔) expectRecoverTime: '', // 预计恢复时间 injuredCount: '', // 受伤人员 investedFunds: '', // 已投资金 @@ -260,14 +261,10 @@ const formData = reactive({ fileList: [] }) -// 监听处置措施数组变化,转换为逗号分隔的字符串存到 report.disposalMeasures -watch( - disposalMeasuresArray, - (newVal) => { - formData.report.disposalMeasures = newVal.join(',') - }, - { deep: true } -) +// 监听处置措施单选值变化,直接赋值给 report.disposalMeasures +watch(disposalMeasureValue, (newVal) => { + formData.report.disposalMeasures = newVal +}) // 监听附件变化,同步到 fileList watch( @@ -313,12 +310,12 @@ watch( { deep: true } ) -// 从 report.disposalMeasures 初始化处置措施数组 +// 从 report.disposalMeasures 初始化处置措施单选值 watch( () => formData.report.disposalMeasures, (newVal) => { if (newVal && typeof newVal === 'string') { - disposalMeasuresArray.value = newVal.split(',').filter(Boolean) + disposalMeasureValue.value = newVal } }, { immediate: true } @@ -368,9 +365,9 @@ const initFormData = (newVal) => { fileList: newVal.fileList || [] }) - // 初始化处置措施数组 + // 初始化处置措施单选值(直接赋值,不再需要 split) if (newVal.report?.disposalMeasures) { - disposalMeasuresArray.value = newVal.report.disposalMeasures.split(',').filter(Boolean) + disposalMeasureValue.value = newVal.report.disposalMeasures } } } @@ -480,12 +477,12 @@ defineExpose({ margin-bottom: 8px; } .measures-options { - :deep(.van-checkbox-group) { + :deep(.van-radio-group) { display: flex; flex-wrap: wrap; gap: 16px; } - :deep(.van-checkbox) { + :deep(.van-radio) { margin-right: 0; } } @@ -526,4 +523,4 @@ defineExpose({ width: 110px; } } - + \ No newline at end of file diff --git a/packages/screen/src/assets/MaMap_img/蓝色@2x (1).png b/packages/screen/src/assets/MaMap_img/桥梁icon@2x.png similarity index 100% rename from packages/screen/src/assets/MaMap_img/蓝色@2x (1).png rename to packages/screen/src/assets/MaMap_img/桥梁icon@2x.png diff --git a/packages/screen/src/assets/MaMap_img/线路icon定位@2x.png b/packages/screen/src/assets/MaMap_img/线路icon定位@2x.png new file mode 100644 index 0000000..17adfbe Binary files /dev/null and b/packages/screen/src/assets/MaMap_img/线路icon定位@2x.png differ diff --git a/packages/screen/src/assets/MaMap_img/队伍icon定位@2x.png b/packages/screen/src/assets/MaMap_img/队伍icon@2x.png similarity index 100% rename from packages/screen/src/assets/MaMap_img/队伍icon定位@2x.png rename to packages/screen/src/assets/MaMap_img/队伍icon@2x.png diff --git a/packages/screen/src/assets/MaMap_img/隧洞icon定位@2x.png b/packages/screen/src/assets/MaMap_img/隧洞icon@2x.png similarity index 100% rename from packages/screen/src/assets/MaMap_img/隧洞icon定位@2x.png rename to packages/screen/src/assets/MaMap_img/隧洞icon@2x.png diff --git a/packages/screen/src/router/index.js b/packages/screen/src/router/index.js index c471ae7..6207d7e 100644 --- a/packages/screen/src/router/index.js +++ b/packages/screen/src/router/index.js @@ -163,7 +163,16 @@ const routes = [ name: 'DisasterReport', component: () => import('../views/DisasterManagement/DisasterReport/DisasterReport.vue'), meta: { - title: '水毁事件填报', + title: '灾毁事件填报', + breadcrumb: true + } + }, + { + path: '/waterDisasterDetail', + name: 'WaterDisasterDetail', + component: () => import('../views/DisasterManagement/DisasterDetail/WaterDisasterDetail.vue'), + meta: { + title: '水毁事件详情', breadcrumb: true } } diff --git a/packages/screen/src/views/DisasterManagement/DisasterDetail/ContinueReport.vue b/packages/screen/src/views/DisasterManagement/DisasterDetail/ContinueReport.vue new file mode 100644 index 0000000..77eb5bd --- /dev/null +++ b/packages/screen/src/views/DisasterManagement/DisasterDetail/ContinueReport.vue @@ -0,0 +1,475 @@ + + + + + diff --git a/packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterDetail.vue b/packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterDetail.vue new file mode 100644 index 0000000..3bb01cd --- /dev/null +++ b/packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterDetail.vue @@ -0,0 +1,618 @@ + + + + + diff --git a/packages/screen/src/views/DisasterManagement/DisasterManagement.vue b/packages/screen/src/views/DisasterManagement/DisasterManagement.vue index c42d1e0..e9d0185 100644 --- a/packages/screen/src/views/DisasterManagement/DisasterManagement.vue +++ b/packages/screen/src/views/DisasterManagement/DisasterManagement.vue @@ -298,12 +298,12 @@ const resetFilters = () => { // 查看详情 const handleDetail = (row) => { - router.push({ path: '/disasterDetail', query: { id: row.id } }) + router.push({ path: '/waterDisasterDetail', query: { id: row.id } }) } // 编辑 const handleEdit = (row) => { - router.push({ path: '/disasterReport', query: { id: row.id, mode: 'edit' } }) + router.push({ path: '/waterDisasterDetail', query: { id: row.id, mode: 'edit' } }) } // 新增跳转 diff --git a/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterReport.vue b/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterReport.vue index 32eab0c..c0ac06a 100644 --- a/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterReport.vue +++ b/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterReport.vue @@ -1,116 +1,112 @@ + - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + 半幅封闭 + 全副封闭 + 便道通行 + 正常通行 + + - - + + + + - - - - - - - - - - - - + + + + + + + + - - + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 万元 + + + + + + + + + + + + + + + 台/班 + + + + + + + + 人次 + + + + + + + + 万元 + + + + + + + @@ -197,9 +348,9 @@ - + - - + + 选择文件 -
仅支持3M以内的视频
+
仅支持20s内的视频,不超过20MB
+
+ +
- + - -
路况事件信息
-
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - -
道路损失及其他
-
- - - - 立方米 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 公里 - - - - - - - - - - - - - 万元 - - - - - - - - - - -
已投入机械
-
- - - - 台/班 - - - - - - - - - - - - 万元 - - -
-
- - - - - - - - - - - - - - - - - + + + + 万元 @@ -401,118 +425,150 @@ diff --git a/packages/screen/src/views/RiskWarning/Dialog/tunnelInfoDialog.vue b/packages/screen/src/views/RiskWarning/Dialog/tunnelInfoDialog.vue index 330cfbe..5e57899 100644 --- a/packages/screen/src/views/RiskWarning/Dialog/tunnelInfoDialog.vue +++ b/packages/screen/src/views/RiskWarning/Dialog/tunnelInfoDialog.vue @@ -22,7 +22,7 @@ {{ item.value }} -
+ @@ -47,9 +47,9 @@ const props = defineProps({ data: { type: Object, default: () => ({ - title: "隧道信息", + title: "项目信息", items: [ - { label: "隧道名称", value: "蔺市隧道右线" }, + { label: "项目名称", value: "蔺市隧道右线" }, { label: "编号", value: "G212线" }, { label: "所属区县", value: "涪陵" }, { label: "隧道长度", value: "1782(米)" }, diff --git a/packages/screen/src/views/RiskWarning/bottom.vue b/packages/screen/src/views/RiskWarning/bottom.vue index d8b4be2..0e1ed6e 100644 --- a/packages/screen/src/views/RiskWarning/bottom.vue +++ b/packages/screen/src/views/RiskWarning/bottom.vue @@ -6,7 +6,7 @@ :key="index" class="nav-item" :class="{ active: activeIndex === index }" - @click="activeIndex = index" + @click="handleClick(index)" >
@@ -101,14 +102,14 @@
- +
- +
@@ -306,6 +307,40 @@ const dialogVisible = ref({ warningSituation: false, tunnelInfo: false }); +const activeIndex = ref(0); + +// 地图组件引用 +const chongqingMapRef = ref(null); + +// 切换导航项时触发 +const changeActiveIndex = (index) => { + activeIndex.value = index; +}; + +// 打开资源详情(队伍、人员、装备、物资) +const openResourceDetail = (item) => { + console.log("打开资源详情:", item); + // 判断是否为队伍或人员 + if (item.label === "全市普通公路抢险队伍" || item.label === "人员") { + // 调用地图组件的获取应急力量方法 + if (chongqingMapRef.value) { + chongqingMapRef.value.getEmergencyForceData(); + } + } + // 打开对应的弹窗 + const key = item.label.toLowerCase().replace(/[^a-z]/g, ""); + if (dialogVisible.value[key] !== undefined) { + dialogVisible.value[key] = true; + } +}; + +// 清除地图标记 +const clearMapMarkers = () => { + console.log("清除地图标记"); + if (chongqingMapRef.value) { + chongqingMapRef.value.clearProjectMarkers(); + } +}; // 打开弹窗 const openDialog = (dialogName) => { diff --git a/packages/screen/src/views/RiskWarning/right.vue b/packages/screen/src/views/RiskWarning/right.vue index fee29fd..84e9fbe 100644 --- a/packages/screen/src/views/RiskWarning/right.vue +++ b/packages/screen/src/views/RiskWarning/right.vue @@ -12,6 +12,7 @@ v-for="(item, index) in resourceData" :key="index" class="resource-item" + @click="handleResourceClick(item)" > @@ -215,7 +216,11 @@ import icon62 from "../../assets/RiskWarning_img/路径62@2x.png"; import icon621 from "../../assets/RiskWarning_img/路径62@2x (1).png"; import icon622 from "../../assets/RiskWarning_img/路径62@2x (2).png"; -const emit = defineEmits(["openClearanceSituation", "openControlSituation"]); +const emit = defineEmits([ + "openClearanceSituation", + "openControlSituation", + "openResourceDetail", +]); // 组件挂载时获取数据 onMounted(() => { @@ -251,6 +256,7 @@ const getYhYjllList = async () => { resourceData.value[1].unit = "人"; } resourceData.value[0].value = gl1Yjllmcs; + } } catch (error) { console.error("获取应急力量列表失败:", error); @@ -369,6 +375,11 @@ const resourceData = ref([ }, ]); +// 点击资源项 +const handleResourceClick = (item) => { + emit("openResourceDetail", item); +}; + // 管控路段数据 const controlData1 = [ { label: "封闭管控数", value: "40" },