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/OperationLogManage.vue | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 104 insertions(+), 0 deletions(-)
diff --git a/emergency-repair-web/src/views/system/OperationLogManage.vue b/emergency-repair-web/src/views/system/OperationLogManage.vue
new file mode 100644
index 0000000..51e337a
--- /dev/null
+++ b/emergency-repair-web/src/views/system/OperationLogManage.vue
@@ -0,0 +1,104 @@
+<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:230px" @keyup.enter.native="search"></el-input>
+ <el-select v-model="filters.module" clearable placeholder="妯″潡" style="width:160px">
+ <el-option v-for="item in modules" :key="item" :label="item" :value="item"></el-option>
+ </el-select>
+ <el-select v-model="filters.operationType" clearable placeholder="鎿嶄綔绫诲瀷" style="width:150px">
+ <el-option v-for="item in operationTypes" :key="item" :label="item" :value="item"></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:operation-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="createTime" label="鎿嶄綔鏃堕棿" width="180"></el-table-column>
+ <el-table-column prop="userName" label="璐︽埛鍚�" width="130"></el-table-column>
+ <el-table-column prop="nickName" label="濮撳悕" width="120"></el-table-column>
+ <el-table-column prop="module" label="妯″潡" width="130"></el-table-column>
+ <el-table-column prop="operationType" label="鎿嶄綔绫诲瀷" width="110" align="center"></el-table-column>
+ <el-table-column prop="targetType" label="鐩爣绫诲瀷" width="120"></el-table-column>
+ <el-table-column prop="targetId" label="鐩爣ID" width="180" show-overflow-tooltip></el-table-column>
+ <el-table-column label="缁撴灉" width="80" align="center">
+ <template slot-scope="{ row }">
+ <el-tag size="mini" :type="row.result === '鎴愬姛' ? 'success' : 'danger'">{{ row.result }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="requestMethod" label="鏂瑰紡" width="80" align="center"></el-table-column>
+ <el-table-column prop="requestUri" label="璇锋眰鍦板潃" min-width="240" 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: 'OperationLogManage',
+ data() {
+ return {
+ rows: [],
+ total: 0,
+ current: 1,
+ size: 20,
+ loading: false,
+ modules: ['鏁呴殰绠$悊', '瀹屽伐绠$悊', '瀹屽伐楠屾敹', '缁熻鎶ヨ〃', '鐢ㄦ埛绠$悊', '瑙掕壊绠$悊', '鑿滃崟绠$悊', '鎵夸慨鍗曚綅绠$悊', '绯荤粺绠$悊', '鍏朵粬'],
+ operationTypes: ['鏂板', '淇敼', '鍒犻櫎', '鎺堟潈', '瀹℃壒', '娲惧崟', '閿�椤�', '鎻愪氦', '鐢宠', '鎵撳嵃', '璇勭骇', '鑿滃崟鎸夐挳閰嶇疆'],
+ filters: { keyword: '', module: '', operationType: '', dates: [] }
+ }
+ },
+ created() { this.load() },
+ methods: {
+ load() {
+ this.loading = true
+ const dates = this.filters.dates || []
+ api.get('/system/operation-logs', {
+ params: {
+ keyword: this.filters.keyword || undefined,
+ module: this.filters.module || undefined,
+ operationType: this.filters.operationType || 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: '', module: '', operationType: '', 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