From c068a9cbaca1c984590c14b8851e97486bfdb430 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期五, 06 十月 2023 21:05:57 +0800
Subject: [PATCH] 导出功能
---
src/views/smoke/realTime/index.vue | 149 ++++++++++------
src/views/smoke/realTime/components/header/index.vue | 343 +++++++++++++++++++------------------
src/api/smoke/realTime.js | 4
3 files changed, 272 insertions(+), 224 deletions(-)
diff --git a/src/api/smoke/realTime.js b/src/api/smoke/realTime.js
index 9849483..6087d48 100644
--- a/src/api/smoke/realTime.js
+++ b/src/api/smoke/realTime.js
@@ -13,4 +13,8 @@
getInTimeCount: () => {
return http.get('/sccg/smoke/inTime/count');
},
+ // 瀵煎嚭瀹炴椂鏁版嵁
+ exportInTime: (params) => {
+ return http.downloadFile('/sccg/smoke/inTime/export', params);
+ },
}
\ No newline at end of file
diff --git a/src/views/smoke/realTime/components/header/index.vue b/src/views/smoke/realTime/components/header/index.vue
index bcfb6fb..5618876 100644
--- a/src/views/smoke/realTime/components/header/index.vue
+++ b/src/views/smoke/realTime/components/header/index.vue
@@ -1,185 +1,198 @@
<template>
- <div class="header">
- <el-form :inline="true" :model="seachData" class="demo-form-inline">
- <el-form-item label="">
- <el-select
- style="width: 140px"
- v-model="seachData.ownerIndex"
- placeholder="鎵�灞炲崟浣�"
- >
- <el-option
- v-for="(item, index) in ownerOptions"
- :key="item.Id"
- :label="item.Name"
- :value="index"
- >
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="">
- <el-select
- style="width: 120px"
- v-model="seachData.status"
- placeholder="鎺掓斁鐘舵��"
- >
- <el-option
- v-for="item in statusOptions"
- :key="item.label"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="">
- <el-select
- style="width: 120px"
- v-model="seachData.onlineStatus"
- placeholder="鏁翠綋鐘舵��"
- >
- <el-option
- v-for="item in onlineStatusOptions"
- :key="item.label"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </el-form-item>
+ <div class="header">
+ <el-form :inline="true" :model="seachData" class="demo-form-inline">
+ <el-form-item label="">
+ <el-select
+ style="width: 140px"
+ v-model="seachData.ownerIndex"
+ placeholder="鎵�灞炲崟浣�"
+ >
+ <el-option
+ v-for="(item, index) in ownerOptions"
+ :key="item.Id"
+ :label="item.Name"
+ :value="index"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="">
+ <el-select
+ style="width: 120px"
+ v-model="seachData.status"
+ placeholder="鎺掓斁鐘舵��"
+ >
+ <el-option
+ v-for="item in statusOptions"
+ :key="item.label"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="">
+ <el-select
+ style="width: 120px"
+ v-model="seachData.onlineStatus"
+ placeholder="鏁翠綋鐘舵��"
+ >
+ <el-option
+ v-for="item in onlineStatusOptions"
+ :key="item.label"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
- <el-form-item>
- <el-radio v-model="seachData.type" label="1">鐩戞帶璁惧</el-radio>
- <el-radio v-model="seachData.type" label="2">鐩戞祴璁惧</el-radio>
- </el-form-item>
- <el-form-item label="">
- <el-date-picker
- v-model="seachData.alarmTime"
- type="daterange"
- align="right"
- unlink-panels
- range-separator="鑷�"
- start-placeholder="寮�濮嬫棩鏈�"
- end-placeholder="缁撴潫鏃ユ湡"
- :picker-options="pickerOptions"
- >
- </el-date-picker>
- </el-form-item>
- <el-form-item>
- <el-button type="primary" @click="getUserList">鍒锋柊</el-button>
+ <el-form-item>
+ <el-radio v-model="seachData.type" label="1">鐩戞帶璁惧</el-radio>
+ <el-radio v-model="seachData.type" label="2">鐩戞祴璁惧</el-radio>
+ </el-form-item>
+ <el-form-item label="">
+ <el-date-picker
+ v-model="seachData.alarmTime"
+ type="daterange"
+ align="right"
+ unlink-panels
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ :picker-options="pickerOptions"
+ >
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" @click="getList">鍒锋柊</el-button>
+ <el-button type="primary" @click="resetAll">閲嶇疆</el-button>
- <el-button type="primary" @click="exportTableData">瀵煎嚭</el-button>
- </el-form-item>
- </el-form>
- </div>
+ <el-button type="primary" @click="exportTableData"
+ >瀵煎嚭</el-button
+ >
+ </el-form-item>
+ </el-form>
+ </div>
</template>
<script>
import realTimeApi from "@/api/smoke/realTime";
export default {
- data() {
- return {
- onlineStatusOptions: [
- {
- label: "姝e父",
- value: "NORMAL",
- },
- {
- label: "棰勮",
- value: "ALARM",
- },
- {
- label: "瓒呮爣",
- value: "EXCESS",
- },
- {
- label: "绂荤嚎",
- value: "DOWN",
- },
- {
- label: "寮傚父绂荤嚎",
- value: "OFF",
- },
- ],
- statusOptions: [
- {
- label: "姝e父",
- value: 1,
- },
- {
- label: "绂荤嚎",
- value: 2,
- },
- {
- label: "寮傚父绂荤嚎",
- value: 3,
- },
- ],
- ownerOptions: [],
- seachData: {},
- pickerOptions: {
- shortcuts: [
- {
- text: "鏈�杩戜竴鍛�",
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
- picker.$emit("pick", [start, end]);
+ data() {
+ return {
+ onlineStatusOptions: [
+ {
+ label: "姝e父",
+ value: 1,
+ },
+ {
+ label: "绂荤嚎",
+ value: 2,
+ },
+ {
+ label: "寮傚父绂荤嚎",
+ value: 3,
+ },
+ ],
+ statusOptions: [
+ {
+ label: "姝e父",
+ value: "NORMAL",
+ },
+ {
+ label: "棰勮",
+ value: "ALARM",
+ },
+ {
+ label: "瓒呮爣",
+ value: "EXCESS",
+ },
+ {
+ label: "绂荤嚎",
+ value: "DOWN",
+ },
+ {
+ label: "寮傚父绂荤嚎",
+ value: "OFF",
+ },
+ ],
+ ownerOptions: [],
+ seachData: {},
+ pickerOptions: {
+ shortcuts: [
+ {
+ text: "鏈�杩戜竴鍛�",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ {
+ text: "鏈�杩戜竴涓湀",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ {
+ text: "鏈�杩戜笁涓湀",
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+ picker.$emit("pick", [start, end]);
+ },
+ },
+ ],
},
- },
- {
- text: "鏈�杩戜竴涓湀",
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
- picker.$emit("pick", [start, end]);
- },
- },
- {
- text: "鏈�杩戜笁涓湀",
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
- picker.$emit("pick", [start, end]);
- },
- },
- ],
- },
- };
- },
- created() {},
- mounted() {
- this.getOwnerOptions();
- },
- methods: {
- // 鑾峰彇鎵�灞炲崟浣�
- getOwnerOptions() {
- const param = { pageSize: 100, pageNum: 1 };
- realTimeApi
- .findCustomerList(param)
- .then((res) => {
- this.ownerOptions = res.list;
- })
- .catch((err) => this.$message.error(err));
+ };
},
-
- getUserList() {
- const ownerItem = this.ownerOptions[this.seachData.ownerIndex];
- this.seachData.owner = ownerItem.Pid + ownerItem.Id;
- this.$emit("getList", { seachData: this.seachData });
+ created() { },
+ mounted() {
+ this.getOwnerOptions();
},
- exportTableData(){
+ methods: {
+ // 鑾峰彇鎵�灞炲崟浣�
+ getOwnerOptions() {
+ const param = { pageSize: 100, pageNum: 1 };
+ realTimeApi
+ .findCustomerList(param)
+ .then((res) => {
+ this.ownerOptions = res.list;
+ })
+ .catch((err) => this.$message.error(err));
+ },
- }
- },
+ resetAll() {
+ this.seachData = {};
+ this.$emit("getList", { seachData: this.seachData });
+ },
+ getList() {
+ if (this.seachData.ownerIndex !== undefined) {
+ const ownerItem = this.ownerOptions[this.seachData.ownerIndex];
+ this.seachData.owner = ownerItem.Pid + ownerItem.Id + "/";
+ }
+ this.$emit("getList", { seachData: this.seachData });
+ },
+ exportTableData() {
+ if (this.seachData.ownerIndex !== undefined) {
+ const ownerItem = this.ownerOptions[this.seachData.ownerIndex];
+ this.seachData.owner = ownerItem.Pid + ownerItem.Id + "/";
+ }
+ this.$emit("exportTable", { seachData: this.seachData });
+ }
+ },
};
</script>
<style lang="scss" scoped>
.header {
- line-height: normal;
+ line-height: normal;
}
</style>
diff --git a/src/views/smoke/realTime/index.vue b/src/views/smoke/realTime/index.vue
index 09f4a4e..00a65c3 100644
--- a/src/views/smoke/realTime/index.vue
+++ b/src/views/smoke/realTime/index.vue
@@ -1,6 +1,9 @@
<template>
<div>
- <MyHeader @getList="getRealTimeList"></MyHeader>
+ <MyHeader
+ @getList="getRealTimeList"
+ @exportTable="exportInTime"
+ ></MyHeader>
<!-- 鏁版嵁灞曠ず -->
<div style="width: 100%; overflow-x: scroll">
<el-table
@@ -148,43 +151,7 @@
getRealTimeList(seachData) {
let params;
if (seachData) {
- params = {
- pageNum: this.currentPage,
- pageSize: this.pageSize,
- resource:
- seachData.seachData.resource == undefined
- ? null
- : seachData.seachData.resource,
- region:
- seachData.seachData.region == undefined
- ? null
- : seachData.seachData.region,
- type: this.statusArr[1] ?? null,
- code:
- seachData.seachData.code == undefined
- ? null
- : seachData.seachData.code,
- categoryBig:
- seachData.seachData.categoryBig == undefined
- ? null
- : seachData.seachData.categoryBig,
- categorySmall:
- seachData.seachData.categorySmall == undefined
- ? null
- : seachData.seachData.categorySmall,
- site:
- seachData.seachData.site == undefined
- ? null
- : seachData.seachData.site,
- street:
- seachData.seachData.street == undefined
- ? null
- : seachData.seachData.street,
- alarmTime:
- seachData.seachData.alarmTime == undefined
- ? null
- : seachData.seachData.alarmTime,
- };
+ params = this.getParam(seachData)
} else {
params = {
pageNum: this.currentPage,
@@ -196,7 +163,7 @@
.findInTimeList(params)
.then(({ list, total }) => {
list.forEach(e => {
- e.AcquitAtStr = this.Dateformat(e.AcquitAt);
+ e.AcquitAtStr = this.dateFormat("YYYY-mm-dd HH:MM", new Date(e.AcquitAt));
e.FanStatusStr = this.FanStatusStr(e.FanStatus)
e.FilterStatusStr = this.FanStatusStr(e.FilterStatus)
e.OnlineStatusStr = this.OnlineStatusStr(e.OnlineStatus)
@@ -207,6 +174,72 @@
})
.catch((err) => this.$message.error(err));
},
+ exportInTime(seachData) {
+ let params;
+ if (seachData) {
+ params = this.getParam(seachData)
+ }
+ realTimeApi
+ .exportInTime(params)
+ .then((res) => {
+ debugger
+ let time = new Date();
+ let deathdate = time.toLocaleDateString();
+ const blob = new Blob([res.data], {
+ type: "application/vnd.ms-excel;charset=utf-8",
+ });
+ if (window.navigator.msSaveBlob) {
+ window.navigator.msSaveBlob(
+ blob,
+ deathdate + "瀹炴椂鏁版嵁" + ".xls"
+ );
+ } else {
+ const url = window.URL.createObjectURL(blob);
+ const link = document.createElement("a");
+ link.style.display = "none";
+ link.href = url;
+ link.download = deathdate + "瀹炴椂鏁版嵁" + ".xls";
+ document.body.appendChild(link);
+ link.click();
+ document.body.removeChild(link);
+ }
+ this.$message.success("鎿嶄綔鎴愬姛");
+ })
+ .catch((err) => this.$message.error(err));
+ },
+ getParam(seachData) {
+ let params;
+ if (seachData) {
+ const seachParams = seachData.seachData
+ params = {
+ owner:
+ seachParams.owner == undefined
+ ? null
+ : seachParams.owner,
+ onlineStatus:
+ seachParams.onlineStatus == undefined
+ ? null
+ : seachParams.onlineStatus,
+ status: seachParams.status == undefined
+ ? null
+ : seachParams.status,
+ type:
+ seachParams.type == undefined
+ ? null
+ : seachParams.type,
+ startTime:
+ seachParams.alarmTime == undefined
+ ? null
+ : this.dateFormat("YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[0]),
+ endTime:
+ seachParams.alarmTime == undefined
+ ? null
+ : this.dateFormat("YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[1]),
+ };
+ }
+ return params;
+ },
+
FanStatusStr(FanStatus) {
switch (FanStatus) {
case 1:
@@ -264,28 +297,26 @@
this.currentPage = page;
this.getRealTimeList();
},
- Dateformat(fmt) {
- var fmtdate = new Date(fmt)
- var o = {
- "M+": fmtdate.getMonth() + 1, //鏈堜唤
- "d+": fmtdate.getDate(), //鏃�
- "h+": fmtdate.getHours(), //灏忔椂
- "m+": fmtdate.getMinutes(), //鍒�
- "s+": fmtdate.getSeconds(), //绉�
- "q+": Math.floor((fmtdate.getMonth() + 3) / 3), //瀛e害
- "S": fmtdate.getMilliseconds() //姣
+ dateFormat(fmt, date) {
+ let ret;
+ const opt = {
+ "Y+": date.getFullYear().toString(), // 骞�
+ "m+": (date.getMonth() + 1).toString(), // 鏈�
+ "d+": date.getDate().toString(), // 鏃�
+ "H+": date.getHours().toString(), // 鏃�
+ "M+": date.getMinutes().toString(), // 鍒�
+ "S+": date.getSeconds().toString() // 绉�
+ // 鏈夊叾浠栨牸寮忓寲瀛楃闇�姹傚彲浠ョ户缁坊鍔狅紝蹇呴』杞寲鎴愬瓧绗︿覆
};
- if (/(y+)/.test(fmt)) {
- fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
- }
- for (var k in o) {
- if (new RegExp("(" + k + ")").test(fmt)) {
- fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
- }
- }
+ for (let k in opt) {
+ ret = new RegExp("(" + k + ")").exec(fmt);
+ if (ret) {
+ fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
+ };
+ };
return fmt;
- }
- },
+ },
+ }
};
</script>
--
Gitblit v1.8.0