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