济菏高速业务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

232 lines
5.6 KiB

1 year ago
<template>
1 year ago
<div class="RoadNetworkMonitoring">
<!-- 搜索栏 -->
<div class="filter">
<ButtonGradient @click="onRefreshForm" class="refresh-btn">
<template #prefix>
<img src="./images/refresh.svg" />
</template>
刷新
</ButtonGradient>
1 year ago
<InputSearch
ref="searchComp"
1 year ago
style="width: 402px"
:formList="searchFormList"
:formConfigOptions="{ dFormData: { eventState: '0' } }"
@handleSearch="handleSearch"
/>
</div>
1 year ago
<!-- 内容 -->
<div class="body">
1 year ago
<RoadStateCard
v-for="(item, index) in data"
:key="index"
:cardData="item"
@firstBtnClick="firstBtnClick"
@lastBtnClick="lastBtnClick"
/>
</div>
1 year ago
<!-- 分页 -->
<div class="footer">
1 year ago
<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"
>
1 year ago
</Pagination>
</div>
1 year ago
1 year ago
<EventDetailDialog
:visible="eventDetailDialogVisible"
:formData="detailDialogFormData"
@update:value="handleClose"
/>
<EventDispatchDialog
:visible="eventDispatchDialogVisible"
@update:value="handleClose"
:eventId="eventId"
/>
</div>
1 year ago
</template>
<script>
import ButtonGradient from "@screen/components/Buttons/ButtonGradient.vue";
1 year ago
import Pagination from "@screen/components/Pagination.vue";
import InputSearch from "@screen/components/InputSearch/index.vue";
import RoadStateCard from "@screen/components/RoadStateCard/index.vue";
1 year ago
import EventDetailDialog from "./EventDetailDialog/index";
1 year ago
import EventDispatchDialog from "./EventDispatchDialog/index";
1 year ago
import { searchFormList } from "./data";
1 year ago
import request from "@/utils/request";
1 year ago
1 year ago
const directionMapping = {
1 year ago
1: "菏泽方向",
2: "双向",
3: "济南方向",
};
1 year ago
1 year ago
export default {
1 year ago
name: "RoadNetworkMonitoring",
components: {
Pagination,
RoadStateCard,
InputSearch,
1 year ago
EventDispatchDialog,
EventDetailDialog,
Pagination,
1 year ago
ButtonGradient,
},
data() {
return {
1 year ago
eventDetailDialogVisible: false,
eventDispatchDialogVisible: false,
searchFormList,
detailDialogFormData: {},
total: 0,
data: [],
1 year ago
eventId: "0",
1 year ago
searchData: {
pageSize: 16,
pageNum: 1,
1 year ago
eventState: "0",
1 year ago
},
1 year ago
};
},
1 year ago
created() {
this.initData();
},
methods: {
onRefreshForm(){
this.searchData.pageNum = 1;
this.$refs.searchComp.handleResetForm();
},
1 year ago
initData() {
request({
// url: `/dc/system/event/dispatchEventList`,
1 year ago
url: "/dc/system/event/list",
1 year ago
method: "get",
params: this.searchData,
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
this.total = result.total;
1 year ago
result.rows.forEach((it) => {
1 year ago
it.stringDirection = directionMapping[it.direction] || it.direction;
1 year ago
});
1 year ago
this.data = result.rows;
1 year ago
});
},
onSizeChange(pageSize) {
this.searchData.pageSize = pageSize;
this.initData();
1 year ago
},
getStateCardBind(item) {
const { state, textColor, text } = tabMap[this.activeName];
return {
cardData: { ...item, state },
lastBtnColor: textColor,
lastBtnText: text,
};
},
onRefresh() {
this.data = [];
setTimeout(() => {
this.initData();
}, 100);
},
1 year ago
firstBtnClick(id) {
console.log("id", 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) {
1 year ago
console.log(id);
1 year ago
this.eventDispatchDialogVisible = true;
this.eventId = id;
},
handleSearch(data) {
console.log("data", data);
let daterange = data.daterange;
let dStakeMark = data.stakeMark;
let dendStakeMark = data.endStakeMark;
1 year ago
let stakeMark = dStakeMark[0] ? `K${dStakeMark[0]}+${dStakeMark[1]}` : "";
let endStakeMark = dendStakeMark[0]
? `K${dendStakeMark[0]}+${dendStakeMark[1]}`
: "";
1 year ago
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;
1 year ago
this.eventDispatchDialogVisible = false;
1 year ago
},
},
};
1 year ago
</script>
1 year ago
<style lang="scss" scoped>
1 year ago
.RoadNetworkMonitoring {
padding: 21px;
1 year ago
height: 100%;
display: flex;
flex-direction: column;
z-index: 6;
1 year ago
.filter {
1 year ago
height: 38px;
display: flex;
// justify-content: flex-end;
justify-content: space-between;
.refresh-btn {
}
}
1 year ago
.body {
flex: 1;
1 year ago
overflow: auto;
display: grid;
grid-template-columns: repeat(4, 1fr);
1 year ago
grid-gap: 20px;
// grid-row-gap: 9px;
// grid-column-gap: 9px;
grid-auto-rows: min-content;
}
1 year ago
.footer {
margin-top: 15px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
}
1 year ago
}
</style>