...
|
...
|
@@ -11,9 +11,11 @@ |
11
|
11
|
import { useDrawer } from '/@/components/Drawer';
|
12
|
12
|
import { useMessage } from '/@/hooks/web/useMessage';
|
13
|
13
|
import { useDownload } from './hook/useDownload';
|
14
|
|
- import { computed } from 'vue';
|
|
14
|
+ import { computed, unref } from 'vue';
|
15
|
15
|
import { useSyncConfirm } from '/@/hooks/component/useSyncConfirm';
|
16
|
16
|
import { Authority } from '/@/components/Authority';
|
|
17
|
+ import Icon from '/@/components/Icon';
|
|
18
|
+ import { useClipboard } from '@vueuse/core';
|
17
|
19
|
|
18
|
20
|
const [register, { reload, getSelectRowKeys, getRowSelection, setSelectedRowKeys }] = useTable({
|
19
|
21
|
columns,
|
...
|
...
|
@@ -100,6 +102,13 @@ |
100
|
102
|
reload();
|
101
|
103
|
} catch (error) {}
|
102
|
104
|
};
|
|
105
|
+
|
|
106
|
+ const { copy, copied } = useClipboard({ legacy: true });
|
|
107
|
+ const handleCopy = (event: MouseEvent, text: string) => {
|
|
108
|
+ event.stopPropagation();
|
|
109
|
+ copy(text);
|
|
110
|
+ unref(copied) && createMessage.success('复制成功');
|
|
111
|
+ };
|
103
|
112
|
</script>
|
104
|
113
|
|
105
|
114
|
<template>
|
...
|
...
|
@@ -115,6 +124,15 @@ |
115
|
124
|
</Button>
|
116
|
125
|
</Authority>
|
117
|
126
|
</template>
|
|
127
|
+ <template #checksum="{ text }">
|
|
128
|
+ <div
|
|
129
|
+ class="cursor-pointer flex gap-2 items-center"
|
|
130
|
+ @click="(event) => handleCopy(event, text)"
|
|
131
|
+ >
|
|
132
|
+ <div class="flex-auto truncate">{{ text }}</div>
|
|
133
|
+ <Icon v-if="text" icon="ant-design:copy-outlined" />
|
|
134
|
+ </div>
|
|
135
|
+ </template>
|
118
|
136
|
<template #action="{ record }">
|
119
|
137
|
<TableAction
|
120
|
138
|
@click.stop
|
...
|
...
|
|