feat: H5冰灾续报重构
This commit is contained in:
parent
037cdda407
commit
c850d60368
@ -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')
|
||||
|
||||
@ -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 || '获取详情失败');
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user