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

216 lines
5.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="home">
<van-nav-bar title="冰雪灾害" fixed left-arrow @click-left="onClickLeft" />
<van-cell-group>
<van-cell title="当前站点" :value="yhzDetail.mc" />
</van-cell-group>
<div class="content" v-if="eventDetailData">
<van-cell-group>
<van-cell
title="基本信息"
style="font-size: 18px; font-weight: bold; line-height: inherit"
>
</van-cell>
<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>
<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>
<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
v-if="eventDetailData?.traffic?.hasStrandedVehicles === 1"
:title="
'滞留车辆数:' +
eventDetailData?.traffic?.strandedVehicleCount +
' 辆'
"
>
</van-cell>
<van-cell
:title="
'实际恢复时间: ' + eventDetailData?.traffic?.actualRecoverTime
"
>
</van-cell>
<van-cell :title="'附件: '">
<template #label>
<van-image
v-for="(item, index) in eventDetailData?.photos"
:key="index"
:src="item.photoUrl"
fit="cover"
width="100px"
height="100px"
style="margin: 10px"
@click="showImage(item.photoUrl)"
></van-image>
</template>
</van-cell>
</van-cell-group>
</div>
</div>
</template>
<script setup>
import { ref, onMounted, toRaw, reactive } from "vue";
import { useRouter, useRoute } from "vue-router";
import { showToast, showLoadingToast, showImagePreview } from "vant";
import { request } from "../../../../shared/utils/request";
const router = useRouter();
const route = useRoute();
const yhzDetail = ref({});
const event = ref();
const eventDetailData = ref(); // 冰雪事件详情数据
// 获取冰雪事件详情数据
const getEventDetailData = async () => {
try {
const res = await request({
url: `/snow-ops-platform/event/getById?id=${event.value.id}`,
method: "GET",
});
if (res.code === "00000") {
eventDetailData.value = res.data;
} else {
throw new Error(res.message);
}
} catch (error) {
showToast({
message: error.message,
type: "fail",
});
}
};
onMounted(() => {
const data = JSON.parse(decodeURIComponent(route.params.data));
yhzDetail.value = data.yhzDetail;
event.value = data.event;
getEventDetailData();
});
const onClickLeft = () => {
router.push({
name: "IceEventManage",
params: { data: encodeURIComponent(JSON.stringify(yhzDetail.value)) },
});
};
const showImage = (url) => {
showImagePreview([url]);
};
</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>