1、导出txt文档方法
(1)在template中定义方法
<template>
<li>
<el-button class="download" type="success" @click="download">下载</el-button>
</li>
</template>
(2)在methods()中开发方法逻辑
download() {
var index = this.area - 1;
var name = this.areaList[index].name;
console.log("this.area.name ====", this.areaList[index].name);
// 创建一个新的Blob对象,内容类型为纯文本
// console.log(this.tableData);
var date = moment(this.date).format("YYYY-MM-DD");
var txt = date + name + "车辆使用情况 \r\n";
var whiteAllRunTime = 0;
var whiteAllVehicleTime = 0;
var nightAllRunTime = 0;
var nightAllVehicleTime = 0;
var whiteVehicleCount = 0;
var nightVehicleCount = 0;
var whiteStorageCount = 0;
var nightStorageCount = 0;
var count = 0;
var useVehicleNameList = []; //使用车辆列表
var unUseVehicleNameList = []; //未使用车辆列表
var whiteUseVehicleNameList = []; //白班使用车辆列表
var nightUseVehicleNameList = []; //晚班使用车辆列表
this.tableData.map((item) => {
var usageRate = parseFloat(item.whiteData.usageRate);
var usageRate2 = parseFloat(item.nightData.usageRate);
whiteAllRunTime += item.whiteData.allRunTime;
whiteAllVehicleTime +=
item.whiteData.allRunTime + item.noTask.whiteData.chargeTime;
nightAllRunTime += item.nightData.allRunTime;
nightAllVehicleTime +=
item.nightData.allRunTime + item.noTask.nightData.chargeTime;
whiteStorageCount += item.whiteData.transportQty;
nightStorageCount += item.nightData.transportQty;
if (usageRate == 0 && usageRate2 == 0) {
count++;
unUseVehicleNameList.push(item.vehicleName);
} else {
useVehicleNameList.push(item.vehicleName);
if (usageRate > 0) {
whiteVehicleCount++;
whiteUseVehicleNameList.push(item.vehicleName);
}
if (usageRate2 > 0) {
nightVehicleCount++;
nightUseVehicleNameList.push(item.vehicleName);
}
}
});
txt += "投入使用的车辆共有 " + (this.tableData.length - count) + "辆";
if (useVehicleNameList.length > 0) {
var useVehicleText = "";
for (var i = 0; i < useVehicleNameList.length; i++) {
if (useVehicleNameList.length - 1 == i) {
useVehicleText += useVehicleNameList[i];
} else {
useVehicleText += useVehicleNameList[i] + ", ";
}
}
txt += ",分别为: " + useVehicleText;
}
txt += "\r\n未投入使用车辆共有 " + count + "辆";
if (unUseVehicleNameList.length > 0) {
var unUseVehicleText = "";
for (var i = 0; i < unUseVehicleNameList.length; i++) {
if (unUseVehicleNameList.length - 1 == i) {
unUseVehicleText += unUseVehicleNameList[i];
} else {
unUseVehicleText += unUseVehicleNameList[i] + ", ";
}
}
txt += ",分别为: " + unUseVehicleText;
}
txt += "\r\n(1)白班:\r\n共有" + whiteVehicleCount + "台车辆投入使用";
if (whiteUseVehicleNameList.length > 0) {
var whiteUseVehicleText = "";
for (var i = 0; i < whiteUseVehicleNameList.length; i++) {
if (whiteUseVehicleNameList.length - 1 == i) {
whiteUseVehicleText += whiteUseVehicleNameList[i];
} else {
whiteUseVehicleText += whiteUseVehicleNameList[i] + ", ";
}
}
txt += ", 分别为: " + whiteUseVehicleText;
}
txt +=
"\r\n运行总时长:" +
this.commonService.formatSecond(whiteAllRunTime) +
"\r\n";
var whiteAllRunTimeRate = 0;
if (whiteVehicleCount > 0) {
whiteAllRunTimeRate = (
(whiteAllRunTime * 100) /
this.baseTime /
3600 /
whiteVehicleCount
).toFixed(2);
}
txt += "车辆平均使用率:" + whiteAllRunTimeRate + "%\r\n";
var whiteAllVehicleTimeRate = 0;
if (whiteVehicleCount > 0) {
whiteAllVehicleTimeRate = (
(whiteAllVehicleTime * 100) /
this.baseTime /
3600 /
whiteVehicleCount
).toFixed(2);
}
txt +=
"车辆毛运行总时长:" +
this.commonService.formatSecond(whiteAllVehicleTime) +
"\r\n";
txt += "车辆毛平均使用率:" + whiteAllVehicleTimeRate + "%\r\n";
txt += "出入库总次数:" + whiteStorageCount + "次\r\n";
txt += "\r\n(2)晚班:\r\n共有" + nightVehicleCount + "台车辆投入使用";
if (nightUseVehicleNameList.length > 0) {
var nightUseVehicleNameText = "";
for (var i = 0; i < nightUseVehicleNameList.length; i++) {
if (nightUseVehicleNameList.length - 1 == i) {
nightUseVehicleNameText += nightUseVehicleNameList[i];
} else {
nightUseVehicleNameText += nightUseVehicleNameList[i] + ", ";
}
}
txt += ", 分别为: " + nightUseVehicleNameText;
}
txt +=
"\r\n运行总时长:" +
this.commonService.formatSecond(nightAllRunTime) +
"\r\n";
var nightAllRunTimeRate = 0;
if (nightVehicleCount > 0) {
nightAllRunTimeRate = (
(nightAllRunTime * 100) /
this.baseTime /
3600 /
nightVehicleCount
).toFixed(2);
}
txt += "车辆平均使用率:" + nightAllRunTimeRate + "%\r\n";
var nightAllVehicleTimeRate = 0;
if (nightVehicleCount > 0) {
nightAllVehicleTimeRate = (
(nightAllVehicleTime * 100) /
this.baseTime /
3600 /
nightVehicleCount
).toFixed(2);
}
txt +=
"车辆毛运行总时长:" +
this.commonService.formatSecond(nightAllVehicleTime) +
"\r\n";
txt += "车辆毛平均使用率:" + nightAllVehicleTimeRate + "%\r\n";
txt += "出入库总次数:" + nightStorageCount + "次\r\n";
txt += "\r\n\r\n\r\n以下为该基地各小车运行详细数据,请根据需要查看:";
this.tableData.map((item) => {
var usageRate = parseFloat(item.whiteData.usageRate);
var usageRate2 = parseFloat(item.nightData.usageRate);
if (usageRate == 0 && usageRate2 == 0) {
} else {
txt += "\r\n\r\n" + item.vehicleName + "号车\r\n";
if (usageRate > 0) {
var allRate = (
((item.whiteData.allRunTime + item.noTask.whiteData.chargeTime) *
100) /
this.baseTime /
3600
).toFixed(2);
txt += "白班:\r\n";
txt +=
"车辆运行总时长:" +
this.commonService.formatSecond(item.whiteData.allRunTime) +
"\r\n";
txt += "订单任务使用率:" + item.whiteData.usageRate + "%\r\n";
txt += "车辆毛使用率:" + allRate + "%\r\n";
txt +=
"订单任务时长:" +
this.commonService.formatSecond(item.whiteData.transportTime) +
",次数:" +
item.whiteData.transportQty +
"\r\n";
txt +=
"充电任务时长:" +
this.commonService.formatSecond(item.whiteData.chargeTime) +
",次数:" +
item.whiteData.chargeQty +
"\r\n";
txt +=
"停车任务时长:" +
this.commonService.formatSecond(item.whiteData.parkTime) +
",次数:" +
item.whiteData.parkQty +
"\r\n";
txt +=
"充电桩充电时长:" +
this.commonService.formatSecond(
item.noTask.whiteData.chargeTime
) +
"\r\n";
}
if (usageRate2 > 0) {
txt += "晚班:" + "\r\n";
txt +=
"车辆运行总时长:" +
this.commonService.formatSecond(item.nightData.allRunTime) +
"\r\n";
txt += "订单任务使用率:" + item.nightData.usageRate + "%\r\n";
txt +=
"订单任务时长:" +
this.commonService.formatSecond(item.nightData.transportTime) +
",次数:" +
item.nightData.transportQty +
"\r\n";
txt +=
"充电任务时长:" +
this.commonService.formatSecond(item.nightData.chargeTime) +
",次数:" +
item.nightData.chargeQty +
"\r\n";
txt +=
"停车任务时长:" +
this.commonService.formatSecond(item.nightData.parkTime) +
",次数:" +
item.nightData.parkQty +
"\r\n";
txt +=
"充电桩充电时长:" +
this.commonService.formatSecond(
item.noTask.nightData.chargeTime
) +
"\r\n";
}
}
});
const blob = new Blob([txt], {
type: "text/plain;charset=utf-8",
});
// 创建一个指向该Blob的URL
const url = URL.createObjectURL(blob);
// 创建一个a标签
const link = document.createElement("a");
link.href = url;
link.setAttribute("download", date + name + "车辆使用情况.txt");
document.body.appendChild(link);
// 触发下载
link.click();
// 清理
document.body.removeChild(link);
URL.revokeObjectURL(url);
},
},
(3)页面展示

