deviceLog.vue 11 KB
<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"
        :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: "http://localhost:5221/api/Log/ExportEquipmentExecutedLog",
    };
  },
  created() {
    this.optionsBllResult[0].label = this.$t("taskManage.all");
    this.getFlag("LogLevelFlag");
    this.getTableList();
  },
  computed: {
    TableHeight() {
      return `calc(100vh - 390px )`;
    },
  },
  methods: {
    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>