bugfix: 水毁灾害

This commit is contained in:
niedongsheng 2026-04-10 13:39:36 +08:00
parent 9ec3f14585
commit 80909dfd4d
12 changed files with 29 additions and 124 deletions

View File

@ -72,33 +72,17 @@
<span class="info-value">{{ detailData.occurLocation || '-' }}</span>
</div>
<!-- 起点桩号及经纬度 -->
<!-- 起点桩号 -->
<div class="info-row">
<span class="info-label">起点桩号</span>
<span class="info-value">{{ detailData.event?.startStakeNo || '-' }}</span>
</div>
<div class="info-row sub-row">
<span class="info-label">起点桩经度</span>
<span class="info-value">{{ detailData.event?.startStakeLng || '-' }}</span>
</div>
<div class="info-row sub-row">
<span class="info-label">起点桩纬度</span>
<span class="info-value">{{ detailData.event?.startStakeLat || '-' }}</span>
</div>
<!-- 止点桩号及经纬度 -->
<!-- 止点桩号 -->
<div class="info-row">
<span class="info-label">止点桩号</span>
<span class="info-value">{{ detailData.event?.endStakeNo || '-' }}</span>
</div>
<div class="info-row sub-row">
<span class="info-label">止点桩经度</span>
<span class="info-value">{{ detailData.event?.endStakeLng || '-' }}</span>
</div>
<div class="info-row sub-row">
<span class="info-label">止点桩纬度</span>
<span class="info-value">{{ detailData.event?.endStakeLat || '-' }}</span>
</div>
<!-- 路况位置使用阻断点小地名或发生地点 -->
<div class="info-row">

View File

