Compare commits

...

2 Commits

3 changed files with 163 additions and 0 deletions

View File

@ -81,6 +81,11 @@ const routes = [
name: 'WarningMessageHandle',
component: () => import('../views/WarningMessage/WarningMessageHandle.vue')
},
{
path: '/rebuild',
name: 'Rebuild',
component: () => import('../views/Rebuild/Rebuild.vue')
},
{
path: '/disasterManagement',
name: 'DisasterManagement',

View File

@ -114,6 +114,13 @@ const gridItems = [
name: "WarningMessage",
},
},
{
icon: group106Icon,
text: '恢复重建',
to: {
name: 'Rebuild',
}
}
];
//

View File

@ -0,0 +1,151 @@
<template>
<PageContainer title="恢复重建" @click-back="handleClickBack">
<SearchInput v-model="searchValue" />
<CurrentSite />
<div class="list-panel">
<CardItem v-for="(item, index) in list" :key="index" :title="`${item.area} ${item.rNumber} ${item.type}`"
@click="handleClickItem(item)">
<template #headerExtra>
<van-tag v-if="item.status === '审批通过'" type="success" round size="large">{{ item.status }}</van-tag>
<van-tag v-else-if="item.status === '审批驳回'" type="danger" round size="large">{{ item.status
}}</van-tag>
<van-tag v-else type="warning" round size="large">{{ item.status }}</van-tag>
</template>
<div class="content">
<div class="left-info">
<div><span class="label">起止桩号</span><span class="value">{{ item.stationNumber }}</span></div>
<div><span class="label">路况位置</span><span class="value">{{ item.position }}</span></div>
<div><span class="label">提交日期</span><span class="value">{{ item.publishTime }}</span></div>
</div>
<div class="right-arrow" @click.stop="handleClickItem(item)">
<van-icon name="arrow" />
</div>
</div>
</CardItem>
<!-- 空状态提示 -->
<EmptyBox v-if="list.length === 0" placeholder="暂无相关预警信息" />
</div>
<van-button type="primary" class="add-btn" icon="plus" @click="handleAddDevice">
项目填报
</van-button>
</PageContainer>
</template>
<script setup>
import { ref, onMounted, watch } from 'vue'
import { useRouter, useRoute } from 'vue-router'
import PageContainer from '@/components/PageContainer.vue'
import SearchInput from '@/components/SearchInput.vue'
import CurrentSite from '@/components/CurrentSite.vue'
import CardItem from '@/components/CardItem.vue'
import EmptyBox from '@/components/EmptyBox.vue'
const router = useRouter()
onMounted(() => {
getData()
})
const getData = async () => {
}
//
const searchValue = ref('')
//
const list = ref([
{
area: '彭水',
rNumber: 'G211',
type: '发生水毁道路崩塌恢复重建',
stationNumber: 'K1674.16-1678.84',
position: '徐家镇村口南分叉路口',
publishTime: '2025-05-20',
status: '审批通过'
},
{
area: '巴南',
rNumber: 'S303',
type: '道路发生边坡坍塌',
stationNumber: 'K1674.16-1678.84',
position: '徐家镇村口南分叉路口',
publishTime: '2025-05-20',
status: '审批驳回'
},
{
area: '彭水',
rNumber: 'G211',
type: '道路崩塌改造工程',
stationNumber: 'K1674.16-1678.84',
position: '徐家镇村口南分叉路口',
publishTime: '2025-05-20',
status: '审批通过'
},
])
const handleClickBack = () => {
router.push('/')
}
const handleAddDevice = () => {
router.push('/rebuild-add')
}
</script>
<style scoped lang="scss">
.list-panel {
display: flex;
flex-direction: column;
gap: 8px;
}
.content {
display: flex;
justify-content: space-between;
align-items: center;
}
.left-info {
display: flex;
flex-direction: column;
gap: 4px;
font-size: 14px;
.label {
color: #666;
}
.value {
color: #aaa;
}
}
.right-arrow {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
cursor: pointer;
}
.add-btn {
position: fixed;
bottom: 20px;
left: 16px;
right: 16px;
width: calc(100% - 32px);
margin: 0 auto;
border-radius: 24px;
font-size: 16px;
height: 44px;
z-index: 999;
}
</style>