index.vue 3.41 KB
Newer Older
sunhongwei's avatar
sunhongwei committed
1 2 3
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
Marcus's avatar
Marcus committed
4 5
      <el-form-item :label="$t('登录地址')" prop="userIp">
        <el-input v-model="queryParams.userIp" :placeholder="$t('请输入登录地址')" clearable @keyup.enter.native="handleQuery"/>
sunhongwei's avatar
sunhongwei committed
6
      </el-form-item>
Marcus's avatar
Marcus committed
7 8
      <el-form-item :label="$t('用户名称')" prop="username">
        <el-input v-model="queryParams.username" :placeholder="$t('请输入用户名称')" clearable @keyup.enter.native="handleQuery"/>
sunhongwei's avatar
sunhongwei committed
9 10
      </el-form-item>
      <el-form-item>
Marcus's avatar
Marcus committed
11 12
        <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t('搜索') }}</el-button>
        <el-button icon="el-icon-refresh" @click="resetQuery">{{ $t('重置') }}</el-button>
sunhongwei's avatar
sunhongwei committed
13 14 15 16
      </el-form-item>

    </el-form>
    <el-table v-loading="loading" :data="list" style="width: 100%;">
Marcus's avatar
Marcus committed
17 18 19 20
      <el-table-column :label="$t('会话编号')" align="center" prop="id" width="300" />
      <el-table-column :label="$t('登录名称')" align="center" prop="username" width="100" />
      <el-table-column :label="$t('部门名称')" align="center" prop="deptName" width="100" />
      <el-table-column :label="$t('登录地址')" align="center" prop="userIp" width="100" />
sunhongwei's avatar
sunhongwei committed
21
      <el-table-column label="userAgent" align="center" prop="userAgent" :show-overflow-tooltip="true" />
Marcus's avatar
Marcus committed
22
      <el-table-column :label="$t('登录时间')" align="center" prop="createTime" width="180">
sunhongwei's avatar
sunhongwei committed
23 24 25 26
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
Marcus's avatar
Marcus committed
27
      <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width">
sunhongwei's avatar
sunhongwei committed
28 29
        <template slot-scope="scope">
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleForceLogout(scope.row)"
Marcus's avatar
Marcus committed
30
            v-hasPermi="['system:user-session:delete']">{{ $t('强退') }}</el-button>
sunhongwei's avatar
sunhongwei committed
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
        </template>
      </el-table-column>
    </el-table>

    <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
                @pagination="getList"/>
  </div>
</template>

<script>
import { list, forceLogout } from "@/api/system/session";

export default {
  name: "Online",
  data() {
    return {
      // 遮罩层
      loading: true,
      // 总条数
      total: 0,
      // 表格数据
      list: [],
      // 查询参数
      queryParams: {
        pageNo: 1,
        pageSize: 10,
        userIp: undefined,
        username: undefined
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** 查询登录日志列表 */
    getList() {
      this.loading = true;
      list(this.queryParams).then(response => {
        this.list = response.data.list;
        this.total = response.data.total;
        this.loading = false;
      });
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.pageNo = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    /** 强退按钮操作 */
    handleForceLogout(row) {
      this.$modal.confirm('是否确认强退名称为"' + row.username + '"的数据项?').then(function() {
          return forceLogout(row.id);
        }).then(() => {
          this.getList();
          this.$modal.msgSuccess("强退成功");
      }).catch(() => {});
    }
  }
};
</script>