This commit is contained in:
wang710356044
2021-11-18 16:41:08 +08:00
parent f58090ad06
commit 5ad38c0b1d
15 changed files with 945 additions and 372 deletions

View File

@@ -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>