Skip to content

Commit b8182b6

Browse files
committed
feat: 初步集成PageSpy,设置内增加上传离线日志按钮
1 parent 87e5b05 commit b8182b6

File tree

4 files changed

+56
-2
lines changed

4 files changed

+56
-2
lines changed

packages/effects/layouts/src/widgets/preferences/preferences-drawer.vue

+21-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import type { SegmentedItem } from '@vben-core/shadcn-ui';
1414
1515
import { computed, ref } from 'vue';
1616
17-
import { Copy, RotateCw } from '@vben/icons';
17+
import { CloudUpload, Copy, RotateCw } from '@vben/icons';
1818
import { $t, loadLocaleMessages } from '@vben/locales';
1919
import {
2020
clearPreferencesCache,
@@ -30,7 +30,7 @@ import {
3030
} from '@vben-core/shadcn-ui';
3131
import { globalShareState } from '@vben-core/shared/global-state';
3232
33-
import { useClipboard } from '@vueuse/core';
33+
import { useClipboard, useThrottleFn } from '@vueuse/core';
3434
3535
import {
3636
Animation,
@@ -217,6 +217,18 @@ async function handleReset() {
217217
resetPreferences();
218218
await loadLocaleMessages(preferences.app.locale);
219219
}
220+
const harbor = computed(() => window.$harbor);
221+
// 防抖
222+
const handleUploadLog = useThrottleFn(() => {
223+
if (!harbor.value) {
224+
return;
225+
}
226+
harbor.value.onOfflineLog('upload');
227+
message.copyPreferencesSuccess?.(
228+
$t('preferences.logUploadSuccessTitle'),
229+
$t('preferences.logUploadSuccess'),
230+
);
231+
}, 5000);
220232
</script>
221233

222234
<template>
@@ -228,6 +240,13 @@ async function handleReset() {
228240
>
229241
<template #extra>
230242
<div class="flex items-center">
243+
<VbenIconButton
244+
:disabled="!harbor"
245+
:tooltip="$t('preferences.logUpload')"
246+
class="relative"
247+
>
248+
<CloudUpload class="size-4" @click="handleUploadLog" />
249+
</VbenIconButton>
231250
<VbenIconButton
232251
:disabled="!diffPreference"
233252
:tooltip="$t('preferences.resetTip')"

packages/locales/src/langs/en-US/preferences.json

+3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
"copyPreferencesSuccessTitle": "Copy successful",
2929
"copyPreferencesSuccess": "Copy successful, please override in `src/preferences.ts` under app",
3030
"clearAndLogout": "Clear Cache & Logout",
31+
"logUpload": "Upload Log",
32+
"logUploadSuccess": "Log Upload Successful",
33+
"logUploadSuccessTitle": "Upload Successful",
3134
"mode": "Mode",
3235
"general": "General",
3336
"language": "Language",

packages/locales/src/langs/zh-CN/preferences.json

+3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
"copyPreferencesSuccessTitle": "复制成功",
2929
"copyPreferencesSuccess": "复制成功,请在 app 下的 `src/preferences.ts`内进行覆盖",
3030
"clearAndLogout": "清空缓存 & 退出登录",
31+
"logUpload": "上传日志",
32+
"logUploadSuccess": "离线日志上传成功",
33+
"logUploadSuccessTitle": "上传成功",
3134
"mode": "模式",
3235
"general": "通用",
3336
"language": "语言",

playground/index.html

+29
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,35 @@
2727
})();
2828
}
2929
</script>
30+
<!-- 可以使用自己的部署的PageSpy的sdk 修改引入的地址即可 -->
31+
<!-- https://pagespy.mufei88.com 为vben测试sdk地址 -->
32+
<script
33+
crossorigin="anonymous"
34+
src="https://pagespy.mufei88.com/page-spy/index.min.js"
35+
></script>
36+
<script
37+
crossorigin="anonymous"
38+
src="https://pagespy.mufei88.com/plugin/data-harbor/index.min.js"
39+
></script>
40+
<script
41+
crossorigin="anonymous"
42+
src="https://pagespy.mufei88.com/plugin/rrweb/index.min.js"
43+
></script>
44+
<script>
45+
window.$harbor = new DataHarborPlugin();
46+
window.$rrweb = new RRWebPlugin();
47+
48+
[window.$harbor, window.$rrweb].forEach((p) => {
49+
PageSpy.registerPlugin(p);
50+
});
51+
// 实例化的参数都是可选的
52+
window.$pageSpy = new PageSpy({
53+
project: '<%= VITE_APP_TITLE %>',
54+
autoRender: false,
55+
title: 'Vben Admin',
56+
});
57+
// 之后即可使用 PageSpy,前往 https://pagespy.mufei88.com 体验
58+
</script>
3059
</head>
3160
<body>
3261
<div id="app"></div>

0 commit comments

Comments
 (0)