From 073605b6d62363dd7d48f5ca047a1d401418574a Mon Sep 17 00:00:00 2001
From: zzw <228544128@qq.com>
Date: 星期日, 04 十月 2026 17:34:06 +0800
Subject: [PATCH] docs: record 2026-10-04 integration commit
---
emergency-repair-web/src/views/system/LoginLogManage.vue | 96 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 96 insertions(+), 0 deletions(-)
diff --git a/emergency-repair-web/src/views/system/LoginLogManage.vue b/emergency-repair-web/src/views/system/LoginLogManage.vue
new file mode 100644
index 0000000..cbbd963
--- /dev/null
+++ b/emergency-repair-web/src/views/system/LoginLogManage.vue
@@ -0,0 +1,96 @@
+<template>
+ <div class="page">
+ <div class="page-title">
+ <div><h2>鐧诲綍鏃ュ織</h2><p>璁板綍姣忔鐧诲綍灏濊瘯鐨勭敤鎴枫�佹潵婧愬湴鍧�銆佺粨鏋滃拰鏃堕棿</p></div>
+ </div>
+ <div class="table-panel">
+ <div class="toolbar">
+ <el-input v-model="filters.keyword" clearable placeholder="璐︽埛鍚� / 濮撳悕" style="width:200px" @keyup.enter.native="search"></el-input>
+ <el-select v-model="filters.status" clearable placeholder="鐧诲綍缁撴灉" style="width:140px">
+ <el-option label="鎴愬姛" value="SUCCESS"></el-option>
+ <el-option label="澶辫触" value="FAIL"></el-option>
+ </el-select>
+ <el-date-picker
+ v-model="filters.dates"
+ type="daterange"
+ value-format="yyyy-MM-dd"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ style="width:260px"
+ ></el-date-picker>
+ <el-button type="primary" icon="el-icon-search" v-permission="'system:login-logs:query'" @click="search">鏌ヨ</el-button>
+ <el-button icon="el-icon-refresh-left" @click="reset">閲嶇疆</el-button>
+ </div>
+ <el-table v-loading="loading" :data="rows" border stripe height="calc(100vh - 250px)">
+ <el-table-column prop="loginTime" label="鐧诲綍鏃堕棿" width="180"></el-table-column>
+ <el-table-column prop="userName" label="璐︽埛鍚�" min-width="140"></el-table-column>
+ <el-table-column prop="nickName" label="濮撳悕" min-width="140"></el-table-column>
+ <el-table-column prop="deptName" label="鎵�灞為儴闂�" min-width="180" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="loginIp" label="鐧诲綍IP" min-width="150"></el-table-column>
+ <el-table-column label="缁撴灉" width="90" align="center">
+ <template slot-scope="{ row }">
+ <el-tag size="mini" :type="row.status === 'SUCCESS' ? 'success' : 'danger'">{{ row.status === 'SUCCESS' ? '鎴愬姛' : '澶辫触' }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="message" label="璇存槑" min-width="180" show-overflow-tooltip></el-table-column>
+ </el-table>
+ <el-pagination
+ class="pager"
+ background
+ layout="total, sizes, prev, pager, next"
+ :total="total"
+ :current-page="current"
+ :page-size="size"
+ :page-sizes="[20, 50, 100]"
+ @current-change="handleCurrentChange"
+ @size-change="handleSizeChange"
+ ></el-pagination>
+ </div>
+ </div>
+</template>
+<script>
+import api from '@/api'
+export default {
+ name: 'LoginLogManage',
+ data() {
+ return {
+ rows: [],
+ total: 0,
+ current: 1,
+ size: 20,
+ loading: false,
+ filters: { keyword: '', status: '', dates: [] }
+ }
+ },
+ created() { this.load() },
+ methods: {
+ load() {
+ this.loading = true
+ const dates = this.filters.dates || []
+ api.get('/system/login-logs', {
+ params: {
+ keyword: this.filters.keyword || undefined,
+ status: this.filters.status || undefined,
+ startDate: dates[0] || undefined,
+ endDate: dates[1] || undefined,
+ current: this.current,
+ size: this.size
+ }
+ }).then(res => {
+ const data = res.data || {}
+ this.rows = data.records || []
+ this.total = data.total || 0
+ }).finally(() => { this.loading = false })
+ },
+ search() { this.current = 1; this.load() },
+ reset() { this.filters = { keyword: '', status: '', dates: [] }; this.search() },
+ handleCurrentChange(page) { this.current = page; this.load() },
+ handleSizeChange(size) { this.size = size; this.current = 1; this.load() }
+ }
+}
+</script>
+<style scoped>
+.toolbar { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
+.pager { margin-top: 12px; text-align: right; }
+</style>
--
Gitblit v1.9.1