From 2cb735ef481569aea4a077fa150e33d17052f6ba Mon Sep 17 00:00:00 2001
From: TanYibin <5491541@qq.com>
Date: Mon, 17 Jul 2023 17:12:09 +0800
Subject: [PATCH] 接口日志增加内容复制按钮

---
 ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue | 34 ++++++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue b/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue
index e1a53c9..e48044e 100644
--- a/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue
+++ b/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue
@@ -103,19 +103,23 @@
         <template :slot="expandedRowRender" slot-scope="record">
           <div style="margin: 0">
             <div>
-              <a-badge status="default" style="vertical-align: text-bottom;"/>
+              <a-badge status="default" style="vertical-align: revert;" />
+              <a-button @click="copyToClipboard(record.requestHeader)" type="link" icon="copy" style="vertical-align: revert;"></a-button>
               <span style="vertical-align: left;word-break:break-all;white-space:pre-wrap;overflow:hidden;color:#b3b3b3;">请求头:{{ record.requestHeader }}</span>
             </div>
             <div>
-              <a-badge status="success" style="vertical-align: text-bottom;"/>
-              <span style="vertical-align: text-bottom;word-break:break-all;white-space:pre-wrap;overflow:hidden;color:saddlebrown;">请求内容:{{ record.requestBody }}</span>
+              <a-badge status="success" style="vertical-align: middle;" />
+              <a-button @click="copyToClipboard(record.requestBody)" type="link" icon="copy" style="vertical-align: middle;"></a-button>
+              <span style="vertical-align: middle; word-break: break-all; white-space: pre-wrap; overflow: hidden; color: saddlebrown;">请求内容:{{ record.requestBody }}</span>
             </div>
             <div>
-              <a-badge status="processing" style="vertical-align: text-bottom;"/>
+              <a-badge status="processing" style="vertical-align: revert;" />
+              <a-button @click="copyToClipboard(record.responseBody)" type="link" icon="copy" style="vertical-align: revert;"></a-button>
               <span style="vertical-align: text-bottom;word-break:break-all;white-space:pre-wrap;overflow:hidden;color:#0066CC;">响应内容:{{ record.responseBody }}</span>
             </div>
-            <div v-if="record.exception">
-              <a-badge status="error" style="vertical-align: text-bottom;"/>
+            <div v-if="record.exception" >
+              <a-badge status="error" style="vertical-align: revert;" />
+              <a-button @click="copyToClipboard(record.exception)" type="link" icon="copy" style="vertical-align: revert;"></a-button>
               <span style="vertical-align: text-bottom;word-break:break-all;white-space:pre-wrap;overflow:hidden;color:red">异常堆栈信息:{{ record.exception }}</span>
             </div>
           </div>
@@ -138,6 +142,7 @@ import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 import ApiLogModal from './modules/ApiLogModal'
 import JEllipsis from '@comp/jeecg/JEllipsis'
 import {getApiNameList} from '@api/api'
+import ClipboardJS from 'clipboard'
 
 export default {
   name: 'ApiLogList',
@@ -240,6 +245,23 @@ export default {
         }
       })
     },
+    copyToClipboard(content) {
+      const clipboard = new ClipboardJS('.copy-button', {
+        text: () => content
+      });
+
+      clipboard.on('success', () => {
+        clipboard.destroy();
+        this.$message.success('已复制到剪贴板');
+      });
+
+      clipboard.on('error', () => {
+        clipboard.destroy();
+        this.$message.error('复制失败');
+      });
+
+      clipboard.onClick(event); // 添加这一行来触发点击事件
+    },
     initDictConfig() {},
     getSuperFieldList() {
       let fieldList = []
--
libgit2 0.22.2