Enter
This commit is contained in:
@@ -121,8 +121,10 @@ const tableColumns = [
|
||||
{title: "余氯",dataIndex: "residualChlorine",sorter: true,},
|
||||
{title: "六六六",dataIndex: "c6h6cl6666",sorter: true,},
|
||||
{title: "2,4,6-三氯酚",dataIndex: "c6h3cl3o246",sorter: true,},
|
||||
|
||||
|
||||
//新增
|
||||
{title: "叶绿素(mg/m3)",dataIndex:"chlorophyll",sorter:true,},
|
||||
{title: "透明度(cm)",dataIndex:"transparency",sorter:true,},
|
||||
|
||||
];
|
||||
|
||||
export {tableColumns}
|
||||
@@ -1,30 +1,88 @@
|
||||
<template>
|
||||
<div class="ele-body">
|
||||
<a-card style="width: 100%" :bordered="false">
|
||||
<a-card :bordered="false">
|
||||
<template #title>
|
||||
<a-space>
|
||||
<a-upload
|
||||
:before-upload="importFileCity"
|
||||
:showUploadList="false"
|
||||
accept=".xls,.xlsx,.csv"
|
||||
>
|
||||
<a-button>市级地表水导入</a-button>
|
||||
</a-upload>
|
||||
<a-upload
|
||||
:before-upload="importFileCountyTop"
|
||||
:showUploadList="false"
|
||||
accept=".xls,.xlsx,.csv"
|
||||
>
|
||||
<a-button>县级地表水导入</a-button>
|
||||
</a-upload>
|
||||
<a-upload
|
||||
:before-upload="importFileCountyBottom"
|
||||
:showUploadList="false"
|
||||
accept=".xls,.xlsx,.csv"
|
||||
>
|
||||
<a-button>县级地下水导入</a-button>
|
||||
</a-upload>
|
||||
</a-space>
|
||||
<a-dropdown>
|
||||
<template #overlay>
|
||||
<a-menu>
|
||||
<a-menu-item>
|
||||
<a-upload
|
||||
:before-upload="importUseFileCity"
|
||||
:showUploadList="false"
|
||||
accept=".xls,.xlsx,.csv"
|
||||
>
|
||||
市级在用导入
|
||||
</a-upload>
|
||||
</a-menu-item>
|
||||
<a-menu-item>
|
||||
<a-upload
|
||||
:before-upload="importSpareFileCity"
|
||||
:showUploadList="false"
|
||||
accept=".xls,.xlsx,.csv"
|
||||
>
|
||||
市级备用导入
|
||||
</a-upload>
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
<a-button>
|
||||
市级导入
|
||||
<DownOutlined />
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
|
||||
<a-dropdown>
|
||||
<template #overlay>
|
||||
<a-menu>
|
||||
<a-menu-item>
|
||||
<a-upload
|
||||
:before-upload="importUseFileCountyTop"
|
||||
:showUploadList="false"
|
||||
accept=".xls,.xlsx,.csv,.xlsm"
|
||||
>
|
||||
县级在用导入
|
||||
</a-upload>
|
||||
</a-menu-item>
|
||||
<a-menu-item>
|
||||
<a-upload
|
||||
:before-upload="importSpareFileCountyTop"
|
||||
:showUploadList="false"
|
||||
accept=".xls,.xlsx,.csv"
|
||||
>
|
||||
县级备用导入
|
||||
</a-upload>
|
||||
</a-menu-item>
|
||||
<a-menu-item>
|
||||
<a-upload
|
||||
:before-upload="importFileCountyBottom"
|
||||
:showUploadList="false"
|
||||
accept=".xls,.xlsx,.csv"
|
||||
>
|
||||
县级地下水导入
|
||||
</a-upload>
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
<a-button style="left: 30px">
|
||||
县级导入
|
||||
<DownOutlined />
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
<a-dropdown>
|
||||
<template #overlay>
|
||||
<a-menu @click="importUseFileCity" style="word-spacing:10px;">
|
||||
<a-menu-item> 市级在用导入{{"\xa0"}} <span style="color:#1890FF">模板下载</span> </a-menu-item>
|
||||
<a-menu-item> 市级备用导入{{"\xa0"}} <span style="color:#1890FF">模板下载</span> </a-menu-item>
|
||||
<a-menu-item> 县级在用导入{{"\xa0"}} <span style="color:#1890FF">模板下载</span> </a-menu-item>
|
||||
<a-menu-item> 县级备用导入{{"\xa0"}} <span style="color:#1890FF">模板下载</span> </a-menu-item>
|
||||
<a-menu-item style="word-spacing:3px"> 县级地下水导入{{"\xa0"}} <span style="color:#1890FF">模板下载</span> </a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
<a-button type="primary" style="left: 60px">
|
||||
模板下载
|
||||
<DownOutlined />
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
</template>
|
||||
<a-tabs v-model:activeKey="activeKey">
|
||||
<a-tab-pane tab="饮用水" key="water">
|
||||
@@ -38,147 +96,32 @@
|
||||
<script>
|
||||
import XLSX from "xlsx";
|
||||
import utils from "./utils";
|
||||
import { DownOutlined } from "@ant-design/icons-vue";
|
||||
import { Modal } from "ant-design-vue";
|
||||
import WaterBill from "./water-bill.vue";
|
||||
import moment from "moment";
|
||||
import { saveDrinkingWaterBill } from "@/api/ecology/drinking-water";
|
||||
import {
|
||||
downloadTemplatexls,
|
||||
downloadTemplate,
|
||||
downloadTemplatexlsm,
|
||||
} from "@/utils/excel-util";
|
||||
export default {
|
||||
name: "DrinkWaterCollectIndex",
|
||||
components: {
|
||||
WaterBill,
|
||||
DownOutlined,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeKey: "water",
|
||||
time: moment(),
|
||||
year: new Date().getFullYear(),
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
/* 导入本地excel文件 */
|
||||
importFileCity(file) {
|
||||
const hide = this.$message.loading("导入中..", 0);
|
||||
|
||||
let reader = new FileReader();
|
||||
reader.onload = (e) => {
|
||||
try {
|
||||
let data = new Uint8Array(e.target.result);
|
||||
let workbook = XLSX.read(data, {
|
||||
type: "array",
|
||||
});
|
||||
//0.昼间数据 1.地表水 2.备用水
|
||||
let sheetNames = workbook.SheetNames;
|
||||
// 解析成二维数组
|
||||
let aoa1 = XLSX.utils.sheet_to_json(
|
||||
workbook.Sheets["地表水数据录入表"],
|
||||
{
|
||||
header: 1,
|
||||
}
|
||||
);
|
||||
let aoa2 = XLSX.utils.sheet_to_json(
|
||||
workbook.Sheets["备用水源数据录入表"],
|
||||
{
|
||||
header: 1,
|
||||
}
|
||||
);
|
||||
console.log(sheetNames);
|
||||
const reportDate1 = aoa1[2][0].replace(/[^\d]+/g, "-");
|
||||
const reportDate2 = aoa2[2][0].replace(/[^\d]+/g, "-");
|
||||
|
||||
const drinkingWaterList = aoa1.filter((item) => {
|
||||
return (
|
||||
item.length >= 100 && item[0] && !item[0].includes("点位名称")
|
||||
);
|
||||
});
|
||||
const drinkingWaterList2 = aoa2.filter((item) => {
|
||||
return (
|
||||
item.length >= 100 && item[0] && !item[0].includes("点位名称")
|
||||
);
|
||||
});
|
||||
|
||||
// 解析成对象数组
|
||||
const billName1 = aoa1[0][0] + aoa1[1][0];
|
||||
const billData1 = utils.toCityUseTopWaterObjData(drinkingWaterList);
|
||||
const billName2 = aoa2[0][0] + aoa2[1][0];
|
||||
const billData2 =
|
||||
utils.toCitySpareTopWaterObjData(drinkingWaterList2);
|
||||
|
||||
if (
|
||||
(!billData1 || billData1.length == 0) &&
|
||||
(!billData2 || billData2.length == 0)
|
||||
) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "找不到数据",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const tasks = [];
|
||||
if (billData1.length > 0) {
|
||||
tasks.push(
|
||||
saveDrinkingWaterBill({
|
||||
reportTime: new Date(reportDate1).getTime(),
|
||||
billName: billName1,
|
||||
regionLevel: "市级",
|
||||
waterSourceType: 1,
|
||||
drinkingWaterType: 1,
|
||||
drinkingWaterList: billData1,
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
if (billData2.length > 0) {
|
||||
tasks.push(
|
||||
saveDrinkingWaterBill({
|
||||
reportTime: new Date(reportDate2).getTime(),
|
||||
billName: billName2,
|
||||
regionLevel: "市级",
|
||||
waterSourceType: 1,
|
||||
drinkingWaterType: 2,
|
||||
drinkingWaterList: billData2,
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
// 上传到服务器
|
||||
|
||||
Promise.all(tasks)
|
||||
.then((res) => {
|
||||
// const sum = res
|
||||
if (res[0].data.code == 0) {
|
||||
Modal.success({
|
||||
title: "导入成功",
|
||||
content: `成功导入${
|
||||
billData1.length + billData2.length
|
||||
}条数据`,
|
||||
});
|
||||
this.$refs.water && this.$refs.water.reload();
|
||||
this.$refs.place && this.$refs.place.reload();
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
hide();
|
||||
});
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: error.message,
|
||||
});
|
||||
}
|
||||
// console.log(billData1);
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
|
||||
return false;
|
||||
},
|
||||
importFileCountyTop(file) {
|
||||
/* 导入市级在用地表水文件 */
|
||||
importUseFileCity(file) {
|
||||
const hide = this.$message.loading("导入中..", 0);
|
||||
|
||||
let reader = new FileReader();
|
||||
@@ -192,13 +135,193 @@ export default {
|
||||
//0.昼间数据 1.夜间数据 2.其他信息
|
||||
// let sheetNames = workbook.SheetNames;
|
||||
// 解析成二维数组
|
||||
let aoa1 = XLSX.utils.sheet_to_json(workbook.Sheets["地表水数据录入表"], {
|
||||
header: 1,
|
||||
let aoa1 = XLSX.utils.sheet_to_json(
|
||||
workbook.Sheets["地表水数据录入表"],
|
||||
{
|
||||
header: 1,
|
||||
}
|
||||
);
|
||||
|
||||
const drinkingWaterList = aoa1.filter((item) => {
|
||||
return (
|
||||
item.length >= 80 && item[0] && !item[0].includes("点位名称")
|
||||
);
|
||||
});
|
||||
|
||||
const reportDate = aoa1[1][0].replace(/[^\d]+/g, "-");
|
||||
// 解析成对象数组
|
||||
const billName1 = aoa1[0][0] + aoa1[1][0];
|
||||
const billData1 = utils.toCityUseTopWaterObjData(drinkingWaterList);
|
||||
|
||||
if (!billData1 || billData1.length == 0) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "找不到可用数据",
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (billData1.length > 0) {
|
||||
// 上传到服务器
|
||||
saveDrinkingWaterBill({
|
||||
billName: billName1,
|
||||
regionLevel: "市级",
|
||||
waterSourceType: 1,
|
||||
drinkingWaterType: 1,
|
||||
drinkingWaterList: billData1,
|
||||
// reportTime: new Date(`${this.year}-01-01 00:00:00`).getTime(),
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
Modal.success({
|
||||
title: "导入成功",
|
||||
content: `成功导入${billData1.length}条数据`,
|
||||
});
|
||||
this.$refs.water && this.$refs.water.reload();
|
||||
} else {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
hide();
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: error.message,
|
||||
});
|
||||
console.log(error);
|
||||
}
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
return false;
|
||||
},
|
||||
// 市级备用地表水
|
||||
importSpareFileCity(file) {
|
||||
const hide = this.$message.loading("导入中..", 0);
|
||||
|
||||
let reader = new FileReader();
|
||||
|
||||
reader.onload = (e) => {
|
||||
try {
|
||||
let data = new Uint8Array(e.target.result);
|
||||
let workbook = XLSX.read(data, {
|
||||
type: "array",
|
||||
});
|
||||
//0.昼间数据 1.夜间数据 2.其他信息
|
||||
// let sheetNames = workbook.SheetNames;
|
||||
// 解析成二维数组
|
||||
let aoa1 = XLSX.utils.sheet_to_json(
|
||||
workbook.Sheets["备用水源数据录入表"],
|
||||
{
|
||||
header: 1,
|
||||
}
|
||||
);
|
||||
|
||||
const drinkingWaterList = aoa1.filter((item) => {
|
||||
return item.length >= 100 && item[0] && item[0] != "点位名称";
|
||||
return (
|
||||
item.length >= 60 && item[0] && !item[0].includes("点位名称")
|
||||
);
|
||||
});
|
||||
|
||||
// 解析成对象数组
|
||||
const billName1 = aoa1[0][0] + aoa1[1][0];
|
||||
const billData1 = utils.toCitySpareTopWaterObjData(drinkingWaterList);
|
||||
|
||||
if (!billData1 || billData1.length == 0) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "找不到可用数据",
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (billData1.length > 0) {
|
||||
// 上传到服务器
|
||||
saveDrinkingWaterBill({
|
||||
billName: billName1,
|
||||
regionLevel: "市级",
|
||||
waterSourceType: 1,
|
||||
drinkingWaterType: 2,
|
||||
drinkingWaterList: billData1,
|
||||
// reportTime: new Date(`${this.year}-01-01 00:00:00`).getTime(),
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
Modal.success({
|
||||
title: "导入成功",
|
||||
content: `成功导入${billData1.length}条数据`,
|
||||
});
|
||||
this.$refs.water && this.$refs.water.reload();
|
||||
} else {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错1",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错2",
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
hide();
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: error.message,
|
||||
});
|
||||
console.log(error);
|
||||
}
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
return false;
|
||||
},
|
||||
//县级在用地表水
|
||||
importUseFileCountyTop(file) {
|
||||
const hide = this.$message.loading("导入中..", 0);
|
||||
|
||||
let reader = new FileReader();
|
||||
|
||||
reader.onload = (e) => {
|
||||
try {
|
||||
let data = new Uint8Array(e.target.result);
|
||||
let workbook = XLSX.read(data, {
|
||||
type: "array",
|
||||
});
|
||||
//0.昼间数据 1.夜间数据 2.其他信息
|
||||
// let sheetNames = workbook.SheetNames;
|
||||
// 解析成二维数组
|
||||
let aoa1 = XLSX.utils.sheet_to_json(
|
||||
workbook.Sheets["地表水数据录入表"],
|
||||
{
|
||||
header: 1,
|
||||
}
|
||||
);
|
||||
|
||||
const drinkingWaterList = aoa1.filter((item) => {
|
||||
return (
|
||||
item.length >= 62 && item[0] && !item[0].includes("点位名称")
|
||||
);
|
||||
});
|
||||
|
||||
// 解析成对象数组
|
||||
@@ -218,93 +341,12 @@ export default {
|
||||
if (billData1.length > 0) {
|
||||
// 上传到服务器
|
||||
saveDrinkingWaterBill({
|
||||
reportTime: new Date(reportDate).getTime(),
|
||||
billName: billName1,
|
||||
regionLevel: "县级",
|
||||
waterSourceType: 1,
|
||||
drinkingWaterType: 2,
|
||||
drinkingWaterList: billData1,
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
Modal.success({
|
||||
title: "导入成功",
|
||||
content: `成功导入${billData1.length}条数据`,
|
||||
});
|
||||
this.$refs.water && this.$refs.water.reload();
|
||||
} else {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
hide();
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: error.message,
|
||||
});
|
||||
}
|
||||
// console.log(billData1);
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
return false;
|
||||
},
|
||||
importFileCountyBottom(file) {
|
||||
const hide = this.$message.loading("导入中..", 0);
|
||||
|
||||
let reader = new FileReader();
|
||||
|
||||
reader.onload = (e) => {
|
||||
try {
|
||||
let data = new Uint8Array(e.target.result);
|
||||
let workbook = XLSX.read(data, {
|
||||
type: "array",
|
||||
});
|
||||
//0.昼间数据 1.夜间数据 2.其他信息
|
||||
// let sheetNames = workbook.SheetNames;
|
||||
// 解析成二维数组
|
||||
let aoa1 = XLSX.utils.sheet_to_json(workbook.Sheets["县级地下水录入版"], {
|
||||
header: 1,
|
||||
});
|
||||
|
||||
const drinkingWaterList = aoa1.filter((item) => {
|
||||
return item.length >= 80 && item[0] && !item[0].includes("县域名称");
|
||||
});
|
||||
|
||||
// 解析成对象数组
|
||||
const billName1 = aoa1[0][1];
|
||||
const billData1 = utils.toCountyUseBottomWaterObjData(drinkingWaterList);
|
||||
|
||||
if (!billData1 || billData1.length == 0) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "找不到可用数据",
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (billData1.length > 0) {
|
||||
// 上传到服务器
|
||||
saveDrinkingWaterBill({
|
||||
billName: billName1,
|
||||
regionLevel: "县级",
|
||||
waterSourceType: 2,
|
||||
drinkingWaterType: 2,
|
||||
drinkingWaterType: 1,
|
||||
drinkingWaterList: billData1,
|
||||
// reportTime: new Date(`${this.year}-01-01 00:00:00`).getTime(),
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
@@ -337,15 +379,215 @@ export default {
|
||||
content: error.message,
|
||||
});
|
||||
console.log(error);
|
||||
|
||||
}
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
return false;
|
||||
},
|
||||
//县级备用地表水
|
||||
importSpareFileCountyTop(file) {
|
||||
const hide = this.$message.loading("导入中..", 0);
|
||||
|
||||
let reader = new FileReader();
|
||||
|
||||
reader.onload = (e) => {
|
||||
try {
|
||||
let data = new Uint8Array(e.target.result);
|
||||
let workbook = XLSX.read(data, {
|
||||
type: "array",
|
||||
});
|
||||
//0.昼间数据 1.夜间数据 2.其他信息
|
||||
// let sheetNames = workbook.SheetNames;
|
||||
// 解析成二维数组
|
||||
let aoa1 = XLSX.utils.sheet_to_json(
|
||||
workbook.Sheets["地表水数据录入表"],
|
||||
{
|
||||
header: 1,
|
||||
}
|
||||
);
|
||||
|
||||
const drinkingWaterList = aoa1.filter((item) => {
|
||||
return (
|
||||
item.length >= 80 && item[0] && !item[0].includes("点位名称")
|
||||
);
|
||||
});
|
||||
|
||||
// 解析成对象数组
|
||||
const billName1 = aoa1[0][0];
|
||||
const billData1 = utils.toCountyUseTopWaterObjData(drinkingWaterList);
|
||||
|
||||
if (!billData1 || billData1.length == 0) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "找不到可用数据",
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (billData1.length > 0) {
|
||||
// 上传到服务器
|
||||
saveDrinkingWaterBill({
|
||||
billName: billName1,
|
||||
regionLevel: "县级",
|
||||
waterSourceType: 1,
|
||||
drinkingWaterType: 2,
|
||||
drinkingWaterList: billData1,
|
||||
// reportTime: new Date(`${this.year}-01-01 00:00:00`).getTime(),
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
Modal.success({
|
||||
title: "导入成功",
|
||||
content: `成功导入${billData1.length}条数据`,
|
||||
});
|
||||
this.$refs.water && this.$refs.water.reload();
|
||||
} else {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
hide();
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: error.message,
|
||||
});
|
||||
console.log(error);
|
||||
}
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
return false;
|
||||
},
|
||||
//县级地下水
|
||||
importFileCountyBottom(file) {
|
||||
const hide = this.$message.loading("导入中..", 0);
|
||||
|
||||
let reader = new FileReader();
|
||||
|
||||
reader.onload = (e) => {
|
||||
try {
|
||||
let data = new Uint8Array(e.target.result);
|
||||
let workbook = XLSX.read(data, {
|
||||
type: "array",
|
||||
});
|
||||
//0.昼间数据 1.夜间数据 2.其他信息
|
||||
// let sheetNames = workbook.SheetNames;
|
||||
// 解析成二维数组
|
||||
let aoa1 = XLSX.utils.sheet_to_json(
|
||||
workbook.Sheets["县级地下水录入版"],
|
||||
{
|
||||
header: 1,
|
||||
}
|
||||
);
|
||||
|
||||
const drinkingWaterList = aoa1.filter((item) => {
|
||||
return (
|
||||
item.length >= 80 && item[0] && !item[0].includes("县域名称")
|
||||
);
|
||||
});
|
||||
|
||||
// 解析成对象数组
|
||||
const billName1 = aoa1[0][1];
|
||||
const billData1 =
|
||||
utils.toCountyUseBottomWaterObjData(drinkingWaterList);
|
||||
|
||||
if (!billData1 || billData1.length == 0) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "找不到可用数据",
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (billData1.length > 0) {
|
||||
// 上传到服务器
|
||||
saveDrinkingWaterBill({
|
||||
billName: billName1,
|
||||
regionLevel: "县级",
|
||||
waterSourceType: 2,
|
||||
drinkingWaterType: 1,
|
||||
drinkingWaterList: billData1,
|
||||
// reportTime: new Date(`${this.year}-01-01 00:00:00`).getTime(),
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
Modal.success({
|
||||
title: "导入成功",
|
||||
content: `成功导入${billData1.length}条数据`,
|
||||
});
|
||||
this.$refs.water && this.$refs.water.reload();
|
||||
} else {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: "数据上传出错",
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
hide();
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
hide();
|
||||
Modal.error({
|
||||
title: "导入失败",
|
||||
content: error.message,
|
||||
});
|
||||
console.log(error);
|
||||
}
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
return false;
|
||||
},
|
||||
//下载文件
|
||||
download(filename, fileType) {
|
||||
if (fileType == "xls") {
|
||||
downloadTemplatexls(filename);
|
||||
} else if (fileType == "xlsm") {
|
||||
downloadTemplatexlsm(filename);
|
||||
} else if (fileType == "xlsx") {
|
||||
downloadTemplate(filename);
|
||||
}
|
||||
},
|
||||
|
||||
// //下载市级在用地表水文件
|
||||
// downloadCityUseFile(){
|
||||
// downloadTemplate();
|
||||
// },
|
||||
// //下载市级在用地表水文件
|
||||
// downloadCityUseFile(){
|
||||
// downloadTemplate();
|
||||
// },
|
||||
// //下载市级在用地表水文件
|
||||
// downloadCityUseFile(){
|
||||
// downloadTemplate();
|
||||
// },
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
||||
</style>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import moment from "moment";
|
||||
export default {
|
||||
// 市级在用地表水
|
||||
// 市级在用地表水 已可用
|
||||
toCityUseTopWaterObjData(excelData) {
|
||||
return excelData.map(item => {
|
||||
const row = {
|
||||
@@ -125,7 +125,7 @@ export default {
|
||||
})
|
||||
|
||||
},
|
||||
// 市级备用地表水
|
||||
// 市级备用地表水 待修改
|
||||
toCitySpareTopWaterObjData(excelData) {
|
||||
return excelData.map(item => {
|
||||
const row = {
|
||||
@@ -250,8 +250,133 @@ export default {
|
||||
})
|
||||
|
||||
},
|
||||
// 县级在用地表水
|
||||
// 县级在用地表水 待修改
|
||||
toCountyUseTopWaterObjData(excelData) {
|
||||
return excelData.map(item => {
|
||||
const row = {
|
||||
regionLevel: "县级",
|
||||
drinkingWaterType: 1, // 1在用、2备用
|
||||
waterSourceType: 1, // 1地表水、2地下水
|
||||
place: item[0],
|
||||
waterTemperature: item[1],
|
||||
ph: item[2],
|
||||
dissolvedOxygen: item[3],
|
||||
permanganateIndex: item[4],
|
||||
cod: item[5],
|
||||
fiveDayBod: item[6],
|
||||
ammonia: item[7],
|
||||
totalPhosphorus: item[8],
|
||||
totalNitrogen: item[9],
|
||||
cu: item[10],
|
||||
zn: item[11],
|
||||
fluoride: item[12],
|
||||
se: item[13],
|
||||
as: item[14],
|
||||
hg: item[15],
|
||||
cd: item[16],
|
||||
cr: item[17],
|
||||
pb: item[18],
|
||||
cyanide: item[19],
|
||||
volatilePhenol: item[20],
|
||||
petro: item[21],
|
||||
anionicSurfactant: item[22],
|
||||
sulfide: item[23],
|
||||
fecalColiforms: item[24],
|
||||
sulfate: item[25],
|
||||
chloride: item[26],
|
||||
nitrateNitrogen: item[27],
|
||||
fe: item[28],
|
||||
mn: item[29],
|
||||
chcl3: item[30],
|
||||
ccl4: item[31],
|
||||
chbr3: item[32],
|
||||
ch2cl2: item[33],
|
||||
c2h4cl2: item[34],
|
||||
c3h5clO: item[35],
|
||||
c2h3cl: item[36],
|
||||
c2h2cl211: item[37],
|
||||
c2h2cl212: item[38],
|
||||
c2hcl3: item[39],
|
||||
c2cl4: item[40],
|
||||
c4h5cl: item[41],
|
||||
c4cl6: item[42],
|
||||
c8h8: item[43],
|
||||
ch2o: item[44],
|
||||
c2h4o: item[45],
|
||||
c3h4o: item[46],
|
||||
c2hcl3o: item[47],
|
||||
c6h6: item[48],
|
||||
c7h8: item[49],
|
||||
c8h10Ethylbenzene: item[50],
|
||||
c8h10Dimethylbenzene: item[51],
|
||||
c9h12: item[52],
|
||||
c6h5cl: item[53],
|
||||
c6h4cl212: item[54],
|
||||
c6h4cl214: item[55],
|
||||
c6h3cl3: item[56],
|
||||
c6h2cl4: item[57],
|
||||
c6cl6: item[58],
|
||||
c6h5no2: item[59],
|
||||
c6h4n2o4: item[60],
|
||||
c7h6n2o4: item[61],
|
||||
c7h5o6n3: item[62],
|
||||
c6h4clno2: item[63],
|
||||
c6h3cln2o4: item[64],
|
||||
c6h4cl2o: item[65],
|
||||
c6h3cl3o: item[66],
|
||||
c6hcl5o: item[67],
|
||||
c6h7n: item[68],
|
||||
c6h4nh22: item[69],
|
||||
c3h5no: item[70],
|
||||
c3h3n: item[71],
|
||||
c16h22o4: item[72],
|
||||
c16h35o4p: item[73],
|
||||
n2h4h2o: item[74],
|
||||
c8h20pd: item[75],
|
||||
c5h5n: item[76],
|
||||
turpentine: item[77],
|
||||
c6h3n3o7: item[78],
|
||||
butylXanthogenAcid: item[79],
|
||||
activeChlorine: item[80],
|
||||
c14h9cl5: item[81],
|
||||
c6h6cl6: item[82],
|
||||
c10h5cl7O: item[83],
|
||||
c10h14no5ps: item[84],
|
||||
c8h10o5nps: item[85],
|
||||
c10h19o6ps2: item[86],
|
||||
c5h12no3ps2: item[87],
|
||||
c4h7cl2o4p: item[88],
|
||||
c4h8cl3o4p: item[89],
|
||||
c8h19o3ps2: item[90],
|
||||
c8cl4n2: item[91],
|
||||
c12h11no2: item[92],
|
||||
c22h19br2no3: item[93],
|
||||
c8h14cln5: item[94],
|
||||
c20h12: item[95],
|
||||
ch3hg: item[96],
|
||||
c12h10Xclx: item[97],
|
||||
c49h74n10o12: item[98],
|
||||
p4: item[99],
|
||||
mo: item[100],
|
||||
co: item[101],
|
||||
be: item[102],
|
||||
b: item[103],
|
||||
sb: item[104],
|
||||
ni: item[105],
|
||||
ba: item[106],
|
||||
v: item[107],
|
||||
ti: item[108],
|
||||
tl: item[109],
|
||||
phosphate: item[110],
|
||||
transparency: item[111],
|
||||
chlorophyll: item[112],
|
||||
}
|
||||
return row;
|
||||
})
|
||||
|
||||
},
|
||||
//县级备用地表水 待修改
|
||||
toCountySpareTopWaterObjData(excelData) {
|
||||
return excelData.map(item => {
|
||||
const row = {
|
||||
regionLevel: "县级",
|
||||
@@ -375,15 +500,15 @@ export default {
|
||||
})
|
||||
|
||||
},
|
||||
// 县级在用地下水
|
||||
// 县级在用地下水 已可用
|
||||
toCountyUseBottomWaterObjData(excelData) {
|
||||
return excelData.map(item => {
|
||||
const row = {
|
||||
regionLevel: "县级",
|
||||
drinkingWaterType: 2, // 1在用、2备用
|
||||
drinkingWaterType: 1, // 1在用、2备用
|
||||
county: item[0],
|
||||
place: item[1],
|
||||
waterSourceType: (item[2] && item[2].includes("地下")) ? 2 : 1, // 1地表水、2地下水
|
||||
waterSourceType: 2, // 1地表水、2地下水
|
||||
monitorTime: moment(item[3], "YYYY年M月D日H:m").valueOf(),
|
||||
waterTemperature: item[4],
|
||||
chroma: item[5],
|
||||
|
||||
@@ -45,7 +45,8 @@
|
||||
<template #billName="{ text, record }">
|
||||
<div class="editable-cell">
|
||||
<div v-if="editableData[record.drinkingWaterBillId]" class="editable-cell-input-wrapper">
|
||||
<a-input v-model:value="editableData[record.drinkingWaterBillId].billName" @pressEnter="save(record)" />
|
||||
<a-input v-model:value="editableData[record.drinkingWaterBillId].billName"
|
||||
@pressEnter="save(record)" />
|
||||
<check-outlined class="editable-cell-icon-check" @click="save(record)" />
|
||||
</div>
|
||||
<div v-else class="editable-cell-text-wrapper">
|
||||
@@ -57,7 +58,7 @@
|
||||
<template #reportTime="{ text, record }">
|
||||
<div class="editable-cell">
|
||||
<div v-if="editableData[record.drinkingWaterBillId]" class="editable-cell-input-wrapper">
|
||||
<a-date-picker v-model:value="editableData[record.drinkingWaterBillId].reportTime"></a-date-picker>
|
||||
<a-date-picker v-model:value="editableData[record.drinkingWaterBillId].reportTime " @pressEnter="save(record)"></a-date-picker>
|
||||
<!-- <a-input v-model:value="editableData[record.drinkingWaterBillId].reportTime" @pressEnter="save(record)" /> -->
|
||||
<check-outlined class="editable-cell-icon-check" @click="save(record)" />
|
||||
</div>
|
||||
@@ -77,7 +78,8 @@
|
||||
<template #action="{ record }">
|
||||
<a-space>
|
||||
<a-button @click="detail(record)" shape="round" size="small">查看</a-button>
|
||||
<span v-hasPermi="['ecology:sound:verify']">
|
||||
<!-- <span v-hasPermi="['ecology:sound:verify']"> -->
|
||||
<span>
|
||||
<a-popconfirm v-if="record.checked != 1" :title="`审核通过后将无法修改,确认?`" ok-text="Yes" cancel-text="No"
|
||||
@confirm="verify(record,1)">
|
||||
<a-button type="primary" shape="round" size="small">审核</a-button>
|
||||
@@ -191,14 +193,14 @@
|
||||
text
|
||||
}) => this.$util.toDateString(text)
|
||||
},
|
||||
{
|
||||
title: '导入时间',
|
||||
dataIndex: 'createTime',
|
||||
sorter: true,
|
||||
customRender: ({
|
||||
text
|
||||
}) => this.$util.toDateString(text)
|
||||
},
|
||||
// {
|
||||
// title: '最后更新时间',
|
||||
// dataIndex: 'updateTime',
|
||||
// sorter: true,
|
||||
// customRender: ({
|
||||
// text
|
||||
// }) => this.$util.toDateString(text)
|
||||
// },
|
||||
{
|
||||
title: '审核状态',
|
||||
dataIndex: 'checked',
|
||||
@@ -206,13 +208,13 @@
|
||||
slots: {
|
||||
customRender: 'checked',
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
{
|
||||
title: '创建人',
|
||||
dataIndex: 'userName',
|
||||
dataIndex: 'userId',
|
||||
sorter: true,
|
||||
|
||||
customRender: ({ text }) => (text == 1 ? "admin" : ""),
|
||||
},
|
||||
// {
|
||||
// title: '更新时间',
|
||||
@@ -233,7 +235,10 @@
|
||||
}
|
||||
],
|
||||
// 表格搜索条件
|
||||
where: {},
|
||||
where: {
|
||||
// sort: "createTime",
|
||||
// order: "desc"
|
||||
},
|
||||
reportTimeScope: [],
|
||||
// 表格选中数据
|
||||
selectionList: [],
|
||||
@@ -270,8 +275,7 @@
|
||||
},
|
||||
edit(record) {
|
||||
this.editableData[record.drinkingWaterBillId] = _.cloneDeep(record);
|
||||
this.editableData[record.drinkingWaterBillId].reportTime = moment(this.editableData[record.drinkingWaterBillId]
|
||||
.reportTime)
|
||||
this.editableData[record.drinkingWaterBillId].reportTime = moment(this.editableData[record.drinkingWaterBillId].reportTime);
|
||||
},
|
||||
verify(record,checked) {
|
||||
const hide = this.$message.loading('请求中..', 0);
|
||||
@@ -298,11 +302,17 @@
|
||||
})
|
||||
},
|
||||
save(record) {
|
||||
|
||||
let {
|
||||
drinkingWaterBillId,
|
||||
billName,
|
||||
reportTime
|
||||
reportTime,
|
||||
regionLevel,
|
||||
createTime,
|
||||
checked,
|
||||
waterSourceType,
|
||||
drinkingWaterType,
|
||||
userId
|
||||
|
||||
} = this.editableData[record.drinkingWaterBillId];
|
||||
if (!drinkingWaterBillId || !reportTime) {
|
||||
this.$message.error('请填写完整信息再提交')
|
||||
@@ -314,12 +324,18 @@
|
||||
updateDrinkingWaterBill({
|
||||
drinkingWaterBillId,
|
||||
billName,
|
||||
reportTime
|
||||
reportTime,
|
||||
regionLevel,
|
||||
createTime,
|
||||
checked,
|
||||
waterSourceType,
|
||||
drinkingWaterType,
|
||||
userId
|
||||
}).then(res => {
|
||||
if (res.data.code == 0) {
|
||||
this.$message.success(res.data.msg);
|
||||
record.billName = billName;
|
||||
record.reportTime = reportTime
|
||||
record.reportTime = reportTime;
|
||||
} else {
|
||||
this.$message.error(res.data.msg);
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ export default {
|
||||
},
|
||||
{
|
||||
title: "创建人",
|
||||
dataIndex: "username",
|
||||
dataIndex: "userName",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<a-tab-pane key="place" tab="点位信息">
|
||||
<place></place>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="standard" tab="标准限值">
|
||||
<!-- <a-tab-pane key="standard" tab="标准限值">
|
||||
<leq-level></leq-level>
|
||||
</a-tab-pane>
|
||||
</a-tab-pane> -->
|
||||
|
||||
</a-tabs>
|
||||
</a-card>
|
||||
@@ -20,19 +20,19 @@
|
||||
*
|
||||
*
|
||||
*/
|
||||
import LeqLevel from "./surface-water"
|
||||
// import LeqLevel from "./surface-water"
|
||||
import Place from "./place"
|
||||
|
||||
|
||||
export default {
|
||||
name: 'DrinkingWaterDictIndex',
|
||||
components: {
|
||||
LeqLevel,
|
||||
// LeqLevel,
|
||||
Place
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeKey: 'standard'
|
||||
activeKey: 'place'
|
||||
};
|
||||
|
||||
},
|
||||
|
||||
@@ -1,13 +1,40 @@
|
||||
<template>
|
||||
<div class="ele-body">
|
||||
<a-card :bordered="false">
|
||||
<a-form
|
||||
:model="where"
|
||||
:wrapper-col="{ md: { span: 18 }, sm: { span: 24 } }"
|
||||
>
|
||||
<a-row>
|
||||
<a-col :lg="6" :md="12" :sm="24" :xs="24">
|
||||
<a-form-item label="年份:">
|
||||
<a-select v-model:value="where.year" allow-clear show-search>
|
||||
<a-select-option
|
||||
v-for="(item) in yearOptions"
|
||||
:key="item.value"
|
||||
>{{ item.label }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="6" :md="12" :sm="24" :xs="24">
|
||||
<a-space>
|
||||
<a-button type="primary" @click="reload">查询</a-button>
|
||||
<a-button @click="reset">重置</a-button>
|
||||
<a-button @click="exportData" type="primary">按年份导出</a-button>
|
||||
</a-space>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
|
||||
</a-row>
|
||||
</a-form>
|
||||
<a-modal
|
||||
v-model:visible="showEdit"
|
||||
:title="form.roadNoisePlaceId !== undefined ? '修改' : '添加'"
|
||||
v-model:visible="showNYear"
|
||||
:title="'批量复制'"
|
||||
:confirm-loading="loading"
|
||||
:width="800"
|
||||
:body-style="{ paddingBottom: '8px' }"
|
||||
@ok="save"
|
||||
@ok="copyBatch"
|
||||
>
|
||||
<a-form
|
||||
ref="form"
|
||||
@@ -16,53 +43,71 @@
|
||||
:label-col="{ md: { span: 6 }, sm: { span: 24 } }"
|
||||
:wrapper-col="{ md: { span: 18 }, sm: { span: 24 } }"
|
||||
>
|
||||
<a-form-item label="测点名称" name="placeName">
|
||||
<a-input v-model:value="form.placeName" placeholder="请输入测点名称" allow-clear />
|
||||
<a-form-item label="新年份" name="nYear">
|
||||
<a-input-number id="inputNumber" v-model:value="nYear" :min="1970" :max="2050" />
|
||||
</a-form-item>
|
||||
<a-form-item label="测点经度" name="placeLng">
|
||||
<a-input v-model:value="form.placeLng" placeholder="请输入测点经度" allow-clear />
|
||||
</a-form>
|
||||
</a-modal>
|
||||
<a-modal
|
||||
v-model:visible="showEdit"
|
||||
:title="form.drinkingWaterDictId !== undefined ? '修改' : '添加'"
|
||||
:confirm-loading="loading"
|
||||
:width="800"
|
||||
:body-style="{ paddingBottom: '8px' }"
|
||||
@ok="save"
|
||||
|
||||
>
|
||||
<a-form
|
||||
ref="form"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
:label-col="{ md: { span: 6 }, sm: { span: 24 } }"
|
||||
:wrapper-col="{ md: { span: 18 }, sm: { span: 24 } }"
|
||||
>
|
||||
<a-form-item label="年份" name="year">
|
||||
<a-input-number v-model:value="form.year" :min="1970" :max="2050" />
|
||||
</a-form-item>
|
||||
<a-form-item label="测点纬度" name="placeLat">
|
||||
<a-input v-model:value="form.placeLat" placeholder="请输入测点纬度" allow-clear />
|
||||
<a-form-item label="省" name="province">
|
||||
<a-input v-model:value="form.province" placeholder="请输入省名称" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="机动车车道数" name="motorway">
|
||||
<a-input type="number" v-model:value="form.motorway" placeholder="请输入机动车车道数" allow-clear />
|
||||
<a-form-item label="省份代码" name="provinceCode">
|
||||
<a-input v-model:value="form.provinceCode" placeholder="请输入省份代码" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="车道类别" name="motorwayType">
|
||||
<a-input v-model:value="form.motorwayType" placeholder="请输入车道类别" allow-clear />
|
||||
<a-form-item label="市" name="city">
|
||||
<a-input v-model:value="form.city" placeholder="请输入市名称" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="道路等级" name="motorwayLevel">
|
||||
<a-input v-model:value="form.motorwayLevel" placeholder="请输入道路等级" allow-clear />
|
||||
<a-form-item label="城市代码" name="cityCode">
|
||||
<a-input v-model:value="form.cityCode" placeholder="请输入城市代码" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="测点参照物" name="refObj">
|
||||
<a-input v-model:value="form.refObj" placeholder="请输入测点参照物" allow-clear />
|
||||
<a-form-item label="重点城市区分" name="keyCity">
|
||||
<a-input v-model:value="form.keyCity" placeholder="请输入重点城市区分" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="道路覆盖人口(万人)" name="people">
|
||||
<a-input v-model:value="form.people" placeholder="请输入道路覆盖人口(万人)" allow-clear />
|
||||
<a-form-item label="城市方位" name="cityOrientation">
|
||||
<a-input v-model:value="form.cityOrientation" placeholder="请输入城市方位" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="监测站名" name="station">
|
||||
<a-input v-model:value="form.station" placeholder="请输入监测站名" allow-clear />
|
||||
<a-form-item label="断面名称" name="sectionName">
|
||||
<a-input v-model:value="form.sectionName" placeholder="请输入断面名称" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="监测仪器型号" name="monitorInstrumentModel">
|
||||
<a-input v-model:value="form.monitorInstrumentModel" placeholder="请输入测监测仪器型号" allow-clear />
|
||||
<a-form-item label="断面代码" name="sectionCode">
|
||||
<a-input v-model:value="form.sectionCode" placeholder="请输入断面代码" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="监测仪器编号" name="monitorInstrumentCode">
|
||||
<a-input v-model:value="form.monitorInstrumentCode" placeholder="请输入监测仪器编号" allow-clear />
|
||||
<a-form-item label="水源名称" name="sourceWaterName">
|
||||
<a-input v-model:value="form.sourceWaterName" placeholder="请输入水源名称" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="监测前校准值" name="beforeMonitorValue">
|
||||
<a-input v-model:value="form.beforeMonitorValue" placeholder="请输入监测前校准值" allow-clear />
|
||||
<a-form-item label="所属水系" name="subordinateWater">
|
||||
<a-input v-model:value="form.subordinateWater" placeholder="请输入所属水系" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="监测后校准值" name="afterMonitorValue">
|
||||
<a-input v-model:value="form.afterMonitorValue" placeholder="请输入监测后校准值" allow-clear />
|
||||
<a-form-item label="水源地性质" name="waterSourceProperty">
|
||||
<a-input v-model:value="form.waterSourceProperty" placeholder="请输入水源地性质" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="声校准器测量声压值" name="soundPressureValue">
|
||||
<a-input v-model:value="form.soundPressureValue" placeholder="请输入声校准器测量声压值" allow-clear />
|
||||
<a-form-item label="经度(°)" name="longitude">
|
||||
<a-input v-model:value="form.longitude" placeholder="请输入经度(°)" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="声校准仪器型号" name="soundInstrumentModel">
|
||||
<a-input v-model:value="form.soundInstrumentModel" placeholder="请输入声校准仪器型号" allow-clear />
|
||||
<a-form-item label="纬度(°)" name="latitude">
|
||||
<a-input v-model:value="form.latitude" placeholder="请输入纬度(°)" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="声校准仪器编号" name="soundInstrumentCode">
|
||||
<a-input v-model:value="form.soundInstrumentCode" placeholder="请输入声校准仪器编号" allow-clear />
|
||||
<a-form-item label="饮用水类型" name="drinkingWaterType">
|
||||
<a-input v-model:value="form.drinkingWaterType" placeholder="请输入饮用水类型,1在用、2备用" allow-clear />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
@@ -70,15 +115,29 @@
|
||||
<ele-pro-table
|
||||
v-model:selection="selectionList"
|
||||
ref="table"
|
||||
row-key="roadNoisePlaceId"
|
||||
row-key="drinkingWaterDictId"
|
||||
:datasource="url"
|
||||
:columns="columns"
|
||||
:where="where"
|
||||
:scroll="{ x: 'max-content' }"
|
||||
@done="(d) => (data = d.data)"
|
||||
>
|
||||
<template #toolbar>
|
||||
<a-space>
|
||||
<a-button @click="openEdit" type="primary">新增</a-button>
|
||||
<a-dropdown>
|
||||
<template #overlay>
|
||||
<a-menu @click="setCYear">
|
||||
<a-menu-item v-for="item in yearOptions" :key="item.value">
|
||||
{{ item.label }}
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
<a-button>
|
||||
批量复制
|
||||
<DownOutlined/>
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
<a-popconfirm
|
||||
:disabled="selectionList.length == 0"
|
||||
:title="`确认删除${selectionList.length}条数据吗?`"
|
||||
@@ -94,6 +153,7 @@
|
||||
>删除
|
||||
</a-button>
|
||||
</a-popconfirm>
|
||||
|
||||
</a-space>
|
||||
</template>
|
||||
<template #action="{ record }">
|
||||
@@ -126,98 +186,104 @@
|
||||
<script>
|
||||
// import _ from "lodash";
|
||||
import {
|
||||
listAllUrl,
|
||||
savePlace,
|
||||
updatePlace,
|
||||
removePlace,
|
||||
removeBatchPlace
|
||||
} from "@/api/ecology/noise/road-noise-place";
|
||||
pageDictUrl,
|
||||
saveDrinkingWaterDict,
|
||||
removeDrinkingWaterDict,
|
||||
removeBatchDrinkingWaterDict,
|
||||
updateDrinkingWaterDict,
|
||||
// verifyDrinkingWaterDict,
|
||||
// getDrinkingWaterDict
|
||||
getColumnOptions,
|
||||
copyBatchPlace
|
||||
} from "@/api/ecology/drinking-water-dict";
|
||||
// import moment from "moment";
|
||||
import {DownOutlined} from '@ant-design/icons-vue';
|
||||
import XLSX from "xlsx";
|
||||
export default {
|
||||
name: "RoadNoisePlace",
|
||||
components: {},
|
||||
name: "DrinkWaterDict",
|
||||
components: {DownOutlined},
|
||||
data() {
|
||||
return {
|
||||
data: [],
|
||||
// 表格数据接口
|
||||
url: listAllUrl,
|
||||
url: pageDictUrl,
|
||||
selection: [],
|
||||
// 表格列配置
|
||||
columns: [
|
||||
{
|
||||
title: "测点名称",
|
||||
dataIndex: "placeName",
|
||||
{title: "年份",
|
||||
dataIndex: "year",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "测点经度",
|
||||
dataIndex: "placeLng",
|
||||
title: "省",
|
||||
dataIndex: "province",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "测点纬度",
|
||||
dataIndex: "placeLat",
|
||||
title: "省份代码",
|
||||
dataIndex: "provinceCode",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "机动车车道数",
|
||||
dataIndex: "motorway",
|
||||
title: "市",
|
||||
dataIndex: "city",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "车道类别",
|
||||
dataIndex: "motorwayType",
|
||||
title: "城市代码",
|
||||
dataIndex: "cityCode",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "道路等级",
|
||||
dataIndex: "motorwayLevel",
|
||||
title: "重点城市区分",
|
||||
dataIndex: "keyCity",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "测点参照物",
|
||||
dataIndex: "refObj",
|
||||
title: "城市方位",
|
||||
dataIndex: "cityOrientation",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "道路覆盖人口(万人)",
|
||||
dataIndex: "people",
|
||||
title: "断面名称",
|
||||
dataIndex: "sectionName",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "监测站名",
|
||||
dataIndex: "station",
|
||||
title: "断面代码",
|
||||
dataIndex: "sectionCode",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "监测仪器型号",
|
||||
dataIndex: "monitorInstrumentModel",
|
||||
title: "水源名称",
|
||||
dataIndex: "sourceWaterName",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "监测仪器编号",
|
||||
dataIndex: "monitorInstrumentCode",
|
||||
title: "所属水系",
|
||||
dataIndex: "subordinateWater",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "监测前校准值",
|
||||
dataIndex: "beforeMonitorValue",
|
||||
title: "水源地性质",
|
||||
dataIndex: "waterSourceProperty",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "声校准器测量声压值",
|
||||
dataIndex: "soundPressureValue",
|
||||
title: "经度(°)",
|
||||
dataIndex: "longitude",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "声校准仪器型号",
|
||||
dataIndex: "soundInstrumentModel",
|
||||
title: "纬度(°)",
|
||||
dataIndex: "latitude",
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "声校准仪器编号",
|
||||
dataIndex: "soundInstrumentCode",
|
||||
title: "饮用水类型",
|
||||
dataIndex: "drinkingWaterType",
|
||||
sorter: true,
|
||||
customRender: ({text})=> text == 1?"在用":"备用"
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
@@ -232,7 +298,9 @@ export default {
|
||||
],
|
||||
|
||||
// 表格搜索条件
|
||||
where: {},
|
||||
where: {
|
||||
sort: "sectionCode",
|
||||
},
|
||||
// 表格选中数据
|
||||
selectionList: [],
|
||||
// 是否显示编辑弹窗
|
||||
@@ -241,13 +309,19 @@ export default {
|
||||
form: {},
|
||||
loading: false,
|
||||
rules: {
|
||||
placeName:[{required: true,message: '请选择测点名称'}],
|
||||
placeLng: [{required: true,message: '请输入测点经度',},],
|
||||
placeLat: [{required: true,message: '请输入测点纬度',},],
|
||||
year: [{required: true, message: '请输入年份'}],
|
||||
sourceWaterName:[{required: true,message: '请选择水源名称'}],
|
||||
longitude: [{required: true,message: '请输入经度',},],
|
||||
latitude: [{required: true,message: '请输入纬度',},],
|
||||
},
|
||||
yearOptions: [],
|
||||
showNYear:false,
|
||||
cYear: undefined,
|
||||
nYear:undefined,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.getOptions();
|
||||
},
|
||||
methods: {
|
||||
/* 刷新表格 */
|
||||
@@ -275,8 +349,8 @@ export default {
|
||||
await this.$refs.form.validate();
|
||||
const hide = this.$message.loading('请求中..', 0);
|
||||
const form = this.form;
|
||||
if (form.roadNoisePlaceId) {
|
||||
updatePlace(form)
|
||||
if (form.drinkingWaterDictId) {
|
||||
updateDrinkingWaterDict(form)
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
this.showEdit = false;
|
||||
@@ -293,7 +367,7 @@ export default {
|
||||
hide();
|
||||
});
|
||||
} else {
|
||||
savePlace(form)
|
||||
saveDrinkingWaterDict(form)
|
||||
.then((res) => {
|
||||
if (res.data.code == 0) {
|
||||
this.showEdit = false;
|
||||
@@ -314,7 +388,7 @@ export default {
|
||||
/* 删除单个 */
|
||||
remove(row) {
|
||||
const hide = this.$message.loading('请求中..', 0);
|
||||
removePlace(row.roadNoisePlaceId).then((res) => {
|
||||
removeDrinkingWaterDict(row.drinkingWaterDictId).then((res) => {
|
||||
hide();
|
||||
if (res.data.code === 0) {
|
||||
this.$message.success(res.data.msg);
|
||||
@@ -330,8 +404,8 @@ export default {
|
||||
/* 批量删除 */
|
||||
removeBatch() {
|
||||
const hide = this.$message.loading('请求中..', 0);
|
||||
const ids = this.selectionList.map((item) => item.roadNoisePlaceId);
|
||||
removeBatchPlace(ids).then((res) => {
|
||||
const ids = this.selectionList.map((item) => item.drinkingWaterDictId);
|
||||
removeBatchDrinkingWaterDict(ids).then((res) => {
|
||||
if (res.data.code === 0) {
|
||||
this.$message.success(res.data.msg);
|
||||
this.reload();
|
||||
@@ -343,8 +417,56 @@ export default {
|
||||
}).finally(() => {
|
||||
hide();
|
||||
})
|
||||
},
|
||||
|
||||
getOptions(){
|
||||
getColumnOptions("year").then(res => {
|
||||
console.log(res)
|
||||
if (res.data.code == 0) {
|
||||
this.yearOptions = res.data.data.map(item => {
|
||||
return {
|
||||
label: item,
|
||||
value: item
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
setCYear(e){
|
||||
this.cYear = e.key;
|
||||
this.showNYear = true;
|
||||
},
|
||||
copyBatch(){
|
||||
const hide = this.$message.loading('请求中..', 0);
|
||||
copyBatchPlace({cyear:Number(this.cYear),nyear:this.nYear}).then(res=>{
|
||||
if (res.data.code === 0) {
|
||||
this.$message.success(res.data.msg);
|
||||
this.reload();
|
||||
this.getOptions();
|
||||
} else {
|
||||
this.$message.error(res.data.msg);
|
||||
}
|
||||
this.showNYear = false;
|
||||
}).catch(e => {
|
||||
this.$message.error(e.message);
|
||||
}).finally(() => {
|
||||
hide();
|
||||
})
|
||||
},
|
||||
exportData(){
|
||||
const columns = this.columns.filter(item=>item.dataIndex);
|
||||
const arr = [];
|
||||
const th = columns.map((item) => item.title);
|
||||
arr.push(th);
|
||||
this.data.forEach((d) => {
|
||||
const td = columns.map((item) => d[item.dataIndex]);
|
||||
arr.push(td);
|
||||
});
|
||||
console.log(arr);
|
||||
let sheet = XLSX.utils.aoa_to_sheet(arr);
|
||||
console.log(arr);
|
||||
this.$util.exportSheet(XLSX, sheet, new Date().getTime().toString());
|
||||
}
|
||||
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user