From ddb0e7aa390897ccaf0e5eec966fe3b556f9cd37 Mon Sep 17 00:00:00 2001 From: niedongsheng <605973111@qq.com> Date: Fri, 17 Apr 2026 18:16:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=86=B0=E9=9B=AA=E4=B8=93=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/DisasterManagement/IceDisaster.vue | 238 ++++-- .../WaterDisaster/WaterDisaster.vue | 44 +- .../src/component/NumberInput/NumberInput.vue | 71 ++ packages/screen/src/utils/math.js | 18 + .../IceDisasterContinueReportPC.vue | 498 ++++-------- .../IceDisasterDetail/IceDisasterDetailPC.vue | 370 +++++---- .../IceDisasterReport/IceDisasterReportPC.vue | 79 +- .../IceDisasterReport/useIceDisasterReport.js | 164 ++-- .../WaterDisasterContinueReportPC.vue | 194 ++--- .../WaterDisasterDetailPC.vue | 333 +++----- .../WaterDisasterLossListPC.vue | 101 +-- .../WaterDisasterReportPC.vue | 79 +- .../WaterDisasterReport/copy.vue | 742 ------------------ .../components/MaterialList.vue | 117 +-- packages/shared/composables/useOptions.js | 1 + 15 files changed, 1076 insertions(+), 1973 deletions(-) create mode 100644 packages/screen/src/component/NumberInput/NumberInput.vue create mode 100644 packages/screen/src/utils/math.js delete mode 100644 packages/screen/src/views/DisasterManagement/WaterDisasterReport/copy.vue diff --git a/packages/mobile/src/views/DisasterManagement/IceDisaster.vue b/packages/mobile/src/views/DisasterManagement/IceDisaster.vue index 42a47e8..42e2e87 100644 --- a/packages/mobile/src/views/DisasterManagement/IceDisaster.vue +++ b/packages/mobile/src/views/DisasterManagement/IceDisaster.vue @@ -3,13 +3,15 @@
- + + + - + @@ -21,16 +23,20 @@ - + @@ -42,13 +48,13 @@ - + - + - + @@ -96,32 +102,20 @@ 确认添加
- - - - - + - + @@ -141,17 +135,18 @@ + + @@ -164,57 +159,80 @@ diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue index 6baae9e..af641cc 100644 --- a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue +++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue @@ -295,9 +295,47 @@ const isVideoFile = (file) => { if (file.fileUrl && videoExtensions.test(file.fileUrl)) return true } +const parsePointValue = (point) => { + if (!point) { + return { longitude: null, latitude: null } + } + + if (Array.isArray(point) && point.length >= 2) { + return { + longitude: point[0] ?? null, + latitude: point[1] ?? null + } + } + + if (typeof point === 'string') { + try { + const parsed = JSON.parse(point) + if (Array.isArray(parsed) && parsed.length >= 2) { + return { + longitude: parsed[0] ?? null, + latitude: parsed[1] ?? null + } + } + } catch (_error) { + return { longitude: null, latitude: null } + } + } + + return { longitude: null, latitude: null } +} + const handleRouteNoChange = (item) => { - formData.value.event.startStakeNo = item.startStakeNo - formData.value.event.endStakeNo = item.endStakeNo + formData.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 } /** @@ -404,7 +442,7 @@ const afterRead = async (options) => { if (res.code === '00000') { const name = file.name const url = res.data - const type = isImageFile({ fileUrl: url}) ? 1 : isVideoFile({ fileUrl: url}) ? 2 : 3 + const type = isImageFile({ fileUrl: url }) ? 1 : isVideoFile({ fileUrl: url }) ? 2 : 3 const fileData = { fileName: name, fileUrl: url, diff --git a/packages/screen/src/component/NumberInput/NumberInput.vue b/packages/screen/src/component/NumberInput/NumberInput.vue new file mode 100644 index 0000000..ad38a08 --- /dev/null +++ b/packages/screen/src/component/NumberInput/NumberInput.vue @@ -0,0 +1,71 @@ + + + diff --git a/packages/screen/src/utils/math.js b/packages/screen/src/utils/math.js new file mode 100644 index 0000000..885f71c --- /dev/null +++ b/packages/screen/src/utils/math.js @@ -0,0 +1,18 @@ +export const updateValueForNumber = (obj, key, value, precision = 2) => { + let normalizedValue = String(value ?? '').replace(/[^\d.]/g, '') + normalizedValue = normalizedValue.replace(/^\./, '') + + if (precision <= 0) { + obj[key] = normalizedValue.replace(/\./g, '') + return + } + + const firstDotIndex = normalizedValue.indexOf('.') + if (firstDotIndex !== -1) { + const integerPart = normalizedValue.slice(0, firstDotIndex) + const decimalPart = normalizedValue.slice(firstDotIndex + 1).replace(/\./g, '').slice(0, precision) + normalizedValue = decimalPart ? `${integerPart}.${decimalPart}` : `${integerPart}.` + } + + obj[key] = normalizedValue +} diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterContinueReportPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterContinueReportPC.vue index 055f6ea..6fbdfdc 100644 --- a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterContinueReportPC.vue +++ b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterContinueReportPC.vue @@ -1,130 +1,88 @@ diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue index 8764f6d..89f0fe5 100644 --- a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue +++ b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue @@ -1,6 +1,6 @@ +
+
+
+ {{ getReportTitle(index) }} + 时间:{{ formatValue(report.createTime) }} +
+
+
+
+
+ 处理措施: + {{ formatDisposalMeasures(report.disposalMeasures) }} +
+
+ 预计恢复时间: + {{ formatValue(report.expectRecoverTime) }} +
+
+ 实际恢复时间: + {{ formatValue(report.actualRecoverTime) }} +
+
+ 填报人: + {{ formatValue(report.reporterName || report.reportUserName || report.createByName) }} +
+
+ 联系电话: + {{ formatValue(report.reporterPhone || report.phone || report.reportPhone || report.contactPhone) }} +
+
+ {{item.materialName}}: + {{ getMaterialUsageText(item) }} +
+
+ 投入资金: + {{ formatUnitValue(report.inputFunds ?? report.material?.inputFunds ?? report.investedFunds, '万元') }} +
+
+ 投入人力: + {{ formatUnitValue(report.inputManpower ?? report.material?.inputManpower ?? report.investedManpower, '人次') }} +
+
+ 投入设备: + {{ formatUnitValue(report.inputEquipment ?? report.material?.inputEquipment ?? report.investedMachinery, '台') }} +
+
+ 有无车辆滞留: + {{ getHasStrandedVehiclesText(report) }} +
+
+ 滞留车辆: + {{ formatUnitValue(report.strandedVehicleCount ?? report.traffic?.strandedVehicleCount, '辆') }} +
+
+ 现场情况描述: + {{ formatValue(report.siteDescription) }} +
+
+
+ +
+
+
+
+
+ - + diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue index d2b9fe0..65e34a6 100644 --- a/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue +++ b/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue @@ -1,6 +1,6 @@