From 25df88d0ab9d7444ed1d162b9efa1259ac2f6f66 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 27 四月 2026 10:13:53 +0800
Subject: [PATCH] 小程序对接finish

---
 frontend-admin/src/views/ApprovalTodoView.vue |  118 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 86 insertions(+), 32 deletions(-)

diff --git a/frontend-admin/src/views/ApprovalTodoView.vue b/frontend-admin/src/views/ApprovalTodoView.vue
index d4b9934..ea17e9f 100644
--- a/frontend-admin/src/views/ApprovalTodoView.vue
+++ b/frontend-admin/src/views/ApprovalTodoView.vue
@@ -1,34 +1,73 @@
 <template>
   <div>
+    <div class="page-head">
+      <div class="page-title">运维日志</div>
+      <div class="page-subtitle">展示管理后台写操作记录</div>
+    </div>
+
     <el-table :data="rows" v-loading="loading" stripe>
-      <el-table-column prop="id" label="任务ID" width="100" />
-      <el-table-column prop="nodeCode" label="节点" width="200" />
-      <el-table-column prop="taskStatus" label="状态" width="120" />
-      <el-table-column label="操作" width="200">
+      <el-table-column prop="opTime" label="操作时间" min-width="180" />
+      <el-table-column prop="operatorName" label="操作人" min-width="120" />
+      <el-table-column prop="module" label="模块" min-width="120" />
+      <el-table-column prop="action" label="动作" min-width="140" />
+      <el-table-column prop="resourceType" label="资源类型" min-width="140" show-overflow-tooltip />
+      <el-table-column prop="resourceId" label="资源标识" min-width="220" show-overflow-tooltip />
+      <el-table-column prop="traceId" label="TraceId" min-width="220" show-overflow-tooltip />
+      <el-table-column label="详情" min-width="280">
         <template #default="{ row }">
-          <div class="table-ops">
-            <el-button v-permission="'approvals:action'" size="small" type="success" link @click="act(row, true)">同意</el-button>
-            <el-button v-permission="'approvals:action'" size="small" type="danger" link @click="act(row, false)">拒绝</el-button>
-          </div>
+          <span class="detail-text">{{ row.detailJson || "—" }}</span>
         </template>
       </el-table-column>
     </el-table>
+
+    <div class="pager">
+      <el-pagination
+        background
+        layout="total, prev, pager, next"
+        :current-page="page"
+        :page-size="size"
+        :total="total"
+        @current-change="handlePageChange"
+      />
+    </div>
   </div>
 </template>
 
 <script setup lang="ts">
 import { onMounted, ref } from "vue";
-import { ElMessage, ElMessageBox } from "element-plus";
+import { ElMessage } from "element-plus";
 import http from "../api/http";
 
+type OpLogRow = {
+  id: number;
+  opTime?: string;
+  operatorName?: string;
+  module?: string;
+  action?: string;
+  resourceType?: string;
+  resourceId?: string;
+  traceId?: string;
+  detailJson?: string;
+};
+
 const loading = ref(false);
-const rows = ref<Record<string, unknown>[]>([]);
+const rows = ref<OpLogRow[]>([]);
+const page = ref(1);
+const size = ref(10);
+const total = ref(0);
 
 async function load() {
   loading.value = true;
   try {
-    const { data } = await http.get("/approvals/todo", { params: { page: 1, size: 50 } });
+    const { data } = await http.get("/op-logs", {
+      params: {
+        page: page.value,
+        size: size.value,
+        sourceType: "ADMIN",
+      },
+    });
     rows.value = data.result || [];
+    total.value = data.total || 0;
   } catch (e: unknown) {
     ElMessage.error(e instanceof Error ? e.message : "加载失败");
   } finally {
@@ -36,28 +75,43 @@
   }
 }
 
-async function act(row: Record<string, unknown>, approve: boolean) {
-  let comment = "";
-  if (!approve) {
-    const { value } = await ElMessageBox.prompt("拒绝原因", "审批", {
-      confirmButtonText: "确定",
-      cancelButtonText: "取消",
-    });
-    comment = value || "";
-  }
-  try {
-    await http.post("/approvals/action", {
-      taskId: row.id,
-      taskUuid: row.uuid,
-      approve,
-      comment,
-    });
-    ElMessage.success("已处理");
-    load();
-  } catch (e: unknown) {
-    ElMessage.error(e instanceof Error ? e.message : "操作失败");
-  }
+function handlePageChange(nextPage: number) {
+  page.value = nextPage;
+  load();
 }
 
 onMounted(load);
 </script>
+
+<style scoped>
+.page-head {
+  margin-bottom: 16px;
+}
+
+.page-title {
+  font-size: 18px;
+  font-weight: 600;
+  color: #1f2937;
+}
+
+.page-subtitle {
+  margin-top: 4px;
+  font-size: 13px;
+  color: #6b7280;
+}
+
+.pager {
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 16px;
+}
+
+.detail-text {
+  display: inline-block;
+  max-width: 100%;
+  color: #4b5563;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+</style>

--
Gitblit v1.7.1