Commit a0931ab7532aaba621bb472953034be3ae47a969

Authored by xp.Huang
2 parents a078fae6 c18c6144

Merge branch 'fix/DEFECT-1384' into 'main_dev'

修复复制粘贴问题

See merge request yunteng/thingskit-front!686
... ... @@ -29,7 +29,8 @@
29 29 import { useDesign } from '/@/hooks/web/useDesign';
30 30 import { useI18n } from '/@/hooks/web/useI18n';
31 31 import { useMessage } from '/@/hooks/web/useMessage';
32   - import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
  32 +
  33 + import { useClipboard } from '@vueuse/core';
33 34
34 35 import { updateColorWeak } from '/@/logics/theme/updateColorWeak';
35 36 import { updateGrayMode } from '/@/logics/theme/updateGrayMode';
... ... @@ -47,11 +48,10 @@
47 48 const userStore = useUserStore();
48 49 const appStore = useAppStore();
49 50
50   - function handleCopy() {
51   - const { isSuccessRef } = useCopyToClipboard(
52   - JSON.stringify(unref(appStore.getProjectConfig), null, 2)
53   - );
54   - unref(isSuccessRef) &&
  51 + async function handleCopy() {
  52 + const { copied, copy } = useClipboard({ legacy: true });
  53 + copy(JSON.stringify(unref(appStore.getProjectConfig), null, 2));
  54 + unref(copied) &&
55 55 createSuccessModal({
56 56 title: t('layout.setting.operatingTitle'),
57 57 content: t('layout.setting.operatingContent'),
... ...
... ... @@ -7,7 +7,7 @@
7 7 import { ref, unref } from 'vue';
8 8 import { nextTick } from 'vue';
9 9 import { ModalParamsType } from '/#/utils';
10   - import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
  10 + import { useClipboard } from '@vueuse/core';
11 11 import { useMessage } from '/@/hooks/web/useMessage';
12 12 import { computed } from 'vue';
13 13
... ... @@ -64,10 +64,10 @@
64 64 return unref(record).viewType === ViewTypeEnum.PUBLIC_VIEW;
65 65 });
66 66
67   - const { clipboardRef, isSuccessRef } = useCopyToClipboard();
68   - const handleCopy = () => {
69   - clipboardRef.value = unref(link);
70   - if (unref(isSuccessRef)) {
  67 + const { copied, copy } = useClipboard({ legacy: true });
  68 + const handleCopy = async () => {
  69 + await copy(unref(link));
  70 + if (unref(copied)) {
71 71 createMessage.success('复制成功~');
72 72 }
73 73 };
... ...
... ... @@ -74,7 +74,6 @@
74 74 import { Empty, Image, Tooltip } from 'ant-design-vue';
75 75 import { descSchema } from '../../config/detail.config';
76 76 import { useAsyncScript } from '/@/hooks/web/useAsyncScript';
77   - import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
78 77 import { useMessage } from '/@/hooks/web/useMessage';
79 78 import { BAI_DU_MAP_URL } from '/@/utils/fnUtils';
80 79 import { BasicModal, useModal } from '/@/components/Modal';
... ... @@ -84,6 +83,7 @@
84 83 import { QuestionCircleOutlined } from '@ant-design/icons-vue';
85 84 import { DeviceTypeEnum } from '/@/api/device/model/deviceModel';
86 85 import { useAuthDeviceDetail } from '../../hook/useAuthDeviceDetail';
  86 + import { useClipboard } from '@vueuse/core';
87 87
88 88 import wz from '/@/assets/images/wz.png';
89 89 import { useAsyncQueue } from '../../../localtion/useAsyncQueue';
... ... @@ -165,33 +165,35 @@
165 165 }
166 166
167 167 const { createMessage } = useMessage();
168   - const { clipboardRef } = useCopyToClipboard();
169   - const copyTbDeviceId = () => {
170   - clipboardRef.value = props.deviceDetail.tbDeviceId;
171   - if (unref(clipboardRef)) {
  168 + const { copied, copy } = useClipboard({ legacy: true });
  169 +
  170 + const copyTbDeviceId = async () => {
  171 + await copy(props.deviceDetail.tbDeviceId);
  172 + if (unref(copied)) {
172 173 createMessage.success('复制成功~');
173 174 }
174 175 };
175 176 const copyDeviceToken = async () => {
176 177 const token = await getDeviceToken(props.deviceDetail.tbDeviceId);
177 178 if (token.credentialsType === 'ACCESS_TOKEN') {
178   - clipboardRef.value = token.credentialsId;
  179 + await copy(token.credentialsId);
179 180 } else {
180   - clipboardRef.value = token.credentialsValue;
  181 + await copy(token.credentialsValue);
  182 + }
  183 + if (unref(copied)) {
  184 + createMessage.success('复制成功~');
181 185 }
182   - createMessage.success('复制成功~');
183 186 };
184 187 const [registerModal, { openModal }] = useModal();
185 188 const manageDeviceToken = async () => {
186 189 const token = await getDeviceToken(props.deviceDetail.tbDeviceId);
187 190 openModal(true, token);
188 191 };
189   - const copyTopic = (val) => {
190   - const { isSuccessRef } = useCopyToClipboard(
191   - JSON.parse(JSON.stringify(unref(val), null, 2))
192   - );
193   - unref(isSuccessRef);
194   - createMessage.success('复制成功!');
  192 + const copyTopic = async (val) => {
  193 + await copy(JSON.parse(JSON.stringify(unref(val), null, 2)));
  194 + if (unref(copied)) {
  195 + createMessage.success('复制成功!');
  196 + }
195 197 };
196 198
197 199 const [registerTopicModal, { openModal: openTopicModal }] = useModal();
... ...
... ... @@ -215,7 +215,7 @@
215 215 import { USER_INFO_KEY } from '/@/enums/cacheEnum';
216 216 import { getAuthCache } from '/@/utils/auth';
217 217 import { authBtn } from '/@/enums/roleEnum';
218   - import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
  218 + import { useClipboard } from '@vueuse/core';
219 219 import { QuestionCircleOutlined } from '@ant-design/icons-vue';
220 220 import { Authority } from '/@/components/Authority';
221 221 import { useRoute, useRouter } from 'vue-router';
... ... @@ -371,10 +371,10 @@
371 371 function goDeviceProfile(e) {
372 372 go(PageEnum.DEVICE_PROFILE + '?name=' + String(e));
373 373 }
374   - const { clipboardRef } = useCopyToClipboard();
375   - const copySN = (snCode: string) => {
376   - clipboardRef.value = snCode;
377   - if (unref(clipboardRef)) {
  374 + const { copied, copy } = useClipboard({ legacy: true });
  375 + const copySN = async (snCode: string) => {
  376 + await copy(snCode);
  377 + if (unref(copied)) {
378 378 createMessage.success('复制成功~');
379 379 }
380 380 };
... ...
... ... @@ -6,10 +6,11 @@ import { numberRule } from '/@/utils/rules';
6 6
7 7 import { deviceConfigGetRuleChain } from '/@/api/device/deviceConfigApi';
8 8 import { FormField, FunctionType } from './step/cpns/physical/cpns/config';
9   -import { h } from 'vue';
  9 +import { h, unref } from 'vue';
10 10 import { Tag, Tooltip } from 'ant-design-vue';
11 11 import { EventType, EventTypeColor, EventTypeName } from '../list/cpns/tabs/EventManage/config';
12   -import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
  12 +
  13 +import { useClipboard } from '@vueuse/core';
13 14 import { useMessage } from '/@/hooks/web/useMessage';
14 15
15 16 export enum Mode {
... ... @@ -39,11 +40,11 @@ export enum ModelOfMatterPermission {
39 40 RELEASE = 'api:yt:things_model:release',
40 41 }
41 42
42   -const handleCopy = (value: string) => {
  43 +const handleCopy = async (value: string) => {
43 44 const { createMessage } = useMessage();
44   - const { clipboardRef, isSuccessRef } = useCopyToClipboard(value);
45   - clipboardRef.value = value;
46   - if (isSuccessRef.value) createMessage.success('复制成功~');
  45 + const { copied, copy } = useClipboard({ legacy: true });
  46 + await copy(value);
  47 + if (unref(copied)) createMessage.success('复制成功~');
47 48 else createMessage.error('复制失败~');
48 49 };
49 50
... ...
... ... @@ -42,7 +42,7 @@
42 42 import useCommon from '../hook/useCommon';
43 43 import { DeviceRecord } from '/@/api/device/model/deviceModel';
44 44 import { getModelTsl } from '/@/api/device/modelOfMatter';
45   - import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
  45 + import { useClipboard } from '@vueuse/core';
46 46
47 47 const props = defineProps<{
48 48 record: DeviceRecord;
... ... @@ -58,15 +58,15 @@
58 58
59 59 const activeKey = ref(FunctionType.PROPERTIES);
60 60
61   - const { clipboardRef, isSuccessRef } = useCopyToClipboard(jsonValue.value);
62   - const handleCopy = () => {
  61 + const { copied, copy } = useClipboard({ legacy: true });
  62 + const handleCopy = async () => {
63 63 try {
64 64 if (!jsonValue.value) {
65 65 createMessage.warning('请输入要拷贝的内容!');
66 66 return;
67 67 }
68   - clipboardRef.value = jsonValue.value;
69   - if (unref(isSuccessRef)) createMessage.success('复制成功!');
  68 + await copy(jsonValue.value);
  69 + if (unref(copied)) createMessage.success('复制成功!');
70 70 else createMessage.error('复制失败!');
71 71 } catch (e) {
72 72 console.log(e);
... ...
1 1 import { BasicColumn } from '/@/components/Table/src/types/table';
2 2 import { h, unref } from 'vue';
3   -import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
  3 +import { useClipboard } from '@vueuse/core';
4 4 import { useMessage } from '/@/hooks/web/useMessage';
5 5 const { createMessage } = useMessage();
6 6
7   -export const handeleCopy = (e) => {
8   - const { isSuccessRef } = useCopyToClipboard(JSON.parse(JSON.stringify(unref(e), null, 2)));
9   - unref(isSuccessRef);
10   - createMessage.success('复制成功!');
  7 +export const handeleCopy = async (e) => {
  8 + const { copied, copy } = useClipboard({ legacy: true });
  9 + await copy(JSON.parse(JSON.stringify(unref(e), null, 2)));
  10 + if (unref(copied)) {
  11 + createMessage.success('复制成功!');
  12 + }
11 13 };
12 14
13 15 export const topicTableColumn: BasicColumn[] = [
... ...
... ... @@ -13,7 +13,7 @@
13 13 getDeviceProfileInfoById,
14 14 getOtaPackageInfo,
15 15 } from '/@/api/ota';
16   - import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
  16 + import { useClipboard } from '@vueuse/core';
17 17 import { useDownload } from '../hook/useDownload';
18 18 import { Authority } from '/@/components/Authority';
19 19 import { OtaPermissionKey } from '../config/config';
... ... @@ -86,19 +86,19 @@
86 86 });
87 87 };
88 88
89   - const { clipboardRef, isSuccessRef } = useCopyToClipboard('');
90   - const copyPackageId = () => {
91   - clipboardRef.value = otaRecord.value.id.id;
92   - if (unref(isSuccessRef)) createMessage.success('复制成功');
  89 + const { copied, copy } = useClipboard({ legacy: true });
  90 + const copyPackageId = async () => {
  91 + await copy(otaRecord.value.id.id);
  92 + if (unref(copied)) createMessage.success('复制成功');
93 93 };
94 94
95   - const copyUrl = () => {
  95 + const copyUrl = async () => {
96 96 if (!unref(otaRecord).url) {
97 97 createMessage.warning('无直接URL');
98 98 return;
99 99 }
100   - clipboardRef.value = otaRecord.value.url;
101   - if (unref(isSuccessRef)) createMessage.success('复制成功');
  100 + await copy(otaRecord.value.url);
  101 + if (unref(copied)) createMessage.success('复制成功');
102 102 };
103 103
104 104 const setLoading = (status: boolean) => {
... ...
... ... @@ -7,7 +7,6 @@ import { devicePage } from '/@/api/device/deviceManager';
7 7 import { Tag } from 'ant-design-vue';
8 8 import { DeviceRecord } from '/@/api/device/model/deviceModel';
9 9 import { FETCH_SETTING } from '/@/components/Table/src/const';
10   -import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
11 10 import { useMessage } from '/@/hooks/web/useMessage';
12 11 import {
13 12 BasicInfoFormField,
... ... @@ -16,6 +15,7 @@ import {
16 15 DeviceStatusNameEnum,
17 16 DeviceTypeNameEnum,
18 17 } from '../enum';
  18 +import { useClipboard } from '@vueuse/core';
19 19
20 20 export const stepConfig = ['选择流转方式', '完善配置参数'];
21 21
... ... @@ -73,7 +73,7 @@ const deviceTableFormSchema: FormSchema[] = [
73 73 },
74 74 ];
75 75
76   -const { clipboardRef, isSuccessRef } = useCopyToClipboard();
  76 +const { copied, copy } = useClipboard({ legacy: true });
77 77
78 78 const { createMessage } = useMessage();
79 79
... ... @@ -105,9 +105,9 @@ const deviceTableColumn: BasicColumn[] = [
105 105 'div',
106 106 {
107 107 class: 'cursor-pointer',
108   - onClick: () => {
109   - clipboardRef.value = record.name;
110   - if (unref(isSuccessRef)) createMessage.success('复制成功~');
  108 + onClick: async () => {
  109 + await copy(record.name);
  110 + if (unref(copied)) createMessage.success('复制成功~');
111 111 },
112 112 },
113 113 [
... ...
... ... @@ -8,7 +8,7 @@ import { devicePage } from '/@/api/device/deviceManager';
8 8 import { Tag } from 'ant-design-vue';
9 9 import { DeviceRecord } from '/@/api/device/model/deviceModel';
10 10 import { FETCH_SETTING } from '/@/components/Table/src/const';
11   -import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
  11 +import { useClipboard } from '@vueuse/core';
12 12 import { useMessage } from '/@/hooks/web/useMessage';
13 13
14 14 const typeValue = ref('');
... ... @@ -102,7 +102,7 @@ const deviceTableFormSchema: FormSchema[] = [
102 102 },
103 103 },
104 104 ];
105   -const { clipboardRef, isSuccessRef } = useCopyToClipboard();
  105 +const { copied, copy } = useClipboard({ legacy: true });
106 106 const { createMessage } = useMessage();
107 107 const deviceTableColumn: BasicColumn[] = [
108 108 {
... ... @@ -132,9 +132,9 @@ const deviceTableColumn: BasicColumn[] = [
132 132 'div',
133 133 {
134 134 class: 'cursor-pointer',
135   - onClick: () => {
136   - clipboardRef.value = record.name;
137   - if (unref(isSuccessRef)) createMessage.success('复制成功~');
  135 + onClick: async () => {
  136 + await copy(record.name);
  137 + if (unref(copied)) createMessage.success('复制成功~');
138 138 },
139 139 },
140 140 [
... ...
... ... @@ -123,7 +123,7 @@
123 123 import 'ace-builds/src-noconflict/mode-javascript'; // 默认设置的语言模式
124 124 import { beautify } from 'ace-builds/src-noconflict/ext-beautify.js';
125 125 import { CopyOutlined } from '@ant-design/icons-vue';
126   - import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
  126 + import { useClipboard } from '@vueuse/core';
127 127 import { useMessage } from '/@/hooks/web/useMessage';
128 128 import { findDictItemByCode } from '/@/api/system/dict';
129 129 import { QuestionCircleOutlined } from '@ant-design/icons-vue';
... ... @@ -171,7 +171,7 @@
171 171
172 172 const { createMessage } = useMessage();
173 173
174   - const { clipboardRef, copiedRef } = useCopyToClipboard();
  174 + const { copied, copy } = useClipboard({ legacy: true });
175 175
176 176 const aceEditor = ref();
177 177
... ... @@ -236,15 +236,15 @@
236 236 handleFormat();
237 237 };
238 238
239   - const handleCopy = () => {
  239 + const handleCopy = async () => {
240 240 const valueRef = aceEditor.value.getValue();
241 241 const value = unref(valueRef);
242 242 if (!value) {
243 243 createMessage.warning('请输入要拷贝的内容!');
244 244 return;
245 245 }
246   - clipboardRef.value = value;
247   - if (unref(copiedRef)) {
  246 + await copy(value);
  247 + if (unref(copied)) {
248 248 createMessage.success('复制成功!');
249 249 }
250 250 };
... ...