From 788961bc667bea80da75eb262e318d6990e75181 Mon Sep 17 00:00:00 2001 From: huangchenhao <123673748@qq.com> Date: Wed, 15 Apr 2026 18:00:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E7=AB=8B=E5=8D=B3=E6=8E=92?= =?UTF-8?q?=E7=8F=AD=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screen/src/component/MenuBar/index.js | 3 +- .../law/dutyManagement/addDialog.vue | 302 ++++++++++++------ .../law/dutyManagement/index.js | 6 +- .../law/dutyManagement/index.vue | 2 +- 4 files changed, 204 insertions(+), 109 deletions(-) diff --git a/packages/screen/src/component/MenuBar/index.js b/packages/screen/src/component/MenuBar/index.js index 2ba4b32..6dbf541 100644 --- a/packages/screen/src/component/MenuBar/index.js +++ b/packages/screen/src/component/MenuBar/index.js @@ -45,7 +45,8 @@ export default () => { await getMenuList(); const firstMenuItem = menuList.value[0]?.children?.[0]; if (firstMenuItem) { - handleMenuClick(firstMenuItem); + // 注释掉进入页面点击第一项的逻辑 后续记得打开 + // handleMenuClick(firstMenuItem); } } }, { immediate: true }); diff --git a/packages/screen/src/views/WarningManagement/law/dutyManagement/addDialog.vue b/packages/screen/src/views/WarningManagement/law/dutyManagement/addDialog.vue index 4319242..5d9bb1c 100644 --- a/packages/screen/src/views/WarningManagement/law/dutyManagement/addDialog.vue +++ b/packages/screen/src/views/WarningManagement/law/dutyManagement/addDialog.vue @@ -2,91 +2,46 @@
-
- -

气象信息

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ + +
+ +
+ + + +
+ + +
+ +
+ + +
+ +
+
+
\ No newline at end of file diff --git a/packages/screen/src/views/WarningManagement/law/dutyManagement/index.js b/packages/screen/src/views/WarningManagement/law/dutyManagement/index.js index e486415..bcca8fb 100644 --- a/packages/screen/src/views/WarningManagement/law/dutyManagement/index.js +++ b/packages/screen/src/views/WarningManagement/law/dutyManagement/index.js @@ -102,7 +102,7 @@ const getTableData = async (filterData = {}) => { // 打开发布预警弹窗 const openAddDialog = () => { - model.title = '发布预警'; + model.title = '立即排班'; Object.assign(form, INIT_FORM); model.props = { form: form, @@ -113,14 +113,14 @@ const openAddDialog = () => { }; model.onConfirm = async () => { await dialogRef?.value?.dynamicComponentRef?.formRef.validate().then(async () => { - console.log('@@@@@发布预警', form); + console.log('@@@@@立即排班', form); // await publishWarning(form) }) .catch((err) => { ElMessage.error('请处理表单中的错误项'); }); }; - model.width = "50%" + model.width = "70%" modelVisible.value = true; } diff --git a/packages/screen/src/views/WarningManagement/law/dutyManagement/index.vue b/packages/screen/src/views/WarningManagement/law/dutyManagement/index.vue index 404248a..b464213 100644 --- a/packages/screen/src/views/WarningManagement/law/dutyManagement/index.vue +++ b/packages/screen/src/views/WarningManagement/law/dutyManagement/index.vue @@ -7,7 +7,7 @@ value-format="YYYY-MM-DD HH:mm:ss" />
- 立即排班 + 立即排班
From 07bae1168ef976ebbada78ab4d6184322037b381 Mon Sep 17 00:00:00 2001 From: niedongsheng <605973111@qq.com> Date: Wed, 15 Apr 2026 18:08:46 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E5=8A=A8=E6=80=81=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E4=B8=8E=E5=8A=A8=E6=80=81=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/component/DynamicDetail/BlockItem.vue | 47 +++ .../component/DynamicDetail/DynamicData.vue | 65 ++++ .../component/DynamicDetail/DynamicDetail.vue | 48 +++ .../DynamicDetail/DynamicDetailItem.vue | 45 +++ .../component/DynamicDetail/DynamicLayout.vue | 34 +++ .../src/component/DynamicForm/BlockItem.vue | 47 +++ .../component/DynamicForm/DynamicControl.vue | 111 +++++++ .../src/component/DynamicForm/DynamicForm.vue | 109 +++---- .../component/DynamicForm/DynamicFormItem.vue | 37 +++ .../component/DynamicForm/DynamicLayout.vue | 39 +++ packages/screen/src/router/index.js | 4 + .../DisasterManagementPC.vue | 4 +- .../IceDisasterDetail/IceDisasterDetailPC.vue | 288 +----------------- .../IceDisasterDetail/detailConfig.js | 111 +++++++ .../IceDisasterReport/IceDisasterReportPC.vue | 6 - .../WaterDisasterContinueReportPC.vue | 17 +- .../WaterDisasterDetailPC.vue | 22 -- .../WaterDisasterReportPC.vue | 6 - 18 files changed, 632 insertions(+), 408 deletions(-) create mode 100644 packages/screen/src/component/DynamicDetail/BlockItem.vue create mode 100644 packages/screen/src/component/DynamicDetail/DynamicData.vue create mode 100644 packages/screen/src/component/DynamicDetail/DynamicDetail.vue create mode 100644 packages/screen/src/component/DynamicDetail/DynamicDetailItem.vue create mode 100644 packages/screen/src/component/DynamicDetail/DynamicLayout.vue create mode 100644 packages/screen/src/component/DynamicForm/BlockItem.vue create mode 100644 packages/screen/src/component/DynamicForm/DynamicControl.vue create mode 100644 packages/screen/src/component/DynamicForm/DynamicFormItem.vue create mode 100644 packages/screen/src/component/DynamicForm/DynamicLayout.vue create mode 100644 packages/screen/src/views/DisasterManagement/IceDisasterDetail/detailConfig.js diff --git a/packages/screen/src/component/DynamicDetail/BlockItem.vue b/packages/screen/src/component/DynamicDetail/BlockItem.vue new file mode 100644 index 0000000..33bb90d --- /dev/null +++ b/packages/screen/src/component/DynamicDetail/BlockItem.vue @@ -0,0 +1,47 @@ + + + diff --git a/packages/screen/src/component/DynamicDetail/DynamicData.vue b/packages/screen/src/component/DynamicDetail/DynamicData.vue new file mode 100644 index 0000000..c489335 --- /dev/null +++ b/packages/screen/src/component/DynamicDetail/DynamicData.vue @@ -0,0 +1,65 @@ + + + diff --git a/packages/screen/src/component/DynamicDetail/DynamicDetail.vue b/packages/screen/src/component/DynamicDetail/DynamicDetail.vue new file mode 100644 index 0000000..800ea9d --- /dev/null +++ b/packages/screen/src/component/DynamicDetail/DynamicDetail.vue @@ -0,0 +1,48 @@ + + + diff --git a/packages/screen/src/component/DynamicDetail/DynamicDetailItem.vue b/packages/screen/src/component/DynamicDetail/DynamicDetailItem.vue new file mode 100644 index 0000000..639349e --- /dev/null +++ b/packages/screen/src/component/DynamicDetail/DynamicDetailItem.vue @@ -0,0 +1,45 @@ + + + diff --git a/packages/screen/src/component/DynamicDetail/DynamicLayout.vue b/packages/screen/src/component/DynamicDetail/DynamicLayout.vue new file mode 100644 index 0000000..de76fcc --- /dev/null +++ b/packages/screen/src/component/DynamicDetail/DynamicLayout.vue @@ -0,0 +1,34 @@ + + + diff --git a/packages/screen/src/component/DynamicForm/BlockItem.vue b/packages/screen/src/component/DynamicForm/BlockItem.vue new file mode 100644 index 0000000..33bb90d --- /dev/null +++ b/packages/screen/src/component/DynamicForm/BlockItem.vue @@ -0,0 +1,47 @@ + + + diff --git a/packages/screen/src/component/DynamicForm/DynamicControl.vue b/packages/screen/src/component/DynamicForm/DynamicControl.vue new file mode 100644 index 0000000..836b708 --- /dev/null +++ b/packages/screen/src/component/DynamicForm/DynamicControl.vue @@ -0,0 +1,111 @@ + + + diff --git a/packages/screen/src/component/DynamicForm/DynamicForm.vue b/packages/screen/src/component/DynamicForm/DynamicForm.vue index 6df6571..c0991e5 100644 --- a/packages/screen/src/component/DynamicForm/DynamicForm.vue +++ b/packages/screen/src/component/DynamicForm/DynamicForm.vue @@ -1,91 +1,52 @@ \ No newline at end of file + diff --git a/packages/screen/src/component/DynamicForm/DynamicFormItem.vue b/packages/screen/src/component/DynamicForm/DynamicFormItem.vue new file mode 100644 index 0000000..0d35ba5 --- /dev/null +++ b/packages/screen/src/component/DynamicForm/DynamicFormItem.vue @@ -0,0 +1,37 @@ + + + \ No newline at end of file diff --git a/packages/screen/src/component/DynamicForm/DynamicLayout.vue b/packages/screen/src/component/DynamicForm/DynamicLayout.vue new file mode 100644 index 0000000..b7ddee8 --- /dev/null +++ b/packages/screen/src/component/DynamicForm/DynamicLayout.vue @@ -0,0 +1,39 @@ + + + diff --git a/packages/screen/src/router/index.js b/packages/screen/src/router/index.js index 5f04191..13d592b 100644 --- a/packages/screen/src/router/index.js +++ b/packages/screen/src/router/index.js @@ -258,6 +258,7 @@ const routes = [ component: () => import('../views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue'), meta: { title: '冰雪灾害上报', + parentRoute: 'disasterManagement', breadcrumb: true } }, @@ -266,6 +267,7 @@ const routes = [ component: () => import('../views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue'), meta: { title: '冰雪灾害详情', + parentRoute: 'disasterManagement', breadcrumb: true } }, @@ -274,6 +276,7 @@ const routes = [ component: () => import('../views/DisasterManagement/WaterDisasterReport/WaterDisasterReportPC.vue'), meta: { title: '水毁灾害上报', + parentRoute: 'disasterManagement', breadcrumb: true } }, @@ -283,6 +286,7 @@ const routes = [ component: () => import('../views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue'), meta: { title: '水毁事件详情', + parentRoute: 'disasterManagement', breadcrumb: true } } diff --git a/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue b/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue index 1168264..530c2fd 100644 --- a/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue +++ b/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue @@ -323,7 +323,7 @@ const handleDetail = (row) => { router.push({ path: '/waterDisasterDetail', query: { id: row.id } }) } if (row.disasterType == 'ICE_SNOW') { - router.push({ path: '/iceDisasterDetail', query: { id: row.id } }) + router.push({ path: '/iceDisasterDetail', query: { id: row.relationId } }) } } @@ -333,7 +333,7 @@ const handleEdit = (row) => { router.push({ path: '/waterDisasterDetail', query: { id: row.id, mode: 'edit' } }) } if (row.disasterType == 'ICE_SNOW') { - router.push({ path: '/iceDisasterDetail', query: { id: row.id, mode: 'edit' } }) + router.push({ path: '/iceDisasterDetail', query: { id: row.relationId, mode: 'edit' } }) } } diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue index 751cdfc..08cb86a 100644 --- a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue +++ b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue @@ -1,238 +1,13 @@ @@ -245,6 +20,8 @@ import { ArrowLeft, Picture, VideoCamera } from '@element-plus/icons-vue' import ContinueReport from './IceDisasterContinueReportPC.vue' import { request } from '@shared/utils/request' import FileUpload from '@/component/FileUpload/FileUpload.vue' +import detailConfig from './detailConfig' +import DynamicDetail from '@/component/DynamicDetail/DynamicDetail.vue' const router = useRouter() const route = useRoute() @@ -291,57 +68,6 @@ const hasReportData = computed(() => { return allReports.value.length > 0 }) -// 获取事件状态文本 -const getEventStatusText = () => { - return eventStatus.value === 1 ? '已解除' : '未解除' -} - -// 获取事件状态类型 -const getEventStatusType = () => { - return eventStatus.value === 1 ? 'success' : 'danger' -} - -const getBaseDisposalMeasures = () => { - const firstItem = allReports.value[0] - if (!firstItem) return '-' - return formatDisposalMeasures(firstItem.disposalMeasures || '') || '-' -} - -// 格式化处置措施 -const formatDisposalMeasures = (measures) => { - if (!measures) return '' - const measureMap = { - 半幅封闭: '半幅封闭', - 全副封闭: '全副封闭', - 便道通行: '便道通行', - 正常通行: '正常通行' - } - return measures - .split(',') - .map((m) => measureMap[m.trim()] || m.trim()) - .join('、') -} - -// 获取损失描述 -const getLossDescription = (report) => { - const lossList = report?.lossList - if (!lossList || lossList.length === 0) return '-' - - const totalVolume = lossList.reduce((sum, loss) => { - const volume = (loss.length || 0) * (loss.width || 0) * (loss.height || 0) - return sum + volume - }, 0) - - const totalAmount = lossList.reduce((sum, loss) => sum + (loss.totalAmount || 0), 0) - - return `${totalVolume}方,共损失${totalAmount}万元` -} - -// 获取车辆滞留文本 -const getVehicleStrandedText = (report) => { - const count = report?.strandedVehicleCount || 0 - return count > 0 ? `有车滞留,共${count}辆` : '无车滞留' -} // 获取灾毁详情 const getDisasterDetail = async () => { @@ -353,9 +79,8 @@ const getDisasterDetail = async () => { try { const result = await request({ - url: `/snow-ops-platform/water-damage/getById`, + url: `/snow-ops-platform/event/getById?id=${route.query.id}`, method: 'get', - params: { id } }) if (result?.data) { @@ -601,6 +326,5 @@ onMounted(() => { overflow: hidden; } .file-list { - } diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/detailConfig.js b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/detailConfig.js new file mode 100644 index 0000000..d6035af --- /dev/null +++ b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/detailConfig.js @@ -0,0 +1,111 @@ +export default [ + { + type: 'card', + label: '基础信息', + children: [ + { + type: 'row', + children: [ + { + span: 8, + label: '事件类型', + value: '冰雪事件', + }, + { + span: 8, + label: '路况类别', + prop: 'event.routeNo' + }, + { + span: 8, + label: '处理措施', + prop: 'event.disposalMeasures' + } + ] + }, + { + type: 'row', + children: [ + { + span: 8, + label: '地点路线', + prop: 'event.occurLocation' + }, + { + span: 8, + label: '起点桩号', + prop: 'event.startStakeNo' + }, + { + span: 8, + label: '止点桩号', + prop: 'event.endStakeNo' + } + ] + }, + { + type: 'row', + children: [ + { + span: 8, + label: '路况位置', + prop: 'event.occurLocation' + }, + { + span: 8, + label: '阻断点小地名', + prop: 'event.occurLocation' + }, + { + span: 8, + label: '地点路线', + prop: 'event.occurLocation' + } + ] + }, + { + type: 'row', + children: [ + { + span: 24, + label: '受灾里程', + prop: 'event.disasterMileage' + } + ] + }, + { + type: 'row', + children: [ + { + span: 8, + label: '所属区县', + prop: 'event.district' + }, + { + span: 8, + label: '发现时间', + prop: 'event.occurTime' + } + ] + }, + { + type: 'row', + children: [ + { + span: 8, + label: '是否需要恢复重建', + prop: 'event.actualRecoverTime' + }, + { + show: (formData) => { + return formData.event?.actualRecoverTime + }, + span: 8, + label: '恢复重建预估费用(万元)', + prop: 'event.estimatedRecoveryCost' + } + ] + } + ] + } +] \ No newline at end of file diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue index 243d343..c9fb246 100644 --- a/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue +++ b/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue @@ -1,11 +1,5 @@