添加报告
添加细节
This commit is contained in:
412
src/views/sound/road/statistic/average.vue
Normal file
412
src/views/sound/road/statistic/average.vue
Normal file
@@ -0,0 +1,412 @@
|
||||
<template>
|
||||
<div class="">
|
||||
<ele-pro-table ref="table" row-key="id" :datasource="url" :columns="columns" :where="where" :needPage="false"
|
||||
@done="(d)=>data = d.data" :scroll="{x: 'max-content'}">
|
||||
<template #toolbar>
|
||||
<!-- 搜索表单 -->
|
||||
<a-form :model="where" layout="inline" :labelCol="{ offset: 1}">
|
||||
<a-row>
|
||||
<a-col :lg="6" :md="12" :sm="24" :xs="24">
|
||||
<a-form-item label="统计模块:">
|
||||
<a-select :options="modelOptions" v-model:value="where.model" placeholder="统计模块">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="6" :md="12" :sm="24" :xs="24">
|
||||
<a-form-item label="昼夜:">
|
||||
<a-select :options="timeSlotOptions" v-model:value="where.timeSlot" placeholder="昼夜">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="8" :md="12" :sm="24" :xs="24">
|
||||
<a-form-item label="时间范围:">
|
||||
<!-- <a-month-picker v-model:value="timeScope" placeholder="起始" /> -->
|
||||
<a-range-picker v-model:value="timeScope" format="YYYY-MM-DD" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
<a-col :lg="4" :md="12" :sm="24" :xs="24">
|
||||
<a-form-item class="ele-text-right" :wrapper-col="{span: 24}">
|
||||
<a-space>
|
||||
<a-button type="primary" @click="reload">查询</a-button>
|
||||
<a-button @click="reset">重置</a-button>
|
||||
<a-button @click="exportFile">导出excel</a-button>
|
||||
</a-space>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
<!-- <a-space>
|
||||
|
||||
</a-space> -->
|
||||
</template>
|
||||
</ele-pro-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import _ from "lodash";
|
||||
import XLSX from 'xlsx';
|
||||
import {
|
||||
pageRoadNoiseStatisticUrl
|
||||
} from "@/api/ecology/road-sound"
|
||||
const columns = [{
|
||||
title: '测点',
|
||||
dataIndex: 'place',
|
||||
|
||||
},
|
||||
{
|
||||
title: '路段',
|
||||
dataIndex: 'road',
|
||||
|
||||
},
|
||||
{
|
||||
title: '城区',
|
||||
dataIndex: 'area',
|
||||
},
|
||||
{
|
||||
title: '市',
|
||||
dataIndex: 'city',
|
||||
},
|
||||
{
|
||||
title: '路长',
|
||||
dataIndex: 'roadLength',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Math.round(text)
|
||||
|
||||
},
|
||||
{
|
||||
title: '路宽',
|
||||
dataIndex: 'roadWidth',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Math.round(text)
|
||||
},
|
||||
{
|
||||
title: '20分钟中小型车流量',
|
||||
children: [{
|
||||
title: '平均',
|
||||
dataIndex: 'avgSmallTrafficFlow',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Math.round(text)
|
||||
},
|
||||
{
|
||||
title: '最大',
|
||||
dataIndex: 'maxSmallTrafficFlow',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Math.round(text)
|
||||
},
|
||||
{
|
||||
title: '最小',
|
||||
dataIndex: 'minSmallTrafficFlow',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Math.round(text)
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: '20分钟大型车流量',
|
||||
children: [{
|
||||
title: '平均',
|
||||
dataIndex: 'avgLargeTrafficFlow',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Math.round(text)
|
||||
},
|
||||
{
|
||||
title: '最大',
|
||||
dataIndex: 'maxLargeTrafficFlow',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Math.round(text)
|
||||
},
|
||||
{
|
||||
title: '最小',
|
||||
dataIndex: 'minLargeTrafficFlow',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Math.round(text)
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: 'LeqdB(A)',
|
||||
children: [{
|
||||
title: '平均',
|
||||
dataIndex: 'avgLeq',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最大',
|
||||
dataIndex: 'maxLeq',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最小',
|
||||
dataIndex: 'minLeq',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "SDdB(A)",
|
||||
children: [{
|
||||
title: '平均',
|
||||
dataIndex: 'avgSD',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最大',
|
||||
dataIndex: 'maxSD',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最小',
|
||||
dataIndex: 'minSD',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "L10dB(A)",
|
||||
children: [
|
||||
|
||||
{
|
||||
title: '平均',
|
||||
dataIndex: 'avgL10',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最大',
|
||||
dataIndex: 'maxL10',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最小',
|
||||
dataIndex: 'minL10',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
]
|
||||
}, {
|
||||
title: 'L50dB(A)',
|
||||
children: [{
|
||||
title: '平均',
|
||||
dataIndex: 'avgL50',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最大',
|
||||
dataIndex: 'maxL50',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最小',
|
||||
dataIndex: 'minL50',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "L90dB(A)",
|
||||
children: [
|
||||
|
||||
{
|
||||
title: '平均',
|
||||
dataIndex: 'avgL90',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最大',
|
||||
dataIndex: 'maxL90',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最小',
|
||||
dataIndex: 'minL90',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "LmindB(A)",
|
||||
children: [{
|
||||
title: '平均',
|
||||
dataIndex: 'avgLmin',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最大',
|
||||
dataIndex: 'maxLmin',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最小',
|
||||
dataIndex: 'minLmin',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
]
|
||||
}, {
|
||||
title: 'LmaxdB(A)',
|
||||
children: [{
|
||||
title: '平均',
|
||||
dataIndex: 'avgLmax',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最大',
|
||||
dataIndex: 'maxLmax',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
{
|
||||
title: '最小',
|
||||
dataIndex: 'minLmax',
|
||||
customRender: ({
|
||||
text
|
||||
}) => Number(text).toFixed(2)
|
||||
},
|
||||
]
|
||||
},
|
||||
|
||||
|
||||
|
||||
]
|
||||
export default {
|
||||
name: 'StatisticSoundRoadAverage',
|
||||
components: {
|
||||
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
url: pageRoadNoiseStatisticUrl,
|
||||
data: [],
|
||||
where: {
|
||||
model: "place"
|
||||
},
|
||||
timeScope: [],
|
||||
columns,
|
||||
modelOptions: [{
|
||||
value: "place",
|
||||
label: "测点",
|
||||
}, {
|
||||
value: "road",
|
||||
label: "路段",
|
||||
}, {
|
||||
value: "area",
|
||||
label: "城区",
|
||||
},{
|
||||
value: "city",
|
||||
label: "市"
|
||||
}],
|
||||
timeSlotOptions: [{
|
||||
value: "昼",
|
||||
label: "昼"
|
||||
}, {
|
||||
value: "夜",
|
||||
label: "夜"
|
||||
}]
|
||||
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
/* 刷新表格 */
|
||||
reload() {
|
||||
this.$refs.table.reload({
|
||||
where: {
|
||||
model: this.where.model,
|
||||
timeStart: this.timeScope.length == 2 ? this.timeScope[0].format("Y-M-D") : null,
|
||||
timeEnd: this.timeScope.length == 2 ? this.timeScope[1].format("Y-M-D") : null,
|
||||
timeSlot: this.where.timeSlot
|
||||
}
|
||||
});
|
||||
let cloneColumns = _.cloneDeep(columns);
|
||||
if (this.where.model == "area") {
|
||||
this.columns = cloneColumns.filter(item => {
|
||||
return item.dataIndex != "place" && item.dataIndex != "road";
|
||||
})
|
||||
} else if (this.where.model == "road") {
|
||||
this.columns = cloneColumns.filter(item => {
|
||||
return item.dataIndex != "place"
|
||||
})
|
||||
}else if(this.where.model == "city"){
|
||||
this.columns = cloneColumns.filter(item => {
|
||||
return item.dataIndex != "place" && item.dataIndex != "road" && item.dataIndex != "area";
|
||||
})
|
||||
}
|
||||
},
|
||||
/* 重置搜索 */
|
||||
reset() {
|
||||
this.where = {
|
||||
model: "place",
|
||||
timeSlot: "昼"
|
||||
};
|
||||
this.this.timeScope = []
|
||||
|
||||
this.reload();
|
||||
},
|
||||
exportFile() {
|
||||
let array = [
|
||||
['测点', '路段', '城区', '路长', '路宽', '平均Leq', '平均SD']
|
||||
];
|
||||
this.data.forEach(d => {
|
||||
array.push([d.place, d.road, d.area, d.roadLength, d.roadWidth, d.avgLeq, d.avgSD]);
|
||||
});
|
||||
let sheet = XLSX.utils.aoa_to_sheet(array);
|
||||
// sheet['!merges'] = [
|
||||
// {s: {r: 0, c: 1}, e: {r: 0, c: 5}}, // 合并第0行第1列到第0行第5列
|
||||
// {s: {r: 0, c: 0}, e: {r: 1, c: 0}}, // 合并第0行第0列到第1行第0列
|
||||
// {s: {r: 0, c: 6}, e: {r: 1, c: 6}} // 合并第0行第6列到第1行第6列
|
||||
// ];
|
||||
this.$util.exportSheet(XLSX, sheet, '道路交通噪声统计表');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user