@ -4,7 +4,7 @@
<CurrentSite />
<!-- 事件类型 -->
<PanelItem title="事件类型" style="margin-bottom: 10px;" v-if="!isContinue">
<PanelItem title="事件类型" style="margin-bottom: 10px" v-if="!isContinue">
<van-radio-group v-model="eventType" direction="horizontal" class="event-type-group">
<van-radio name="water">水毁灾害</van-radio>
<van-radio name="ice">冰雪灾害</van-radio>
@ -12,10 +12,7 @@
</PanelItem>
<!-- 根据事件类型渲染不同表单 -->
<WaterDisaster
v-if="eventType === 'water'"
ref="waterDisasterRef"
/>
<WaterDisaster v-if="eventType === 'water'" ref="waterDisasterRef" />
<!-- 冰雪灾害表单待实现 -->
<div v-else class="coming-soon">
@ -23,9 +20,7 @@
</div>
<!-- 提交按钮 -->
<van-button type="primary" class="footer-btn" @click="handleSubmit" :loading="submitting">
提交
</van-button>
<van-button type="primary" class="footer-btn" @click="handleSubmit" :loading="submitting"> 提交 </van-button>
</PageContainer>
</template>
@ -37,7 +32,7 @@ import PageContainer from '@/components/PageContainer.vue'
import CurrentSite from '@/components/CurrentSite.vue'
import PanelItem from '@/components/PanelItem.vue'
import WaterDisaster from './WaterDisaster/WaterDisaster.vue'
import { request } from "@shared/utils/request";
import { request } from '@shared/utils/request'
import mockFormData from './waterDisasterFormData.json'
const router = useRouter()
@ -52,7 +47,7 @@ const title = ref(!isContinue ? '灾毁填报' : '灾毁续报')
const eventType = ref('water')
//
const formData = ref(mockFormData)
const formData = ref(route.query.mock ? mockFormData : {})
const waterDisasterRef = ref(null)
const submitting = ref(false)
@ -80,7 +75,7 @@ const handleSubmit = async () => {
//
const submitData = {
...formData,
...formData
//
}
@ -90,16 +85,15 @@ const handleSubmit = async () => {
data: submitData
})
if(res?.code === '00000') {
if (res?.code === '00000') {
showSuccessToast('提交成功')
} else {
showFailToast(res.message)
}
//
setTimeout(() => {
router.replace('/disasterManagement')
}, 1000)
} else {
showFailToast(res.message)
}
} catch (error) {
showFailToast('提交失败,请重试')
console.error('提交失败:', error)
@ -142,7 +136,7 @@ const getDisasterDetail = async () => {
}
onMounted(() => {
if(route.query?.id) {
if (route.query?.id) {
getDisasterDetail()
} else {
waterDisasterRef.value.initFormData(formData.value)

View File

@ -35,29 +35,9 @@
<!-- 起点桩号 (event.startStakeNo) -->
<van-field v-model="formData.event.startStakeNo" label="起点桩号(K)" placeholder="请填写" />
<!-- 起点桩经纬度 (event.startStakeLng / startStakeLat) -->
<div class="coordinate-row">
<van-field v-model="formData.event.startStakeLng" label="起点桩经度" placeholder="经度" class="coordinate-field" />
<van-field v-model="formData.event.startStakeLat" label="起点桩纬度" placeholder="纬度" class="coordinate-field" />
</div>
<div class="calibrate-coord-btn" @click="calibrateStartCoord">
<van-icon name="location-o" />
<span>校准经纬度</span>
</div>
<!-- 止点桩号 (event.endStakeNo) -->
<van-field v-model="formData.event.endStakeNo" label="止点桩号(K)" placeholder="请填写" />
<!-- 止点桩经纬度 (event.endStakeLng / endStakeLat) -->
<div class="coordinate-row">
<van-field v-model="formData.event.endStakeLng" label="止点桩经度" placeholder="经度" class="coordinate-field" />
<van-field v-model="formData.event.endStakeLat" label="止点桩纬度" placeholder="纬度" class="coordinate-field" />
</div>
<div class="calibrate-coord-btn" @click="calibrateEndCoord">
<van-icon name="location-o" />
<span>校准经纬度</span>
</div>
<!-- 路况位置 (occurLocation) -->
<van-field v-model="formData.occurLocation" label="路况位置" placeholder="请填写" />
@ -205,8 +185,6 @@ const formData = reactive({
contactPhone: '', //
damageCount: '', //
district: '', //
endStakeLat: '', //
endStakeLng: '', //
endStakeNo: '', //
estimatedRecoveryCost: '', //
inspectionMileage: '', //
@ -214,8 +192,6 @@ const formData = reactive({
needsRecovery: '', //
repairProgress: '', //
reporterUnit: '', //
startStakeLat: '', //
startStakeLng: '', //
startStakeNo: '' //
},
@ -363,19 +339,6 @@ const calibrateTime = () => {
showToast('时间已校准为当前时间')
}
//
const calibrateStartCoord = () => {
formData.event.startStakeLng = '108.41763025'
formData.event.startStakeLat = '108.41763025'
showToast('起点经纬度已校准')
}
//
const calibrateEndCoord = () => {
formData.event.endStakeLng = '108.41763025'
formData.event.endStakeLat = '108.41763025'
showToast('止点经纬度已校准')
}
//
const afterImageRead = (file) => {

View File

@ -10,8 +10,6 @@
"contactPhone": "13812345678",
"damageCount": 3,
"district": "武侯区",
"endStakeLat": "30.658712",
"endStakeLng": "104.082356",
"endStakeNo": "K2251+200",
"estimatedRecoveryCost": 120.5,
"inspectionMileage": 25.6,
@ -19,8 +17,6 @@
"needsRecovery": true,
"repairProgress": "抢险中",
"reporterUnit": "武侯区交通运输局",
"startStakeLat": "30.652145",
"startStakeLng": "104.075632",
"startStakeNo": "K2250+300"
},
"report": {

View File

@ -138,7 +138,7 @@
import { ref, reactive, watch, computed } from 'vue'
import { ElMessage } from 'element-plus'
import { request } from '@shared/utils/request'
import LossList from '../DisasterReport/LossList.vue'
import LossList from '../DisasterReport/WaterDisasterLossListPC.vue'
// Props
const props = defineProps({
@ -164,8 +164,6 @@ const formData = reactive({
contactPhone: '',
damageCount: '',
district: '',
endStakeLat: '',
endStakeLng: '',
endStakeNo: '',
estimatedRecoveryCost: '',
inspectionMileage: '',
@ -173,8 +171,6 @@ const formData = reactive({
needsRecovery: '',
repairProgress: '',
reporterUnit: '',
startStakeLat: '',
startStakeLng: '',
startStakeNo: ''
},
report: {
@ -295,20 +291,6 @@ const calibrateTime = () => {
ElMessage.success('时间已校准为当前时间')
}
//
const calibrateStartCoord = () => {
formData.event.startStakeLng = '108.41763025'
formData.event.startStakeLat = '108.41763025'
ElMessage.success('起点经纬度已校准')
}
//
const calibrateEndCoord = () => {
formData.event.endStakeLng = '108.41763025'
formData.event.endStakeLat = '108.41763025'
ElMessage.success('止点经纬度已校准')
}
//
const validate = () => {
if (!formData.occurTime) {
@ -341,8 +323,6 @@ const resetForm = () => {
contactPhone: '',
damageCount: '',
district: '',
endStakeLat: '',
endStakeLng: '',
endStakeNo: '',
estimatedRecoveryCost: '',
inspectionMileage: '',
@ -350,8 +330,6 @@ const resetForm = () => {
needsRecovery: '',
repairProgress: '',
reporterUnit: '',
startStakeLat: '',
startStakeLng: '',
startStakeNo: ''
},
report: {
@ -426,8 +404,6 @@ defineExpose({
getFormData,
resetForm,
calibrateTime,
calibrateStartCoord,
calibrateEndCoord
})
</script>

View File

@ -254,9 +254,9 @@ import { onMounted, ref, computed } from 'vue'
import { useRouter, useRoute } from 'vue-router'
import { ElMessage } from 'element-plus'
import { ArrowLeft, Picture, VideoCamera } from '@element-plus/icons-vue'
import ContinueReport from './ContinueReport.vue'
import ContinueReport from './WaterDisasterContinueReportPC.vue'
import { request } from '@shared/utils/request'
import LossListDetail from './LossListDetail.vue'
import LossListDetail from './WaterDisasterLossListDetailPC.vue'
import FileUpload from '@/component/FileUpload/FileUpload.vue'
import mockData from '../DisasterReport/waterMockJson.json'

View File

@ -16,7 +16,7 @@ import { useRouter, useRoute } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Plus, Upload } from '@element-plus/icons-vue'
import { request } from '@/utils/request'
import WaterDisasterReport from './WaterDisasterReport.vue'
import WaterDisasterReport from './WaterDisasterReportPC.vue'
const router = useRouter()
const route = useRoute()

View File

@ -371,7 +371,7 @@ import { ElMessage } from 'element-plus'
import { Plus, Upload } from '@element-plus/icons-vue'
import mockData from './waterMockJson.json'
import { request } from '@/utils/request'
import LossList from './LossList.vue'
import LossList from './WaterDisasterLossListPC.vue'
import BlockItem from '@/component/BlockItem.vue'
import FileUpload from '@/component/FileUpload/FileUpload.vue'
@ -407,8 +407,6 @@ const formData = reactive({
contactPhone: null, //
damageCount: null, //
district: null, //
endStakeLat: null, //
endStakeLng: null, //
endStakeNo: null, //
estimatedRecoveryCost: null, //
inspectionMileage: null, //
@ -416,8 +414,6 @@ const formData = reactive({
needsRecovery: null, //
repairProgress: null, //
reporterUnit: null, //
startStakeLat: null, //
startStakeLng: null, //
startStakeNo: null //
},

View File

@ -10,17 +10,13 @@
"contactPhone": "13812345678",
"damageCount": 3,
"district": "武侯区",
"endStakeLat": "30.658712",
"endStakeLng": "104.082356",
"endStakeNo": "K2251+200",
"estimatedRecoveryCost": 120.5,
"inspectionMileage": 25.6,
"isBlocked": true,
"needsRecovery": true,
"repairProgress": "抢中",
"repairProgress": "抢中",
"reporterUnit": "武侯区交通运输局",
"startStakeLat": "30.652145",
"startStakeLng": "104.075632",
"startStakeNo": "K2250+300"
},
"report": {
@ -28,7 +24,7 @@
"strandedPersonCount": 12,
"deadCount": 0,
"strandedVehicleCount": 12,
"disposalMeasures": "halfClose,bypass",
"disposalMeasures": "全幅封闭",
"actualRecoverTime": "2024-07-17 12:00:00",
"expectRecoverTime": "2024-07-18 18:00:00",
"injuredCount": 1,