Surpriseplus
2022-10-27 4aac1609c95a097de0e8da843a9ed2f211303d4e
src/views/maintenance/logLog.vue
@@ -1,78 +1,121 @@
<template>
  <div class="logLog_box">
    <My-bread :list="['运维管理', '操作日志']"></My-bread>
    <My-bread
      :list="[
        `${$t('operatManage.operatManage')}`,
        `${$t('operatManage.logLog')}`,
      ]"
    ></My-bread>
    <el-divider />
    <div class="inquire">
      <div class="herder_box">
        {{ $t('operatManage.operationLogObj.queryRegion') }}
      </div>
      <el-form ref="formData1" :model="form" :inline="true">
        <el-form-item label="登录地址" prop="name">
          <el-input v-model="form.name" placeholder="请输入" />
        <el-form-item
          :label="$t('operatManage.operationLogObj.username')"
          prop="uname"
        >
          <el-input
            v-model="form.uname"
            :placeholder="$t('operatManage.operationLogObj.pleaseInput')"
          />
        </el-form-item>
        <el-form-item label="登录名称" prop="jurisdiction">
          <el-input v-model="form.jurisdiction" placeholder="请输入" />
        </el-form-item>
        <el-form-item label="登录状态" prop="region">
          <el-select v-model="form.region" placeholder="请选择">
            <el-option label="Zone one" value="shanghai" />
            <el-option label="Zone two" value="beijing" />
        <el-form-item
          :label="$t('operatManage.operationLogObj.operationType')"
          prop="type"
        >
          <el-select
            clearable
            v-model="form.type"
            :placeholder="$t('operatManage.operationLogObj.pleaseSelect')"
          >
            <el-option :label="$t('loglog.login')" value="1" />
            <el-option :label="$t('loglog.checkout')" value="2" />
            <el-option :label="$t('loglog.logout')" value="3" />
          </el-select>
        </el-form-item>
        <el-form-item label="登录时间">
          <el-col :span="11">
            <el-date-picker
              type="date"
              placeholder="选择日期"
              v-model="form.date1"
              style="width: 100%"
            ></el-date-picker>
          </el-col>
          <el-col class="line text-center" :span="2">-</el-col>
          <el-col :span="11">
            <el-time-picker
              placeholder="选择时间"
              v-model="form.date2"
              style="width: 100%"
            ></el-time-picker>
          </el-col>
        <el-form-item
          prop="start"
          :label="$t('operatManage.operationLogObj.startTime')"
        >
          <el-date-picker
            format="yyyy-MM-dd HH:mm:ss"
            value-format="yyyy-MM-dd HH:mm:ss"
            v-model="form.start"
            style="width: 100%"
            type="datetime"
            :placeholder="$t('operatManage.operationLogObj.optionDate')"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item
          prop="end"
          :label="$t('operatManage.operationLogObj.endTime')"
        >
          <el-date-picker
            format="yyyy-MM-dd HH:mm:ss"
            value-format="yyyy-MM-dd HH:mm:ss"
            v-model="form.end"
            style="width: 100%"
            type="datetime"
            :placeholder="$t('operatManage.operationLogObj.optionDate')"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item>
          <el-button @click="onSubmit">查询</el-button>
          <el-button @click="onSubmit" icon="el-icon-search">{{
            $t('operatManage.operationLogObj.inquire')
          }}</el-button>
          <el-button @click="onEmpty('formData1')" icon="el-icon-delete">{{
            $t('operatManage.operationLogObj.empty')
          }}</el-button>
        </el-form-item>
      </el-form>
      <div class="btn_box">
        <el-button>添加</el-button>
        <el-button>修改</el-button>
        <el-button>导出</el-button>
        <el-button>清空</el-button>
      </div>
    </div>
    <!-- 表格显示 -->
    <div class="table_box">
      <el-table :data="tableData" stripe style="width: 100%">
        <el-table-column type="selection" width="55" />
        <el-table-column prop="Accessnumber" label="访问编号" />
        <el-table-column prop="name" label="登录名称" />
        <el-table-column prop="ip" label="登录地址" />
        <el-table-column prop="loginaddress" label="登录地点" />
        <el-table-column prop="browser" label="浏览器" />
        <el-table-column prop="operatingsystem" label="操作系统" />
        <el-table-column prop="state" label="操作状态" />
        <el-table-column prop="operatinginformation" label="操作信息" />
        <el-table-column prop="date" label="登录时间" />
        <el-table-column fixed="right" label="操作" width="100">
          <template #default>
            <el-button type="primary" size="small">删除</el-button>
          </template>
        </el-table-column>
      <el-table :data="tableData" stripe style="width: 100%" height="85%">
        <el-table-column
          width="150"
          type="index"
          :label="$t('loglog.serialnumber')"
        />
        <el-table-column prop="uname" :label="$t('loglog.username')" />
        <el-table-column
          prop="appid"
          :label="$t('loglog.applicationProgram')"
          :formatter="formatAppid"
        />
        <el-table-column prop="ip" :label="$t('loglog.ipadress')" />
        <el-table-column prop="descr" :label="$t('loglog.describe')" />
        <el-table-column
          prop="optime"
          :formatter="formatData"
          :label="$t('loglog.operationtime')"
        />
        <el-table-column
          prop="type"
          :formatter="formatType"
          :label="$t('loglog.operationtype')"
        />
        <el-table-column
          prop="status"
          :formatter="formatStatus"
          :label="$t('loglog.operationStatus')"
        />
      </el-table>
      <!-- 分页 -->
      <div style="margin-top: 40px" class="pagination_box">
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="currentPage4"
          :current-page="listData.pageIndex"
          :page-sizes="[10, 20, 30, 40]"
          :page-size="10"
          :page-size="listData.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="9"
          :total="count"
        >
        </el-pagination>
      </div>
