Commit 9ba20148 authored by 王亚晖's avatar 王亚晖
parents 5c6148d3 14e0abfd
<template> <template>
<div class="contentBlock"> <div class="contentBlock">
<div class="contentBlockInn"> <div class="contentBlockInn" id="printBlock">
<el-card class="card-contianer"> <el-card class="card-contianer">
<table <table
cellpadding="0" cellpadding="0"
...@@ -70,25 +70,26 @@ ...@@ -70,25 +70,26 @@
</table> </table>
</td> </td>
<th rowspan="3"> <th rowspan="3">
<div> <div class="printHidden">
<div class="btngrounp"> <div class="btngrounp">
<el-button type="primary" @click="postTransferAreaFun" <el-button type="primary" @click="postTransferAreaFun"
>查询</el-button >查询</el-button
><el-button ><el-button
type="primary" type="primary"
@click="exportTableToExcel" v-print="printObj"
style="margin: 0 0 0 5px" style="margin: 0 0 0 10px"
>打印</el-button >打印</el-button
><el-button >
<!-- <el-button
type="primary" type="primary"
@click="exportTableToExcel" @click="exportTableToExcel"
style="margin: 0 0 0 5px" style="margin: 0 0 0 5px"
>打印预览</el-button >打印预览</el-button
> > -->
<el-button <el-button
type="primary" type="primary"
@click="exportTableToExcel" @click="exportTableToExcel"
style="margin: 0 0 0 5px" style="margin: 0 0 0 10px"
>导出</el-button >导出</el-button
> >
</div> </div>
...@@ -135,6 +136,71 @@ ...@@ -135,6 +136,71 @@
</el-table> </el-table>
</el-card> </el-card>
</div> </div>
<table
cellpadding="0"
cellspacing="1"
class="exlBlock"
id="exlBlock"
style="background-color: #99bbe8"
>
<tr>
<td colspan="3">年度:{{ enertyInfo.supplyYear }}</td>
<td colspan="2">
类型:{{ enertyInfo.nature == -1 ? "全部" : ""
}}{{ enertyInfo.nature == 0 ? "民用" : ""
}}{{ enertyInfo.nature == 1 ? "公建" : "" }}
</td>
<td colspan="3">
节能方式:{{ enertyInfo.energyType == -1 ? "全部" : ""
}}{{ enertyInfo.energyType == 1 ? "一步节能" : ""
}}{{ enertyInfo.energyType == 2 ? "二步节能" : ""
}}{{ enertyInfo.energyType == 3 ? "三步节能" : ""
}}{{ enertyInfo.energyType == 4 ? "四步节能" : "" }}
</td>
<td colspan="6">
供热站:<span v-for="item in areaName" :key="item"
>{{ item }}&nbsp;&nbsp;&nbsp;&nbsp;</span
>
</td>
</tr>
<tr>
<td rowspan="2">序号</td>
<td rowspan="2">区域名称</td>
<td rowspan="2">换热站名称</td>
<td rowspan="2">年度</td>
<td colspan="2">居民(应供收费面积)</td>
<td colspan="2">大公建(应供建筑面积)</td>
<td colspan="2">小公建(应供建筑面积)</td>
<td rowspan="2">应供建筑面积</td>
<td rowspan="2">实供建筑面积C</td>
<td rowspan="2">实供收费面积D</td>
<td rowspan="2">计算面积</td>
</tr>
<tr>
<td>收费面积</td>
<td>停暖面积</td>
<td>实供建筑面积</td>
<td>停暖建筑面积</td>
<td>实供建筑面积</td>
<td>停暖建筑面积</td>
</tr>
<tr v-for="(item, index) in tableData" :key="index">
<td>{{ index + 1 }}</td>
<td>{{ item.jurisdictionName }}</td>
<td>{{ item.stationName }}</td>
<td>{{ item.supplyYear }}</td>
<td>{{ item.realCostCiviled }}</td>
<td>{{ item.realCostSPB }}</td>
<td>{{ item.realBuildBPB }}</td>
<td>{{ item.stopBuildBPB }}</td>
<td>{{ item.realBuildSPB }}</td>
<td>{{ item.stopBuildSPB }}</td>
<td>{{ item.supplyArea }}</td>
<td>{{ item.realBuild }}</td>
<td>{{ item.realCost }}</td>
<td>{{ item.calculateArea }}</td>
</tr>
</table>
</div> </div>
</template> </template>
<script setup> <script setup>
...@@ -146,11 +212,13 @@ import { ElMessage } from "element-plus"; ...@@ -146,11 +212,13 @@ import { ElMessage } from "element-plus";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
import XLSX from "xlsx-js-style"; import XLSX from "xlsx-js-style";
import { postTransferArea } from "../../api/report"; import { postTransferArea } from "../../api/report";
import print from "vue3-print-nb";
const radioTitle = ref("供热站"); const radioTitle = ref("供热站");
const options = reactive([]); const options = reactive([]);
const enterpriseId = ref(null); const enterpriseId = ref(null);
const checkboxList = ref([]); const checkboxList = ref([]);
const tableData = ref([]); const tableData = ref([]);
const areaName = ref([]);
const yearList = [ const yearList = [
"2016-2017", "2016-2017",
"2017-2018", "2017-2018",
...@@ -178,7 +246,127 @@ const enertyInfo = reactive({ ...@@ -178,7 +246,127 @@ const enertyInfo = reactive({
energyType: -1, energyType: -1,
supplyYear: "2024-2025", supplyYear: "2024-2025",
}); });
const vPrint = print;
const printObj = {
id: "printBlock",
popTitle: "明日预测报表",
extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>',
zIndex: 20002,
};
function exportTableToExcel() {
const workbook = XLSX.utils.book_new();
var ws = XLSX.utils.table_to_sheet(document.getElementById("exlBlock"));
const border = {
top: {
style: "thin",
},
bottom: {
style: "thin",
},
left: {
style: "thin",
},
right: {
style: "thin",
},
};
const range = XLSX.utils.decode_range(ws["!ref"]);
const cellList = Object.keys(ws).filter((item) => item.indexOf("!") < 0);
for (let row = range.s.r; row <= range.e.r; row++) {
for (let col = range.s.c; col <= range.e.c; col++) {
const cell = XLSX.utils.encode_cell({ r: row, c: col });
if (cellList.indexOf(cell) < 0) {
ws[cell] = { t: "", v: "", s: { border } };
} else {
ws[cell].s = { border };
}
}
}
for (const key in ws) {
if (
key === "A1" ||
key === "A2" ||
key === "B1" ||
key === "C1" ||
key === "D1" ||
key === "E1" ||
key === "F1" ||
key === "G1" ||
key === "H1" ||
key === "I1" ||
key === "J1" ||
key === "K1" ||
key === "L1" ||
key === "M1" ||
key === "N1" ||
ws[key].v === "序号" ||
ws[key].v === "区域名称" ||
ws[key].v === "换热站名称" ||
ws[key].v === "年度" ||
ws[key].v === "居民(应供收费面积)" ||
ws[key].v === "大公建(应供建筑面积)" ||
ws[key].v === "小公建(应供建筑面积)" ||
ws[key].v === "收费面积" ||
ws[key].v === "停暖面积" ||
ws[key].v === "实供建筑面积" ||
ws[key].v === "停暖建筑面积" ||
ws[key].v === "应供建筑面积" ||
ws[key].v === "实供建筑面积C" ||
ws[key].v === "实供收费面积D" ||
ws[key].v === "计算面积"
) {
ws[key].s = {
alignment: {
horizontal: "center",
vertical: "center",
},
border: {
bottom: {
color: "#000000",
style: "thin",
},
left: {
color: "#000000",
style: "thin",
},
right: {
color: "#000000",
style: "thin",
},
top: {
color: "#000000",
style: "thin",
},
},
fill: {
fgColor: { rgb: "0097d5fd" },
},
font: {
bold: true,
family: 2,
size: 12,
},
};
}
}
ws["!cols"] = [{ wch: 5 }];
XLSX.utils.sheet_add_aoa(ws, [], {
origin: "A1",
});
XLSX.utils.book_append_sheet(workbook, ws, "面积统计报表");
const excelBuffer = XLSX.write(workbook, { bookType: "xlsx", type: "array" });
const dataBlob = new Blob([excelBuffer], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8",
});
const downloadUrl = URL.createObjectURL(dataBlob);
saveAs(dataBlob, "面积统计报表.xlsx");
ElMessage.success("导出成功!请稍后。。。");
}
//根据权限初始化单选列表 //根据权限初始化单选列表
function initRadioList() { function initRadioList() {
var result = store.getters.getEnterprise(); var result = store.getters.getEnterprise();
...@@ -219,7 +407,15 @@ function initRadioList() { ...@@ -219,7 +407,15 @@ function initRadioList() {
} }
function postTransferAreaFun() { function postTransferAreaFun() {
console.log(enertyInfo); areaName.value.length = 0;
enertyInfo.jurisdictionIds.forEach((item) => {
options.forEach((item1) => {
if (item1.value == item) {
console.log(item1.lable);
areaName.value.push(item1.lable);
}
});
});
var date = new Date(); var date = new Date();
let supplyYearSend = ref(); let supplyYearSend = ref();
if (date.getMonth() + 1 < 7) { if (date.getMonth() + 1 < 7) {
...@@ -310,4 +506,20 @@ table.botList td { ...@@ -310,4 +506,20 @@ table.botList td {
text-align: left; text-align: left;
font-weight: bolder; font-weight: bolder;
} }
.exlBlock {
display: none;
}
@media print {
.printHidden {
display: none;
}
@page {
size: auto;
margin: 3mm;
}
body,
html {
height: auto !important;
}
}
</style> </style>
\ No newline at end of file
<template> <template>
<div class="contentBlock"> <div class="contentBlock">
<div class="contentBlockInn"> <div class="contentBlockInn" id="printBlock">
<el-card class="card-contianer"> <el-card class="card-contianer">
<table <table
cellpadding="0" cellpadding="0"
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
type="primary" type="primary"
style="min-width: 70px" style="min-width: 70px"
@click="postHeatForecastFun" @click="postHeatForecastFun"
class="printHidden"
>历史查询</el-button >历史查询</el-button
> >
</th> </th>
...@@ -51,6 +52,7 @@ ...@@ -51,6 +52,7 @@
<el-button <el-button
type="primary" type="primary"
style="min-width: 70px" style="min-width: 70px"
class="printHidden"
@click="postPrintHeatForecastFun" @click="postPrintHeatForecastFun"
>打印查询</el-button >打印查询</el-button
> >
...@@ -213,9 +215,19 @@ ...@@ -213,9 +215,19 @@
</tr> </tr>
<tr> <tr>
<th>时间</th> <th>时间</th>
<td colspan="5">{{ dataTime.createBillTime ? dataTime.createBillTime : "-" }}</td> <td colspan="5">
<td>{{ dataTime.datePrediction ? dataTime.datePrediction : "-" }}</td> {{ dataTime.createBillTime ? dataTime.createBillTime : "-" }}
<td>{{ dataTime.degreeDatePrediction ? dataTime.degreeDatePrediction : "-" }}</td> </td>
<td>
{{ dataTime.datePrediction ? dataTime.datePrediction : "-" }}
</td>
<td>
{{
dataTime.degreeDatePrediction
? dataTime.degreeDatePrediction
: "-"
}}
</td>
</tr> </tr>
</table> </table>
<table <table
...@@ -231,18 +243,19 @@ ...@@ -231,18 +243,19 @@
</tr> </tr>
</table> </table>
<div> <div>
<div class="btngrounp"> <div class="btngrounp printHidden">
<el-button <el-button
type="primary" type="primary"
@click="sendClick" v-print="printObj"
style="margin: 15px 0 0 0" style="margin: 15px 0 0 0"
>打印</el-button >打印</el-button
><el-button >
<!-- <el-button
type="primary" type="primary"
@click="exportTableToExcel" @click="exportTableToExcel"
style="margin: 15px 0 0 10px" style="margin: 15px 0 0 10px"
>打印预览</el-button >打印预览</el-button
> -->
<el-button <el-button
type="primary" type="primary"
@click="exportTableToExcel" @click="exportTableToExcel"
...@@ -251,19 +264,191 @@ ...@@ -251,19 +264,191 @@
> >
<el-button <el-button
type="primary" type="primary"
@click="exportTableToExcel"
style="margin: 15px 0 0 10px" style="margin: 15px 0 0 10px"
>导出PDF</el-button >导出PDF</el-button
> >
<router-link to="/RealAnalysis"><el-button <router-link to="/RealAnalysis"
type="primary" ><el-button type="primary" style="margin: 15px 0 0 10px"
style="margin: 15px 0 0 10px" >实时分析</el-button
>实时分析</el-button ></router-link
></router-link> >
</div> </div>
</div> </div>
</el-card> </el-card>
</div> </div>
<table
cellpadding="0"
cellspacing="3"
class="exlBlock"
id="exlBlock"
style="background-color: #ff0"
>
<tr>
<td colspan="15">
记录时间:{{
enertyInfo.queryTime
}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打印时间:{{
enertyInfo.printTime
}}
</td>
</tr>
<tr>
<td colspan="15">
天气状况:{{
weather.weatherCondition ? weather.weatherCondition : "-"
}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;风力:{{
weather.wind ? weather.wind : "-"
}}
</td>
</tr>
<tr>
<th rowspan="6">00:00-24:00<br />数据分析</th>
<th>白天</th>
<th>01:00</th>
<th>02:00</th>
<th>03:00</th>
<th>04:00</th>
<th>05:00</th>
<th>06:00</th>
<th>07:00</th>
<th>08:00</th>
<th>09:00</th>
<th>10:00</th>
<th>11:00</th>
<th>12:00</th>
<th>制表编号</th>
</tr>
<tr class="gc">
<td>室外预测值(℃)</td>
<td>{{ temp.temp1 ? temp.temp1 : "-" }}</td>
<td>{{ temp.temp2 ? temp.temp2 : "-" }}</td>
<td>{{ temp.temp3 ? temp.temp3 : "-" }}</td>
<td>{{ temp.temp4 ? temp.temp4 : "-" }}</td>
<td>{{ temp.temp5 ? temp.temp5 : "-" }}</td>
<td>{{ temp.temp6 ? temp.temp6 : "-" }}</td>
<td>{{ temp.temp7 ? temp.temp7 : "-" }}</td>
<td>{{ temp.temp8 ? temp.temp8 : "-" }}</td>
<td>{{ temp.temp9 ? temp.temp9 : "-" }}</td>
<td>{{ temp.temp10 ? temp.temp10 : "-" }}</td>
<td>{{ temp.temp11 ? temp.temp11 : "-" }}</td>
<td>{{ temp.temp12 ? temp.temp12 : "-" }}</td>
<td>-</td>
</tr>
<tr class="gc">
<td>室外体感预测值(℃)</td>
<td>{{ predTemp.temp1 ? predTemp.temp1 : "-" }}</td>
<td>{{ predTemp.temp2 ? predTemp.temp2 : "-" }}</td>
<td>{{ predTemp.temp3 ? predTemp.temp3 : "-" }}</td>
<td>{{ predTemp.temp4 ? predTemp.temp4 : "-" }}</td>
<td>{{ predTemp.temp5 ? predTemp.temp5 : "-" }}</td>
<td>{{ predTemp.temp6 ? predTemp.temp6 : "-" }}</td>
<td>{{ predTemp.temp7 ? predTemp.temp7 : "-" }}</td>
<td>{{ predTemp.temp8 ? predTemp.temp8 : "-" }}</td>
<td>{{ predTemp.temp9 ? predTemp.temp9 : "-" }}</td>
<td>{{ predTemp.temp10 ? predTemp.temp10 : "-" }}</td>
<td>{{ predTemp.temp11 ? predTemp.temp11 : "-" }}</td>
<td>{{ predTemp.temp12 ? predTemp.temp12 : "-" }}</td>
<td>-</td>
</tr>
<tr>
<th>夜间</th>
<th>13:00</th>
<th>14:00</th>
<th>15:00</th>
<th>16:00</th>
<th>17:00</th>
<th>18:00</th>
<th>19:00</th>
<th>20:00</th>
<th>21:00</th>
<th>22:00</th>
<th>23:00</th>
<th>24:00</th>
<th>
<div>预测室外</div>
<div>平均温度</div>
</th>
</tr>
<tr class="gc">
<td>室外预测值(℃)</td>
<td>{{ temp.temp13 ? temp.temp13 : "-" }}</td>
<td>{{ temp.temp14 ? temp.temp14 : "-" }}</td>
<td>{{ temp.temp15 ? temp.temp15 : "-" }}</td>
<td>{{ temp.temp16 ? temp.temp16 : "-" }}</td>
<td>{{ temp.temp17 ? temp.temp17 : "-" }}</td>
<td>{{ temp.temp18 ? temp.temp18 : "-" }}</td>
<td>{{ temp.temp19 ? temp.temp19 : "-" }}</td>
<td>{{ temp.temp20 ? temp.temp20 : "-" }}</td>
<td>{{ temp.temp21 ? temp.temp21 : "-" }}</td>
<td>{{ temp.temp22 ? temp.temp22 : "-" }}</td>
<td>{{ temp.temp23 ? temp.temp23 : "-" }}</td>
<td>{{ temp.temp24 ? temp.temp24 : "-" }}</td>
<td style="background-color: #ffffff">
{{ temp.avgTemp ? temp.avgTemp : "-" }}
</td>
</tr>
<tr class="gc">
<td>室外体感预测值(℃)</td>
<td>{{ predTemp.temp13 ? predTemp.temp13 : "-" }}</td>
<td>{{ predTemp.temp14 ? predTemp.temp14 : "-" }}</td>
<td>{{ predTemp.temp15 ? predTemp.temp15 : "-" }}</td>
<td>{{ predTemp.temp16 ? predTemp.temp16 : "-" }}</td>
<td>{{ predTemp.temp17 ? predTemp.temp17 : "-" }}</td>
<td>{{ predTemp.temp18 ? predTemp.temp18 : "-" }}</td>
<td>{{ predTemp.temp19 ? predTemp.temp19 : "-" }}</td>
<td>{{ predTemp.temp20 ? predTemp.temp20 : "-" }}</td>
<td>{{ predTemp.temp21 ? predTemp.temp21 : "-" }}</td>
<td>{{ predTemp.temp22 ? predTemp.temp22 : "-" }}</td>
<td>{{ predTemp.temp23 ? predTemp.temp23 : "-" }}</td>
<td>{{ predTemp.temp24 ? predTemp.temp24 : "-" }}</td>
<td style="background-color: #ffffff">
{{ predTemp.avgTemp ? predTemp.avgTemp : "-" }}
</td>
</tr>
<tr>
<th colspan="15">后一天热量(万吉焦)</th>
</tr>
<tr>
<th>地点</th>
<th colspan="2">00:00-04:00</th>
<th colspan="2">04:00-08:00</th>
<th colspan="2">08:00-12:00</th>
<th colspan="2">12:00-16:00</th>
<th colspan="2">16:00-20:00</th>
<th colspan="2">20:00-24:00</th>
<th colspan="2">小计</th>
</tr>
<tr v-for="item in dataList" :key="item">
<th>{{ item.name }}</th>
<td colspan="2">{{ item.part1 }}</td>
<td colspan="2">{{ item.part2 }}</td>
<td colspan="2">{{ item.part3 }}</td>
<td colspan="2">{{ item.part4 }}</td>
<td colspan="2">{{ item.part5 }}</td>
<td colspan="2">{{ item.part6 }}</td>
<td colspan="2">{{ item.total }}</td>
</tr>
<tr>
<th>时间</th>
<td colspan="10">
{{ dataTime.createBillTime ? dataTime.createBillTime : "-" }}
</td>
<td colspan="2">
{{ dataTime.datePrediction ? dataTime.datePrediction : "-" }}
</td>
<td colspan="2">
{{
dataTime.degreeDatePrediction ? dataTime.degreeDatePrediction : "-"
}}
</td>
</tr>
<tr>
<td colspan="5">制表:</td>
<td colspan="5">确认:</td>
<td colspan="5">领导:</td>
</tr>
</table>
</div> </div>
</template> </template>
<script setup> <script setup>
...@@ -274,6 +459,7 @@ import { ElMessage } from "element-plus"; ...@@ -274,6 +459,7 @@ import { ElMessage } from "element-plus";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
import XLSX from "xlsx-js-style"; import XLSX from "xlsx-js-style";
import { postHeatForecast, postPrintHeatForecast } from "../../api/report"; import { postHeatForecast, postPrintHeatForecast } from "../../api/report";
import print from "vue3-print-nb";
const temp = ref([]); //24小时室外预测值 const temp = ref([]); //24小时室外预测值
const weather = ref([]); //当日气象信息 const weather = ref([]); //当日气象信息
const predTemp = ref([]); //24小时室外体感预测值 const predTemp = ref([]); //24小时室外体感预测值
...@@ -283,6 +469,162 @@ const enertyInfo = reactive({ ...@@ -283,6 +469,162 @@ const enertyInfo = reactive({
printTime: null, printTime: null,
queryTime: "2024-1-1 09:00:00", queryTime: "2024-1-1 09:00:00",
}); });
const vPrint = print;
const printObj = {
id: "printBlock",
popTitle: "明日预测报表",
extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>',
zIndex: 20002,
};
function exportTableToExcel() {
const workbook = XLSX.utils.book_new();
var ws = XLSX.utils.table_to_sheet(document.getElementById("exlBlock"));
const border = {
top: {
style: "thin",
},
bottom: {
style: "thin",
},
left: {
style: "thin",
},
right: {
style: "thin",
},
};
const range = XLSX.utils.decode_range(ws["!ref"]);
const cellList = Object.keys(ws).filter((item) => item.indexOf("!") < 0);
for (let row = range.s.r; row <= range.e.r; row++) {
for (let col = range.s.c; col <= range.e.c; col++) {
const cell = XLSX.utils.encode_cell({ r: row, c: col });
if (cellList.indexOf(cell) < 0) {
ws[cell] = { t: "", v: "", s: { border } };
} else {
ws[cell].s = { border };
}
}
}
for (const key in ws) {
if (
key === "A1" ||
key === "A2" ||
key === "A2" ||
key === "A3" ||
key === "O2" ||
key === "O3" ||
key === "O4" ||
key === "O5" ||
key === "O6" ||
ws[key].v === "白天" ||
ws[key].v === "01:00" ||
ws[key].v === "02:00" ||
ws[key].v === "03:00" ||
ws[key].v === "04:00" ||
ws[key].v === "05:00" ||
ws[key].v === "06:00" ||
ws[key].v === "07:00" ||
ws[key].v === "08:00" ||
ws[key].v === "09:00" ||
ws[key].v === "10:00" ||
ws[key].v === "11:00" ||
ws[key].v === "12:00" ||
ws[key].v === "13:00" ||
ws[key].v === "14:00" ||
ws[key].v === "15:00" ||
ws[key].v === "16:00" ||
ws[key].v === "17:00" ||
ws[key].v === "18:00" ||
ws[key].v === "19:00" ||
ws[key].v === "20:00" ||
ws[key].v === "21:00" ||
ws[key].v === "22:00" ||
ws[key].v === "23:00" ||
ws[key].v === "24:00" ||
ws[key].v === "室外预测值(℃)" ||
ws[key].v === "室外体感预测值(℃)" ||
ws[key].v === "夜间" ||
ws[key].v === "室外预测值(℃)" ||
ws[key].v === "室外体感预测值(℃)" ||
ws[key].v === "00:00-04:00" ||
ws[key].v === "04:00-08:00" ||
ws[key].v === "08:00-12:00" ||
ws[key].v === "12:00-16:00" ||
ws[key].v === "16:00-20:00" ||
ws[key].v === "20:00-24:00" ||
ws[key].v === "地点" ||
ws[key].v === "后一天热量(万吉焦)" ||
ws[key].v === "小计" ||
ws[key].v === "时间"
) {
ws[key].s = {
alignment: {
horizontal: "center",
vertical: "center",
},
border: {
bottom: {
color: "#000000",
style: "thin",
},
left: {
color: "#000000",
style: "thin",
},
right: {
color: "#000000",
style: "thin",
},
top: {
color: "#000000",
style: "thin",
},
},
fill: {
fgColor: { rgb: "0097d5fd" },
},
font: {
bold: true,
family: 2,
size: 12,
},
};
}
}
ws["!cols"] = [
{ wch: 20 },
{ wch: 25 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 30 },
];
XLSX.utils.sheet_add_aoa(ws, [], {
origin: "A1",
});
XLSX.utils.book_append_sheet(workbook, ws, "明日预测报表");
const excelBuffer = XLSX.write(workbook, { bookType: "xlsx", type: "array" });
const dataBlob = new Blob([excelBuffer], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8",
});
const downloadUrl = URL.createObjectURL(dataBlob);
saveAs(dataBlob, "明日预测报表.xlsx");
ElMessage.success("导出成功!请稍后。。。");
}
function timeFun() { function timeFun() {
var date = new Date(); var date = new Date();
var year = date.getFullYear(); var year = date.getFullYear();
...@@ -330,7 +672,7 @@ function timeFun() { ...@@ -330,7 +672,7 @@ function timeFun() {
} }
function postHeatForecastFun() { function postHeatForecastFun() {
if(enertyInfo.queryTime == null) { if (enertyInfo.queryTime == null) {
ElMessage.error("请选择记录时间"); ElMessage.error("请选择记录时间");
return false; return false;
} }
...@@ -351,7 +693,7 @@ function postHeatForecastFun() { ...@@ -351,7 +693,7 @@ function postHeatForecastFun() {
} }
function postPrintHeatForecastFun() { function postPrintHeatForecastFun() {
if(enertyInfo.printTime == null) { if (enertyInfo.printTime == null) {
ElMessage.error("请选择打印时间"); ElMessage.error("请选择打印时间");
return false; return false;
} }
...@@ -426,4 +768,20 @@ table.botList td { ...@@ -426,4 +768,20 @@ table.botList td {
text-align: left; text-align: left;
font-weight: bolder; font-weight: bolder;
} }
.exlBlock {
display: none;
}
@media print {
.printHidden {
display: none;
}
@page {
size: auto;
margin: 3mm;
}
body,
html {
height: auto !important;
}
}
</style> </style>
\ No newline at end of file
<template> <template>
<div class="contentBlock"> <div class="contentBlock" id="contentBlock">
<div class="contentBlockInn"> <div class="contentBlockInn" id="printBlock">
<el-card class="card-contianer"> <el-card class="card-contianer">
<table <table
cellpadding="0" cellpadding="0"
...@@ -13,24 +13,29 @@ ...@@ -13,24 +13,29 @@
<span>{{ enertyInfo.nowTime }} 起始时间</span> <span>{{ enertyInfo.nowTime }} 起始时间</span>
</th> </th>
<th width="25%"> <th width="25%">
记录时间&nbsp;&nbsp;<el-config-provider :locale="zhCn"> 记录时间&nbsp;&nbsp;
<el-date-picker <div>
type="datetime" <el-config-provider :locale="zhCn">
value-format="YYYY-MM-DD HH:mm:ss" <el-date-picker
placeholder="选择查询时间" type="datetime"
style="width: 180px" value-format="YYYY-MM-DD HH:mm:ss"
v-model="enertyInfo.queryTime" placeholder="选择查询时间"
/> style="width: 180px"
</el-config-provider> v-model="enertyInfo.queryTime"
/>
</el-config-provider>
</div>
</th> </th>
<th width="25%"></th> <th width="25%"></th>
<th> <th>
<el-button <div class="printHidden">
type="primary" <el-button
style="min-width: 70px" type="primary"
@click="postHeatAnalysisFun" style="min-width: 70px"
>历史查询</el-button @click="postHeatAnalysisFun"
> >历史查询</el-button
>
</div>
</th> </th>
</tr> </tr>
</table> </table>
...@@ -234,6 +239,7 @@ ...@@ -234,6 +239,7 @@
</tr> </tr>
</table> </table>
<table <table
id="conTable"
cellpadding="0" cellpadding="0"
cellspacing="1" cellspacing="1"
style="margin-top: 10px; background-color: #99bbe8" style="margin-top: 10px; background-color: #99bbe8"
...@@ -311,19 +317,19 @@ ...@@ -311,19 +317,19 @@
</tr> </tr>
</template> </template>
</table> </table>
<div> <div class="printHidden">
<div class="btngrounp"> <div class="btngrounp">
<el-button <el-button
type="primary" type="primary"
@click="sendClick"
style="margin: 15px 0 0 0" style="margin: 15px 0 0 0"
v-print="printObj"
>打印</el-button >打印</el-button
><el-button >
<!--<el-button
type="primary" type="primary"
@click="exportTableToExcel"
style="margin: 15px 0 0 10px" style="margin: 15px 0 0 10px"
>打印预览</el-button >打印预览</el-button
> -->
<el-button <el-button
type="primary" type="primary"
@click="exportTableToExcel" @click="exportTableToExcel"
...@@ -334,6 +340,272 @@ ...@@ -334,6 +340,272 @@
</div> </div>
</el-card> </el-card>
</div> </div>
<div class="exlBlock" id="exlBlock">
<table cellpadding="0" cellspacing="0">
<tr>
<td colspan="15">
{{ enertyInfo.nowTime }} 起始时间
<span
>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;记录时间{{
enertyInfo.queryTime
}}</span
>
</td>
</tr>
<tr>
<td rowspan="8">00:00-24:00数据分析</td>
<td>白天</td>
<td>01:00</td>
<td>02:00</td>
<td>03:00</td>
<td>04:00</td>
<td>05:00</td>
<td>06:00</td>
<td>07:00</td>
<td>08:00</td>
<td>09:00</td>
<td>10:00</td>
<td>11:00</td>
<td>12:00</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>室外预测值(℃)</td>
<td>{{ predictionTemp.temp1 ? predictionTemp.temp1 : "-" }}</td>
<td>{{ predictionTemp.temp2 ? predictionTemp.temp2 : "-" }}</td>
<td>{{ predictionTemp.temp3 ? predictionTemp.temp3 : "-" }}</td>
<td>{{ predictionTemp.temp4 ? predictionTemp.temp4 : "-" }}</td>
<td>{{ predictionTemp.temp5 ? predictionTemp.temp5 : "-" }}</td>
<td>{{ predictionTemp.temp6 ? predictionTemp.temp6 : "-" }}</td>
<td>{{ predictionTemp.temp7 ? predictionTemp.temp7 : "-" }}</td>
<td>{{ predictionTemp.temp8 ? predictionTemp.temp8 : "-" }}</td>
<td>{{ predictionTemp.temp9 ? predictionTemp.temp9 : "-" }}</td>
<td>{{ predictionTemp.temp10 ? predictionTemp.temp10 : "-" }}</td>
<td>{{ predictionTemp.temp11 ? predictionTemp.temp11 : "-" }}</td>
<td>{{ predictionTemp.temp12 ? predictionTemp.temp12 : "-" }}</td>
<td>
测室外平均温度(℃)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{
predictionTemp.avgTemp ? predictionTemp.avgTemp : "-"
}}
</td>
</tr>
<tr>
<td>天津气象局反馈温度(℃)</td>
<td>{{ realTemp.temp1 ? realTemp.temp1 : "-" }}</td>
<td>{{ realTemp.temp2 ? realTemp.temp2 : "-" }}</td>
<td>{{ realTemp.temp3 ? realTemp.temp3 : "-" }}</td>
<td>{{ realTemp.temp4 ? realTemp.temp4 : "-" }}</td>
<td>{{ realTemp.temp5 ? realTemp.temp5 : "-" }}</td>
<td>{{ realTemp.temp6 ? realTemp.temp6 : "-" }}</td>
<td>{{ realTemp.temp7 ? realTemp.temp7 : "-" }}</td>
<td>{{ realTemp.temp8 ? realTemp.temp8 : "-" }}</td>
<td>{{ realTemp.temp9 ? realTemp.temp9 : "-" }}</td>
<td>{{ realTemp.temp10 ? realTemp.temp10 : "-" }}</td>
<td>{{ realTemp.temp11 ? realTemp.temp11 : "-" }}</td>
<td>{{ realTemp.temp12 ? realTemp.temp12 : "-" }}</td>
<td>
天津气象局反馈温度(℃)&nbsp;&nbsp;{{
realTemp.avgTemp ? realTemp.avgTemp : "-"
}}
</td>
</tr>
<tr>
<td>综合气象温度(℃)</td>
<td>
{{ comprehensiveTemp.temp1 ? comprehensiveTemp.temp1 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp2 ? comprehensiveTemp.temp2 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp3 ? comprehensiveTemp.temp3 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp4 ? comprehensiveTemp.temp4 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp5 ? comprehensiveTemp.temp5 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp6 ? comprehensiveTemp.temp6 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp7 ? comprehensiveTemp.temp7 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp8 ? comprehensiveTemp.temp8 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp9 ? comprehensiveTemp.temp9 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp10 ? comprehensiveTemp.temp10 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp11 ? comprehensiveTemp.temp11 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp12 ? comprehensiveTemp.temp12 : "-" }}
</td>
<td>
综合气象温度(℃)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{
comprehensiveTemp.avgTemp ? comprehensiveTemp.avgTemp : "-"
}}
</td>
</tr>
<tr>
<th>夜间</th>
<th>13:00</th>
<th>14:00</th>
<th>15:00</th>
<th>16:00</th>
<th>17:00</th>
<th>18:00</th>
<th>19:00</th>
<th>20:00</th>
<th>21:00</th>
<th>22:00</th>
<th>23:00</th>
<th>24:00</th>
</tr>
<tr>
<td>室外预测值(℃)</td>
<td>{{ predictionTemp.temp13 ? predictionTemp.temp13 : "-" }}</td>
<td>{{ predictionTemp.temp14 ? predictionTemp.temp14 : "-" }}</td>
<td>{{ predictionTemp.temp15 ? predictionTemp.temp15 : "-" }}</td>
<td>{{ predictionTemp.temp16 ? predictionTemp.temp16 : "-" }}</td>
<td>{{ predictionTemp.temp17 ? predictionTemp.temp17 : "-" }}</td>
<td>{{ predictionTemp.temp18 ? predictionTemp.temp18 : "-" }}</td>
<td>{{ predictionTemp.temp19 ? predictionTemp.temp19 : "-" }}</td>
<td>{{ predictionTemp.temp20 ? predictionTemp.temp20 : "-" }}</td>
<td>{{ predictionTemp.temp21 ? predictionTemp.temp21 : "-" }}</td>
<td>{{ predictionTemp.temp22 ? predictionTemp.temp22 : "-" }}</td>
<td>{{ predictionTemp.temp23 ? predictionTemp.temp23 : "-" }}</td>
<td>{{ predictionTemp.temp24 ? predictionTemp.temp24 : "-" }}</td>
</tr>
<tr>
<td>天津气象局反馈温度(℃)</td>
<td>{{ realTemp.temp13 ? realTemp.temp13 : "-" }}</td>
<td>{{ realTemp.temp14 ? realTemp.temp14 : "-" }}</td>
<td>{{ realTemp.temp15 ? realTemp.temp15 : "-" }}</td>
<td>{{ realTemp.temp16 ? realTemp.temp16 : "-" }}</td>
<td>{{ realTemp.temp17 ? realTemp.temp17 : "-" }}</td>
<td>{{ realTemp.temp18 ? realTemp.temp18 : "-" }}</td>
<td>{{ realTemp.temp19 ? realTemp.temp19 : "-" }}</td>
<td>{{ realTemp.temp20 ? realTemp.temp20 : "-" }}</td>
<td>{{ realTemp.temp21 ? realTemp.temp21 : "-" }}</td>
<td>{{ realTemp.temp22 ? realTemp.temp22 : "-" }}</td>
<td>{{ realTemp.temp23 ? realTemp.temp23 : "-" }}</td>
<td>{{ realTemp.temp24 ? realTemp.temp24 : "-" }}</td>
</tr>
<tr>
<td>综合气象温度(℃)</td>
<td>
{{ comprehensiveTemp.temp13 ? comprehensiveTemp.temp13 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp14 ? comprehensiveTemp.temp14 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp15 ? comprehensiveTemp.temp15 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp16 ? comprehensiveTemp.temp16 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp17 ? comprehensiveTemp.temp17 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp18 ? comprehensiveTemp.temp18 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp19 ? comprehensiveTemp.temp19 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp20 ? comprehensiveTemp.temp20 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp21 ? comprehensiveTemp.temp21 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp22 ? comprehensiveTemp.temp22 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp23 ? comprehensiveTemp.temp23 : "-" }}
</td>
<td>
{{ comprehensiveTemp.temp24 ? comprehensiveTemp.temp24 : "-" }}
</td>
</tr>
<tr>
<th rowspan="2">地点</th>
<th colspan="2">小计(万吉焦)</th>
<th colspan="2">00:00-04:00</th>
<th colspan="2">04:00-08:00</th>
<th colspan="2">08:00-12:00</th>
<th colspan="2">12:00-16:00</th>
<th colspan="2">16:00-20:00</th>
<th colspan="2">20:00-24:00</th>
</tr>
<tr>
<th>测算热量</th>
<th>实际热量</th>
<th>测算热量</th>
<th>实际热量</th>
<th>测算热量</th>
<th>实际热量</th>
<th>测算热量</th>
<th>实际热量</th>
<th>测算热量</th>
<th>实际热量</th>
<th>测算热量</th>
<th>实际热量</th>
<th>测算热量</th>
<th>实际热量</th>
</tr>
<tr v-for="(item, key) in analysisSupplys" :key="key">
<th>{{ item.name }}</th>
<td>{{ item.total.measurement }}</td>
<td>{{ item.total.reality }}</td>
<td>{{ item.part1.measurement }}</td>
<td>{{ item.part1.reality }}</td>
<td>{{ item.part2.measurement }}</td>
<td>{{ item.part2.reality }}</td>
<td>{{ item.part3.measurement }}</td>
<td>{{ item.part3.reality }}</td>
<td>{{ item.part4.measurement }}</td>
<td>{{ item.part4.reality }}</td>
<td>{{ item.part5.measurement }}</td>
<td>{{ item.part5.reality }}</td>
<td>{{ item.part6.measurement }}</td>
<td>{{ item.part6.reality }}</td>
</tr>
<tr>
<th>区域</th>
<th colspan="3">能耗项目</th>
<th>测算值</th>
<th>实际值(集团反馈)</th>
<th colspan="4">港益用热量测算与实际热量差额</th>
<th colspan="5">港益用热量测算与实际热量差额百分比</th>
</tr>
<template v-for="item in analysisZones" :key="item.zoneName">
<tr>
<th rowspan="2">{{ item.zoneName }}</th>
<th colspan="3">{{ item.parts[0].partName }}</th>
<td>{{ item.parts[0].measurement }}</td>
<td>{{ item.parts[0].reality }}</td>
<td colspan="4" rowspan="2">{{ item.heatDifference }}</td>
<td colspan="5" rowspan="2">{{ item.heatDifferencePercentage }}</td>
</tr>
<tr>
<th colspan="3">{{ item.parts[1].partName }}</th>
<td>{{ item.parts[1].measurement }}</td>
<td>{{ item.parts[1].reality }}</td>
</tr>
</template>
</table>
</div>
</div> </div>
</template> </template>
<script setup> <script setup>
...@@ -344,15 +616,179 @@ import { ElMessage } from "element-plus"; ...@@ -344,15 +616,179 @@ import { ElMessage } from "element-plus";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
import XLSX from "xlsx-js-style"; import XLSX from "xlsx-js-style";
import { postHeatAnalysis } from "../../api/report"; import { postHeatAnalysis } from "../../api/report";
import print from "vue3-print-nb";
const predictionTemp = ref([]); const predictionTemp = ref([]);
const realTemp = ref([]); const realTemp = ref([]);
const comprehensiveTemp = ref([]); const comprehensiveTemp = ref([]);
const analysisSupplys = ref([]); const analysisSupplys = ref([]);
const analysisZones = ref([]); const analysisZones = ref([]);
const printHidden = ref(true);
const enertyInfo = reactive({ const enertyInfo = reactive({
nowTime: null, nowTime: null,
queryTime: null, queryTime: null,
}); });
const vPrint = print;
const printObj = {
id: "printBlock",
popTitle: "热量析分报表",
extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>',
zIndex: 20002,
};
let tableData = reactive([]);
function exportTableToExcel() {
const workbook = XLSX.utils.book_new();
var ws = XLSX.utils.table_to_sheet(document.getElementById("exlBlock"));
const range = XLSX.utils.decode_range(ws["!ref"]);
const cellList = Object.keys(ws).filter((item) => item.indexOf("!") < 0);
const border = {
top: {
style: "thin",
},
bottom: {
style: "thin",
},
left: {
style: "thin",
},
right: {
style: "thin",
},
};
for (let row = range.s.r; row <= range.e.r; row++) {
for (let col = range.s.c; col <= range.e.c; col++) {
const cell = XLSX.utils.encode_cell({ r: row, c: col });
if (cellList.indexOf(cell) < 0) {
ws[cell] = { t: "", v: "", s: { border } };
} else {
ws[cell].s = { border };
}
}
}
for (const key in ws) {
if (
key === "A1" ||
key === "A2" ||
key === "O2" ||
key === "O3" ||
key === "O4" ||
key === "O5" ||
ws[key].v === "白天" ||
ws[key].v === "01:00" ||
ws[key].v === "02:00" ||
ws[key].v === "03:00" ||
ws[key].v === "04:00" ||
ws[key].v === "05:00" ||
ws[key].v === "06:00" ||
ws[key].v === "07:00" ||
ws[key].v === "08:00" ||
ws[key].v === "09:00" ||
ws[key].v === "10:00" ||
ws[key].v === "11:00" ||
ws[key].v === "12:00" ||
ws[key].v === "13:00" ||
ws[key].v === "14:00" ||
ws[key].v === "15:00" ||
ws[key].v === "16:00" ||
ws[key].v === "17:00" ||
ws[key].v === "18:00" ||
ws[key].v === "19:00" ||
ws[key].v === "20:00" ||
ws[key].v === "21:00" ||
ws[key].v === "22:00" ||
ws[key].v === "23:00" ||
ws[key].v === "24:00" ||
ws[key].v === "室外预测值(℃)" ||
ws[key].v === "天津气象局反馈温度(℃)" ||
ws[key].v === "综合气象温度(℃)" ||
ws[key].v === "夜间" ||
ws[key].v === "室外预测值(℃)" ||
ws[key].v === "天津气象局反馈温度(℃)" ||
ws[key].v === "综合气象温度(℃)" ||
ws[key].v === "00:00-04:00" ||
ws[key].v === "04:00-08:00" ||
ws[key].v === "08:00-12:00" ||
ws[key].v === "12:00-16:00" ||
ws[key].v === "16:00-20:00" ||
ws[key].v === "20:00-24:00" ||
ws[key].v === "地点" ||
ws[key].v === "小计(万吉焦)" ||
ws[key].v === "测算热量" ||
ws[key].v === "实际热量" ||
ws[key].v === "区域" ||
ws[key].v === "能耗项目" ||
ws[key].v === "测算值" ||
ws[key].v === "实际值(集团反馈)" ||
ws[key].v === "港益用热量测算与实际热量差额" ||
ws[key].v === "港益用热量测算与实际热量差额百分比"
) {
ws[key].s = {
alignment: {
horizontal: "center",
vertical: "center",
},
border: {
bottom: {
color: "#000000",
style: "thin",
},
left: {
color: "#000000",
style: "thin",
},
right: {
color: "#000000",
style: "thin",
},
top: {
color: "#000000",
style: "thin",
},
},
fill: {
fgColor: { rgb: "0097d5fd" },
},
font: {
bold: true,
family: 2,
size: 12,
},
};
}
}
ws["!cols"] = [
{ wch: 20 },
{ wch: 25 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 30 },
];
XLSX.utils.sheet_add_aoa(ws, [], {
origin: "A1",
});
XLSX.utils.book_append_sheet(workbook, ws, "热量分析报表");
const excelBuffer = XLSX.write(workbook, { bookType: "xlsx", type: "array" });
const dataBlob = new Blob([excelBuffer], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8",
});
const downloadUrl = URL.createObjectURL(dataBlob);
saveAs(dataBlob, "热量分析报表.xlsx");
ElMessage.success("导出成功!请稍后。。。");
}
function timeFun() { function timeFun() {
var date = new Date(); var date = new Date();
var year = date.getFullYear(); var year = date.getFullYear();
...@@ -425,13 +861,32 @@ function postHeatAnalysisFun() { ...@@ -425,13 +861,32 @@ function postHeatAnalysisFun() {
} }
}); });
} }
function printPage() {
printHidden.value = false;
setTimeout(function () {
let printMe = document.querySelector("#contentBlock");
let printWindow = window.open("", "_blank");
printWindow.document.write(printMe.innerHTML);
printWindow.document.close();
printWindow.focus();
printWindow.print();
printWindow.close();
printHidden.value = true;
}, 100);
}
onMounted(() => { onMounted(() => {
timeFun(); timeFun();
postHeatAnalysisFun(); postHeatAnalysisFun();
window.onbeforeprint = function (event) {
console.log("将一些不需要打印的元素隐藏");
};
window.onafterprint = function (event) {
console.log("放开隐藏的元素");
};
}); });
onUnmounted(() => { onUnmounted(() => {});
});
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.contentBlock { .contentBlock {
...@@ -472,4 +927,20 @@ table td { ...@@ -472,4 +927,20 @@ table td {
margin: 0 auto; margin: 0 auto;
text-align: center; text-align: center;
} }
.exlBlock {
display: none;
}
@media print {
.printHidden {
display: none;
}
@page {
size: auto;
margin: 3mm;
}
body,
html {
height: auto !important;
}
}
</style> </style>
\ No newline at end of file
<template> <template>
<div class="contentBlock"> <div class="contentBlock">
<div class="contentBlockInn"> <div class="contentBlockInn" id="printBlock">
<el-card class="card-contianer"> <el-card class="card-contianer">
<table <table
cellpadding="0" cellpadding="0"
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
<template v-slot:header> <template v-slot:header>
<div> <div>
<div>港益</div> <div>港益</div>
<span>供水瞬时流量(m³/h)</span> <span>供水瞬时热量(GJ/H)</span>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -155,15 +155,15 @@ ...@@ -155,15 +155,15 @@
<div class="btngrounp"> <div class="btngrounp">
<el-button <el-button
type="primary" type="primary"
@click="sendClick" v-print="printObj"
style="margin: 15px 0 0 0" style="margin: 15px 0 0 0"
>打印</el-button >打印</el-button
><el-button ><!--<el-button
type="primary" type="primary"
@click="exportTableToExcel" @click="exportTableToExcel"
style="margin: 15px 0 0 10px" style="margin: 15px 0 0 10px"
>打印预览</el-button >打印预览</el-button
> >-->
<el-button <el-button
type="primary" type="primary"
@click="exportTableToExcel" @click="exportTableToExcel"
...@@ -179,6 +179,67 @@ ...@@ -179,6 +179,67 @@
</div> </div>
</el-card> </el-card>
</div> </div>
<table
cellpadding="0"
cellspacing="3"
class="exlBlock"
id="exlBlock"
style="background-color: #ff0"
>
<tr>
<td colspan="17">港益热量汇总实时分析&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当前时间:{{ enertyInfo.nowTime }}</td>
</tr>
<tr>
<td>地点</td>
<td>区域换热站计量反馈瞬时流量(m³/h)</td>
<td>区域换热站计量反馈瞬时热量(GJ/H)</td>
<td>港益供水温度(℃)</td>
<td>港益回水温度(℃)</td>
<td>港益供水瞬时流量(m³/h)</td>
<td>港益供水瞬时热量(GJ/H)</td>
<td>预测瞬时热量</td>
<td>当前预测热量累计</td>
<td>当前热量偏差量</td>
<td>滨海供热集团供水温度(℃)</td>
<td>滨海供热集团回水温度(℃)</td>
<td>滨海供热集团供水压力(MP)</td>
<td>滨海供热集团回水压力(MP)</td>
<td>滨海供热集团供水瞬时流量(m³/h)</td>
<td>滨海供热集团供水瞬时热量(GJ/H)</td>
<td>当前实际热量累计</td>
</tr>
<tr v-for="item in tableData" :key="item">
<td>{{ item.pipeName }}</td>
<td>{{ item.firstInstantaneousFlow }}</td>
<td>{{ item.firstInstantaneousHeat }}</td>
<td>{{ item.firstInTemp }}</td>
<td>{{ item.firstOutTemp }}</td>
<td>{{ item.supplyFlow }}</td>
<td>{{ item.supplyHeat }}</td>
<td>{{ item.predictionHeat }}</td>
<td>{{ item.currentPredictionHeat }}</td>
<td>{{ item.currentDifference }}</td>
<td>{{ item.groupFirstSupplyTemp }}</td>
<td>{{ item.groupFirstBackTemp }}</td>
<td>{{ item.groupFirstSupplyPress }}</td>
<td>{{ item.groupFirstBackPress }}</td>
<td>{{ item.groupSupplyFlow }}</td>
<td>{{ item.groupSupplyHeat }}</td>
<td>{{ item.currentRealHeat }}</td>
</tr>
<tr>
<td colspan="17">预测方案生成 瞬时热量(GJ/H)&nbsp;&nbsp;&nbsp;&nbsp;{{ tableDataList.prePlan }}</td>
</tr>
<tr>
<td colspan="17">滨海供热集团汇总 瞬时热量(GJ/H)&nbsp;&nbsp;&nbsp;&nbsp;{{ tableDataList.groupTotal }}</td>
</tr>
<tr>
<td colspan="17">预测瞬时热量与汇总 瞬时热量 差两(GJ/H)&nbsp;&nbsp;&nbsp;&nbsp;{{ tableDataList.prePlanDiff }}</td>
</tr>
<tr>
<td colspan="17">预测瞬时热量与汇总 瞬时热量 差量比(%)&nbsp;&nbsp;&nbsp;&nbsp;{{ tableDataList.diffPercent }}</td>
</tr>
</table>
</div> </div>
</template> </template>
<script setup> <script setup>
...@@ -189,14 +250,145 @@ import { ElMessage } from "element-plus"; ...@@ -189,14 +250,145 @@ import { ElMessage } from "element-plus";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
import XLSX from "xlsx-js-style"; import XLSX from "xlsx-js-style";
import { postRealAnalysis } from "../../api/report"; import { postRealAnalysis } from "../../api/report";
import print from "vue3-print-nb";
const enertyInfo = reactive({ const enertyInfo = reactive({
nowTime: null, nowTime: null,
queryTime: null queryTime: null
}) })
const tableDataList = ref([]); const tableDataList = ref([]);
const tableData = ref([]); const tableData = ref([]);
const vPrint = print;
const printObj = {
id: "printBlock",
popTitle: "明日预测报表",
extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>',
zIndex: 20002,
};
function exportTableToExcel() {
const workbook = XLSX.utils.book_new();
var ws = XLSX.utils.table_to_sheet(document.getElementById("exlBlock"));
const border = {
top: {
style: "thin",
},
bottom: {
style: "thin",
},
left: {
style: "thin",
},
right: {
style: "thin",
},
};
const range = XLSX.utils.decode_range(ws["!ref"]);
const cellList = Object.keys(ws).filter((item) => item.indexOf("!") < 0);
for (let row = range.s.r; row <= range.e.r; row++) {
for (let col = range.s.c; col <= range.e.c; col++) {
const cell = XLSX.utils.encode_cell({ r: row, c: col });
if (cellList.indexOf(cell) < 0) {
ws[cell] = { t: "", v: "", s: { border } };
} else {
ws[cell].s = { border };
}
}
}
for (const key in ws) {
if (
key === "A1" ||
key === "A2" ||
key === "A3" ||
key === "A4" ||
key === "A5" ||
key === "A6" ||
key === "A7" ||
key === "B1" ||
key === "C1" ||
key === "E1" ||
key === "D1" ||
key === "F1" ||
key === "G1" ||
key === "H1" ||
key === "I1" ||
key === "J1" ||
key === "K1" ||
key === "L1" ||
key === "M1" ||
key === "N1" ||
key === "O1" ||
key === "P1" ||
key === "Q1"
) {
ws[key].s = {
alignment: {
horizontal: "center",
vertical: "center",
},
border: {
bottom: {
color: "#000000",
style: "thin",
},
left: {
color: "#000000",
style: "thin",
},
right: {
color: "#000000",
style: "thin",
},
top: {
color: "#000000",
style: "thin",
},
},
fill: {
fgColor: { rgb: "0097d5fd" },
},
font: {
bold: true,
family: 2,
size: 12,
},
};
}
}
ws["!cols"] = [
{ wch: 20 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 10 },
{ wch: 20 },
];
XLSX.utils.sheet_add_aoa(ws, [], {
origin: "A1",
});
XLSX.utils.book_append_sheet(workbook, ws, "港益热量汇总实时分析");
const excelBuffer = XLSX.write(workbook, { bookType: "xlsx", type: "array" });
const dataBlob = new Blob([excelBuffer], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8",
});
const downloadUrl = URL.createObjectURL(dataBlob);
saveAs(dataBlob, "港益热量汇总实时分析报表.xlsx");
ElMessage.success("导出成功!请稍后。。。");
}
function postRealAnalysisFun() { function postRealAnalysisFun() {
var date = new Date(); var date = new Date();
var year = date.getFullYear(); var year = date.getFullYear();
...@@ -281,4 +473,20 @@ table.bottomTable td { ...@@ -281,4 +473,20 @@ table.bottomTable td {
margin: 0 auto; margin: 0 auto;
text-align: center; text-align: center;
} }
.exlBlock {
display: none;
}
@media print {
.printHidden {
display: none;
}
@page {
size: auto;
margin: 3mm;
}
body,
html {
height: auto !important;
}
}
</style> </style>
\ No newline at end of file
<template> <template>
<div class="contentBlock"> <div class="contentBlock">
<div class="contentBlockInn"> <div class="contentBlockInn" id="printBlock">
<el-card class="card-contianer"> <el-card class="card-contianer">
<table <table
cellpadding="0" cellpadding="0"
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
</table> </table>
</td> </td>
<th rowspan="3"> <th rowspan="3">
<div> <div class="printHidden">
<div class="btngrounp"> <div class="btngrounp">
<el-button <el-button
type="primary" type="primary"
...@@ -48,15 +48,16 @@ ...@@ -48,15 +48,16 @@
>查询</el-button >查询</el-button
><el-button ><el-button
type="primary" type="primary"
@click="exportTableToExcel" v-print="printObj"
style="margin: 15px 0 0 10px" style="margin: 15px 0 0 10px"
>打印</el-button >打印</el-button
><el-button >
<!--<el-button
type="primary" type="primary"
@click="exportTableToExcel" @click="exportTableToExcel"
style="margin: 15px 0 0 10px" style="margin: 15px 0 0 10px"
>打印预览</el-button >打印预览</el-button
> >-->
<el-button <el-button
type="primary" type="primary"
@click="exportTableToExcel" @click="exportTableToExcel"
...@@ -110,6 +111,52 @@ ...@@ -110,6 +111,52 @@
</el-table> </el-table>
</el-card> </el-card>
</div> </div>
<table
class="exlBlock"
id="exlBlock"
cellpadding="0"
cellspacing="1"
style="margin-top: 5px; background-color: #99bbe8"
>
<tr>
<td colspan="2">起始时间:{{ enertyInfo.startTime }}</td>
<td colspan="2">结束时间:{{ enertyInfo.endTime }}</td>
<td colspan="2">
面积:{{ enertyInfo.areaType == 0 ? "计算面积" : "实供建筑面积" }}
</td>
<td colspan="5">
片区:<span v-for="item in areaName" :key="item"
>{{ item }}&nbsp;&nbsp;&nbsp;&nbsp;</span
>
</td>
</tr>
<tr>
<td>序号</td>
<td>片区</td>
<td>换热站名称</td>
<td>面积</td>
<td>热量(GJ)</td>
<td>热耗(GJ/㎡)</td>
<td>热耗(W/㎡)</td>
<td>水量(T)</td>
<td>水耗(KG/㎡)</td>
<td>电量(KWH)</td>
<td>电量(KWH/㎡)</td>
</tr>
<tr v-for="item in tableData" :key="item.sn">
<td>{{item.sn}}</td>
<td>{{item.jurisdictionName}}</td>
<td>{{item.transferName}}</td>
<td>{{item.area}}</td>
<td>{{item.heat}}</td>
<td>{{item.heatG}}</td>
<td>{{item.heatW}}</td>
<td>{{item.water}}</td>
<td>{{item.waterUsed}}</td>
<td>{{item.electric}}</td>
<td>{{item.electricUsed}}</td>
</tr>
</table>
</div> </div>
</template> </template>
<script setup> <script setup>
...@@ -121,6 +168,7 @@ import { ElMessage } from "element-plus"; ...@@ -121,6 +168,7 @@ import { ElMessage } from "element-plus";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
import XLSX from "xlsx-js-style"; import XLSX from "xlsx-js-style";
import { postTransferEnergy } from "../../api/report"; import { postTransferEnergy } from "../../api/report";
import print from "vue3-print-nb";
const radioTitle = ref("供热站"); const radioTitle = ref("供热站");
const options = reactive([]); const options = reactive([]);
const enterpriseId = ref(null); const enterpriseId = ref(null);
...@@ -132,6 +180,119 @@ const enertyInfo = reactive({ ...@@ -132,6 +180,119 @@ const enertyInfo = reactive({
startTime: null, startTime: null,
endTime: null, endTime: null,
}); });
const areaName = ref([]);
const vPrint = print;
const printObj = {
id: "printBlock",
popTitle: "明日预测报表",
extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>',
zIndex: 20002,
};
function exportTableToExcel() {
const workbook = XLSX.utils.book_new();
var ws = XLSX.utils.table_to_sheet(document.getElementById("exlBlock"));
const border = {
top: {
style: "thin",
},
bottom: {
style: "thin",
},
left: {
style: "thin",
},
right: {
style: "thin",
},
};
const range = XLSX.utils.decode_range(ws["!ref"]);
const cellList = Object.keys(ws).filter((item) => item.indexOf("!") < 0);
for (let row = range.s.r; row <= range.e.r; row++) {
for (let col = range.s.c; col <= range.e.c; col++) {
const cell = XLSX.utils.encode_cell({ r: row, c: col });
if (cellList.indexOf(cell) < 0) {
ws[cell] = { t: "", v: "", s: { border } };
} else {
ws[cell].s = { border };
}
}
}
for (const key in ws) {
if (
key === "A1" ||
key === "A2" ||
key === "B1" ||
key === "C1" ||
key === "D1" ||
key === "E1" ||
key === "F1" ||
key === "G1" ||
ws[key].v === "序号" ||
ws[key].v === "片区" ||
ws[key].v === "换热站名称" ||
ws[key].v === "面积" ||
ws[key].v === "热量(GJ)" ||
ws[key].v === "热耗(GJ/㎡)" ||
ws[key].v === "热耗(W/㎡)" ||
ws[key].v === "水量(T)" ||
ws[key].v === "水耗(KG/㎡)" ||
ws[key].v === "电量(KWH)" ||
ws[key].v === "电量(KWH/㎡)"
) {
ws[key].s = {
alignment: {
horizontal: "center",
vertical: "center",
},
border: {
bottom: {
color: "#000000",
style: "thin",
},
left: {
color: "#000000",
style: "thin",
},
right: {
color: "#000000",
style: "thin",
},
top: {
color: "#000000",
style: "thin",
},
},
fill: {
fgColor: { rgb: "0097d5fd" },
},
font: {
bold: true,
family: 2,
size: 12,
},
};
}
}
ws["!cols"] = [
{ wch: 5 }
];
XLSX.utils.sheet_add_aoa(ws, [], {
origin: "A1",
});
XLSX.utils.book_append_sheet(workbook, ws, "换热站能耗报表");
const excelBuffer = XLSX.write(workbook, { bookType: "xlsx", type: "array" });
const dataBlob = new Blob([excelBuffer], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8",
});
const downloadUrl = URL.createObjectURL(dataBlob);
saveAs(dataBlob, "换热站能耗报表.xlsx");
ElMessage.success("导出成功!请稍后。。。");
}
function timeFun() { function timeFun() {
var date = new Date(); var date = new Date();
var year = date.getFullYear(); var year = date.getFullYear();
...@@ -153,7 +314,7 @@ function timeFun() { ...@@ -153,7 +314,7 @@ function timeFun() {
dateArr[1] = "0" + dateArr[1]; dateArr[1] = "0" + dateArr[1];
} }
enertyInfo.startTime = year + "-" + dateArr[0] + "-" + endTimeDay; enertyInfo.startTime = year + "-" + dateArr[0] + "-" + endTimeDay;
enertyInfo.endTime = year + "-" + dateArr[0] + "-" + dateArr[1]; enertyInfo.endTime = year + "-" + dateArr[0] + "-" + dateArr[1];
console.log(enertyInfo); console.log(enertyInfo);
} }
...@@ -195,6 +356,16 @@ function initRadioList() { ...@@ -195,6 +356,16 @@ function initRadioList() {
} }
function postTransferEnergyFun() { function postTransferEnergyFun() {
areaName.value.length = 0;
enertyInfo.jurisdictionIds.forEach((item) => {
options.forEach((item1) => {
if (item1.value == item) {
console.log(item1.lable);
areaName.value.push(item1.lable);
}
});
});
if (enertyInfo.startTime == null) { if (enertyInfo.startTime == null) {
ElMessage.error("请选择开始时间"); ElMessage.error("请选择开始时间");
return false; return false;
...@@ -231,7 +402,7 @@ function postPrintHeatForecastFun() { ...@@ -231,7 +402,7 @@ function postPrintHeatForecastFun() {
onMounted(() => { onMounted(() => {
timeFun(); timeFun();
initRadioList(); initRadioList();
postTransferEnergyFun() postTransferEnergyFun();
//postHeatForecastFun(); //postHeatForecastFun();
}); });
onUnmounted(() => {}); onUnmounted(() => {});
...@@ -284,4 +455,20 @@ table.botList td { ...@@ -284,4 +455,20 @@ table.botList td {
text-align: left; text-align: left;
font-weight: bolder; font-weight: bolder;
} }
.exlBlock {
display: none;
}
@media print {
.printHidden {
display: none;
}
@page {
size: auto;
margin: 3mm;
}
body,
html {
height: auto !important;
}
}
</style> </style>
\ No newline at end of file
...@@ -10,14 +10,16 @@ ...@@ -10,14 +10,16 @@
<div class="login-text1 text">用户登录</div> <div class="login-text1 text">用户登录</div>
<div class="login-text2 text">DATA MANAGEMENT BACKGROUND OF PACKET DIAGRAM</div> <div class="login-text2 text">DATA MANAGEMENT BACKGROUND OF PACKET DIAGRAM</div>
<div class="div-input"> <div class="div-input">
<el-input v-model="userInfo.userName" style="width: 380px ; height: 50px" placeholder="请输入账号" <el-input v-model="userInfo.userName" style="width: 380px ; height: 50px"
:prefix-icon="User" input-style="color:black" /> placeholder="请输入账号" :prefix-icon="User" input-style="color:black" />
</div> </div>
<el-row> <el-row>
<el-col> <el-col>
<div class="div-input"> <div class="div-input">
<el-input v-model="userInfo.password" style=" color: white;width: 380px ; height: 50px" type="password" <el-input v-model="userInfo.password"
placeholder="请输入密码" show-password :prefix-icon="Lock" input-style="color:black" /> style=" color: white;width: 380px ; height: 50px" type="password"
placeholder="请输入密码" show-password :prefix-icon="Lock"
input-style="color:black" />
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -27,12 +29,13 @@ ...@@ -27,12 +29,13 @@
<el-col :span="15"> <el-col :span="15">
<div class="div-input input-contain"> <div class="div-input input-contain">
<el-input v-model="code" style="width: 240px ; height: 50px" <el-input v-model="code" style="width: 240px ; height: 50px"
placeholder="请输入验证码" input-style="color:black" @keyup.enter="login"/> placeholder="请输入验证码" input-style="color:black" @keyup.enter="login" />
</div> </div>
</el-col> </el-col>
<el-col :span="9"> <el-col :span="9">
<div class="div-input img-contain"> <div class="div-input img-contain">
<el-image @click="getPicture" style="width: 100%; height: 50px" :src="codeurl" :fit="'fill'" /> <el-image @click="getPicture" style="width: 100%; height: 50px" :src="codeurl"
:fit="'fill'" />
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -40,7 +43,7 @@ ...@@ -40,7 +43,7 @@
<el-row justify="space-around"> <el-row justify="space-around">
<el-col :span="12"> <el-col :span="12">
<el-checkbox class="text" v-model="isRemember" label="记住密码" size="large" /> <el-checkbox class="text" v-model="isRemember" label="记住密码" size="large" @change="changeCheck"/>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<div class="text">忘记密码</div> <div class="text">忘记密码</div>
...@@ -52,7 +55,7 @@ ...@@ -52,7 +55,7 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row justify="space-around" style="margin-bottom: 20px;"> <el-row justify="space-around" style="margin-bottom: 20px;">
<div id="login_button" @click="login" style="width: 380px; height: 80px">登录</div> <div id="login_button" @click="login" style="width: 380px; height: 80px">登录</div>
</el-row> </el-row>
</div> </div>
</div> </div>
...@@ -197,20 +200,19 @@ ...@@ -197,20 +200,19 @@
color: red; color: red;
font-size: small; font-size: small;
} }
</style> </style>
<script lang="ts" setup> <script lang="ts" setup>
import { import {
defineComponent, defineComponent,
ref, ref,
reactive, reactive,
toRefs, toRefs,
getCurrentInstance, getCurrentInstance,
onMounted, onMounted,
onUpdated, onUpdated,
onBeforeUnmount onBeforeUnmount
} from 'vue'; } from 'vue';
import { User, Lock } from '@element-plus/icons-vue' import { User, Lock } from '@element-plus/icons-vue'
...@@ -225,67 +227,68 @@ const isRemember = ref(false); ...@@ -225,67 +227,68 @@ const isRemember = ref(false);
const loading = ref(false); const loading = ref(false);
const errorMessage = ref('用户或密码错误,请重试') const errorMessage = ref('用户或密码错误,请重试')
var showMessage=ref(false); var showMessage = ref(false);
const userInfo = reactive({ const userInfo = reactive({
userName: '', userName: '',
password: '', password: '',
verificationCode: '', verificationCode: '',
UUID: undefined UUID: undefined
}); });
localStorage.setItem("SERVEICE", ""); localStorage.setItem("SERVEICE", "");
const clientIp = ref("加载中"); const clientIp = ref("加载中");
async function fetchClientIp() { async function fetchClientIp() {
try { try {
const res = await fetch('https://api.ipify.org?format=json'); const res = await fetch('https://api.ipify.org?format=json');
const data = await res.json(); const data = await res.json();
clientIp.value = data.ip; clientIp.value = data.ip;
store.commit('setSERVEICE', data.ip); store.commit('setSERVEICE', data.ip);
//http.ipAddress = store.getters.getSERVEICE; //http.ipAddress = store.getters.getSERVEICE;
console.log("changeip:"+clientIp.value + " " ); console.log("changeip:" + clientIp.value + " ");
getPicture(); getPicture();
} catch (error) { } catch (error) {
clientIp.value = '获取失败'; clientIp.value = '获取失败';
console.error('Error fetching client IP:', error); console.error('Error fetching client IP:', error);
} }
} }
async function getPicture() { async function getPicture() {
try{ try {
var serverIP = localStorage.getItem("SERVEICE"); var serverIP = localStorage.getItem("SERVEICE");
console.log(clientIp.value + " " + serverIP); console.log(clientIp.value + " " + serverIP);
if(!serverIP || serverIP == null || serverIP == ""){ if (!serverIP || serverIP == null || serverIP == "") {
await fetchClientIp(); await fetchClientIp();
} }
await http.get('/api/User/getVierificationCode').then((x) => { await http.get('/api/User/getVierificationCode').then((x) => {
try{ try {
var jobj=x.data; var jobj = x.data;
codeurl.value = 'data:image/jpg;base64,' + jobj.img; codeurl.value = 'data:image/jpg;base64,' + jobj.img;
userInfo.UUID = jobj.uuid; userInfo.UUID = jobj.uuid;
}catch(error){ } catch (error) {
console.log(error.message); console.log(error.message);
} }
}); });
}catch(error){ } catch (error) {
console.log(error.message); console.log(error.message);
await fetchClientIp(); await fetchClientIp();
} }
} }
getPicture(); getPicture();
getUserInfo();
let appContext = getCurrentInstance()!.appContext; let appContext = getCurrentInstance()!.appContext;
let $message = appContext.config.globalProperties.$message; let $message = appContext.config.globalProperties.$message;
function login() { function login() {
if(code.value == ''){ if (code.value == '') {
showMessage.value=true; showMessage.value = true;
errorMessage.value="请输入验证码"; errorMessage.value = "请输入验证码";
return $message.error(errorMessage.value); return $message.error(errorMessage.value);
} }
loading.value = true; loading.value = true;
...@@ -295,15 +298,67 @@ function login() { ...@@ -295,15 +298,67 @@ function login() {
if (!result.success) { if (!result.success) {
loading.value = false; loading.value = false;
getPicture(); getPicture();
showMessage.value=true; showMessage.value = true;
errorMessage.value=result.message; errorMessage.value = result.message;
return $message.error(result.message); return $message.error(result.message);
} }
$message.success('登录成功,正在跳转!'); $message.success('登录成功,正在跳转!');
store.commit('setUserInfo', result.data); store.commit('setUserInfo', result.data);
// router.push({ path: '/Home'}); //保存
router.push({ path: '/GisHome'}); if(isRemember.value){
}); saveUserInfo(userInfo);
}
// router.push({ path: '/Home'});
router.push({ path: '/GisHome' });
});
}
function saveUserInfo(userInfo) {
var days = 30;//设置30天过期
const date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
document.cookie = "userName=" + userInfo.userName + "; expires=" + date.toUTCString();
document.cookie = "password=" + userInfo.password + "; expires=" + date.toUTCString();
}
function clearUserInfo() {
document.cookie = "userName=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
document.cookie = "password=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
} }
function getUserInfo() {
var key_name ='userName' + "=";
var key_password='password'+"=";
var tuserInfo={
}
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(key_name) == 0){
tuserInfo.username=c.substring(key_name.length, c.length);
}else if(c.indexOf(key_password) == 0){
tuserInfo.password=c.substring(key_password.length, c.length);
}
}
//如果名称和密码都存在,返回用户信息,否则返回空
if(tuserInfo.username && tuserInfo.password){
isRemember.value=true;
userInfo.userName=tuserInfo.username;
userInfo.password=tuserInfo.passowrd;
return tuserInfo;
}
return null;
}
console.log('test remember')
//
function changeCheck(value){
console.log(isRemember);
if(!isRemember.value){
clearUserInfo();
}
}
</script> </script>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment