From 4520394ea3138789aae61ce1f15c7db97e2e74ca Mon Sep 17 00:00:00 2001 From: niedongsheng <605973111@qq.com> Date: Fri, 24 Apr 2026 13:20:44 +0800 Subject: [PATCH] =?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 --- .../IceDisaster/IceDisaster.vue | 15 +- .../IceDisaster/IceDisasterDetail.vue | 14 +- .../WaterDisaster/WaterDisaster.vue | 56 ++--- .../WaterDisaster/WaterDisasterDetail.vue | 20 +- .../DisasterManagementPC.vue | 2 +- .../IceDisasterContinueReportPC.vue | 4 +- .../IceDisasterDetail/IceDisasterDetailPC.vue | 18 +- .../IceDisasterReport/IceDisasterReportPC.vue | 8 +- .../IceDisasterReport/useIceDisasterReport.js | 16 +- .../WaterDisasterContinueReportPC.vue | 24 +- .../WaterDisasterDetailPC.vue | 226 +++++++----------- .../WaterDisasterReportPC.vue | 32 +-- .../useWaterDisasterReport.js | 31 ++- 13 files changed, 187 insertions(+), 279 deletions(-) diff --git a/packages/mobile/src/views/DisasterManagement/IceDisaster/IceDisaster.vue b/packages/mobile/src/views/DisasterManagement/IceDisaster/IceDisaster.vue index 28bdc8f..587dd56 100644 --- a/packages/mobile/src/views/DisasterManagement/IceDisaster/IceDisaster.vue +++ b/packages/mobile/src/views/DisasterManagement/IceDisaster/IceDisaster.vue @@ -4,7 +4,7 @@ - + @@ -205,7 +205,7 @@ const parsePointValue = point => { }; const handleRouteNoChange = (item = {}) => { - formData.routeNo = item.routeCode || formData.routeNo; + formData.event.routeNo = item.routeCode; formData.event.startStakeNo = item.startStakeNo; formData.event.endStakeNo = item.endStakeNo; @@ -219,7 +219,7 @@ const handleRouteNoChange = (item = {}) => { }; const calibrateTime = isShowToast => { - formData.value.occurTime = formatDate(Date.now()); + formData.value.event?.occurTime = formatDate(Date.now()); if (isShowToast) showToast('时间已校准为当前时间'); }; @@ -239,9 +239,10 @@ const handleSubmit = async () => { ...formData.value, // 可以在这里添加站点信息等其他数据 }; - + + let apiUrl = formData.id ? '/snow-ops-platform/event/dispose' : '/snow-ops-platform/event/report' const res = await request({ - url: '/snow-ops-platform/event/addOrUpdate', + url: apiUrl, method: 'post', data: submitData, }); diff --git a/packages/mobile/src/views/DisasterManagement/IceDisaster/IceDisasterDetail.vue b/packages/mobile/src/views/DisasterManagement/IceDisaster/IceDisasterDetail.vue index 93abaf6..79946df 100644 --- a/packages/mobile/src/views/DisasterManagement/IceDisaster/IceDisasterDetail.vue +++ b/packages/mobile/src/views/DisasterManagement/IceDisaster/IceDisasterDetail.vue @@ -28,19 +28,19 @@
线路编号: - {{ detailData.routeNo || '-' }} + {{ detailData.event?.routeNo || '-' }}
发生时间: - {{ detailData.occurTime || '-' }} + {{ detailData.event?.occurTime || '-' }}
路况位置: - {{ detailData.occurLocation || '-' }} + {{ detailData.event?.occurLocation || '-' }}
@@ -171,10 +171,6 @@ const detailData = ref({ report: [], // 填报列表(包含首报和续报) fileList: [], // 附件列表 lossList: [], // 损失列表 - occurLocation: '', - occurTime: '', - roadConditionType: '', - routeNo: '', }); const loading = ref(true); @@ -255,10 +251,6 @@ const getDisasterDetail = async () => { report: data.reportList?.reverse() || [], // 直接使用 report,包含首报和续报 fileList: data.fileList || [], lossList: data.lossList || [], - occurLocation: data.occurLocation || '', - occurTime: data.occurTime || '', - roadConditionType: data.roadConditionType || '', - routeNo: data.routeNo || '', }; } else { showToast(result.message || '获取详情失败'); diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue index 452f5e9..68750ec 100644 --- a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue +++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue @@ -4,7 +4,7 @@ - + @@ -23,14 +23,14 @@
- +
校准时间
- + @@ -43,7 +43,7 @@ - + @@ -172,14 +172,12 @@ const isContinue = computed(() => route.query.isContinue) // 表单数据 - 按 Request 接口结构定义,使用 ref 包装 const formData = ref({ - // 顶层字段 - occurLocation: '', // 发生地点 - occurTime: null, // 发生时间 - roadConditionType: '', // 路况类别 - routeNo: '', // 线路编号 - // event 对象 event: { + occurLocation: '', // 发生地点/路况位置 + occurTime: null, // 发生时间 + routeNo: '', // 线路编号 + roadConditionType: '', // 路况类别 blockedMileage: '', // 阻断里程 blockedPointName: '', // 阻断点小地名 contactPerson: '', // 联系人 @@ -230,10 +228,6 @@ const initFormData = (newVal) => { if (newVal && Object.keys(newVal).length > 0) { // 深度合并数据 - 直接替换整个对象 formData.value = { - occurLocation: newVal.occurLocation || '', - occurTime: newVal.occurTime || formatDate(Date.now()), - roadConditionType: newVal.roadConditionType || '', - routeNo: newVal.routeNo || '', event: { ...formData.value.event, ...(newVal.event || {}) }, report: { ...formData.value.report, ...(newVal.report || {}) }, lossList: newVal.lossList || [], @@ -246,7 +240,7 @@ const initFormData = (newVal) => { const calibrateTime = () => { const now = new Date() const formatted = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}` - formData.value.occurTime = formatted + formData.value.event?.occurTime = formatted showToast('时间已校准为当前时间') } @@ -280,17 +274,17 @@ const parsePointValue = (point) => { } const handleRouteNoChange = (item) => { - formData.routeNo = item.routeCode + formData.event.routeNo = item.routeCode formData.event.startStakeNo = item.startStakeNo formData.event.endStakeNo = item.endStakeNo const startPoint = parsePointValue(item.startPoint) const endPoint = parsePointValue(item.endPoint) - formData.event.startStakeLongitude = startPoint.longitude - formData.event.startStakeLatitude = startPoint.latitude - formData.event.endStakeLongitude = endPoint.longitude - formData.event.endStakeLatitude = endPoint.latitude + formData.event.startStakeLng = startPoint.longitude + formData.event.startStakeLat = startPoint.latitude + formData.event.endStakeLng = endPoint.longitude + formData.event.endStakeLat = endPoint.latitude } // 简单的空值判断 @@ -299,7 +293,7 @@ const isEmpty = (value) => { } const validate = () => { - if (isEmpty(formData.value.roadConditionType)) { + if (isEmpty(formData.value.event?.roadConditionType)) { showToast('请选择路况类别') return false } @@ -323,7 +317,7 @@ const validate = () => { showToast('请输入阻断里程') return false } - if (isEmpty(formData.value.occurTime)) { + if (isEmpty(formData.value.event?.occurTime)) { showToast('请选择发生时间') return false } @@ -331,7 +325,7 @@ const validate = () => { showToast('请输入预计恢复时间') return false } - if (isEmpty(formData.value.routeNo)) { + if (isEmpty(formData.value.event?.routeNo)) { showToast('请输入线路编号') return false } @@ -343,7 +337,7 @@ const validate = () => { showToast('请输入止点桩号') return false } - if (isEmpty(formData.value.occurLocation)) { + if (isEmpty(formData.value.event?.occurLocation)) { showToast('请输入路况位置') return false } @@ -351,14 +345,6 @@ const validate = () => { showToast('请输入阻断点小地名') return false } - if (isEmpty(formData.value.event?.longitude)) { - showToast('请输入经度') - return false - } - if (isEmpty(formData.value.event?.latitude)) { - showToast('请输入纬度') - return false - } if (isEmpty(formData.value.event?.needsRecovery)) { showToast('请选择是否需要恢复重建') return false @@ -390,9 +376,9 @@ const handleSubmit = async () => { ...formData // 可以在这里添加站点信息等其他数据 } - + let apiUrl = formData.id ? '/snow-ops-platform/water-damage/dispose' : '/snow-ops-platform/water-damage/report' const res = await request({ - url: '/snow-ops-platform/water-damage/addOrUpdate', + url: apiUrl, method: 'post', data: submitData }) @@ -467,7 +453,7 @@ const getDisasterDetail = async () => { onMounted(() => { - formData.value.occurTime = formatDate(Date.now()) + formData.value.event?.occurTime = formatDate(Date.now()) if (route.query.id) { getDisasterDetail() } else { diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisasterDetail.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisasterDetail.vue index 2e306ec..7f7c3f8 100644 --- a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisasterDetail.vue +++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisasterDetail.vue @@ -22,7 +22,7 @@
路况类别: - {{ detailData.roadConditionType || '-' }} + {{ detailData.event?.roadConditionType || '-' }}
@@ -57,19 +57,19 @@
发生时间: - {{ detailData.occurTime || '-' }} + {{ detailData.event?.occurTime || '-' }}
线路编号: - {{ detailData.routeNo || '-' }} + {{ detailData.event?.routeNo || '-' }}
- 地点路线: - {{ detailData.occurLocation || '-' }} + 路况位置: + {{ detailData.event?.occurLocation || '-' }}
@@ -87,7 +87,7 @@
路况位置: - {{ detailData.event?.blockedPointName || detailData.occurLocation || '-' }} + {{ detailData.event?.occurLocation || '-' }}
@@ -231,10 +231,6 @@ const detailData = ref({ report: [], // 填报列表(包含首报和续报) fileList: [], // 附件列表 lossList: [], // 损失列表 - occurLocation: '', - occurTime: '', - roadConditionType: '', - routeNo: '' }) const loading = ref(true) @@ -329,10 +325,6 @@ const getDisasterDetail = async () => { report: data.report || [], // 直接使用 report,包含首报和续报 fileList: data.fileList || [], lossList: data.lossList || [], - occurLocation: data.occurLocation || '', - occurTime: data.occurTime || '', - roadConditionType: data.roadConditionType || '', - routeNo: data.routeNo || '' } } else { showToast(result.message || '获取详情失败') diff --git a/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue b/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue index a0ab1f6..5b7ac65 100644 --- a/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue +++ b/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue @@ -320,7 +320,7 @@ const resetFilters = () => { // 查看详情 const handleDetail = (row) => { if (row.disasterType == 'WATER_DAMAGE') { - router.push({ path: '/waterDisasterDetail', query: { id: row.id } }) + router.push({ path: '/waterDisasterDetail', query: { id: row.relationId } }) } if (row.disasterType == 'ICE_SNOW') { router.push({ path: '/iceDisasterDetail', query: { id: row.relationId } }) diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterContinueReportPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterContinueReportPC.vue index a37030f..7f6f690 100644 --- a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterContinueReportPC.vue +++ b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterContinueReportPC.vue @@ -164,7 +164,7 @@ const calibrateTime = () => { const day = String(now.getDate()).padStart(2, '0') const hours = String(now.getHours()).padStart(2, '0') const minutes = String(now.getMinutes()).padStart(2, '0') - formData.value.occurTime = `${year}-${month}-${day} ${hours}:${minutes}` + formData.value.event?.occurTime = `${year}-${month}-${day} ${hours}:${minutes}` ElMessage.success('时间已校准为当前时间') } @@ -181,7 +181,7 @@ const handleSubmit = async () => { try { const res = await request({ - url: '/snow-ops-platform/event/addOrUpdate', + url: '/snow-ops-platform/event/dispose', method: 'post', data: getFormData() }) diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue index 053a6cd..cb7d7d5 100644 --- a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue +++ b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue @@ -26,7 +26,7 @@
线路编号: - {{ detailData.routeNo || '-' }} + {{ detailData.event?.routeNo || '-' }}
@@ -34,13 +34,13 @@
发现时间: - {{ detailData.occurTime || '-' }} + {{ detailData.event?.occurTime || '-' }}
路况位置: - {{ detailData.occurLocation || '-' }} + {{ detailData.event?.occurLocation || '-' }}
@@ -60,14 +60,6 @@ 起点桩号: {{ formatStakeNo(detailData.event?.startStakeNo) }} -
- 纬度: - {{ formatValue(detailData.event?.startStakeLat ?? detailData.event?.startStakeLatitude) }} -
-
- 经度: - {{ formatValue(detailData.event?.startStakeLng ?? detailData.event?.startStakeLongitude) }} -
@@ -279,10 +271,6 @@ const getDisasterDetail = async () => { report: data.reportList?.reverse(), fileList: data.fileList || [], lossList: data.lossList || [], - occurLocation: data.occurLocation || data.event?.roadConditionLocation || '', - occurTime: data.occurTime || data.event?.occurTime || '', - roadConditionType: data.roadConditionType || '', - routeNo: data.routeNo || data.event?.routeNo || '' } if (isEdit.value) { diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue index e73d1ad..b59eb3c 100644 --- a/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue +++ b/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue @@ -43,8 +43,8 @@ - - + + @@ -68,8 +68,8 @@ - - + + diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterReport/useIceDisasterReport.js b/packages/screen/src/views/DisasterManagement/IceDisasterReport/useIceDisasterReport.js index 9916bb2..d26e857 100644 --- a/packages/screen/src/views/DisasterManagement/IceDisasterReport/useIceDisasterReport.js +++ b/packages/screen/src/views/DisasterManagement/IceDisasterReport/useIceDisasterReport.js @@ -6,9 +6,6 @@ import { useOptions } from '@shared/composables/useOptions' import { useUserStore} from '@/store/userStore' const createDefaultFormData = () => ({ - occurLocation: '', - occurTime: '', - routeNo: '', event: {}, report: {}, fileList: [], @@ -61,15 +58,15 @@ export const useIceDisasterReport = () => { const formData = reactive(createDefaultFormData()) const formRules = { - 'event.reporterName': [{ required: true, message: '请输入联系人员', trigger: 'blur' }], + // 'event.reporterName': [{ required: true, message: '请输入联系人员', trigger: 'blur' }], 'event.reporterPhone': [ - { required: true, message: '请输入联系电话', trigger: 'blur' }, + // { required: true, message: '请输入联系电话', trigger: 'blur' }, { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的联系电话', trigger: 'blur' } ], 'event.serviceStationId': [{ required: true, message: '请选择填报站点', trigger: 'change' }], occurTime: [{ required: true, message: '请选择发生时间', trigger: 'change' }], 'event.district': [{ required: true, message: '请选择所属区县', trigger: 'change' }], - routeNo: [{ required: true, message: '请选择线路编号', trigger: 'change' }], + 'event.routeNo': [{ required: true, message: '请选择线路编号', trigger: 'change' }], 'event.occurLocation': [{ required: true, message: '请输入发生地点', trigger: 'blur' }], occurLocation: [{ required: true, message: '请选择路况位置', trigger: 'blur' }], 'event.startStakeNo': [{ required: true, message: '请输入起点桩号', trigger: 'blur' }], @@ -118,7 +115,7 @@ export const useIceDisasterReport = () => { } const handleRouteNoChange = (item = {}) => { - formData.routeNo = item.routeCode || formData.routeNo + formData.event.routeNo = item.routeCode formData.event.startStakeNo = item.startStakeNo formData.event.endStakeNo = item.endStakeNo @@ -149,8 +146,7 @@ export const useIceDisasterReport = () => { } const buildSubmitData = () => { - console.log(formData) - return + return formData } const validate = async () => { @@ -175,7 +171,7 @@ export const useIceDisasterReport = () => { submitting.value = true try { const res = await request({ - url: '/snow-ops-platform/event/addOrUpdate', + url: '/snow-ops-platform/event/report', method: 'post', data: buildSubmitData() }) diff --git a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue index f438a42..1e07712 100644 --- a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue +++ b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue @@ -161,11 +161,11 @@ const emit = defineEmits(['input', 'change']) // 表单数据 const formData = reactive({ - occurLocation: '', - occurTime: '', - roadConditionType: '', - routeNo: '', event: { + occurLocation: '', + occurTime: '', + roadConditionType: '', + routeNo: '', blockedMileage: '', blockedPointName: '', contactPerson: '', @@ -271,10 +271,6 @@ watch( // 初始化表单数据 const initFormData = (data) => { Object.assign(formData, { - occurLocation: data.occurLocation || '', - occurTime: data.occurTime || '', - roadConditionType: data.roadConditionType || '', - routeNo: data.routeNo || '', event: { ...formData.event, ...(data.event || {}) }, report: { ...formData.report, ...(data.report || {}) }, lossList: data.lossList || [], @@ -294,7 +290,7 @@ const calibrateTime = () => { const day = String(now.getDate()).padStart(2, '0') const hours = String(now.getHours()).padStart(2, '0') const minutes = String(now.getMinutes()).padStart(2, '0') - formData.occurTime = `${year}-${month}-${day} ${hours}:${minutes}` + formData.event?.occurTime = `${year}-${month}-${day} ${hours}:${minutes}` ElMessage.success('时间已校准为当前时间') } @@ -311,11 +307,11 @@ const getFormData = () => { // 重置表单 const resetForm = () => { Object.assign(formData, { - occurLocation: '', - occurTime: '', - roadConditionType: '', - routeNo: '', event: { + occurLocation: '', + occurTime: '', + roadConditionType: '', + routeNo: '', blockedMileage: '', blockedPointName: '', contactPerson: '', @@ -368,7 +364,7 @@ const handleSubmit = async () => { } const res = await request({ - url: '/snow-ops-platform/water-damage/addOrUpdate', + url: '/snow-ops-platform/water-damage/dispose', method: 'post', data: submitData }) diff --git a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue index a94891f..ff48e65 100644 --- a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue +++ b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue @@ -10,99 +10,15 @@
-
-
-
- 事件类型: - 水毁事件 -
-
- 路况类别: - {{ detailData.roadConditionType || '-' }} -
-
- 是否阻断: - {{ formatBooleanValue(detailData.event?.isBlocked) }} -
-
- 路况位置: - {{ detailData.occurLocation || '-' }} -
-
- 所属区县: - {{ detailData.event?.district || '-' }} -
-
- 起点桩经度: - {{ detailData.event?.startStakeLongitude || '-' }} -
-
- 止点桩经度: - {{ detailData.event?.endStakeLongitude || '-' }} -
-
- 是否需要恢复重建: - {{ formatBooleanValue(detailData.event?.needsRecovery) }} -
-
- -
-
- 填报站点: - {{ detailData.stationName || '-' }} -
-
- 抢险进度: - {{ detailData.event?.repairProgress || '-' }} -
-
- 地点路线: - {{ detailData.routeNo }} -
-
- 阻断点小地名: - {{ detailData.event?.blockedPointName || '-' }} -
-
- 起点桩号: - {{ detailData.event?.startStakeNo || '-' }} -
-
- 止点桩号: - {{ detailData.event?.endStakeNo || '-' }} -
-
- 受灾里程: - {{ formatUnitValue(detailData.event?.blockedMileage, '公里') }} -
-
- 恢复重建预估费用(万元): - {{ detailData.event?.estimatedRecoveryCost ?? '-' }} -
-
- -
-
- 发生时间: - {{ detailData.occurTime || '-' }} -
-
- 处理措施: - {{ getBaseDisposalMeasures() }} -
-
- 水毁处数: - {{ detailData.event?.damageCount ?? '-' }} -
-
- 起点桩纬度: - {{ detailData.event?.startStakeLatitude || '-' }} -
-
- 止点桩纬度: - {{ detailData.event?.endStakeLatitude || '-' }} -
-
+
+ + +
+ {{ item.label }}: + {{ item.value }} +
+
+
@@ -122,33 +38,15 @@
-
-
- 现场描述: - {{ report.siteDescription || '-' }} -
-
- 处置措施: - {{ report.disposalMeasures || '-' }} -
-
- 实际恢复时间: - {{ report.actualRecoverTime || '-' }} -
-
- 预计恢复时间: - {{ report.expectRecoverTime || '-' }} -
- -
- 填报人: - {{ report.reporterName ? report.reporterName : '-' }} -
- -
- 联系电话: - {{ report.phone ? report.phone : '-' }} -
+
+ + +
+ {{ item.label }}: + {{ item.value }} +
+
+
@@ -239,6 +137,67 @@ const hasReportData = computed(() => { return allReports.value.length > 0 }) +const baseInfoRows = computed(() => { + if (!detailData.value) return [] + + const rows = [ + [ + { label: '事件类型', value: '水毁事件' }, + { label: '填报站点', value: detailData.value.event.stationName || '-' }, + { label: '发生时间', value: detailData.value.event.occurTime || '-' } + ], + [ + { label: '路况类别', value: detailData.value.event.roadConditionType || '-' }, + { label: '抢险进度', value: detailData.value.event?.repairProgress || '-' }, + { label: '处理措施', value: getBaseDisposalMeasures() } + ], + [ + { label: '是否阻断', value: formatBooleanValue(detailData.value.event?.isBlocked) }, + { label: '受灾里程', value: formatUnitValue(detailData.value.event?.blockedMileage, '公里') }, + { label: '水毁处数', value: detailData.value.event?.damageCount ?? '-' } + ], + [ + { label: '地点路线', value: detailData.value.event?.routeNo || '-'}, + { label: '起点桩号', value: detailData.value.event?.startStakeNo || '-' }, + { label: '止点桩号', value: detailData.value.event?.endStakeNo || '-' }, + ], + [ + { label: '路况位置', value: detailData.value.occurLocation || '-' }, + { label: '阻断点小地名', value: detailData.value.event?.blockedPointName || '-' }, + { label: '所属区县', value: detailData.value.event?.district || '-' }, + ], + [ + { label: '是否需要恢复重建', value: formatBooleanValue(detailData.value.event?.needsRecovery) } + ], + ] + + if (detailData.value.event?.estimatedRecoveryCost) { + rows[4].push([{ label: '恢复重建预估费用(万元)', value: detailData.value.event?.estimatedRecoveryCost ?? '-' }]) + } + + return rows +}) + +const getReportInfoRows = (report) => { + return [ + [{ label: '现场描述', value: report.siteDescription || '-' }], + [{ label: '处置措施', value: report.disposalMeasures || '-' }], + [ + { label: '实际恢复时间', value: report.actualRecoverTime || '-' }, + { label: '预计恢复时间', value: report.expectRecoverTime || '-' } + ], + [ + { label: '填报人', value: report.reporterName || '-' }, + { label: '联系电话', value: report.phone || '-' } + ] + ] +} + +const getColSpan = (row) => { + const length = row?.length || 1 + return Math.floor(24 / length) +} + const getBaseDisposalMeasures = () => { const firstItem = allReports.value[0] if (!firstItem) return '-' @@ -293,11 +252,6 @@ const getDisasterDetail = async () => { report: data.report || [], fileList: data.fileList || [], lossList: data.lossList || [], - occurLocation: data.occurLocation || '', - occurTime: data.occurTime || '', - roadConditionType: data.roadConditionType || '', - routeNo: data.routeNo || '', - routeName: data.routeName || '' } if (isEdit.value) { @@ -353,12 +307,6 @@ onMounted(() => { } } -.base-info-grid { - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 24px; -} - .info-item { display: flex; align-items: flex-start; @@ -387,8 +335,16 @@ onMounted(() => { } } -.base-info-column { +.base-info-group, +.report-info-group, +.base-info-row, +.report-info-row { + width: 100%; +} + +.info-column { min-width: 0; + margin-bottom: 10px; } .report-section { @@ -439,16 +395,20 @@ onMounted(() => { } .basic-info-wrapper { display: flex; + gap: 24px; } .detal-info-wrapper { margin-top: 10px; border-top: 1px solid #efefef; padding-top: 10px; } -.info-list { +.report-info-row { flex: 1; overflow: hidden; + margin-bottom: -10px; } .file-list { + width: 320px; + flex-shrink: 0; } diff --git a/packages/screen/src/views/DisasterManagement/WaterDisasterReport/WaterDisasterReportPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterReport/WaterDisasterReportPC.vue index a3b4a45..8107815 100644 --- a/packages/screen/src/views/DisasterManagement/WaterDisasterReport/WaterDisasterReportPC.vue +++ b/packages/screen/src/views/DisasterManagement/WaterDisasterReport/WaterDisasterReportPC.vue @@ -43,16 +43,16 @@ - - + + - - + + @@ -109,16 +109,16 @@ - - + + - - + + @@ -141,13 +141,13 @@ - - + + - - + + @@ -161,13 +161,13 @@ - - + + - - + + diff --git a/packages/screen/src/views/DisasterManagement/WaterDisasterReport/useWaterDisasterReport.js b/packages/screen/src/views/DisasterManagement/WaterDisasterReport/useWaterDisasterReport.js index 0431b3f..ce8800b 100644 --- a/packages/screen/src/views/DisasterManagement/WaterDisasterReport/useWaterDisasterReport.js +++ b/packages/screen/src/views/DisasterManagement/WaterDisasterReport/useWaterDisasterReport.js @@ -6,10 +6,6 @@ import { useOptions } from '@shared/composables/useOptions' import { useUserStore} from '@/store/userStore' const createDefaultFormData = () => ({ - occurLocation: '', - occurTime: '', - roadConditionType: '', - routeNo: '', event: { }, report: { @@ -40,27 +36,27 @@ export const useWaterDisasterReport = () => { const showEstimatedRecoveryCost = computed(() => formData.event.needsRecovery === true) const formRules = { - 'event.contactPerson': [{ required: true, message: '请输入联系人员', trigger: 'blur' }], + // 'event.contactPerson': [{ required: true, message: '请输入联系人员', trigger: 'blur' }], 'event.contactPhone': [ - { required: true, message: '请输入联系电话', trigger: 'blur' }, + // { required: true, message: '请输入联系电话', trigger: 'blur' }, { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的联系电话', trigger: 'blur' } ], 'event.serviceStationId': [{ required: true, message: '请选择填报站点', trigger: 'change' }], - occurTime: [{ required: true, message: '请选择发生时间', trigger: 'change' }], - roadConditionType: [{ required: true, message: '请选择路况类别', trigger: 'change' }], + "event.occurTime": [{ required: true, message: '请选择发生时间', trigger: 'change' }], + 'event.roadConditionType': [{ required: true, message: '请选择路况类别', trigger: 'change' }], 'event.repairProgress': [{ required: true, message: '请选择抢险进度', trigger: 'change' }], 'event.isBlocked': [{ required: true, message: '请选择是否阻断', trigger: 'change' }], 'event.blockedMileage': [{ required: true, message: '请输入受灾里程', trigger: 'blur' }], 'event.damageCount': [{ required: true, message: '请输入水毁处数', trigger: 'blur' }], 'event.district': [{ required: true, message: '请选择所属区县', trigger: 'change' }], - routeNo: [{ required: true, message: '请选择线路编号', trigger: 'change' }], + 'event.routeNo': [{ required: true, message: '请选择线路编号', trigger: 'change' }], occurLocation: [{ required: true, message: '请输入路况位置', trigger: 'blur' }], 'event.blockedPointName': [{ required: true, message: '请输入阻断点小地名', trigger: 'blur' }], 'event.startStakeNo': [{ required: true, message: '请输入起点桩号', trigger: 'blur' }], - 'event.startStakeLongitude': [{ required: true, message: '请输入起点桩经度', trigger: 'blur' }], - 'event.startStakeLatitude': [{ required: true, message: '请输入起点桩纬度', trigger: 'blur' }], + 'event.startStakeLng': [{ required: true, message: '请输入起点桩经度', trigger: 'blur' }], + 'event.startStakeLat': [{ required: true, message: '请输入起点桩纬度', trigger: 'blur' }], 'event.endStakeNo': [{ required: true, message: '请输入止点桩号', trigger: 'blur' }], - 'event.endStakeLongitude': [{ required: true, message: '请输入止点桩经度', trigger: 'blur' }], + 'event.endStakeLat': [{ required: true, message: '请输入止点桩经度', trigger: 'blur' }], 'event.endStakeLatitude': [{ required: true, message: '请输入止点桩纬度', trigger: 'blur' }], 'report.disposalMeasures': [{ required: true, message: '请选择处置措施', trigger: 'change' }], 'report.expectRecoverTime': [{ required: true, message: '请选择预计恢复时间', trigger: 'change' }], @@ -133,13 +129,14 @@ export const useWaterDisasterReport = () => { const startPoint = parsePointValue(item.startPoint) const endPoint = parsePointValue(item.endPoint) - formData.event.startStakeLongitude = startPoint.longitude - formData.event.startStakeLatitude = startPoint.latitude - formData.event.endStakeLongitude = endPoint.longitude - formData.event.endStakeLatitude = endPoint.latitude + formData.event.startStakeLng = startPoint.longitude + formData.event.startStakeLat = startPoint.latitude + formData.event.endStakeLng = endPoint.longitude + formData.event.endStakeLat = endPoint.latitude } const buildSubmitData = () => { + return formData } const validate = async () => { @@ -164,7 +161,7 @@ export const useWaterDisasterReport = () => { submitting.value = true try { const res = await request({ - url: '/snow-ops-platform/water-damage/addOrUpdate', + url: '/snow-ops-platform/water-damage/report', method: 'post', data: buildSubmitData() })