bxztApp/packages/mobile/src/views/IceEvent/IceEventDetails.vue

216 lines
5.9 KiB
Vue
Raw Normal View History

2025-11-07 17:27:41 +08:00
<template>
<div class="home">
<van-nav-bar title="冰雪灾害" fixed left-arrow @click-left="onClickLeft" />
2025-11-07 17:27:41 +08:00
<van-cell-group>
<van-cell title="当前站点" :value="yhzDetail.mc" />
</van-cell-group>
2025-11-20 16:27:59 +08:00
<div class="content" v-if="eventDetailData">
2025-11-07 17:27:41 +08:00
<van-cell-group>
<van-cell
title="基本信息"
2025-11-07 17:27:41 +08:00
style="font-size: 18px; font-weight: bold; line-height: inherit"
>
</van-cell>
2025-11-12 10:24:20 +08:00
<van-cell :title="'发生时间: ' + eventDetailData?.event?.occurTime">
</van-cell>
<van-cell
:title="'发生地点: ' + eventDetailData?.event?.occurLocation"
>
</van-cell>
<van-cell :title="'起点桩号: ' + eventDetailData?.event?.startStakeNo">
</van-cell>
<van-cell :title="'止点桩号: ' + eventDetailData?.event?.endStakeNo">
</van-cell>
<van-cell
:title="'受灾里程: ' + eventDetailData?.event?.disasterMileage"
>
</van-cell>
<van-cell :title="'填报人: ' + eventDetailData?.event?.reporterName">
</van-cell>
<van-cell :title="'填报时间: ' + eventDetailData?.event?.reportTime">
</van-cell>
</van-cell-group>
<van-cell-group>
<van-cell
title="处置情况"
style="font-size: 18px; font-weight: bold; line-height: inherit"
>
</van-cell>
2025-11-12 10:24:20 +08:00
<van-cell
:title="'处置措施: ' + eventDetailData?.event?.disposalMeasures"
>
</van-cell>
<van-cell
:title="'预计恢复时间: ' + eventDetailData?.event?.expectRecoverTime"
>
</van-cell>
</van-cell-group>
<van-cell-group>
<van-cell
title="实施情况"
style="font-size: 18px; font-weight: bold; line-height: inherit"
>
</van-cell>
2025-11-12 10:24:20 +08:00
<van-cell
:title="
'投入人力: ' + eventDetailData?.material?.inputManpower + ' 人次'
"
>
</van-cell>
<van-cell
:title="
'投入资金: ' + eventDetailData?.material?.inputFunds + ' 万元'
"
>
</van-cell>
<van-cell
:title="
'投入设备: ' + eventDetailData?.material?.inputEquipment + ' 台班'
"
>
</van-cell>
<van-cell
v-for="(item, index) in eventDetailData?.materialUsageList"
:key="index"
:title="`${item.materialName}${item.usageAmount} ${item.materialUnit}`"
>
</van-cell>
<van-cell
:title="`当前通行状况:${
{ 1: '正常通行', 2: '限速通行', 3: '封闭交通' }[
eventDetailData?.traffic?.currentStatus
] || '未知状态'
}`"
>
</van-cell>
<van-cell
:title="`有无车辆滞留:${
{ 0: '无', 1: '有' }[
eventDetailData?.traffic?.hasStrandedVehicles
] || '未知状态'
}`"
>
</van-cell>
<van-cell
2025-11-20 16:27:59 +08:00
v-if="eventDetailData?.traffic?.hasStrandedVehicles === 1"
2025-11-12 10:24:20 +08:00
:title="
2025-11-20 16:27:59 +08:00
'滞留车辆数:' +
eventDetailData?.traffic?.strandedVehicleCount +
' 辆'
2025-11-12 10:24:20 +08:00
"
>
</van-cell>
<van-cell
:title="
'实际恢复时间: ' + eventDetailData?.traffic?.actualRecoverTime
"
>
</van-cell>
2025-11-20 16:27:59 +08:00
<van-cell :title="'附件: '">
2025-11-12 10:24:20 +08:00
<template #label>
<van-image
v-for="(item, index) in eventDetailData?.photos"
:key="index"
:src="item.photoUrl"
fit="cover"
width="100px"
2025-11-20 16:27:59 +08:00
height="100px"
style="margin: 10px"
2025-11-12 10:24:20 +08:00
@click="showImage(item.photoUrl)"
></van-image>
</template>
</van-cell>
2025-11-07 17:27:41 +08:00
</van-cell-group>
</div>
</div>
</template>
<script setup>
import { ref, onMounted, toRaw, reactive } from "vue";
import { useRouter, useRoute } from "vue-router";
2025-11-12 10:24:20 +08:00
import { showToast, showLoadingToast, showImagePreview } from "vant";
2025-11-07 17:27:41 +08:00
import { request } from "../../../../shared/utils/request";
const router = useRouter();
const route = useRoute();
const yhzDetail = ref({});
const event = ref();
2025-11-20 16:27:59 +08:00
const eventDetailData = ref(); // 冰雪事件详情数据
2025-11-07 17:27:41 +08:00
// 获取冰雪事件详情数据
const getEventDetailData = async () => {
2025-11-07 17:27:41 +08:00
try {
const res = await request({
url: `/snow-ops-platform/event/getById?id=${event.value.id}`,
2025-11-07 17:27:41 +08:00
method: "GET",
});
if (res.code === "00000") {
eventDetailData.value = res.data;
2025-11-07 17:27:41 +08:00
} else {
throw new Error(res.message);
}
} catch (error) {
showToast({
message: error.message,
type: "fail",
2025-11-07 17:27:41 +08:00
});
}
};
onMounted(() => {
const data = JSON.parse(decodeURIComponent(route.params.data));
yhzDetail.value = data.yhzDetail;
event.value = data.event;
getEventDetailData();
});
2025-11-07 17:27:41 +08:00
const onClickLeft = () => {
router.push({
name: "IceEventManage",
2025-11-07 17:27:41 +08:00
params: { data: encodeURIComponent(JSON.stringify(yhzDetail.value)) },
});
};
2025-11-12 10:24:20 +08:00
const showImage = (url) => {
showImagePreview([url]);
};
2025-11-07 17:27:41 +08:00
</script>
<style scoped>
.home {
padding-top: var(--van-nav-bar-height); /* 自动匹配导航栏高度 */
}
.content {
padding: 16px;
}
.grid {
margin-top: 16px;
}
.btn {
margin-top: 24px;
}
.status-tag {
display: inline-block;
padding: 3px 8px;
border-radius: 4px;
color: white;
font-size: 12px;
}
.status-good {
background-color: #07c160;
}
.status-warning {
background-color: #ff976a;
}
.status-danger {
background-color: #ee0a24;
}
</style>