feat: H5冰灾续报重构

This commit is contained in:
niedongsheng 2026-04-20 15:07:27 +08:00
parent 037cdda407
commit c850d60368
3 changed files with 45 additions and 34 deletions

View File

@ -35,7 +35,11 @@ const route = useRoute()
//
const isContinue = computed(() => route.query.isContinue)
const title = ref(!isContinue ? '灾毁填报' : '灾毁续报')
const title = computed(() => {
const label = route.query.eventType === 'ice' ? '冰毁' : '水毁'
if(!isContinue) return `${label}填报`
return `${label}续报`
})
//
const eventType = ref(route.query.eventType ? route.query.eventType : 'water')

View File

@ -32,9 +32,9 @@
<!-- 止点桩号 (event.endStakeNo) -->
<van-field v-model="formData.event.endStakeNo" label="止点桩号(K)" placeholder="请填写" />
<!-- 受灾里程 (event.blockedMileage) -->
<!-- 受灾里程 (event.disasterMileage) -->
<van-field
v-model="formData.event.blockedMileage"
v-model="formData.event.disasterMileage"
label="受灾里程"
placeholder="请填写"
type="digit"
@ -77,19 +77,9 @@
<PanelItem title="实施情况">
<van-field
v-model="formData.report.investedMachinery"
v-model="formData.report.inputManpower"
label="投入人力"
placeholder="请填写"
type="digit"
>
<template #button>
<span class="field-unit">/</span>
</template>
</van-field>
<van-field
v-model="formData.report.investedManpower"
label="投入资金"
placeholder="请填写"
type="number"
>
<template #button>
@ -97,8 +87,8 @@
</template>
</van-field>
<van-field
v-model="formData.report.investedMachinery"
label="投入设备"
v-model="formData.report.inputFunds"
label="投入资金"
placeholder="请填写"
type="digit"
>
@ -106,19 +96,29 @@
<span class="field-unit">万元</span>
</template>
</van-field>
<van-field
v-model="formData.report.inputEquipment"
label="投入设备"
placeholder="请填写"
type="digit"
>
<template #button>
<span class="field-unit">/</span>
</template>
</van-field>
<!-- 物资选择 -->
<MaterialPicker v-model="formData.yhzMaterialList" />
<BasePicker
v-model="formData.event.test"
v-model="formData.report.hasStrandedVehicles"
:options="options['haveOrNot']"
label="有无车辆滞留"
placeholder="请选择"
/>
<van-field
v-if="formData.event.hasStrandedVehicles === 1"
v-model="form.event.strandedVehicleCount"
v-if="formData.report.hasStrandedVehicles === 1"
v-model="formData.report.strandedVehicleCount"
type="number"
label="滞留车辆数"
center
@ -126,7 +126,7 @@
/>
<BaseDatePicker
v-model="formData.report.expectRecoverTime"
v-model="formData.report.actualRecoverTime"
label="实际恢复时间"
placeholder="请选择时间"
:min-date="minDate"
@ -154,7 +154,8 @@ import { useRoute } from 'vue-router';
import { request } from '@shared/utils/request';
import { useOptions } from '@shared/composables/useOptions';
import DisasterFileUpload from '../components/DisasterFileUpload.vue';
import { showToast, showFailToast, showLoadingToast } from 'vant';
import { showToast, showFailToast, showLoadingToast, showSuccessToast } from 'vant';
import { formatDate } from '@shared/utils'
const route = useRoute();
const { options } = useOptions();
@ -216,12 +217,15 @@ const handleRouteNoChange = (item = {}) => {
};
const calibrateTime = isShowToast => {
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.occurTime = formatDate(Date.now());
if (isShowToast) showToast('时间已校准为当前时间');
};
const validate = () => {
return true
}
const submitting = ref(false)
const handleSubmit = async () => {
//
if (!validate()) return;
@ -258,7 +262,8 @@ const handleSubmit = async () => {
} else {
//
setTimeout(() => {
router.replace('/disasterManagement');
if(isContinue) router.go(-1)
else router.replace('/disasterManagement');
}, 500);
}
} else {
@ -271,7 +276,7 @@ const handleSubmit = async () => {
submitting.value = false;
}
};
const detailData = ref(null)
const getDisasterDetail = async () => {
const id = route.query.id;
if (!id) {
@ -290,7 +295,12 @@ const getDisasterDetail = async () => {
if (result?.data) {
const data = result.data;
data.reportList = undefined
data.report = {}
data.yhzMaterialList = []
data.fileList = []
detailData.value = data;
formData.value = data
} else {
ElMessage.warning(result.message || '获取详情失败');
}

View File

@ -163,6 +163,7 @@ import LossList from '../components/LossList.vue'
import { useRouter, useRoute } from 'vue-router'
import { request } from '@shared/utils/request'
import { useOptions } from '@shared/composables/useOptions'
import { formatDate } from '@shared/utils'
const route = useRoute()
const { options } = useOptions()
@ -230,7 +231,7 @@ const initFormData = (newVal) => {
// -
formData.value = {
occurLocation: newVal.occurLocation || '',
occurTime: newVal.occurTime || formatTime(),
occurTime: newVal.occurTime || formatDate(Date.now()),
roadConditionType: newVal.roadConditionType || '',
routeNo: newVal.routeNo || '',
event: { ...formData.value.event, ...(newVal.event || {}) },
@ -413,7 +414,8 @@ const handleSubmit = async () => {
} else {
//
setTimeout(() => {
router.replace('/disasterManagement')
if(isContinue) router.go(-1)
else router.replace('/disasterManagement')
}, 500)
}
} else {
@ -463,14 +465,9 @@ const getDisasterDetail = async () => {
}
}
//
const formatTime = (date = new Date()) => {
const pad = (n) => n.toString().padStart(2, '0')
return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ` + `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`
}
onMounted(() => {
formData.value.occurTime = formatTime()
formData.value.occurTime = formatDate(Date.now())
if (route.query.id) {
getDisasterDetail()
} else {