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 @@