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/ExportView.vue | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 101 insertions(+), 12 deletions(-)
diff --git a/frontend-admin/src/views/ExportView.vue b/frontend-admin/src/views/ExportView.vue
index 296b36f..e0275f6 100644
--- a/frontend-admin/src/views/ExportView.vue
+++ b/frontend-admin/src/views/ExportView.vue
@@ -1,28 +1,117 @@
<template>
<div>
- <p>异步导出任务入队(无 RabbitMQ 时后端仅记录日志并返回 taskId)。</p>
- <el-button v-permission="'exports:enqueue'" type="primary" @click="enqueue">发起导出</el-button>
- <p v-if="taskId">taskId: {{ taskId }}</p>
+ <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="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 }">
+ <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 { ref } from "vue";
+import { onMounted, ref } from "vue";
import { ElMessage } from "element-plus";
import http from "../api/http";
-const taskId = ref("");
+type OpLogRow = {
+ id: number;
+ opTime?: string;
+ operatorName?: string;
+ module?: string;
+ action?: string;
+ resourceType?: string;
+ resourceId?: string;
+ traceId?: string;
+ detailJson?: string;
+};
-async function enqueue() {
+const loading = ref(false);
+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.post("/exports/enqueue", {
- type: "appointment",
- criteria: { status: "PENDING_APPROVAL" },
+ const { data } = await http.get("/op-logs", {
+ params: {
+ page: page.value,
+ size: size.value,
+ sourceType: "MINI_EMPLOYEE",
+ },
});
- taskId.value = data.result?.taskId || "";
- ElMessage.success("已入队");
+ rows.value = data.result || [];
+ total.value = data.total || 0;
} catch (e: unknown) {
- ElMessage.error(e instanceof Error ? e.message : "失败");
+ ElMessage.error(e instanceof Error ? e.message : "加载失败");
+ } finally {
+ loading.value = false;
}
}
+
+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