王钦
6 months ago
22 changed files with 514 additions and 141 deletions
Before Width: | Height: | Size: 81 KiB |
@ -0,0 +1,231 @@ |
|||
<template> |
|||
<div class="RoadNetworkMonitoring"> |
|||
<!-- 搜索栏 --> |
|||
<div class="filter"> |
|||
<ButtonGradient @click="onRefreshForm" class="refresh-btn"> |
|||
<template #prefix> |
|||
<img src="./images/refresh.svg" /> |
|||
</template> |
|||
刷新 |
|||
</ButtonGradient> |
|||
|
|||
<InputSearch |
|||
ref="searchComp" |
|||
style="width: 500px" |
|||
:formList="searchFormList" |
|||
:formConfigOptions="{ dFormData: { eventState: '0' } }" |
|||
@handleSearch="handleSearch" |
|||
/> |
|||
</div> |
|||
|
|||
<!-- 内容 --> |
|||
<div class="body"> |
|||
<RoadStateCard |
|||
v-for="(item, index) in data" |
|||
:key="index" |
|||
:cardData="item" |
|||
:isShowLeft="false" |
|||
@firstBtnClick="firstBtnClick" |
|||
@lastBtnClick="lastBtnClick" |
|||
/> |
|||
</div> |
|||
|
|||
<!-- 分页 --> |
|||
<div class="footer"> |
|||
<Pagination |
|||
@current-change="initData" |
|||
@size-change="onSizeChange" |
|||
width="'100%'" |
|||
:page-sizes="[12, 16, 20, 30, 50]" |
|||
:page-size="searchData.pageSize" |
|||
:current-page.sync="searchData.pageNum" |
|||
layout="total, sizes, prev, pager, next" |
|||
:total="total" |
|||
> |
|||
</Pagination> |
|||
</div> |
|||
|
|||
<EventDetailDialog |
|||
:visible="eventDetailDialogVisible" |
|||
:formData="detailDialogFormData" |
|||
@update:value="handleClose" |
|||
/> |
|||
<EventDispatchDialog |
|||
:visible="eventDispatchDialogVisible" |
|||
@update:value="handleClose" |
|||
:eventId="eventId" |
|||
/> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import ButtonGradient from "@screen/components/Buttons/ButtonGradient.vue"; |
|||
import Pagination from "@screen/components/Pagination.vue"; |
|||
import InputSearch from "@screen/components/InputSearch/index.vue"; |
|||
import RoadStateCard from "@screen/components/RoadStateCard/index.vue"; |
|||
import EventDetailDialog from "./EventDetailDialog/index"; |
|||
import EventDispatchDialog from "./EventDispatchDialog/index"; |
|||
import { searchFormList } from "./data"; |
|||
import request from "@/utils/request"; |
|||
|
|||
const directionMapping = { |
|||
1: "菏泽方向", |
|||
2: "双向", |
|||
3: "济南方向", |
|||
}; |
|||
|
|||
export default { |
|||
name: "RoadNetworkMonitoring", |
|||
components: { |
|||
Pagination, |
|||
RoadStateCard, |
|||
InputSearch, |
|||
EventDispatchDialog, |
|||
EventDetailDialog, |
|||
ButtonGradient, |
|||
}, |
|||
data() { |
|||
return { |
|||
eventDetailDialogVisible: false, |
|||
eventDispatchDialogVisible: false, |
|||
searchFormList, |
|||
detailDialogFormData: {}, |
|||
total: 0, |
|||
data: [], |
|||
eventId: "0", |
|||
searchData: { |
|||
pageSize: 16, |
|||
pageNum: 1, |
|||
eventState: "0", |
|||
}, |
|||
}; |
|||
}, |
|||
created() { |
|||
this.initData(); |
|||
}, |
|||
methods: { |
|||
onRefreshForm() { |
|||
this.searchData.pageNum = 1; |
|||
this.$refs.searchComp.handleResetForm(); |
|||
}, |
|||
initData() { |
|||
request({ |
|||
// url: `/dc/system/event/dispatchEventList`, |
|||
url: "/dc/system/event/dispatchRecordEventList", |
|||
method: "get", |
|||
params: this.searchData, |
|||
}).then((result) => { |
|||
if (result.code != 200) return Message.error(result?.msg); |
|||
this.total = result.total; |
|||
result.rows.forEach((it) => { |
|||
it.stringDirection = directionMapping[it.direction] || it.direction; |
|||
}); |
|||
this.data = result.rows; |
|||
}); |
|||
}, |
|||
onSizeChange(pageSize) { |
|||
this.searchData.pageSize = pageSize; |
|||
this.initData(); |
|||
}, |
|||
getStateCardBind(item) { |
|||
const { state, textColor, text } = tabMap[this.activeName]; |
|||
|
|||
return { |
|||
cardData: { ...item, state }, |
|||
lastBtnColor: textColor, |
|||
lastBtnText: text, |
|||
}; |
|||
}, |
|||
onRefresh() { |
|||
this.data = []; |
|||
setTimeout(() => { |
|||
this.initData(); |
|||
}, 100); |
|||
}, |
|||
firstBtnClick(id) { |
|||
request({ |
|||
url: `/dc/system/event/${id}`, |
|||
method: "get", |
|||
}).then((result) => { |
|||
if (result.code != 200) return Message.error(result?.msg); |
|||
this.detailDialogFormData = result.data; |
|||
|
|||
this.eventDetailDialogVisible = true; |
|||
}); |
|||
}, |
|||
lastBtnClick(id) { |
|||
console.log(id); |
|||
this.eventDispatchDialogVisible = true; |
|||
this.eventId = id; |
|||
}, |
|||
handleSearch(data) { |
|||
console.log("data", data); |
|||
let daterange = data.daterange; |
|||
|
|||
let dStakeMark = data.stakeMark; |
|||
let dendStakeMark = data.endStakeMark; |
|||
|
|||
let stakeMark = dStakeMark[0] ? `K${dStakeMark[0]}+${dStakeMark[1]}` : ""; |
|||
let endStakeMark = dendStakeMark[0] |
|||
? `K${dendStakeMark[0]}+${dendStakeMark[1]}` |
|||
: ""; |
|||
|
|||
this.searchData = { |
|||
...this.searchData, |
|||
eventState: data.eventState || 0, |
|||
eventType: data.eventType, |
|||
eventSources: data.eventSources, |
|||
startTime: daterange && daterange.length > 0 ? daterange[0] : "", |
|||
endTime: daterange && daterange.length > 0 ? daterange[1] : "", |
|||
stakeMark: stakeMark, |
|||
endStakeMark: endStakeMark, |
|||
}; |
|||
this.initData(); |
|||
}, |
|||
handleClose() { |
|||
this.eventDetailDialogVisible = false; |
|||
this.eventDispatchDialogVisible = false; |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.RoadNetworkMonitoring { |
|||
padding: 21px; |
|||
|
|||
height: 100%; |
|||
display: flex; |
|||
flex-direction: column; |
|||
z-index: 6; |
|||
|
|||
.filter { |
|||
height: 38px; |
|||
display: flex; |
|||
// justify-content: flex-end; |
|||
justify-content: space-between; |
|||
|
|||
.refresh-btn { |
|||
} |
|||
} |
|||
|
|||
.body { |
|||
flex: 1; |
|||
overflow: auto; |
|||
display: grid; |
|||
grid-template-columns: repeat(4, 1fr); |
|||
grid-gap: 20px; |
|||
// grid-row-gap: 9px; |
|||
// grid-column-gap: 9px; |
|||
grid-auto-rows: min-content; |
|||
} |
|||
|
|||
.footer { |
|||
margin-top: 15px; |
|||
height: 36px; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue