wcs_client_s7_baoying/src/view/component/runningInfo/DownloadLog.vue

185 lines
5.6 KiB
Vue
Raw Normal View History

2024-06-20 09:50:44 +08:00
<template>
<div>
<el-form :model="downLoadLog" :label-width="120" style="width: 30vh">
<div style="font-size: 0.8rem; margin-bottom: 1rem; color: coral">
下载路径在您的浏览器里设置哦
</div>
<el-form-item label="日志类型:">
<el-select v-model="downLoadLog.logType" @change="changeLogType">
<el-option label="系统日志" value="系统日志" />
<el-option label="事件日志" value="事件日志" />
<el-option label="接口请求日志" value="接口请求日志" />
<el-option label="接口接收日志" value="接口接收日志" />
<el-option label="异常日志" value="异常日志" />
<el-option label="数据库日志" value="数据库日志" />
</el-select>
</el-form-item>
<el-form-item label="日志时间:">
<el-badge :value="fileName.length">
<el-select v-model="downLoadLog.logFileName" style="width: calc(30vh - 120px)">
<el-option v-for="item in fileName" :label="item" :value="item" />
</el-select>
</el-badge>
</el-form-item>
</el-form>
<span class="dialog-footer">
<el-button @click="preview">预览</el-button>
<el-button type="primary" @click="startDownLoad">下载</el-button>
</span>
</div>
</template>
<script>
// import 《组件名称》 from '《组件路径》 ';
import sysApi from "@/axios/system";
import {ElMessage} from "element-plus";
export default {
// import 引入的组件需要注入到对象中才能使用
components: {},
props: ['modelValue'],
emits: ['update:modelValue'],
data() {
// 这里存放数据
return {
downLoadLog: {
// log类型
logType: '',
// log文件名
logFileName: ''
},
// 文件列表
fileName: []
}
},
// 计算属性 类似于 data 概念
computed: {
},
// 监控 data 中的数据变化
watch: {},
// 方法集合
methods: {
// 下载文件
startDownLoad() {
if(this.downLoadLog.logFileName === '' || this.downLoadLog.logType === '')
{
ElMessage({
message: '需要先选择类型和时间',
type: 'warning',
})
return
}
sysApi.checkDownloadFile(this.downLoadLog).then((response) => {
const responseData = response.data
if(responseData.success === false) {
ElMessage({
message: '文件不存在',
type: 'warning',
})
return
}
sysApi.downloadFile(this.downLoadLog).then((response) => {
const responseData = response.data
const link = document.createElement('a');
link.href = window.URL.createObjectURL(new Blob([responseData]));
link.setAttribute('download', this.downLoadLog.logType + this.downLoadLog.logFileName);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
ElMessage({
message: '您的下载将在 30秒内开始请稍后',
type: 'success',
})
}).catch((ex) => {
// 通讯报错
ElMessage({
message: '下载出现异常:' + ex,
type: 'error',
})
})
}).catch((ex) => {
// 通讯报错
ElMessage({
message: '下载文件验证出现异常:' + ex,
type: 'error',
})
})
},
changeLogType() {
this.downLoadLog.logFileName = ''
sysApi.getLogFileName(this.downLoadLog.logType).then((response) => {
const responseData = response.data
if(responseData.code !== 0 || responseData["returnData"] === undefined || responseData["returnData"] === null) {
ElMessage({
message: '没有文件',
type: 'warning',
})
this.fileName = []
return
}
this.fileName = responseData["returnData"]
}).catch((ex) => {
// 通讯报错
ElMessage({
message: '请求出现异常:' + ex,
type: 'error',
})
this.fileName = []
})
},
// 预览
preview() {
if(this.downLoadLog.logFileName === '' || this.downLoadLog.logType === '')
{
ElMessage({
message: '需要先选择类型和时间',
type: 'warning',
})
return
}
this.$emit('update:modelValue', '')
sysApi.checkDownloadFile(this.downLoadLog).then((response) => {
const responseData = response.data
if(responseData.success === false) {
ElMessage({
message: '文件不存在',
type: 'warning',
})
return
}
sysApi.downloadFile(this.downLoadLog).then((response) => {
const responseData = response.data
responseData.text().then(data=>{
this.$emit('update:modelValue', data)
}).catch(err=>{
ElMessage({
message: '预览出现异常:' + err,
type: 'error',
})
})
}).catch((ex) => {
// 通讯报错
ElMessage({
message: '预览出现异常:' + ex,
type: 'error',
})
})
}).catch((ex) => {
// 通讯报错
ElMessage({
message: '预览文件验证出现异常:' + ex,
type: 'error',
})
})
}
},
// 生命周期 - 挂载完成(可以访问 DOM 元素)
mounted() {
}
}
</script>
<style scoped>
</style>