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> <span class="info-value">{{ detailData.occurLocation || '-' }}</span>
</div> </div>
<!-- 起点桩号及经纬度 --> <!-- 起点桩号 -->
<div class="info-row"> <div class="info-row">
<span class="info-label">起点桩号</span> <span class="info-label">起点桩号</span>
<span class="info-value">{{ detailData.event?.startStakeNo || '-' }}</span> <span class="info-value">{{ detailData.event?.startStakeNo || '-' }}</span>
</div> </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"> <div class="info-row">
<span class="info-label">止点桩号</span> <span class="info-label">止点桩号</span>
<span class="info-value">{{ detailData.event?.endStakeNo || '-' }}</span> <span class="info-value">{{ detailData.event?.endStakeNo || '-' }}</span>
</div> </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"> <div class="info-row">

View File

@ -4,7 +4,7 @@
<CurrentSite /> <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-group v-model="eventType" direction="horizontal" class="event-type-group">
<van-radio name="water">水毁灾害</van-radio> <van-radio name="water">水毁灾害</van-radio>
<van-radio name="ice">冰雪灾害</van-radio> <van-radio name="ice">冰雪灾害</van-radio>
@ -12,20 +12,15 @@
</PanelItem> </PanelItem>
<!-- 根据事件类型渲染不同表单 --> <!-- 根据事件类型渲染不同表单 -->
<WaterDisaster <WaterDisaster v-if="eventType === 'water'" ref="waterDisasterRef" />
v-if="eventType === 'water'"
ref="waterDisasterRef"
/>
<!-- 冰雪灾害表单待实现 --> <!-- 冰雪灾害表单待实现 -->
<div v-else class="coming-soon"> <div v-else class="coming-soon">
<van-empty description="冰雪灾害表单开发中..." /> <van-empty description="冰雪灾害表单开发中..." />
</div> </div>
<!-- 提交按钮 --> <!-- 提交按钮 -->
<van-button type="primary" class="footer-btn" @click="handleSubmit" :loading="submitting"> <van-button type="primary" class="footer-btn" @click="handleSubmit" :loading="submitting"> 提交 </van-button>
提交
</van-button>
</PageContainer> </PageContainer>
</template> </template>
@ -37,7 +32,7 @@ import PageContainer from '@/components/PageContainer.vue'
import CurrentSite from '@/components/CurrentSite.vue' import CurrentSite from '@/components/CurrentSite.vue'
import PanelItem from '@/components/PanelItem.vue' import PanelItem from '@/components/PanelItem.vue'
import WaterDisaster from './WaterDisaster/WaterDisaster.vue' import WaterDisaster from './WaterDisaster/WaterDisaster.vue'
import { request } from "@shared/utils/request"; import { request } from '@shared/utils/request'
import mockFormData from './waterDisasterFormData.json' import mockFormData from './waterDisasterFormData.json'
const router = useRouter() const router = useRouter()
@ -52,7 +47,7 @@ const title = ref(!isContinue ? '灾毁填报' : '灾毁续报')
const eventType = ref('water') const eventType = ref('water')
// //
const formData = ref(mockFormData) const formData = ref(route.query.mock ? mockFormData : {})
const waterDisasterRef = ref(null) const waterDisasterRef = ref(null)
const submitting = ref(false) const submitting = ref(false)
@ -69,7 +64,7 @@ const handleSubmit = async () => {
return return
} }
} }
submitting.value = true submitting.value = true
try { try {
// //
@ -77,10 +72,10 @@ const handleSubmit = async () => {
if (eventType.value === 'water') { if (eventType.value === 'water') {
formData = waterDisasterRef.value.getFormData() formData = waterDisasterRef.value.getFormData()
} }
// //
const submitData = { const submitData = {
...formData, ...formData
// //
} }
@ -90,16 +85,15 @@ const handleSubmit = async () => {
data: submitData data: submitData
}) })
if(res?.code === '00000') { if (res?.code === '00000') {
showSuccessToast('提交成功') showSuccessToast('提交成功')
//
setTimeout(() => {
router.replace('/disasterManagement')
}, 1000)
} else { } else {
showFailToast(res.message) showFailToast(res.message)
} }
//
setTimeout(() => {
router.replace('/disasterManagement')
}, 1000)
} catch (error) { } catch (error) {
showFailToast('提交失败,请重试') showFailToast('提交失败,请重试')
console.error('提交失败:', error) console.error('提交失败:', error)
@ -126,10 +120,10 @@ const getDisasterDetail = async () => {
// Data // Data
const data = result.data const data = result.data
const newFormData = { const newFormData = {
...data, ...data,
lossList: null, lossList: null,
report: formData.value.report, report: formData.value.report,
fileList: null fileList: null
} }
waterDisasterRef.value.initFormData(newFormData) waterDisasterRef.value.initFormData(newFormData)
} else { } else {
@ -142,7 +136,7 @@ const getDisasterDetail = async () => {
} }
onMounted(() => { onMounted(() => {
if(route.query?.id) { if (route.query?.id) {
getDisasterDetail() getDisasterDetail()
} else { } else {
waterDisasterRef.value.initFormData(formData.value) waterDisasterRef.value.initFormData(formData.value)
@ -189,4 +183,4 @@ onMounted(() => {
transform: translateX(-50%) scale(0.98); transform: translateX(-50%) scale(0.98);
} }
} }
</style> </style>

View File

@ -35,29 +35,9 @@
<!-- 起点桩号 (event.startStakeNo) --> <!-- 起点桩号 (event.startStakeNo) -->
<van-field v-model="formData.event.startStakeNo" label="起点桩号(K)" placeholder="请填写" /> <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) --> <!-- 止点桩号 (event.endStakeNo) -->
<van-field v-model="formData.event.endStakeNo" label="止点桩号(K)" placeholder="请填写" /> <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) --> <!-- 路况位置 (occurLocation) -->
<van-field v-model="formData.occurLocation" label="路况位置" placeholder="请填写" /> <van-field v-model="formData.occurLocation" label="路况位置" placeholder="请填写" />
@ -205,8 +185,6 @@ const formData = reactive({
contactPhone: '', // contactPhone: '', //
damageCount: '', // damageCount: '', //
district: '', // district: '', //
endStakeLat: '', //
endStakeLng: '', //
endStakeNo: '', // endStakeNo: '', //
estimatedRecoveryCost: '', // estimatedRecoveryCost: '', //
inspectionMileage: '', // inspectionMileage: '', //
@ -214,8 +192,6 @@ const formData = reactive({
needsRecovery: '', // needsRecovery: '', //
repairProgress: '', // repairProgress: '', //
reporterUnit: '', // reporterUnit: '', //
startStakeLat: '', //
startStakeLng: '', //
startStakeNo: '' // startStakeNo: '' //
}, },
@ -363,19 +339,6 @@ const calibrateTime = () => {
showToast('时间已校准为当前时间') 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) => { const afterImageRead = (file) => {

View File

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

View File

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

View File

@ -254,9 +254,9 @@ import { onMounted, ref, computed } from 'vue'
import { useRouter, useRoute } from 'vue-router' import { useRouter, useRoute } from 'vue-router'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { ArrowLeft, Picture, VideoCamera } from '@element-plus/icons-vue' 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 { request } from '@shared/utils/request'
import LossListDetail from './LossListDetail.vue' import LossListDetail from './WaterDisasterLossListDetailPC.vue'
import FileUpload from '@/component/FileUpload/FileUpload.vue' import FileUpload from '@/component/FileUpload/FileUpload.vue'
import mockData from '../DisasterReport/waterMockJson.json' 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 { ElMessage, ElMessageBox } from 'element-plus'
import { Plus, Upload } from '@element-plus/icons-vue' import { Plus, Upload } from '@element-plus/icons-vue'
import { request } from '@/utils/request' import { request } from '@/utils/request'
import WaterDisasterReport from './WaterDisasterReport.vue' import WaterDisasterReport from './WaterDisasterReportPC.vue'
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()

View File

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

View File

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