2、导出excel方法
(1)在template中定义方法
<template>
<li>
<el-button class="download" type="success" @click="download">下载</el-button>
</li>
</template>
(2)在methods()中开发方法逻辑
download() {
if (this.area == 0 || !this.endDate || !this.startDate) {
this.$message({
message: "请选择一个基地或开始时间、结束时间不能为空",
type: "warning",
});
return false;
}
var s = this.startDate.getTime();
var e = this.endDate.getTime();
if (e - s < 0) {
this.$message({
message: "开始时间不能大于结束时间",
type: "warning",
});
return false;
}
var input =
"endDate=" +
moment(this.endDate).format("YYYY/MM/DD") +
"&startDate=" +
moment(this.startDate).format("YYYY/MM/DD");
this.isExportXls = true;
api
.getVehicleSomeTimeDataAsync(this.area, input)
.then((res) => {
// this.isExportXls = false;
if (res) {
this.exportData = [];
var flag = this.area - 1;
res.map((item, index) => {
var a = {};
a.areaName = this.areaList[flag].name;
a.vehicleName = item.vehicleName;
a.vehicleName = item.vehicleName;
a.allRunTime = item.whiteAndNightData.allRunTime;
a.transportTime = item.whiteAndNightData.transportTime;
a.transportQty = item.whiteAndNightData.transportQty;
a.chargeTime = item.whiteAndNightData.chargeTime;
a.chargeQty = item.whiteAndNightData.chargeQty;
a.parkTime = item.whiteAndNightData.parkTime;
a.parkQty = item.whiteAndNightData.parkQty;
a.noTaskChargeTime = item.noTask.whiteAndNightData.chargeTime;
a.noTaskParkTime = item.noTask.whiteAndNightData.parkTime;
if (index % 2 == 0) {
a.hasColor = true;
} else {
a.hasColor = false;
}
this.exportData.push(a);
console.log("this.exportData====",this.exportData);
});
this.downloadXLS();
// this.isExportXls = false;
}
})
.catch(() => {});
},
downloadXLS() {
setTimeout(() => {
this.Export2Excel();
this.isExportXls = false;
console.log("this.isExportXls=====", this.isExportXls);
}, 1000);
},
Export2Excel() {
require.ensure([], () => {
const { export_json_to_excel } = require("../../excel/Export2Excel");
var tHeader = [
"基地名称",
"车辆名称",
"运行总时长",
"订单任务时长",
"订单任务次数",
"充电任务时长",
"充电任务次数",
"停车任务时长",
"停车任务次数",
"无任务充电时长",
"无任务停车时长",
];
var filterVal = [
"areaName",
"vehicleName",
"allRunTime",
"transportTime",
"transportQty",
"chargeTime",
"chargeQty",
"parkTime",
"parkQty",
"noTaskChargeTime",
"noTaskParkTime",
];
const list = this.exportData;
console.log("this.exportData====", this.exportData);
const data = this.formatJson(filterVal, list);
export_json_to_excel(
tHeader,
data,
"基地历史数据(" +
moment(this.startDate).format("YYYY/MM/DD HH:mm:ss") +
"-" +
moment(this.endDate).format("YYYY/MM/DD HH:mm:ss")
);
});
},
formatJson(filterVal, jsonData) {
return jsonData.map((v) =>
filterVal.map((j) => {
if (j === "allRunTime" || j === "transportTime" || j === "chargeTime" || j === "parkTime" || j === "noTaskChargeTime" || j === "noTaskParkTime") {
return this.commonService.formatSecond(v[j]);
}else{
return v[j];
}
})
);
},
(3)页面展示

813

被折叠的 条评论
为什么被折叠?



