From 51d2337ef857c06563c1d5bc206ffc04edfcaf53 Mon Sep 17 00:00:00 2001 From: fanjia <3278303149@qq.com> Date: Wed, 8 Apr 2026 18:47:57 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=A1=A5=E6=A2=81=E3=80=81=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E3=80=81=E9=9A=A7=E9=81=93=E3=80=81=E5=BA=94=E6=80=A5?= =?UTF-8?q?=E5=8A=9B=E9=87=8F=E3=80=81=E6=B0=94=E8=B1=A1=E9=A2=84=E8=AD=A6?= =?UTF-8?q?=E3=80=81=E4=B8=8E=E5=9C=B0=E5=9B=BE=E8=81=94=E5=8A=A8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{蓝色@2x (1).png => 桥梁icon@2x.png} | Bin .../src/assets/MaMap_img/线路icon定位@2x.png | Bin 0 -> 8598 bytes .../{队伍icon定位@2x.png => 队伍icon@2x.png} | Bin .../{隧洞icon定位@2x.png => 隧洞icon@2x.png} | Bin .../RiskWarning/Dialog/mapInfoDialog.vue | 156 +++++++ .../RiskWarning/Dialog/tunnelInfoDialog.vue | 8 +- .../screen/src/views/RiskWarning/bottom.vue | 22 +- .../RiskWarning/component/ChongqingMap.vue | 384 +++++++++++++++++- .../screen/src/views/RiskWarning/index.vue | 39 +- .../screen/src/views/RiskWarning/right.vue | 13 +- packages/screen/vite.config.js | 4 +- 11 files changed, 598 insertions(+), 28 deletions(-) rename packages/screen/src/assets/MaMap_img/{蓝色@2x (1).png => 桥梁icon@2x.png} (100%) create mode 100644 packages/screen/src/assets/MaMap_img/线路icon定位@2x.png rename packages/screen/src/assets/MaMap_img/{队伍icon定位@2x.png => 队伍icon@2x.png} (100%) rename packages/screen/src/assets/MaMap_img/{隧洞icon定位@2x.png => 隧洞icon@2x.png} (100%) create mode 100644 packages/screen/src/views/RiskWarning/Dialog/mapInfoDialog.vue 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 0000000000000000000000000000000000000000..17adfbed8132e7c83a9cb63e570ea8a863b547f4 GIT binary patch literal 8598 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 + + + + + + + + + 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" }, diff --git a/packages/screen/vite.config.js b/packages/screen/vite.config.js index 8962074..84e66ad 100644 --- a/packages/screen/vite.config.js +++ b/packages/screen/vite.config.js @@ -93,9 +93,9 @@ export default defineConfig(({ command, mode }) => { cors: true, proxy: { '/snow-ops-platform': { - target: 'http://192.168.110.16:8661/', + // target: 'http://192.168.110.16:8661/', // target: 'http://8.137.54.85:8661/', //测试环境 - // target: 'http://192.168.110.36:8661/', //张启生本地环境 + target: 'http://192.168.110.36:8661/', //张启生本地环境 changeOrigin: true, }, } From 13fc3a68c64b184fceb5996b5aca92f8c9f301cf Mon Sep 17 00:00:00 2001 From: niedongsheng <605973111@qq.com> Date: Thu, 9 Apr 2026 09:35:05 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E7=81=BE=E6=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DisasterManagement/DisasterDetail.vue | 109 +- .../WaterDisaster/WaterDisaster.vue | 47 +- packages/screen/src/router/index.js | 11 +- .../DisasterDetail/ContinueReport.vue | 475 +++++++++ .../DisasterDetail/WaterDisasterDetail.vue | 618 ++++++++++++ .../DisasterManagement/DisasterManagement.vue | 4 +- .../DisasterReport/WaterDisasterReport.vue | 948 +++++++++--------- .../DisasterReport/waterMockJson.json | 45 + 8 files changed, 1684 insertions(+), 573 deletions(-) create mode 100644 packages/screen/src/views/DisasterManagement/DisasterDetail/ContinueReport.vue create mode 100644 packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterDetail.vue create mode 100644 packages/screen/src/views/DisasterManagement/DisasterReport/waterMockJson.json 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/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 @@