@@ -81,8 +124,8 @@
</template>
<script>
import MyBread from "../../components/MyBread.vue";
import MyBread from '../../components/MyBread.vue';
import { loginSelectByPageAndCount } from '../../api/api';
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {
@@ -92,126 +135,128 @@
  data() {
    return {
      currentPage4: 1,
      form: {
        name: "",
        region: "",
        jurisdiction: "",
      form: {},
      tableData: [],
      listData: {
        pageIndex: 1,
        pageSize: 10,
      },
      tableData: [
        {
          date: "2022-08-05",
          name: "admin",
          Accessnumber: "1",
          loginaddress: "北京市",
          browser: "chrome",
          operatingsystem: "windows10",
          state: "成功",
          operatinginformation: "登录成功",
          ip: "221.182.31.12",
        },
        {
          date: "2022-08-05",
          name: "admin",
          Accessnumber: "1",
          loginaddress: "北京市",
          browser: "IE11",
          operatingsystem: "windows10",
          state: "成功",
          operatinginformation: "登录成功",
          ip: "221.182.31.12",
        },
        {
          date: "2022-08-05",
          name: "admin",
          Accessnumber: "1",
          loginaddress: "北京市",
          browser: "chrome",
          operatingsystem: "windows10",
          state: "成功",
          operatinginformation: "登录成功",
          ip: "221.182.31.12",
        },
        {
          date: "2022-08-05",
          name: "admin",
          Accessnumber: "1",
          loginaddress: "北京市",
          browser: "chrome",
          operatingsystem: "windows10",
          state: "成功",
          operatinginformation: "登录成功",
          ip: "221.182.31.12",
        },
        {
          date: "2022-08-05",
          name: "admin",
          Accessnumber: "1",
          loginaddress: "北京市",
          browser: "chrome",
          operatingsystem: "windows10",
          state: "成功",
          operatinginformation: "登录成功",
          ip: "221.182.31.12",
        },
        {
          date: "2022-08-05",
          name: "admin",
          Accessnumber: "1",
          loginaddress: "北京市",
          browser: "IE11",
          operatingsystem: "windows10",
          state: "成功",
          operatinginformation: "登录成功",
          ip: "221.182.31.12",
        },
        {
          date: "2022-08-05",
          name: "admin",
          Accessnumber: "1",
          loginaddress: "北京市",
          browser: "chrome",
          operatingsystem: "windows10",
          state: "成功",
          operatinginformation: "登录成功",
          ip: "221.182.31.12",
        },
        {
          date: "2022-08-05",
          name: "admin",
          Accessnumber: "1",
          loginaddress: "北京市",
          browser: "chrome",
          operatingsystem: "windows10",
          state: "成功",
          operatinginformation: "登录成功",
          ip: "221.182.31.12",
        },
        {
          date: "2022-08-05",
          name: "admin",
          Accessnumber: "1",
          loginaddress: "北京市",
          browser: "IE11",
          operatingsystem: "windows10",
          state: "成功",
          operatinginformation: "登录成功",
          ip: "221.182.31.12",
        },
      ],
      count: 0,
    };
  },
  methods: {
    //格式化列表
    formatType(row, column) {
      let data;
      switch (row[column.property]) {
        case 1:
          data = '登录';
          break;
        case 2:
          data = '校验';
          break;
        case 3:
          data = '登出';
          break;
      }
      return data;
    },
    formatStatus(row, column) {
      let data;
      switch (row[column.property]) {
        case 1:
          data = '成功';
          break;
        case 0:
          data = '失败';
          break;
      }
      return data;
    },
    formatAppid(row, column) {
      let data;
      switch (row[column.property]) {
        case 1:
          data = '管道基础大数据平台';
          break;
        case 2:
          data = '外部系统集成';
          break;
      }
      return data;
    },
    //格式化时间
    add0(m) {
      return m < 10 ? '0' + m : m;
    },
    //格式化时间
    format(shijianchuo) {
      //shijianchuo是整数,否则要parseInt转换
      var time = new Date(shijianchuo);
      var y = time.getFullYear();
      var m = time.getMonth() + 1;
      var d = time.getDate();
      var h = time.getHours();
      var mm = time.getMinutes();
      var s = time.getSeconds();
      return (
        y + '-' + this.add0(m) + '-' + this.add0(d)
        // " " +
        // this.add0(h) +
        // ":" +
        // this.add0(mm) +
        // ":" +
        // this.add0(s)
      );
    },
    //格式化列表
    formatData(row, column) {
      let data = row[column.property];
      if (data == null) {
        return data;
      }
      return this.format(data);
    },
    handleSizeChange(val) {
      console.log(`每页 ${val} 条`);
      this.listData.pageSize = val;
      this.getList();
    },
    handleCurrentChange(val) {
      console.log(`当前页: ${val}`);
      this.listData.pageIndex = val;
      this.getList();
    },
    onSubmit() {
      console.log("submit!");
      this.listData = { ...this.listData, ...this.form };
      //  console.log(this.listData)
      this.getList();
    },
    onEmpty(formData1) {
      this.$refs[formData1].resetFields(); //重置表单数据
      // this.form = {};
      this.form.start = null;
      this.form.end = null;
    },
    async getList() {
      const data = await loginSelectByPageAndCount(this.listData);
      if (data.code != 200) {
        return this.$message.error('列表调用失败');
      }
      this.tableData = data.result;
      this.count = data.count;
    },
  },
  created() {},
  created() {
    var val = this.$store.state.currentPerms;
    var permsEntity = this.$store.state.permsEntity;
    for (var i = 0; i < permsEntity.length; i++) {
      if (permsEntity[i].perms == val) {
        // this.showPermsMenu(permsEntity[i]);
        console.log(permsEntity[i].tag);
      }
    }
    this.getList();
  },
};
</script>
<style lang="less" scoped>
@@ -229,12 +274,20 @@
    border-radius: 5px;
    border: 1px solid rgb(202, 201, 204);
    margin-bottom: 20px;
    .herder_box {
      padding: 10px;
      border-bottom: 1px solid #ccc;
      margin-bottom: 20px;
      font-size: 14px;
    }
  }
  .table_box {
    padding: 10px;
    background: #fff;
    border-radius: 5px;
    border: 1px solid rgb(202, 201, 204);
    overflow: auto;
    height: 70%;
  }
  .text-center {
    text-align: center;