大更新
This commit is contained in:
@@ -4,12 +4,12 @@ const tableColumns = [
|
||||
{title: "降雨量(mm)",dataIndex: "precipitation",sorter: true,},
|
||||
{title: "pH值(无量纲)",dataIndex: "ph",sorter: true,},
|
||||
{title: "电导率(mS/m)",dataIndex: "conductivity",sorter: true,},
|
||||
{title: "氟离子",dataIndex: "fluorine",sorter: true,},
|
||||
{title: "氯离子",dataIndex: "chlorine",sorter: true,},
|
||||
{title: "硫酸根离子",dataIndex: "sulfateRadical",sorter: true,},
|
||||
{title: "硝酸根离子",dataIndex: "nitrate",sorter: true,},
|
||||
{title: "氟离子",dataIndex: "f",sorter: true,},
|
||||
{title: "氯离子",dataIndex: "cl",sorter: true,},
|
||||
{title: "硫酸根离子",dataIndex: "so42",sorter: true,},
|
||||
{title: "硝酸根离子",dataIndex: "no3",sorter: true,},
|
||||
{title: "钠离子",dataIndex: "na",sorter: true,},
|
||||
{title: "铵根离子",dataIndex: "ammoniumRadical",sorter: true,},
|
||||
{title: "铵根离子",dataIndex: "nh4",sorter: true,},
|
||||
{title: "钾离子",dataIndex: "k",sorter: true,},
|
||||
{title: "镁离子",dataIndex: "mg",sorter: true,},
|
||||
{title: "钙离子",dataIndex: "ca",sorter: true,},
|
||||
|
||||
@@ -2,15 +2,23 @@
|
||||
<div class="ele-body">
|
||||
<a-card style="width: 100%" :bordered="false">
|
||||
<template #title>
|
||||
<a-select
|
||||
ref="select"
|
||||
v-model:value="regionLevel"
|
||||
style="width: 120px"
|
||||
>
|
||||
<a-select-option value="city">市</a-select-option>
|
||||
<a-select-option value="county">县</a-select-option>
|
||||
</a-select>
|
||||
<a-space>
|
||||
<a-upload
|
||||
:before-upload="importFileCity"
|
||||
:showUploadList="false"
|
||||
accept=".xls,.xlsx,.csv"
|
||||
:before-upload="importFileCity"
|
||||
:showUploadList="false"
|
||||
accept=".xls,.xlsx,.csv"
|
||||
>
|
||||
<a-button>数据导入</a-button>
|
||||
</a-upload>
|
||||
|
||||
<a-button @click="download">模板下载</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
<a-tabs v-model:activeKey="activeKey">
|
||||
@@ -27,7 +35,8 @@ import XLSX from "xlsx";
|
||||
import utils from "./utils";
|
||||
import {Modal} from "ant-design-vue";
|
||||
import RainBill from "./rain-bill.vue";
|
||||
import {saveAcidRainBill} from "@/api/ecology/acid";
|
||||
import {saveAcidRainBill} from "@/api/ecology/atmosphere/acid"
|
||||
import {downloadTemplate} from "@/utils/excel-util";
|
||||
|
||||
export default {
|
||||
name: "RainCollectIndex",
|
||||
@@ -37,93 +46,117 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
activeKey: "rain",
|
||||
regionLevel: "city",
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
download() {
|
||||
let filename = "酸雨-"
|
||||
if (this.regionLevel == "city") {
|
||||
filename += "市"
|
||||
} else if (this.regionLevel == "county") {
|
||||
filename += "县"
|
||||
} else {
|
||||
filename += "站点"
|
||||
}
|
||||
downloadTemplate(filename)
|
||||
},
|
||||
/* 导入本地excel文件 */
|
||||
async importFileCity(file) {
|
||||
const hide = this.$message.loading("导入中..", 0);
|
||||
|
||||
let reader = new FileReader();
|
||||
reader.onload = async (e) => {
|
||||
try {
|
||||
let data = new Uint8Array(e.target.result);
|
||||
let workbook = XLSX.read(data, {
|
||||
type: "array",
|
||||
});
|
||||
let sheetNames = workbook.SheetNames;
|
||||
// 解析成二维数组
|
||||
let aoa = XLSX.utils.sheet_to_json(workbook.Sheets[sheetNames[0]], {
|
||||
header: 1,
|
||||
});
|
||||
try {
|
||||
|
||||
const reportDate = aoa[2][0].replace(/[^\d]+/g, "-");
|
||||
let data = new Uint8Array(e.target.result);
|
||||
let workbook = XLSX.read(data, {
|
||||
type: "array",
|
||||
});
|
||||
let sheetNames = workbook.SheetNames;
|
||||
// 解析成二维数组
|
||||
let aoa = XLSX.utils.sheet_to_json(workbook.Sheets[sheetNames[0]], {
|
||||
header: 1,
|
||||
});
|
||||
|
||||
const acidList = aoa.filter((item) => {
|
||||
return item.length >= 16 && item[0] && !item[0].includes("编号");
|
||||
});
|
||||
// 解析成对象数组
|
||||
const billName = aoa[0][0] + aoa[1][0];
|
||||
const billData = await utils.toObjData(acidList, new Date(reportDate).getFullYear());
|
||||
|
||||
if (
|
||||
!billData ||
|
||||
billData.length == 0
|
||||
// (!billData2 || billData2.length == 0)
|
||||
) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "找不到数据",
|
||||
});
|
||||
return;
|
||||
}
|
||||
const acidList = aoa.filter((item) => {
|
||||
if (this.regionLevel == "city") {
|
||||
return item.length >= 20 && item[0] && !item[0].includes("编号");
|
||||
} else if (this.regionLevel == "county") {
|
||||
console.log(item.length,item[0])
|
||||
return item.length >= 27 && item[0] && item[0] != "行政代码";
|
||||
}
|
||||
});
|
||||
// 解析成对象数组
|
||||
const billName =file.name;
|
||||
let billData = undefined
|
||||
if (this.regionLevel == "city") {
|
||||
const reportDate = aoa[2][0].replace(/[^\d]+/g, "-");
|
||||
|
||||
const tasks = [];
|
||||
if (billData.length > 0) {
|
||||
tasks.push(
|
||||
saveAcidRainBill({
|
||||
// reportTime: new Date(reportDate).getTime(),
|
||||
billName: billName,
|
||||
regionLevel: "市级",
|
||||
acidRainList: billData,
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
// 上传到服务器
|
||||
Promise.all(tasks)
|
||||
.then((res) => {
|
||||
if (res[0].data.code == 0) {
|
||||
Modal.success({
|
||||
title: "导入成功",
|
||||
content: `成功导入${billData.length}条数据`,
|
||||
});
|
||||
this.$refs.rain && this.$refs.rain.reload();
|
||||
} else {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
hide();
|
||||
});
|
||||
} catch (error) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: error.message,
|
||||
});
|
||||
billData = await utils.toObjData(acidList, new Date(reportDate).getFullYear());
|
||||
} else if (this.regionLevel == "county") {
|
||||
billData = utils.toCountyObjData(acidList);
|
||||
}
|
||||
// console.log(billData);
|
||||
|
||||
if (
|
||||
!billData ||
|
||||
billData.length == 0
|
||||
// (!billData2 || billData2.length == 0)
|
||||
) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "找不到数据",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const tasks = [];
|
||||
if (billData.length > 0) {
|
||||
tasks.push(
|
||||
saveAcidRainBill({
|
||||
// reportTime: new Date(reportDate).getTime(),
|
||||
billName: billName,
|
||||
regionLevel: this.regionLevel == "city"?"市级":"县级",
|
||||
acidRainList: billData,
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
// 上传到服务器
|
||||
Promise.all(tasks)
|
||||
.then((res) => {
|
||||
if (res[0].data.code == 0) {
|
||||
Modal.success({
|
||||
title: "导入成功",
|
||||
content: `成功导入${billData.length}条数据`,
|
||||
});
|
||||
this.$refs.rain && this.$refs.rain.reload();
|
||||
} else {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
hide();
|
||||
});
|
||||
} catch (error) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: error.message,
|
||||
});
|
||||
}
|
||||
// console.log(billData);
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
removeBatchAcidRainBill,
|
||||
updateAcidRainBill,
|
||||
verifyAcidRainBill
|
||||
} from "@/api/ecology/acid";
|
||||
} from "@/api/ecology/atmosphere/acid";
|
||||
import moment from "moment";
|
||||
export default {
|
||||
name: 'RainCollectNoiseBill',
|
||||
@@ -144,11 +144,11 @@
|
||||
},
|
||||
|
||||
},
|
||||
// {
|
||||
// title: '区域等级',
|
||||
// dataIndex: 'regionLevel',
|
||||
// sorter: true,
|
||||
// },
|
||||
{
|
||||
title: '区域等级',
|
||||
dataIndex: 'regionLevel',
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: '条目',
|
||||
dataIndex: 'recordSize',
|
||||
|
||||
@@ -157,7 +157,7 @@ import {
|
||||
updateAcidRain,
|
||||
getAcidRainBill,
|
||||
getColumnOptions,
|
||||
} from "@/api/ecology/acid";
|
||||
} from "@/api/ecology/atmosphere/acid";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
import { tableColumns } from "./colums";
|
||||
|
||||
@@ -2,6 +2,39 @@ import moment from "moment"
|
||||
import axios from "axios";
|
||||
import {listAllUrl} from "@/api/ecology/atmosphere/acid-rain-plcae"
|
||||
export default {
|
||||
toCountyObjData(excelData){
|
||||
return excelData.map(item => {
|
||||
|
||||
const row = {
|
||||
regionCode: item[0],
|
||||
city: (typeof item[1] == "string" && item[1].includes("市"))?item[1].sub(0,item[1].lastIndexOf("市")): "南宁市",
|
||||
county: (typeof item[1] == "string" && item[1].includes("县"))?item[1].sub(0,item[1].lastIndexOf("县")): "",
|
||||
area: (typeof item[1] == "string" && item[1].includes("区"))?item[1].sub(0,item[1].lastIndexOf("区")): "南宁区",
|
||||
place: item[2],
|
||||
placeType: item[3],
|
||||
monitorStartTime: moment(`${item[4]}-${item[5]}-${item[6]} ${item[7]}:${item[8]}:00`).valueOf(),
|
||||
monitorEndTime: moment(`${item[9]}-${item[10]}-${item[11]} ${item[12]}:${item[13]}:00`).valueOf(),
|
||||
monitorTime: moment(`${item[4]}-${item[5]}-${item[6]} ${item[7]}:${item[8]}:00`).valueOf(),
|
||||
precipitationType: item[14],
|
||||
precipitation: item[15],
|
||||
ph: item[16],
|
||||
conductivity: item[17],
|
||||
so42: item[18],
|
||||
no3: item[19],
|
||||
f: item[20],
|
||||
cl: item[21],
|
||||
nh4: item[22],
|
||||
ca: item[23],
|
||||
mg: item[24],
|
||||
na: item[25],
|
||||
k: item[26],
|
||||
systemCode: item[27],
|
||||
|
||||
}
|
||||
|
||||
return row;
|
||||
})
|
||||
},
|
||||
async toObjData(excelData,monitorYear) {
|
||||
const res = await axios.get(listAllUrl,{params:{year:monitorYear}})
|
||||
if(res.data.code !=0){
|
||||
@@ -12,22 +45,21 @@ export default {
|
||||
const monitorTime = moment(monitorYear + "."+item[1],"Y.M.D");
|
||||
const monitorStartTime = moment(`${monitorYear}.${item[2]}.${item[3]} ${item[4]}:${item[5]}`,"Y.M.D H:m");
|
||||
const monitorEndTime = moment(`${monitorYear}.${item[6]}.${item[7]} ${item[8]}:${item[9]}`,"Y.M.D H:m");
|
||||
console.log(item);
|
||||
const row = {
|
||||
city: "南宁市",
|
||||
place: dict.find(p=>p.placeCode = item[0].split("~")[0]).place,
|
||||
placeType:dict.find(p=>p.placeCode = item[0].split("~")[0]).attribute,
|
||||
place: dict.find(p=>p.placeCode == item[0].split("~")[0]).place,
|
||||
placeType:dict.find(p=>p.placeCode == item[0].split("~")[0]).attribute,
|
||||
code: item[0],
|
||||
precipitationType:item[10],
|
||||
precipitation:item[11],
|
||||
ph:item[12],
|
||||
conductivity:item[13],
|
||||
fluorine:item[14],
|
||||
chlorine:item[15],
|
||||
sulfateRadical:item[16],
|
||||
nitrate:item[17],
|
||||
f:item[14],
|
||||
cl:item[15],
|
||||
so42:item[16],
|
||||
no3:item[17],
|
||||
na:item[18],
|
||||
ammoniumRadical:item[19],
|
||||
nh4:item[19],
|
||||
k:item[20],
|
||||
mg:item[21],
|
||||
ca:item[22],
|
||||
@@ -35,6 +67,7 @@ export default {
|
||||
monitorEndTime: monitorEndTime.valueOf(),
|
||||
monitorTime: monitorTime.valueOf(),
|
||||
}
|
||||
|
||||
return row;
|
||||
})
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
<script>
|
||||
// import _ from "lodash";
|
||||
import XLSX from "xlsx";
|
||||
import {pageAcidRainUrl, getColumnOptions} from "@/api/ecology/acid";
|
||||
import {pageAcidRainUrl, getColumnOptions} from "@/api/ecology/atmosphere/acid";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
// import utils from "./utils";
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<script>
|
||||
import _ from "lodash";
|
||||
import XLSX from "xlsx";
|
||||
import {statisticCity, getColumnOptions} from "@/api/ecology/acid";
|
||||
import {statisticCity, getColumnOptions} from "@/api/ecology/atmosphere/acid";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<script>
|
||||
import _ from "lodash";
|
||||
import XLSX from "xlsx";
|
||||
import {statisticCounty, getColumnOptions} from "@/api/ecology/acid";
|
||||
import {statisticCounty, getColumnOptions} from "@/api/ecology/atmosphere/acid";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
<script>
|
||||
import _ from "lodash";
|
||||
import XLSX from "xlsx";
|
||||
import {statisticIon, getColumnOptions} from "@/api/ecology/acid";
|
||||
import {statisticIon, getColumnOptions} from "@/api/ecology/atmosphere/acid";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ import {
|
||||
removeBatchAirBill,
|
||||
updateAirBill,
|
||||
verifyAirBill
|
||||
} from "@/api/ecology/air";
|
||||
} from "@/api/ecology/atmosphere/air";
|
||||
import moment from "moment";
|
||||
|
||||
export default {
|
||||
|
||||
@@ -250,7 +250,7 @@ import {
|
||||
updateAir,
|
||||
getAirBill,
|
||||
getColumnOptions,
|
||||
} from "@/api/ecology/air";
|
||||
} from "@/api/ecology/atmosphere/air";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
// import utils from "./utils";
|
||||
@@ -272,7 +272,7 @@ export default {
|
||||
title: "监测日期",
|
||||
dataIndex: "monitorTime",
|
||||
sorter: true,
|
||||
customRender: ({text})=> moment(text).format("YYYY-MM-DD HH:mm")
|
||||
customRender: ({text})=> moment(text).format("YYYY-MM-DD")
|
||||
},
|
||||
{
|
||||
title: "城市",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
>
|
||||
<a-button type="primary">数据导入</a-button>
|
||||
</a-upload>
|
||||
<a-button>模板下载</a-button>
|
||||
<a-button @click="download">模板下载</a-button>
|
||||
|
||||
</a-space>
|
||||
</template>
|
||||
@@ -34,12 +34,13 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import XLSX from "xlsx";
|
||||
|
||||
import utils from "./utils";
|
||||
import {Modal} from "ant-design-vue";
|
||||
import AirBill from "./air-bill.vue";
|
||||
import {saveAirBill} from "@/api/ecology/air";
|
||||
import {saveAirBill} from "@/api/ecology/atmosphere/air";
|
||||
import moment from "moment";
|
||||
import {downloadTemplate, excelToJson} from "@/utils/excel-util";
|
||||
|
||||
export default {
|
||||
name: "AirCollectIndex",
|
||||
@@ -55,25 +56,26 @@ export default {
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
download(){
|
||||
let filename = "环境空气-"
|
||||
if (this.regionLevel == "city") {
|
||||
filename += "市"
|
||||
} else if (this.regionLevel == "county") {
|
||||
filename += "县"
|
||||
} else {
|
||||
filename += "站点"
|
||||
}
|
||||
downloadTemplate(filename)
|
||||
},
|
||||
/* 导入本地excel文件 */
|
||||
importFileCity(file) {
|
||||
const hide = this.$message.loading("导入中..", 0);
|
||||
|
||||
let reader = new FileReader();
|
||||
reader.onload = (e) => {
|
||||
reader.onload = async (e) => {
|
||||
try {
|
||||
let data = new Uint8Array(e.target.result);
|
||||
let workbook = XLSX.read(data, {
|
||||
type: "array",
|
||||
cellDates: true
|
||||
});
|
||||
let sheetNames = workbook.SheetNames;
|
||||
// 解析成二维数组
|
||||
let aoa = XLSX.utils.sheet_to_json(workbook.Sheets[sheetNames[0]], {
|
||||
header: 1,
|
||||
defval: ""
|
||||
});
|
||||
console.log(aoa.length)
|
||||
|
||||
let aoa = await excelToJson(e.target.result)
|
||||
const airList = aoa.filter((item) => {
|
||||
if (this.regionLevel == "city") {
|
||||
return item.length >= 10&& item[0]&& item[0] != "城市";
|
||||
@@ -84,7 +86,6 @@ export default {
|
||||
}
|
||||
}
|
||||
);
|
||||
console.log(airList.length)
|
||||
const billName = file.name;
|
||||
let billData = undefined;
|
||||
if (this.regionLevel == "city") {
|
||||
@@ -94,7 +95,6 @@ export default {
|
||||
} else {
|
||||
billData = utils.toPlaceObjData(airList)
|
||||
}
|
||||
console.log(billData.length)
|
||||
// 解析成对象数组
|
||||
if (!billData || billData.length == 0) {
|
||||
hide()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import moment from "moment";
|
||||
export default {
|
||||
toCityObjData(excelData) {
|
||||
|
||||
const result = excelData.map(item => {
|
||||
const row = {
|
||||
city: item[0],
|
||||
@@ -49,6 +50,8 @@ export default {
|
||||
return result;
|
||||
},
|
||||
toPlaceObjData(excelData) {
|
||||
console.log(excelData[8][2]);
|
||||
console.log(moment(excelData[8][2]));
|
||||
const result = excelData.map(item => {
|
||||
const place = item[1];
|
||||
// const county = place.substr(0,place.indexOf("县"))
|
||||
@@ -58,16 +61,16 @@ export default {
|
||||
place,
|
||||
monitorTime: moment(item[2]).valueOf(),
|
||||
so2: Number(item[3]) || null,
|
||||
no2: Number(item[5]) || null,
|
||||
pm10: Number(item[7]) || null,
|
||||
co: Number(item[9]) || null,
|
||||
o3: Number(item[12]) || null,
|
||||
pm25: Number(item[14]) || null,
|
||||
aqi: Number(item[16]) || null,
|
||||
primaryPollutant: item[17],
|
||||
aqiLevel: item[18],
|
||||
airQualityStatus: item[19],
|
||||
remark: item[21],
|
||||
no2: Number(item[4]) || null,
|
||||
pm10: Number(item[5]) || null,
|
||||
co: Number(item[6]) || null,
|
||||
o3: Number(item[7]) || null,
|
||||
pm25: Number(item[8]) || null,
|
||||
aqi: Number(item[9]) || null,
|
||||
primaryPollutant: item[10],
|
||||
aqiLevel: item[11],
|
||||
airQualityStatus: item[12],
|
||||
remark: item[13],
|
||||
}
|
||||
return row;
|
||||
})
|
||||
|
||||
@@ -43,13 +43,13 @@
|
||||
:wrapper-col="{ md: { span: 18 }, sm: { span: 24 } }"
|
||||
>
|
||||
<a-form-item label="新年份" name="nYear">
|
||||
<a-input-number id="inputNumber" v-model:value="nYear" :min="1970" :max="2050" />
|
||||
<a-input-number airEvaluationStandardId="inputNumber" v-model:value="nYear" :min="1970" :max="2050" />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
<a-modal
|
||||
v-model:visible="showEdit"
|
||||
:title="form.id !== undefined ? '修改' : '添加'"
|
||||
:title="form.airEvaluationStandardId !== undefined ? '修改' : '添加'"
|
||||
:confirm-loading="loading"
|
||||
:width="500"
|
||||
:body-style="{ paddingBottom: '8px' }"
|
||||
@@ -98,7 +98,7 @@
|
||||
<ele-pro-table
|
||||
v-model:selection="selectionList"
|
||||
ref="table"
|
||||
row-key="id"
|
||||
row-key="airEvaluationStandardId"
|
||||
:datasource="url"
|
||||
:columns="columns"
|
||||
:where="where"
|
||||
@@ -296,7 +296,7 @@ export default {
|
||||
// }
|
||||
const hide = this.$message.loading('请求中..', 0);
|
||||
const form = this.form;
|
||||
if (form.id) {
|
||||
if (form.airEvaluationStandardId) {
|
||||
updateStandard(form)
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
@@ -335,7 +335,7 @@ export default {
|
||||
/* 删除单个 */
|
||||
remove(row) {
|
||||
const hide = this.$message.loading('请求中..', 0);
|
||||
removeStandard(row.id).then((res) => {
|
||||
removeStandard(row.airEvaluationStandardId).then((res) => {
|
||||
hide();
|
||||
if (res.data.code === 0) {
|
||||
this.$message.success(res.data.msg);
|
||||
@@ -351,7 +351,7 @@ export default {
|
||||
/* 批量删除 */
|
||||
removeBatch() {
|
||||
const hide = this.$message.loading('请求中..', 0);
|
||||
const ids = this.selectionList.map((item) => item.id);
|
||||
const ids = this.selectionList.map((item) => item.airEvaluationStandardId);
|
||||
removeBatchStandard(ids).then((res) => {
|
||||
if (res.data.code === 0) {
|
||||
this.$message.success(res.data.msg);
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
<script>
|
||||
// import _ from "lodash";
|
||||
import XLSX from "xlsx";
|
||||
import {airDayRankUrl} from "@/api/ecology/air";
|
||||
import {airDayRankUrl} from "@/api/ecology/atmosphere/air";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
// import utils from "./utils";
|
||||
|
||||
@@ -44,7 +44,7 @@ import XLSX from "xlsx";
|
||||
import {
|
||||
airMonthRankUrl,
|
||||
airMonthProvincialCapitalRankUrl,
|
||||
} from "@/api/ecology/air";
|
||||
} from "@/api/ecology/atmosphere/air";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
import axios from "axios";
|
||||
|
||||
@@ -49,7 +49,7 @@ import {
|
||||
airPm25YearRankUrl,
|
||||
airYearProvincialCapitalRankUrl,
|
||||
airPm25YearProvincialCapitalRankUrl
|
||||
} from "@/api/ecology/air";
|
||||
} from "@/api/ecology/atmosphere/air";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
import axios from 'axios';
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeStart"></a-date-picker>
|
||||
</a-form-item>
|
||||
<a-form-item label="结束日期:">
|
||||
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeEnd"></a-date-picker>
|
||||
<a-date-picker valueFormat="YYYY-MM-DD 23:59:59" v-model:value="where.timeEnd"></a-date-picker>
|
||||
</a-form-item>
|
||||
|
||||
<a-space>
|
||||
@@ -50,7 +50,7 @@
|
||||
<script>
|
||||
import _ from "lodash";
|
||||
import XLSX from "xlsx";
|
||||
import {statisticAreaBase, getColumnOptions} from "@/api/ecology/air";
|
||||
import {statisticAreaBase, getColumnOptions} from "@/api/ecology/atmosphere/air";
|
||||
// import { Modal } from "ant-design-vue";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
@@ -76,7 +76,7 @@ export default {
|
||||
],
|
||||
// 表格列配置
|
||||
columns: [
|
||||
{title: "日期", dataIndex: "monitorTime", align: "center"},
|
||||
{title: "日期", dataIndex: "monitorTime", align: "center",customRender:({text})=>moment(text).format("YYYY-MM-DD"),fixed: "left"},
|
||||
|
||||
{title: "SO2五象", dataIndex: "wuXiangXinQuSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "NO2五象", dataIndex: "wuXiangXinQuNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
{title: "O3五象", dataIndex: "wuXiangXinQuO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "PM2.5五象", dataIndex: "wuXiangXinQuPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "AQI五象", dataIndex: "wuXiangXinQuAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别五象", dataIndex: "wuXiangXinQuAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别五象", dataIndex: "wuXiangXinQuAqiCategory", align: "center"},
|
||||
|
||||
{title: "SO2兴宁", dataIndex: "xingNingSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "NO2兴宁", dataIndex: "xingNingNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
@@ -94,7 +94,7 @@ export default {
|
||||
{title: "O3_8h兴宁", dataIndex: "xingNingO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "PM2.5兴宁", dataIndex: "xingNingPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "AQI兴宁", dataIndex: "xingNingAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别兴宁", dataIndex: "xingNingAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别兴宁", dataIndex: "xingNingAqiCategory", align: "center"},
|
||||
|
||||
{title: "SO2江南", dataIndex: "jiangNanSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "NO2江南", dataIndex: "jiangNanNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
@@ -103,7 +103,7 @@ export default {
|
||||
{title: "O3_8h江南", dataIndex: "jiangNanO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "PM2.5江南", dataIndex: "jiangNanPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "AQI江南", dataIndex: "jiangNanAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别江南", dataIndex: "jiangNanAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别江南", dataIndex: "jiangNanAqiCategory", align: "center"},
|
||||
|
||||
{title: "SO2青秀", dataIndex: "qingXiuSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "NO2青秀", dataIndex: "qingXiuNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
@@ -112,7 +112,7 @@ export default {
|
||||
{title: "O3_8h青秀", dataIndex: "qingXiuO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "PM2.5青秀", dataIndex: "qingXiuPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "AQI青秀", dataIndex: "qingXiuAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别青秀", dataIndex: "qingXiuAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别青秀", dataIndex: "qingXiuAqiCategory", align: "center"},
|
||||
|
||||
{title: "SO2西乡塘", dataIndex: "xiXiangTangSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "NO2西乡塘", dataIndex: "xiXiangTangNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
@@ -121,7 +121,7 @@ export default {
|
||||
{title: "O3_8h西乡塘", dataIndex: "xiXiangTangO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "PM2.5西乡塘", dataIndex: "xiXiangTangPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "AQI西乡塘", dataIndex: "xiXiangTangAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别西乡塘", dataIndex: "xiXiangTangAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别西乡塘", dataIndex: "xiXiangTangAqiCategory", align: "center"},
|
||||
|
||||
{title: "SO2邕宁", dataIndex: "yongNingSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "NO2邕宁", dataIndex: "yongNingNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
@@ -130,7 +130,7 @@ export default {
|
||||
{title: "O3_8h邕宁", dataIndex: "yongNingO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "PM2.5邕宁", dataIndex: "yongNingPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "AQI邕宁", dataIndex: "yongNingAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别邕宁", dataIndex: "yongNingAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别邕宁", dataIndex: "yongNingAqiCategory", align: "center"},
|
||||
|
||||
{title: "SO2良庆", dataIndex: "liangQingSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "NO2良庆", dataIndex: "liangQingNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
@@ -139,7 +139,7 @@ export default {
|
||||
{title: "O3_8h良庆", dataIndex: "liangQingO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "PM2.5良庆", dataIndex: "liangQingPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "AQI良庆", dataIndex: "liangQingAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别良庆", dataIndex: "liangQingAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别良庆", dataIndex: "liangQingAqiCategory", align: "center"},
|
||||
|
||||
{title: "SO2高新", dataIndex: "gaoXinSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "NO2高新", dataIndex: "gaoXinNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
@@ -148,7 +148,7 @@ export default {
|
||||
{title: "O3_8h高新", dataIndex: "gaoXinO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "PM2.5高新", dataIndex: "gaoXinPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "AQI高新", dataIndex: "gaoXinAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别高新", dataIndex: "gaoXinAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别高新", dataIndex: "gaoXinAqiCategory", align: "center"},
|
||||
|
||||
{title: "SO2经开", dataIndex: "jingKaiSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "NO2经开", dataIndex: "jingKaiNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
@@ -157,7 +157,7 @@ export default {
|
||||
{title: "O3_8h经开", dataIndex: "jingKaiO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "PM2.5经开", dataIndex: "jingKaiPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "AQI经开", dataIndex: "jingKaiAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别经开", dataIndex: "jingKaiAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||
{title: "类别经开", dataIndex: "jingKaiAqiCategory", align: "center"},
|
||||
],
|
||||
regionLevelOptions: [],
|
||||
time: [],
|
||||
@@ -165,7 +165,7 @@ export default {
|
||||
where: {
|
||||
regionLevel: "place",
|
||||
timeStart: moment(`${year}-01-01 00:00:00`).format("YYYY-MM-DD 00:00:00"),
|
||||
timeEnd: moment().format("YYYY-MM-DD 00:00:00")
|
||||
timeEnd: moment().format("YYYY-MM-DD 23:59:59")
|
||||
},
|
||||
// 表格选中数据
|
||||
selectionList: [],
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
<script>
|
||||
import _ from "lodash";
|
||||
import XLSX from "xlsx";
|
||||
import {statisticArea, getColumnOptions} from "@/api/ecology/air";
|
||||
import {statisticArea, getColumnOptions} from "@/api/ecology/atmosphere/air";
|
||||
import { Modal } from "ant-design-vue";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
@@ -91,7 +91,7 @@ export default {
|
||||
title: "二氧化硫", children: [
|
||||
{title: "本次", dataIndex: "so2Current",align:"center"},
|
||||
{title: "上年同期", dataIndex: "so2SameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "so2ChangePercentage",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "so2ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "so2Rank",align:"center"},
|
||||
]
|
||||
},
|
||||
@@ -99,7 +99,7 @@ export default {
|
||||
title: "二氧化氮", children: [
|
||||
{title: "本次", dataIndex: "no2Current",align:"center"},
|
||||
{title: "上年同期", dataIndex: "no2SameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "no2ChangePercentage",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "no2ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "no2Rank",align:"center"},
|
||||
]
|
||||
},
|
||||
@@ -107,15 +107,15 @@ export default {
|
||||
title: "可吸入颗粒物", children: [
|
||||
{title: "本次", dataIndex: "pm10Current",align:"center"},
|
||||
{title: "上年同期", dataIndex: "pm10SameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "pm10ChangePercentage",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "pm10ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "pm10Rank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "一氧化碳", children: [
|
||||
{title: "本次", dataIndex: "coCurrent",align:"center"},
|
||||
{title: "上年同期", dataIndex: "coSameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "coChangePercentage",align:"center"},
|
||||
{title: "本次", dataIndex: "coCurrent",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "上年同期", dataIndex: "coSameTimeLastYear",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "增减(%)", dataIndex: "coChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "coRank",align:"center"},
|
||||
]
|
||||
},
|
||||
@@ -123,7 +123,7 @@ export default {
|
||||
title: "臭氧", children: [
|
||||
{title: "本次", dataIndex: "o3Current",align:"center"},
|
||||
{title: "上年同期", dataIndex: "o3SameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "o3ChangePercentage",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "o3ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "o3Rank",align:"center"},
|
||||
]
|
||||
},
|
||||
@@ -131,7 +131,7 @@ export default {
|
||||
title: "细颗粒物", children: [
|
||||
{title: "本次", dataIndex: "pm25Current",align:"center"},
|
||||
{title: "上年同期", dataIndex: "pm25SameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "pm25ChangePercentage",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "pm25ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "pm25Rank",align:"center"},
|
||||
]
|
||||
},
|
||||
@@ -139,10 +139,19 @@ export default {
|
||||
title: "空气质量综合指数", children: [
|
||||
{title: "本次", dataIndex: "comprehensiveAirQualityIndexCurrent",align:"center"},
|
||||
{title: "上年同期", dataIndex: "comprehensiveAirQualityIndexSameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "comprehensiveAirQualityIndexChangePercentage",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "comprehensiveAirQualityIndexChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "comprehensiveAirQualityIndexRank",align:"center"},
|
||||
]
|
||||
},
|
||||
},/*
|
||||
|
||||
BigDecimal pm25Change = BigDecimal.ZERO;
|
||||
BigDecimal current = ambientAirStatisticalAnalysisExcel.getPm25Current();
|
||||
BigDecimal sameTimeLastYear = ambientAirStatisticalAnalysisExcel.getPm25SameTimeLastYear();
|
||||
BigDecimal subtract = current.subtract(sameTimeLastYear);
|
||||
if(subtract.compareTo(BigDecimal.ZERO) != 0){
|
||||
pm25Change = subtract.multiply(new BigDecimal(100)).divide(sameTimeLastYear,CHANGE_PERCENT_SCALE,ROUNDING_MODE);
|
||||
}
|
||||
*/
|
||||
{
|
||||
title: "优天数", children: [
|
||||
{title: "本次", dataIndex: "excellentDaysCurrent",align:"center"},
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<script>
|
||||
// import _ from "lodash";
|
||||
import XLSX from "xlsx";
|
||||
import {statisticAvg, getColumnOptions, listAllAir} from "@/api/ecology/air";
|
||||
import {statisticAvg, getColumnOptions, listAllAir} from "@/api/ecology/atmosphere/air";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
// import utils from "./utils";
|
||||
|
||||
@@ -4,31 +4,28 @@
|
||||
<!-- 搜索表单 -->
|
||||
<a-form
|
||||
:model="where"
|
||||
layout="vertical"
|
||||
:label-col="{ md: { span: 6 }, sm: { span: 24 } }"
|
||||
:wrapper-col="{ md: { span: 18 }, sm: { span: 24 } }"
|
||||
layout="inline"
|
||||
>
|
||||
<a-row>
|
||||
<a-col :lg="6" :md="12" :sm="24" :xs="24">
|
||||
<a-form-item label="时间范围:">
|
||||
<a-range-picker v-model:value="time"/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="6" :md="12" :sm="24" :xs="24">
|
||||
<a-form-item label="起始日期:">
|
||||
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeStart"></a-date-picker>
|
||||
</a-form-item>
|
||||
<a-form-item label="结束日期:">
|
||||
<a-date-picker valueFormat="YYYY-MM-DD 23:59:59" v-model:value="where.timeEnd"></a-date-picker>
|
||||
</a-form-item>
|
||||
<a-form-item label="起始时间:">
|
||||
|
||||
</a-form-item>
|
||||
<a-form-item label="区域等级:">
|
||||
<a-select v-model:value="where.regionLevel" allowClear showSearch>
|
||||
<a-select v-model:value="where.regionLevel" placeholder="选择区域等级" allowClear showSearch>
|
||||
<a-select-option
|
||||
v-for="(item) in regionLevelOptions"
|
||||
:key="item.value"
|
||||
>{{ item.label }}
|
||||
</a-select-option
|
||||
>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="6" :md="12" :sm="24" :xs="24">
|
||||
<a-form-item label="监测点:">
|
||||
<a-select v-model:value="where.place" allowClear showSearch>
|
||||
<a-select v-model:value="where.place" placeholder="选择监测点" allowClear showSearch>
|
||||
<a-select-option
|
||||
v-for="(item) in placeOptions"
|
||||
:key="item.value"
|
||||
@@ -37,17 +34,12 @@
|
||||
>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :lg="24" :md="24" :sm="24" :xs="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-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
<!-- 表格 -->
|
||||
<ele-pro-table
|
||||
@@ -59,6 +51,7 @@
|
||||
:where="where"
|
||||
:scroll="{ x: 'max-content' }"
|
||||
@done="(d) => (data = d.data)"
|
||||
:init-load="false"
|
||||
>
|
||||
|
||||
</ele-pro-table>
|
||||
@@ -70,7 +63,7 @@
|
||||
<script>
|
||||
// import _ from "lodash";
|
||||
import XLSX from "xlsx";
|
||||
import {pageAirUrl, getColumnOptions, listAllAir} from "@/api/ecology/air";
|
||||
import {pageAirUrl, getColumnOptions, listAllAir} from "@/api/ecology/atmosphere/air";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
// import utils from "./utils";
|
||||
@@ -78,6 +71,7 @@ export default {
|
||||
name: "StatisticAirBase",
|
||||
components: {},
|
||||
data() {
|
||||
const year = new Date().getFullYear();
|
||||
return {
|
||||
data: [],
|
||||
locale,
|
||||
@@ -91,7 +85,7 @@ export default {
|
||||
title: "监测日期",
|
||||
dataIndex: "monitorTime",
|
||||
sorter: true,
|
||||
customRender: ({text}) => moment(text).format("YYYY-MM-DD HH:mm")
|
||||
customRender: ({text}) => moment(text).format("YYYY-MM-DD")
|
||||
},
|
||||
{
|
||||
title: "城市",
|
||||
@@ -175,6 +169,8 @@ export default {
|
||||
// 表格搜索条件
|
||||
where: {
|
||||
checked: 1,
|
||||
timeStart: moment(`${year}-01-01 00:00:00`).format("YYYY-MM-DD 00:00:00"),
|
||||
timeEnd: moment().format("YYYY-MM-DD 23:59:59")
|
||||
},
|
||||
// 表格选中数据
|
||||
selectionList: [],
|
||||
@@ -182,6 +178,7 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
this.loadOptionData();
|
||||
this.reload();
|
||||
},
|
||||
methods: {
|
||||
/**获取下来框数据 */
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeStart"></a-date-picker>
|
||||
</a-form-item>
|
||||
<a-form-item label="结束日期:">
|
||||
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeEnd"></a-date-picker>
|
||||
<a-date-picker valueFormat="YYYY-MM-DD 23:59:59" v-model:value="where.timeEnd"></a-date-picker>
|
||||
</a-form-item>
|
||||
<a-space>
|
||||
<a-button type="primary" @click="reload">查询</a-button>
|
||||
@@ -51,7 +51,7 @@
|
||||
<script>
|
||||
import _ from "lodash";
|
||||
import XLSX from "xlsx";
|
||||
import {statisticUrl, getColumnOptions,statisticArea} from "@/api/ecology/air";
|
||||
import {statisticUrl, getColumnOptions,statisticArea} from "@/api/ecology/atmosphere/air";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
|
||||
@@ -77,115 +77,115 @@ export default {
|
||||
],
|
||||
// 表格列配置
|
||||
columns: [
|
||||
{title: "站点/县", dataIndex: "place",align:"center"},
|
||||
{title: "站点/县", dataIndex: "place",align:"center",fixed: "left",},
|
||||
{
|
||||
title: "二氧化硫", children: [
|
||||
{title: "本次", dataIndex: "so2Current",align:"center"},
|
||||
{title: "上年同期", dataIndex: "so2SameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "so2ChangePercentage",align:"center"},
|
||||
{title: "本次", dataIndex: "so2Current",align:"center",customRender:({text})=>text + ""},
|
||||
{title: "上年同期", dataIndex: "so2SameTimeLastYear",align:"center",customRender:({text})=>text + ""},
|
||||
{title: "增减(%)", dataIndex: "so2ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "so2Rank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "二氧化氮", children: [
|
||||
{title: "本次", dataIndex: "no2Current",align:"center"},
|
||||
{title: "上年同期", dataIndex: "no2SameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "no2ChangePercentage",align:"center"},
|
||||
{title: "本次", dataIndex: "no2Current",align:"center",customRender:({text})=>text + ""},
|
||||
{title: "上年同期", dataIndex: "no2SameTimeLastYear",align:"center",customRender:({text})=>text + ""},
|
||||
{title: "增减(%)", dataIndex: "no2ChangePercentage",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "no2Rank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "可吸入颗粒物", children: [
|
||||
{title: "本次", dataIndex: "pm10Current",align:"center"},
|
||||
{title: "上年同期", dataIndex: "pm10SameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "pm10ChangePercentage",align:"center"},
|
||||
{title: "本次", dataIndex: "pm10Current",align:"center",customRender:({text})=>text + ""},
|
||||
{title: "上年同期", dataIndex: "pm10SameTimeLastYear",align:"center",customRender:({text})=>text + ""},
|
||||
{title: "增减(%)", dataIndex: "pm10ChangePercentage",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "pm10Rank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "一氧化碳", children: [
|
||||
{title: "本次", dataIndex: "coCurrent",align:"center"},
|
||||
{title: "上年同期", dataIndex: "coSameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "coChangePercentage",align:"center"},
|
||||
{title: "本次", dataIndex: "coCurrent",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "上年同期", dataIndex: "coSameTimeLastYear",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "增减(%)", dataIndex: "coChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "coRank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "臭氧", children: [
|
||||
{title: "本次", dataIndex: "o3Current",align:"center"},
|
||||
{title: "上年同期", dataIndex: "o3SameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "o3ChangePercentage",align:"center"},
|
||||
{title: "本次", dataIndex: "o3Current",align:"center",customRender:({text})=>text + ""},
|
||||
{title: "上年同期", dataIndex: "o3SameTimeLastYear",align:"center",customRender:({text})=>text + ""},
|
||||
{title: "增减(%)", dataIndex: "o3ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "o3Rank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "细颗粒物", children: [
|
||||
{title: "本次", dataIndex: "pm25Current",align:"center"},
|
||||
{title: "上年同期", dataIndex: "pm25SameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "pm25ChangePercentage",align:"center"},
|
||||
{title: "本次", dataIndex: "pm25Current",align:"center",customRender:({text})=>text + ""},
|
||||
{title: "上年同期", dataIndex: "pm25SameTimeLastYear",align:"center",customRender:({text})=>text + ""},
|
||||
{title: "增减(%)", dataIndex: "pm25ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "pm25Rank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "空气质量综合指数", children: [
|
||||
{title: "本次", dataIndex: "comprehensiveAirQualityIndexCurrent",align:"center"},
|
||||
{title: "上年同期", dataIndex: "comprehensiveAirQualityIndexSameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "comprehensiveAirQualityIndexChangePercentage",align:"center"},
|
||||
title: "综合指数", children: [
|
||||
{title: "本次", dataIndex: "comprehensiveAirQualityIndexCurrent",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(2)+"":""},
|
||||
{title: "上年同期", dataIndex: "comprehensiveAirQualityIndexSameTimeLastYear",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(2)+"":""},
|
||||
{title: "增减(%)", dataIndex: "comprehensiveAirQualityIndexChangePercentage",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
{title: "排名(按浓度值)", dataIndex: "comprehensiveAirQualityIndexRank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "优天数", children: [
|
||||
{title: "本次", dataIndex: "excellentDaysCurrent",align:"center"},
|
||||
{title: "上年同期", dataIndex: "excellentDaysSameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "excellentDaysChangePercentage",align:"center"},
|
||||
// {title: "排名(按浓度值)", dataIndex: "excellentDaysRank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "良天数", children: [
|
||||
{title: "本次", dataIndex: "goodDaysCurrent",align:"center"},
|
||||
{title: "上年同期", dataIndex: "goodDaysSameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "goodDaysChangePercentage",align:"center"},
|
||||
// {title: "排名(按浓度值)", dataIndex: "goodDaysRank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "轻度污染天数", children: [
|
||||
{title: "本次", dataIndex: "lightPollutionDaysCurrent",align:"center"},
|
||||
{title: "上年同期", dataIndex: "lightPollutionDaysSameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "lightPollutionDaysChangePercentage",align:"center"},
|
||||
// {title: "排名(按浓度值)", dataIndex: "lightPollutionDaysRank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "中度污染天数", children: [
|
||||
{title: "本次", dataIndex: "moderatelyPollutedDaysCurrent",align:"center"},
|
||||
{title: "上年同期", dataIndex: "moderatelyPollutedDaysSameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "moderatelyPollutedDaysChangePercentage",align:"center"},
|
||||
// {title: "排名(按浓度值)", dataIndex: "moderatelyPollutedDaysRank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "良天数", children: [
|
||||
{title: "本次", dataIndex: "goodDaysCurrent",align:"center"},
|
||||
{title: "上年同期", dataIndex: "goodDaysSameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "goodDaysChangePercentage",align:"center"},
|
||||
// {title: "排名(按浓度值)", dataIndex: "goodDaysRank",align:"center"},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "重度污染天数", children: [
|
||||
{title: "本次", dataIndex: "heavyPollutionDaysCurrent",align:"center"},
|
||||
{title: "上年同期", dataIndex: "heavyPollutionDaysSameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "heavyPollutionDaysChangePercentage",align:"center"},
|
||||
]
|
||||
},
|
||||
// {
|
||||
// title: "优天数", children: [
|
||||
// {title: "本次", dataIndex: "excellentDaysCurrent",align:"center"},
|
||||
// {title: "上年同期", dataIndex: "excellentDaysSameTimeLastYear",align:"center"},
|
||||
// {title: "增减(%)", dataIndex: "excellentDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
// // {title: "排名(按浓度值)", dataIndex: "excellentDaysRank",align:"center"},
|
||||
// ]
|
||||
// },
|
||||
// {
|
||||
// title: "良天数", children: [
|
||||
// {title: "本次", dataIndex: "goodDaysCurrent",align:"center"},
|
||||
// {title: "上年同期", dataIndex: "goodDaysSameTimeLastYear",align:"center"},
|
||||
// {title: "增减(%)", dataIndex: "goodDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
// // {title: "排名(按浓度值)", dataIndex: "goodDaysRank",align:"center"},
|
||||
// ]
|
||||
// },
|
||||
// {
|
||||
// title: "轻度污染天数", children: [
|
||||
// {title: "本次", dataIndex: "lightPollutionDaysCurrent",align:"center"},
|
||||
// {title: "上年同期", dataIndex: "lightPollutionDaysSameTimeLastYear",align:"center"},
|
||||
// {title: "增减(%)", dataIndex: "lightPollutionDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
// // {title: "排名(按浓度值)", dataIndex: "lightPollutionDaysRank",align:"center"},
|
||||
// ]
|
||||
// },
|
||||
// {
|
||||
// title: "中度污染天数", children: [
|
||||
// {title: "本次", dataIndex: "moderatelyPollutedDaysCurrent",align:"center"},
|
||||
// {title: "上年同期", dataIndex: "moderatelyPollutedDaysSameTimeLastYear",align:"center"},
|
||||
// {title: "增减(%)", dataIndex: "moderatelyPollutedDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
// // {title: "排名(按浓度值)", dataIndex: "moderatelyPollutedDaysRank",align:"center"},
|
||||
// ]
|
||||
// },
|
||||
// {
|
||||
// title: "良天数", children: [
|
||||
// {title: "本次", dataIndex: "goodDaysCurrent",align:"center"},
|
||||
// {title: "上年同期", dataIndex: "goodDaysSameTimeLastYear",align:"center"},
|
||||
// {title: "增减(%)", dataIndex: "goodDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
// // {title: "排名(按浓度值)", dataIndex: "goodDaysRank",align:"center"},
|
||||
// ]
|
||||
// },
|
||||
// {
|
||||
// title: "重度污染天数", children: [
|
||||
// {title: "本次", dataIndex: "heavyPollutionDaysCurrent",align:"center"},
|
||||
// {title: "上年同期", dataIndex: "heavyPollutionDaysSameTimeLastYear",align:"center"},
|
||||
// {title: "增减(%)", dataIndex: "heavyPollutionDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
// ]
|
||||
// },
|
||||
{
|
||||
title: "优良率", children: [
|
||||
{title: "本次", dataIndex: "excellentRateCurrent",align:"center"},
|
||||
{title: "上年同期", dataIndex: "excellentRateSameTimeLastYear",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "excellentRateChangePercentage",align:"center"},
|
||||
{title: "增减(%)", dataIndex: "excellentRateChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||
]
|
||||
},
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeKey: 'area'
|
||||
activeKey: 'ccp'
|
||||
};
|
||||
|
||||
},
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
},
|
||||
detail(record) {
|
||||
this.$router.replace({
|
||||
path: "/sound/function/collect/noise/" + record.functionNoiseBillId
|
||||
path: "/sound/acid/collect/noise/" + record.functionNoiseBillId
|
||||
})
|
||||
},
|
||||
edit(record) {
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
},
|
||||
detail(record) {
|
||||
this.$router.replace({
|
||||
path: "/sound/zone/collect/noise/" + record.zoneNoiseBillId
|
||||
path: "/sound/air/collect/noise/" + record.zoneNoiseBillId
|
||||
})
|
||||
},
|
||||
edit(record) {
|
||||
|
||||
168
src/views/visualiz/atmosphere/acid/index.vue
Normal file
168
src/views/visualiz/atmosphere/acid/index.vue
Normal file
@@ -0,0 +1,168 @@
|
||||
<template>
|
||||
<div class="ele-body">
|
||||
<a-card class="ele-card" :bordered="false">
|
||||
<a-space>
|
||||
<a-select @change="whereChange" v-model:value="where.year">
|
||||
<a-select-option v-for="item in yearOptions" :key="item.value">{{
|
||||
item.label
|
||||
}}</a-select-option>
|
||||
</a-select>
|
||||
<a-radio-group @change="whereChange" v-model:value="where.regionLevel">
|
||||
<a-radio-button value="市级"> 市级 </a-radio-button>
|
||||
<a-radio-button value="县级"> 县级 </a-radio-button>
|
||||
</a-radio-group>
|
||||
<!-- <a-button @click="exportMap">导出</a-button> -->
|
||||
</a-space>
|
||||
</a-card>
|
||||
<div id="map"></div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Scene, PointLayer, Popup } from "@antv/l7";
|
||||
import { GaodeMap } from "@antv/l7-maps";
|
||||
import {
|
||||
getPlaceGis,
|
||||
} from "@/api/ecology/atmosphere/acid";
|
||||
import {
|
||||
getColumnOptions,
|
||||
} from "@/api/ecology/atmosphere/acid-rain-plcae";
|
||||
let scene = null;
|
||||
let pointLayer = null;
|
||||
let cityLayer = null;
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
yearOptions: [],
|
||||
where: {
|
||||
regionLevel: "市级",
|
||||
year: "选择年份",
|
||||
},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
scene = new Scene({
|
||||
id: "map",
|
||||
map: new GaodeMap({
|
||||
style: "light",
|
||||
center: [108.33, 22.84],
|
||||
// pitch: 48.62562,
|
||||
// rotation: -0.76,
|
||||
zoom: 12,
|
||||
}),
|
||||
});
|
||||
|
||||
scene.on("loaded", () => {
|
||||
this.initData();
|
||||
});
|
||||
|
||||
// const control = new DrawControl(scene, {
|
||||
// });
|
||||
},
|
||||
methods: {
|
||||
initData() {
|
||||
getColumnOptions("year").then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
this.yearOptions = res.data.data.map((item) => {
|
||||
return {
|
||||
label: item,
|
||||
value: item,
|
||||
};
|
||||
});
|
||||
this.where.year = res.data.data[res.data.data.length - 1];
|
||||
this.whereChange();
|
||||
}
|
||||
});
|
||||
},
|
||||
setPlaceData() {},
|
||||
whereChange() {
|
||||
if(scene && pointLayer){
|
||||
scene.removeLayer(pointLayer)
|
||||
}
|
||||
getPlaceGis(this.where).then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
if(cityLayer){
|
||||
cityLayer.destroy()
|
||||
scene.removeLayer(cityLayer)
|
||||
}
|
||||
pointLayer = new PointLayer({})
|
||||
.source(res.data.data, {
|
||||
parser: {
|
||||
type: "json",
|
||||
x: "longitude",
|
||||
y: "latitude",
|
||||
},
|
||||
})
|
||||
.shape('circle').size(10)
|
||||
// .size("leq", acid (level) {
|
||||
// return [4, 4, level];
|
||||
// })
|
||||
.active(true)
|
||||
.color("leq", () => {
|
||||
// const { timeSlot } = this.where;
|
||||
// const color =
|
||||
// timeSlot == "昼"
|
||||
// ? leq > 70
|
||||
// ? "#f5222d"
|
||||
// : "#13c2c2"
|
||||
// : leq > 65
|
||||
// ? "#f5222d"
|
||||
// : "#13c2c2";
|
||||
return "#13c2c2";
|
||||
})
|
||||
.style({
|
||||
opacity: 1,
|
||||
});
|
||||
pointLayer.on("mousemove", (e) => {
|
||||
const popup = new Popup({
|
||||
offsets: [0, 0],
|
||||
closeButton: false,
|
||||
})
|
||||
.setLnglat(e.lngLat)
|
||||
.setHTML(
|
||||
`<p>点位名称: ${e.feature.place}</p><p>点位编号: ${e.feature.placeCode}</p><p>点位属性: ${e.feature.attribute}</p><p>ph: ${e.feature.ph}</p>`
|
||||
);
|
||||
scene.addPopup(popup);
|
||||
});
|
||||
pointLayer.setData(res.data.data);
|
||||
scene.addLayer(pointLayer);
|
||||
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||
// scene.setPitch(48);
|
||||
scene.render()
|
||||
}
|
||||
});
|
||||
},
|
||||
getAreaData() {},
|
||||
exportMap(){
|
||||
console.log("exportMap");
|
||||
scene.exportMap("png");
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
overflow: hidden;
|
||||
margin: 0;
|
||||
}
|
||||
.ele-body {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
padding: 16px 0;
|
||||
}
|
||||
.ele-card {
|
||||
z-index: 10;
|
||||
margin: 0 16px;
|
||||
display: inline-block;
|
||||
}
|
||||
#map {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
170
src/views/visualiz/atmosphere/air/index.vue
Normal file
170
src/views/visualiz/atmosphere/air/index.vue
Normal file
@@ -0,0 +1,170 @@
|
||||
<template>
|
||||
<div class="ele-body">
|
||||
<a-card class="ele-card" :bordered="false">
|
||||
<a-space>
|
||||
<a-select @change="whereChange" v-model:value="where.year">
|
||||
<a-select-option v-for="item in yearOptions" :key="item.value">{{
|
||||
item.label
|
||||
}}</a-select-option>
|
||||
</a-select>
|
||||
<a-radio-group @change="whereChange" v-model:value="where.regionLevel">
|
||||
<a-radio-button value="city"> 市级 </a-radio-button>
|
||||
<a-radio-button value="county"> 县级 </a-radio-button>
|
||||
<a-radio-button value="place"> 站点 </a-radio-button>
|
||||
</a-radio-group>
|
||||
<!-- <a-button @click="exportMap">导出</a-button> -->
|
||||
</a-space>
|
||||
</a-card>
|
||||
<div id="map"></div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Scene, PointLayer, Popup } from "@antv/l7";
|
||||
import { GaodeMap } from "@antv/l7-maps";
|
||||
import {
|
||||
getPlaceGis,
|
||||
} from "@/api/ecology/atmosphere/air";
|
||||
import {
|
||||
getColumnOptions,
|
||||
} from "@/api/ecology/atmosphere/air-plcae";
|
||||
let scene = null;
|
||||
let pointLayer = null;
|
||||
let cityLayer = null;
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
yearOptions: [],
|
||||
where: {
|
||||
regionLevel: "place",
|
||||
year: "选择年份",
|
||||
},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
scene = new Scene({
|
||||
id: "map",
|
||||
map: new GaodeMap({
|
||||
style: "light",
|
||||
center: [108.33, 22.84],
|
||||
// pitch: 48.62562,
|
||||
// rotation: -0.76,
|
||||
zoom: 12,
|
||||
}),
|
||||
});
|
||||
|
||||
scene.on("loaded", () => {
|
||||
this.initData();
|
||||
});
|
||||
|
||||
// const control = new DrawControl(scene, {
|
||||
// });
|
||||
},
|
||||
methods: {
|
||||
initData() {
|
||||
getColumnOptions("year").then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
this.yearOptions = res.data.data.map((item) => {
|
||||
return {
|
||||
label: item,
|
||||
value: item,
|
||||
};
|
||||
});
|
||||
this.where.year = res.data.data[res.data.data.length - 1];
|
||||
this.whereChange();
|
||||
}
|
||||
});
|
||||
},
|
||||
setPlaceData() {},
|
||||
whereChange() {
|
||||
if(scene && pointLayer){
|
||||
scene.removeLayer(pointLayer)
|
||||
}
|
||||
getPlaceGis(this.where).then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
if(cityLayer){
|
||||
cityLayer.destroy()
|
||||
scene.removeLayer(cityLayer)
|
||||
}
|
||||
pointLayer = new PointLayer({})
|
||||
.source(res.data.data, {
|
||||
parser: {
|
||||
type: "json",
|
||||
x: "longitude",
|
||||
y: "latitude",
|
||||
},
|
||||
})
|
||||
.shape('circle').size(10)
|
||||
// .size("leq", acid (level) {
|
||||
// return [4, 4, level];
|
||||
// })
|
||||
.active(true)
|
||||
.color("leq", () => {
|
||||
// const { timeSlot } = this.where;
|
||||
// const color =
|
||||
// timeSlot == "昼"
|
||||
// ? leq > 70
|
||||
// ? "#f5222d"
|
||||
// : "#13c2c2"
|
||||
// : leq > 65
|
||||
// ? "#f5222d"
|
||||
// : "#13c2c2";
|
||||
return "#13c2c2";
|
||||
})
|
||||
.style({
|
||||
opacity: 1,
|
||||
});
|
||||
pointLayer.on("mousemove", (e) => {
|
||||
const popup = new Popup({
|
||||
offsets: [0, 0],
|
||||
closeButton: false,
|
||||
})
|
||||
.setLnglat(e.lngLat)
|
||||
.setHTML(
|
||||
`<p>点位名称: ${e.feature.place}</p><p>点位属性: ${e.feature.attributes}</p><p>片区名称: ${e.feature.districtName}</p><p>所在功能区类别: ${e.feature.placeFunctionalAreaCategory}</p>
|
||||
<p>SO2: ${e.feature.avgSo2} NO2: ${e.feature.avgNo2}</p><p>PM10: ${e.feature.avgPm10} CO: ${e.feature.avgCo}</p><p>O3: ${e.feature.avgO3} PM2.5: ${e.feature.avgPm25}</p>`
|
||||
);
|
||||
scene.addPopup(popup);
|
||||
});
|
||||
pointLayer.setData(res.data.data);
|
||||
scene.addLayer(pointLayer);
|
||||
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||
// scene.setPitch(48);
|
||||
scene.render()
|
||||
}
|
||||
});
|
||||
},
|
||||
getAreaData() {},
|
||||
exportMap(){
|
||||
console.log("exportMap");
|
||||
scene.exportMap("png");
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
overflow: hidden;
|
||||
margin: 0;
|
||||
}
|
||||
.ele-body {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
padding: 16px 0;
|
||||
}
|
||||
.ele-card {
|
||||
z-index: 10;
|
||||
margin: 0 16px;
|
||||
display: inline-block;
|
||||
}
|
||||
#map {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -4,12 +4,18 @@
|
||||
<a-space>
|
||||
<a-select @change="whereChange" v-model:value="where.monitorYear">
|
||||
<a-select-option v-for="item in yearOptions" :key="item.value">{{
|
||||
item.label
|
||||
}}</a-select-option>
|
||||
item.label
|
||||
}}</a-select-option>
|
||||
</a-select>
|
||||
<a-radio-group @change="whereChange" v-model:value="where.type">
|
||||
<a-radio-button value="place"> 点位 </a-radio-button>
|
||||
<a-radio-button value="area"> 城区 </a-radio-button>
|
||||
<a-select v-model:value="where.quarter" placeholder="季度" allowClear>
|
||||
<a-select-option value="1">第一季度</a-select-option>
|
||||
<a-select-option value="2">第二季度</a-select-option>
|
||||
<a-select-option value="3">第三季度</a-select-option>
|
||||
<a-select-option value="4">第四季度</a-select-option>
|
||||
</a-select>
|
||||
<a-radio-group @change="whereChange" v-model:value="where.regionLevel">
|
||||
<a-radio-button value="市级"> 市级 </a-radio-button>
|
||||
<a-radio-button value="县级"> 县级 </a-radio-button>
|
||||
</a-radio-group>
|
||||
<a-radio-group @change="whereChange" v-model:value="where.timeSlot">
|
||||
<a-radio-button value="昼">昼</a-radio-button>
|
||||
@@ -25,11 +31,9 @@
|
||||
// import axios from "axios";
|
||||
import { Scene, PointLayer, Popup } from "@antv/l7";
|
||||
// import { DrawControl } from '@antv/l7-draw';
|
||||
import { CityLayer } from "@antv/l7-district";
|
||||
import { GaodeMap } from "@antv/l7-maps";
|
||||
import {
|
||||
getGisBase,
|
||||
getGisArea,
|
||||
getPlaceGis,
|
||||
getColumnOptions,
|
||||
} from "@/api/ecology/noise/function-sound";
|
||||
let scene = null;
|
||||
@@ -41,7 +45,8 @@ export default {
|
||||
yearOptions: [],
|
||||
where: {
|
||||
timeSlot: "昼",
|
||||
type: "area",
|
||||
regionLevel: "市级",
|
||||
quarter: undefined,
|
||||
monitorYear: "选择年份",
|
||||
},
|
||||
};
|
||||
@@ -82,37 +87,39 @@ export default {
|
||||
},
|
||||
setPlaceData() {},
|
||||
whereChange() {
|
||||
if (this.where.type == "place") {
|
||||
getGisBase(this.where).then((res) => {
|
||||
if(scene && pointLayer){
|
||||
scene.removeLayer(pointLayer)
|
||||
}
|
||||
getPlaceGis(this.where).then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
if(cityLayer){
|
||||
cityLayer.destroy()
|
||||
scene.removeLayer(cityLayer)
|
||||
}
|
||||
if(cityLayer){
|
||||
cityLayer.destroy()
|
||||
scene.removeLayer(cityLayer)
|
||||
}
|
||||
pointLayer = new PointLayer({})
|
||||
.source(res.data.data, {
|
||||
parser: {
|
||||
type: "json",
|
||||
x: "lng",
|
||||
y: "lat",
|
||||
x: "placeLng",
|
||||
y: "placeLat",
|
||||
},
|
||||
})
|
||||
.shape("cylinder")
|
||||
.size("leq", function (level) {
|
||||
return [4, 4, level];
|
||||
})
|
||||
.shape('triangle').size(10)
|
||||
// .size("leq", acid (level) {
|
||||
// return [4, 4, level];
|
||||
// })
|
||||
.active(true)
|
||||
.color("leq", (leq) => {
|
||||
const { timeSlot } = this.where;
|
||||
const color =
|
||||
timeSlot == "昼"
|
||||
? leq > 70
|
||||
? "#f5222d"
|
||||
: "#13c2c2"
|
||||
: leq > 65
|
||||
? "#f5222d"
|
||||
: "#13c2c2";
|
||||
return color;
|
||||
.color("leq", () => {
|
||||
// const { timeSlot } = this.where;
|
||||
// const color =
|
||||
// timeSlot == "昼"
|
||||
// ? leq > 70
|
||||
// ? "#f5222d"
|
||||
// : "#13c2c2"
|
||||
// : leq > 65
|
||||
// ? "#f5222d"
|
||||
// : "#13c2c2";
|
||||
return "#13c2c2";
|
||||
})
|
||||
.style({
|
||||
opacity: 1,
|
||||
@@ -124,67 +131,18 @@ export default {
|
||||
})
|
||||
.setLnglat(e.lngLat)
|
||||
.setHTML(
|
||||
`<span>${e.feature.place}: ${e.feature.leq}dB(A)</span>`
|
||||
`<p>点位名称: ${e.feature.placeName}</p><p>点位等级: ${e.feature.regionLevel}</p><p>功能区代码: ${e.feature.functionCode}</p><p>所属路段: ${e.feature.road}</p><p>噪声: ${e.feature.leq}dB(A)</p>`
|
||||
);
|
||||
scene.addPopup(popup);
|
||||
});
|
||||
pointLayer.setData(res.data.data);
|
||||
scene.addLayer(pointLayer);
|
||||
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||
scene.setPitch(48);
|
||||
// scene.setPitch(48);
|
||||
scene.render()
|
||||
}
|
||||
});
|
||||
} else {
|
||||
getGisArea(this.where).then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
if(pointLayer){
|
||||
pointLayer.destroy()
|
||||
scene.removeLayer(pointLayer)
|
||||
}
|
||||
cityLayer = new CityLayer(scene, {
|
||||
data: res.data.data,
|
||||
joinBy: ["adcode", "regionCode"],
|
||||
adcode: ["450000", "450100"],
|
||||
depth: 3,
|
||||
visible: true,
|
||||
label: {
|
||||
field: "NAME_CHN",
|
||||
textAllowOverlap: false,
|
||||
},
|
||||
fill: {
|
||||
color: {
|
||||
field: "leq",
|
||||
values: (leq) => {
|
||||
if(!leq){
|
||||
return
|
||||
}
|
||||
const { timeSlot } = this.where;
|
||||
const color =
|
||||
timeSlot == "昼"
|
||||
? leq > 70
|
||||
? "#f50"
|
||||
: "#2db7f5"
|
||||
: leq > 65
|
||||
? "#f50"
|
||||
: "#2db7f5";
|
||||
return color;
|
||||
},
|
||||
},
|
||||
},
|
||||
popup: {
|
||||
enable: true,
|
||||
triggerEvent: "mousemove",
|
||||
Html: (props) => {
|
||||
return `<span>${props.NAME_CHN}:</span><span>${props.leq + "dB(A)" || "无"}</span>`;
|
||||
},
|
||||
},
|
||||
});
|
||||
scene.setPitch(0);
|
||||
// scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
getAreaData() {},
|
||||
exportMap(){
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
item.label
|
||||
}}</a-select-option>
|
||||
</a-select>
|
||||
<a-radio-group @change="whereChange" v-model:value="where.type">
|
||||
<a-radio-button value="place"> 点位 </a-radio-button>
|
||||
<a-radio-button value="area"> 城区 </a-radio-button>
|
||||
<a-radio-group @change="whereChange" v-model:value="where.regionLevel">
|
||||
<a-radio-button value="市级"> 市级 </a-radio-button>
|
||||
<a-radio-button value="县级"> 县级 </a-radio-button>
|
||||
</a-radio-group>
|
||||
<a-radio-group @change="whereChange" v-model:value="where.timeSlot">
|
||||
<a-radio-button value="昼">昼</a-radio-button>
|
||||
@@ -25,11 +25,9 @@
|
||||
// import axios from "axios";
|
||||
import { Scene, PointLayer, Popup } from "@antv/l7";
|
||||
// import { DrawControl } from '@antv/l7-draw';
|
||||
import { CityLayer } from "@antv/l7-district";
|
||||
import { GaodeMap } from "@antv/l7-maps";
|
||||
import {
|
||||
getGisBase,
|
||||
getGisArea,
|
||||
getColumnOptions,
|
||||
} from "@/api/ecology/noise/road-sound";
|
||||
let scene = null;
|
||||
@@ -41,7 +39,7 @@ export default {
|
||||
yearOptions: [],
|
||||
where: {
|
||||
timeSlot: "昼",
|
||||
type: "area",
|
||||
regionLevel: "市级",
|
||||
monitorYear: "选择年份",
|
||||
},
|
||||
};
|
||||
@@ -82,7 +80,10 @@ export default {
|
||||
},
|
||||
setPlaceData() {},
|
||||
whereChange() {
|
||||
if (this.where.type == "place") {
|
||||
|
||||
if(scene && pointLayer){
|
||||
scene.removeLayer(pointLayer)
|
||||
}
|
||||
getGisBase(this.where).then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
if(cityLayer){
|
||||
@@ -97,10 +98,10 @@ export default {
|
||||
y: "lat",
|
||||
},
|
||||
})
|
||||
.shape("cylinder")
|
||||
.size("leq", function (level) {
|
||||
return [4, 4, level];
|
||||
})
|
||||
.shape('hexagon').size(10)
|
||||
// .size("leq", acid (level) {
|
||||
// return [4, 4, level];
|
||||
// })
|
||||
.active(true)
|
||||
.color("leq", (leq) => {
|
||||
const { timeSlot } = this.where;
|
||||
@@ -124,67 +125,18 @@ export default {
|
||||
})
|
||||
.setLnglat(e.lngLat)
|
||||
.setHTML(
|
||||
`<span>${e.feature.place}: ${e.feature.leq}dB(A)</span>`
|
||||
`<p>点位名称: ${e.feature.place}</p><p>点位等级: ${e.feature.regionLevel}</p><p>所属城区: ${e.feature.area}</p><p>所属路段: ${e.feature.road}</p><p>噪声: ${e.feature.leq}dB(A)</p>`
|
||||
);
|
||||
scene.addPopup(popup);
|
||||
});
|
||||
pointLayer.setData(res.data.data);
|
||||
scene.addLayer(pointLayer);
|
||||
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||
scene.setPitch(48);
|
||||
// scene.setPitch(48);
|
||||
scene.render()
|
||||
}
|
||||
});
|
||||
} else {
|
||||
getGisArea(this.where).then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
if(pointLayer){
|
||||
pointLayer.destroy()
|
||||
scene.removeLayer(pointLayer)
|
||||
}
|
||||
cityLayer = new CityLayer(scene, {
|
||||
data: res.data.data,
|
||||
joinBy: ["adcode", "regionCode"],
|
||||
adcode: ["450000", "450100"],
|
||||
depth: 3,
|
||||
visible: true,
|
||||
label: {
|
||||
field: "NAME_CHN",
|
||||
textAllowOverlap: false,
|
||||
},
|
||||
fill: {
|
||||
color: {
|
||||
field: "leq",
|
||||
values: (leq) => {
|
||||
if(!leq){
|
||||
return
|
||||
}
|
||||
const { timeSlot } = this.where;
|
||||
const color =
|
||||
timeSlot == "昼"
|
||||
? leq > 70
|
||||
? "#f50"
|
||||
: "#2db7f5"
|
||||
: leq > 65
|
||||
? "#f50"
|
||||
: "#2db7f5";
|
||||
return color;
|
||||
},
|
||||
},
|
||||
},
|
||||
popup: {
|
||||
enable: true,
|
||||
triggerEvent: "mousemove",
|
||||
Html: (props) => {
|
||||
return `<span>${props.NAME_CHN}:</span><span>${props.leq + "dB(A)" || "无"}</span>`;
|
||||
},
|
||||
},
|
||||
});
|
||||
scene.setPitch(0);
|
||||
// scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
getAreaData() {},
|
||||
exportMap(){
|
||||
|
||||
171
src/views/visualiz/sound/zone/index.vue
Normal file
171
src/views/visualiz/sound/zone/index.vue
Normal file
@@ -0,0 +1,171 @@
|
||||
<template>
|
||||
<div class="ele-body">
|
||||
<a-card class="ele-card" :bordered="false">
|
||||
<a-space>
|
||||
<a-select @change="whereChange" v-model:value="where.monitorYear">
|
||||
<a-select-option v-for="item in yearOptions" :key="item.value">{{
|
||||
item.label
|
||||
}}</a-select-option>
|
||||
</a-select>
|
||||
<a-radio-group @change="whereChange" v-model:value="where.regionLevel">
|
||||
<a-radio-button value="市级"> 市级 </a-radio-button>
|
||||
<a-radio-button value="县级"> 县级 </a-radio-button>
|
||||
</a-radio-group>
|
||||
<a-radio-group @change="whereChange" v-model:value="where.timeSlot">
|
||||
<a-radio-button value="昼">昼</a-radio-button>
|
||||
<a-radio-button value="夜">夜</a-radio-button>
|
||||
</a-radio-group>
|
||||
<!-- <a-button @click="exportMap">导出</a-button> -->
|
||||
</a-space>
|
||||
</a-card>
|
||||
<div id="map"></div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Scene, PointLayer, Popup } from "@antv/l7";
|
||||
import { GaodeMap } from "@antv/l7-maps";
|
||||
import {
|
||||
getPlaceGis,
|
||||
getColumnOptions,
|
||||
} from "@/api/ecology/noise/zone-sound";
|
||||
let scene = null;
|
||||
let pointLayer = null;
|
||||
let cityLayer = null;
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
yearOptions: [],
|
||||
where: {
|
||||
timeSlot: "昼",
|
||||
regionLevel: "市级",
|
||||
monitorYear: "选择年份",
|
||||
},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
scene = new Scene({
|
||||
id: "map",
|
||||
map: new GaodeMap({
|
||||
style: "light",
|
||||
center: [108.33, 22.84],
|
||||
// pitch: 48.62562,
|
||||
// rotation: -0.76,
|
||||
zoom: 12,
|
||||
}),
|
||||
});
|
||||
|
||||
scene.on("loaded", () => {
|
||||
this.initData();
|
||||
});
|
||||
|
||||
// const control = new DrawControl(scene, {
|
||||
// });
|
||||
},
|
||||
methods: {
|
||||
initData() {
|
||||
getColumnOptions("monitor_year").then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
this.yearOptions = res.data.data.map((item) => {
|
||||
return {
|
||||
label: item,
|
||||
value: item,
|
||||
};
|
||||
});
|
||||
this.where.monitorYear = res.data.data[res.data.data.length - 1];
|
||||
this.whereChange();
|
||||
}
|
||||
});
|
||||
},
|
||||
setPlaceData() {},
|
||||
whereChange() {
|
||||
if(scene && pointLayer){
|
||||
scene.removeLayer(pointLayer)
|
||||
}
|
||||
getPlaceGis(this.where).then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
if(cityLayer){
|
||||
cityLayer.destroy()
|
||||
scene.removeLayer(cityLayer)
|
||||
}
|
||||
pointLayer = new PointLayer({})
|
||||
.source(res.data.data, {
|
||||
parser: {
|
||||
type: "json",
|
||||
x: "placeLng",
|
||||
y: "placeLat",
|
||||
},
|
||||
})
|
||||
.shape('square').size(10)
|
||||
// .size("leq", acid (level) {
|
||||
// return [4, 4, level];
|
||||
// })
|
||||
.active(true)
|
||||
.color("leq", () => {
|
||||
// const { timeSlot } = this.where;
|
||||
// const color =
|
||||
// timeSlot == "昼"
|
||||
// ? leq > 70
|
||||
// ? "#f5222d"
|
||||
// : "#13c2c2"
|
||||
// : leq > 65
|
||||
// ? "#f5222d"
|
||||
// : "#13c2c2";
|
||||
return "#13c2c2";
|
||||
})
|
||||
.style({
|
||||
opacity: 1,
|
||||
});
|
||||
pointLayer.on("mousemove", (e) => {
|
||||
const popup = new Popup({
|
||||
offsets: [0, 0],
|
||||
closeButton: false,
|
||||
})
|
||||
.setLnglat(e.lngLat)
|
||||
.setHTML(
|
||||
`<p>点位名称: ${e.feature.placeName}</p><p>点位等级: ${e.feature.regionLevel}</p><p>网格边长: ${e.feature.gridLength}</p><p>所属路段: ${e.feature.road}</p><p>噪声: ${e.feature.leq}dB(A)</p>`
|
||||
);
|
||||
scene.addPopup(popup);
|
||||
});
|
||||
pointLayer.setData(res.data.data);
|
||||
scene.addLayer(pointLayer);
|
||||
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||
// scene.setPitch(48);
|
||||
scene.render()
|
||||
}
|
||||
});
|
||||
},
|
||||
getAreaData() {},
|
||||
exportMap(){
|
||||
console.log("exportMap");
|
||||
scene.exportMap("png");
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
overflow: hidden;
|
||||
margin: 0;
|
||||
}
|
||||
.ele-body {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
padding: 16px 0;
|
||||
}
|
||||
.ele-card {
|
||||
z-index: 10;
|
||||
margin: 0 16px;
|
||||
display: inline-block;
|
||||
}
|
||||
#map {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -51,9 +51,9 @@
|
||||
<script>
|
||||
// import _ from "lodash";
|
||||
import XLSX from "xlsx";
|
||||
import { pageZoneNoiseUrl, getColumnOptions ,listAllRiver} from "@/api/ecology/river";
|
||||
import { pageZoneNoiseUrl, getColumnOptions } from "@/api/ecology/river";
|
||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||
import moment from "moment";
|
||||
// import moment from "moment";
|
||||
// import utils from "./utils";
|
||||
export default {
|
||||
name: "StatisticRiverIndex",
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
},
|
||||
detail(record) {
|
||||
this.$router.replace({
|
||||
path: "/water/river/function/collect/water/" + record.nationalLevelWaterFunctionAreaBillId
|
||||
path: "/water/river/acid/collect/water/" + record.nationalLevelWaterFunctionAreaBillId
|
||||
})
|
||||
},
|
||||
edit(record) {
|
||||
|
||||
Reference in New Issue
Block a user