diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 4db449828..fd7fadf85 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -32,6 +32,7 @@
"unplugin-vue-define-options": "^0.7.3",
"vite-plugin-monaco-editor": "^1.1.0",
"vue": "^3.2.25",
+ "vue-clipboard3": "^2.0.0",
"vue-codemirror": "^6.1.1",
"vue-i18n": "^9.1.9",
"vue-router": "^4.0.12",
diff --git a/frontend/package.json b/frontend/package.json
index 1322123c8..8da20fede 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -44,6 +44,7 @@
"unplugin-vue-define-options": "^0.7.3",
"vite-plugin-monaco-editor": "^1.1.0",
"vue": "^3.2.25",
+ "vue-clipboard3": "^2.0.0",
"vue-codemirror": "^6.1.1",
"vue-i18n": "^9.1.9",
"vue-router": "^4.0.12",
diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts
index f534d1a44..148955062 100644
--- a/frontend/src/lang/modules/zh.ts
+++ b/frontend/src/lang/modules/zh.ts
@@ -78,6 +78,7 @@ export default {
operate: '操作',
operateConfirm: '如果确认操作,请手动输入',
inputOrSelect: '请选择或输入',
+ copyfailed: '复制失败',
},
login: {
firstLogin: '首次登录,请创建初始管理员用户!',
diff --git a/frontend/src/views/website/ssl/detail/index.vue b/frontend/src/views/website/ssl/detail/index.vue
index ce833eacd..cd3d27bc5 100644
--- a/frontend/src/views/website/ssl/detail/index.vue
+++ b/frontend/src/views/website/ssl/detail/index.vue
@@ -37,14 +37,19 @@
-
+
{{ $t('file.copy') }}
-
+
{{ $t('file.copy') }}
@@ -59,6 +64,8 @@ import { ref } from 'vue';
import { dateFromat, getProvider } from '@/utils/util';
import { ElMessage } from 'element-plus';
import i18n from '@/lang';
+import useClipboard from 'vue-clipboard3';
+const { toClipboard } = useClipboard();
let open = ref(false);
let id = ref(0);
@@ -82,12 +89,52 @@ const get = async () => {
ssl.value = res.data;
};
-const copyText = (val: string): void => {
- navigator.clipboard.writeText(val).then(() => {
+const copyText = async (msg) => {
+ try {
+ await toClipboard(msg);
ElMessage.success(i18n.global.t('commons.msg.copySuccess'));
- });
+ } catch (e) {
+ ElMessage.error(i18n.global.t('commons.msg.copyfailed'));
+ }
};
+// const copyText = async (text: string) => {
+// try {
+// try {
+// await navigator.clipboard.writeText(text);
+// ElMessage.success(i18n.global.t('commons.msg.copySuccess'));
+// return await Promise.resolve();
+// } catch (err) {
+// return await Promise.reject(err);
+// }
+// } catch (e) {
+// let input = document.createElement('input');
+// input.style.position = 'fixed';
+// input.style.top = '-10000px';
+// input.style.zIndex = '-999';
+// document.body.appendChild(input);
+// console.log('input', input);
+// input.value = text;
+// input.focus();
+// input.select();
+// try {
+// let result = document.execCommand('copy');
+// document.body.removeChild(input);
+// if (!result) {
+// ElMessage.error(i18n.global.t('commons.msg.copyfailed'));
+// return Promise.reject();
+// } else {
+// ElMessage.success(i18n.global.t('commons.msg.copySuccess'));
+// return Promise.resolve();
+// }
+// } catch (e) {
+// document.body.removeChild(input);
+// ElMessage.error(i18n.global.t('commons.msg.copyfailed'));
+// return Promise.reject();
+// }
+// }
+// };
+
defineExpose({
acceptParams,
});