<template> <div class="interfacel"> <el-form :model="queryConfig" :rules="rules" ref="queryConfig" label-width="100px" class="demo-queryConfig" > <el-row :gutter="10"> <el-col :span="3"> <el-form-item :label="$t('logManage.deviceName')" prop="name"> <el-input v-model="queryConfig.equipmentCode" :placeholder=" $t('logManage.PleaseEnter') + $t('logManage.deviceName') " ></el-input> </el-form-item> </el-col> <el-col :span="3"> <el-form-item :label="$t('logManage.Category')" prop="name"> <el-input v-model="queryConfig.logType" :placeholder=" $t('logManage.PleaseEnter') + $t('logManage.Category') " ></el-input> </el-form-item> </el-col> <el-col :span="3"> <el-form-item :label="$t('logManage.message')" prop="name"> <el-input v-model="queryConfig.message" :placeholder=" $t('logManage.PleaseEnter') + $t('logManage.message') " ></el-input> </el-form-item> </el-col> <el-col :span="3"> <el-form-item :label="$t('logManage.Category')" prop=""> <el-select v-model="queryConfig.bllResultCode" :placeholder=" $t('logManage.PleaseSelect') + $t('logManage.Category') " > <el-option v-for="item in optionsBllResult" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="3.5"> <el-form-item :label="$t('logManage.startTime')" prop=""> <el-date-picker v-model="form.startTime" type="datetime" :placeholder=" $t('logManage.PleaseSelect') + $t('logManage.startTime') " /> </el-form-item> </el-col> <el-col :span="3.5"> <el-form-item :label="$t('logManage.endTime')" prop=""> <el-date-picker v-model="form.endTime" type="datetime" :placeholder=" $t('logManage.PleaseSelect') + $t('logManage.endTime') " /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="" prop=""> <el-button icon="el-icon-search" class="T1" @click="btnAction()" size="small" type="primary" >{{ $t("logManage.query") }}</el-button > <el-button class="T1" size="small" @click="details()">{{ $t("logManage.queryDetails") }}</el-button> <el-button class="T1" size="small" icon="el-icon-download" @click="ExportList()" >{{ $t("logManage.export") }}</el-button > </el-form-item> </el-col> </el-row> </el-form> <div class="table"> <el-table :data="tableData" border highlight-current-row :height="TableHeight" @selection-change="handleSelectionChange" @row-click="handleRowClick" ref="multipleTable" :header-cell-style="{ color: '#000000' }" class="custom-table" > <el-table-column type="selection" align="center" width="55" ></el-table-column> <el-table-column prop="id" :label="$t('logManage.internalID')" width="180" > </el-table-column> <el-table-column prop="equipmentCode" :label="$t('logManage.deviceName')" width="180" > </el-table-column> <el-table-column prop="logType" :label="$t('logManage.Category')"> </el-table-column> <el-table-column prop="message" :label="$t('logManage.message')"> </el-table-column> <el-table-column prop="bllResultCode" :label="$t('logManage.logLevel')"> </el-table-column> <el-table-column prop="errorCode" :label="$t('logManage.alarmDode')"> </el-table-column> <el-table-column prop="created" :label="$t('logManage.createdTime')"> </el-table-column> </el-table> <div class="pagination-container"> <el-pagination style="margin-top: 15px" align="center" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryConfig.currentPage" :page-sizes="[20, 50, 100]" :page-size="queryConfig.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" /> </div> </div> <el-dialog :title="$t('logManage.DeviceExecutionLogData')" :visible.sync="dialogFormVisible" > <div class="container" v-for="(item, index) in detailsData" :key="index"> <div class="box"> <div class="inner-left">{{ $t("logManage.internalID") }}:</div> <div class="inner-right">{{ item.id }}</div> </div> <div class="box"> <div class="inner-left">{{ $t("logManage.logLevel") }}:</div> <div class="inner-right">{{ item.bllResultCode }}</div> </div> <div class="box"> <div class="inner-left">{{ $t("logManage.EquipmentCode") }}:</div> <div class="inner-right">{{ item.equipmentCode }}</div> </div> <div class="box"> <div class="inner-left">{{ $t("logManage.Category") }}:</div> <div class="inner-right">{{ item.logType }}</div> </div> <div class="box"> <div class="inner-left">{{ $t("logManage.startTime") }}:</div> <div class="inner-right">{{ item.created }}</div> </div> <div class="box"> <div class="inner-left">{{ $t("logManage.endTime") }}:</div> <div class="inner-right">{{ item.update }}</div> </div> <div class="box"> <div class="inner-left">{{ $t("logManage.endTime") }}:</div> <div class="inner-right">{{ item.errorCode }}</div> </div> <div class="TextField"> <div class="inner-left">{{ $t("logManage.message") }}:</div> <div class="inner-right"> <el-input type="textarea" :rows="6" :placeholder=" $t('logManage.PleaseEnter') + $t('logManage.message') " v-model="item.message" /> </div> </div> </div> <div slot="footer" class="dialog-footer"> <el-button @click="dialogFormVisible = false">{{ $t("logManage.cancel") }}</el-button> </div> </el-dialog> </div> </template> <script> import { GetDictWithDetailsLangs, GetEquipmentExecutedLog, GetEquipmentExecutedLogById, } from "@/api/logManage/index"; import downloadFile from "@/api/user"; export default { data() { return { tableData: [], queryConfig: { currentPage: 1, pageSize: 20, equipmentCode: "", logType: "", message: "", bllResultCode: "", }, total: 0, form: { startTime: this.$moment() .subtract(3, "days") .format("YYYY-MM-DD 00:00:00"), endTime: this.$moment().add(1, "days").format("YYYY-MM-DD 23:59:59"), }, optionsBllResult: [ { value: "", label: "", }, ], dialogFormVisible: false, multipleSelection: [], detailsData: [], export: "api/Log/ExportEquipmentExecutedLog", }; }, created() { this.optionsBllResult[0].label = this.$t("taskManage.all"); this.getFlag("LogLevelFlag"); this.getTableList(); }, computed: { TableHeight() { return `calc(100vh - 390px )`; }, }, methods: { handleRowClick(row) { this.$refs.multipleTable.toggleRowSelection(row); }, btnAction() { this.getTableList(); }, getFlag(data) { let params = { Code: data }; GetDictWithDetailsLangs(params).then((response) => { response.data.dictDetails.forEach((x) => { this.optionsBllResult.push({ value: x.code, label: x.name }); }); }); }, getTableList() { const params = { pageNumber: this.queryConfig.currentPage, perPageCount: this.queryConfig.pageSize, queryConfig: { equipmentCode: this.queryConfig.equipmentCode, logType: this.queryConfig.logType, message: this.queryConfig.message, bllResultCode: this.queryConfig.bllResultCode, begin: this.form.startTime, end: this.form.endTime, }, }; this.listLoading = true; GetEquipmentExecutedLog(params).then((response) => { this.total = response.data.totalCount; this.tableData = response.data.data; this.listLoading = false; }); }, // 详情 details() { if (this.multipleSelection.length == 0) { this.$alert( this.$t("logManage.PleaseSelectApieceOfData"), this.$t("logManage.DeviceExecutionLogDetails"), { confirmButtonText: this.$t("logManage.sure"), } ); } else { this.detailsData = []; let params = { id: this.multipleSelection[0].id, }; GetEquipmentExecutedLogById(params).then((response) => { this.detailsData.push(response.data); }); this.dialogFormVisible = true; } }, //导出按钮 ExportList() { const params = { pageNumber: this.queryConfig.currentPage, perPageCount: this.queryConfig.pageSize, queryConfig: { equipmentCode: this.queryConfig.equipmentCode, logType: this.queryConfig.logType, message: this.queryConfig.message, bllResultCode: this.queryConfig.bllResultCode, begin: this.form.startTime, end: this.form.endTime, }, }; let text = this.$t("logManage.DeviceExecutionLogData") + ".xlsx"; // 调用下载函数 downloadFile(this.export, params, text); }, //获取表格行数据 handleSelectionChange(val) { this.multipleSelection = val; }, //分页 handleSizeChange(val) { this.queryConfig.pageSize = val; this.queryConfig.currentPage = 1; this.getTableList(); }, handleCurrentChange(val) { this.queryConfig.currentPage = val; this.getTableList(); }, }, }; </script> <style scoped lang="scss"> .interfacel { width: 100%; } .el-row { margin-bottom: 5px; } .interfacel-content { display: flex; border-radius: 4px; min-height: 46px; margin-bottom: 10px; align-items: center; } .table { border: 1px solid #e5e9f2; } .T1 { border: 1px solid #b3d8ff; } .pagination-container { text-align: center; /* 使分页组件靠右 */ margin-top: 20px; /* 添加顶部间距 */ } </style>