功能区导入

This commit is contained in:
weicw
2021-08-24 14:50:13 +08:00
parent a460e0c3e4
commit b797562ab4
15 changed files with 1906 additions and 1967 deletions

View File

@@ -72,13 +72,16 @@ export default {
const reportDate2 = aoa2[1][0].replace(/[^\d]+/g, "-");
const roadNoiseList = aoa.filter(
(item) => item.length == 21 && typeof item[0] == "number"
(item) => {
console.log(item.length)
return item.length >= 21 && typeof item[0] == "number"}
);
const roadNoiseList2 = aoa2.filter(
(item) => item.length == 21 && typeof item[0] == "number"
(item) => item.length >= 21 && typeof item[0] == "number"
);
const roadNoiseList3 = aoa3.filter(
(item) => item.length == 16 && typeof item[1] == "number"
(item) => item.length >= 16 && typeof item[1] == "number"
);
// 解析成对象数组
@@ -159,7 +162,7 @@ export default {
hide();
Modal.error({
title: "导入失败",
content: "表格格式有误,请检查后重新上传!",
content: error.message,
});
}
// console.log(billData);

View File

@@ -46,11 +46,11 @@ export default {
quarter
}
if (row.monitorHour >= 6 && row.monitorHour <= 22 && row.timeSlot != "昼") {
if (row.monitorHour >= 6 && row.monitorHour < 22 && row.timeSlot != "昼") {
throw new Error(row.place + "时段有误")
}
if (row.monitorHour <= 6 && row.monitorHour > 22 && row.timeSlot != "夜") {
if (row.monitorHour <6 && row.monitorHour >= 22 && row.timeSlot != "夜") {
throw new Error(row.place + "时段有误")
}
if(row.indexL10 < row.indexL50 || row.indexL50 < row.indexL90){

View File

@@ -1,183 +1,258 @@
<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="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>
<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="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-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>
</template>
<template #Leq="{ text, record }">
<a-tag
v-if="
(where.timeSlot == '昼' && text <= 68) ||
(where.timeSlot == '夜' && text <= 58)
"
color="green"
>{{ text }}</a-tag
>
<a-tag
v-else-if="
(record.timeSlot == '昼' && text > 68 && text <= 70) ||
(record.timeSlot == '夜' && text > 58 && text <= 60)
"
color="blue"
>{{ text }}</a-tag
>
<a-tag
v-else-if="
(record.timeSlot == '昼' && text > 70 && text <= 72) ||
(record.timeSlot == '夜' && text > 60 && text <= 62)
"
color="red"
>{{ text }}</a-tag
>
<a-tag
v-else-if="
(record.timeSlot == '昼' && text > 62 && text <= 74) ||
(record.timeSlot == '夜' && text > 62 && text <= 64)
"
color="red"
>{{ text }}</a-tag
>
<a-tag
v-else-if="
(record.timeSlot == '昼' && text > 74) ||
(record.timeSlot == '夜' && text > 64)
"
color="red"
>{{ text }}</a-tag
>
<template v-else color="#FFF">{{ text }}</template>
</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: 'area',
},
import _ from "lodash";
import XLSX from "xlsx";
import { pageRoadNoiseStatisticUrl } from "@/api/ecology/road-sound";
const columns = [
{
title: "城区",
dataIndex: "area",
},
{
title: '市',
dataIndex: 'city',
},
{
title: '路长',
dataIndex: 'roadLength',
},
{
title: '路宽',
dataIndex: 'roadWidth',
},
{
title: 'LeqdB(A)',
dataIndex: 'avgLeq',
},
{
title: 'SDdB(A)',
dataIndex: 'avgSD',
},
{
title: 'L10dB(A)',
dataIndex: 'avgL10',
},
{
title: 'L50dB(A)',
dataIndex: 'avgL50',
},
{
title: 'L90dB(A)',
dataIndex: 'avgL90',
},
]
export default {
name: 'StatisticSoundRoadAverage',
components: {
},
data() {
return {
url: pageRoadNoiseStatisticUrl,
data: [],
where: {
model: "area"
},
timeScope: [],
columns,
modelOptions: [{
{
title: "市",
dataIndex: "city",
},
{
title: "路长",
dataIndex: "roadLength",
},
{
title: "路宽",
dataIndex: "roadWidth",
},
{
title: "LeqdB(A)",
dataIndex: "avgLeq",
slots: { customRender: "Leq" },
sorter: true,
},
{
title: "SDdB(A)",
dataIndex: "avgSD",
},
{
title: "L10dB(A)",
dataIndex: "avgL10",
},
{
title: "L50dB(A)",
dataIndex: "avgL50",
},
{
title: "L90dB(A)",
dataIndex: "avgL90",
},
];
export default {
name: "StatisticSoundRoadAverage",
components: {},
data() {
return {
url: pageRoadNoiseStatisticUrl,
data: [],
where: {
model: "area",
timeSlot: "昼"
},
timeScope: [],
columns,
modelOptions: [
{
value: "place",
label: "测点",
}, {
},
{
value: "road",
label: "路段",
}, {
},
{
value: "area",
label: "城区",
},{
},
{
value: "city",
label: "市"
}],
timeSlotOptions: [{
label: "市",
},
],
timeSlotOptions: [
{
value: "昼",
label: "昼"
}, {
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
}
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";
});
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: "area",
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]);
} 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"
);
});
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, '道路交通噪声统计表');
}
}
},
/* 重置搜索 */
reset() {
this.where = {
model: "area",
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>