Jelajahi Sumber

修改复制组件

1
mo 3 tahun lalu
induk
melakukan
81f2cf9bf6
3 mengubah file dengan 59 tambahan dan 22 penghapusan
  1. 33 13
      package-lock.json
  2. 1 1
      package.json
  3. 25 8
      src/components/live-broadcast/share.tsx

+ 33 - 13
package-lock.json

@@ -2067,6 +2067,16 @@
         "lodash.transform": "^4.6.0"
       }
     },
+    "clipboard": {
+      "version": "2.0.10",
+      "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.10.tgz",
+      "integrity": "sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==",
+      "requires": {
+        "good-listener": "^1.2.2",
+        "select": "^1.1.2",
+        "tiny-emitter": "^2.0.0"
+      }
+    },
     "cliui": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
@@ -2181,14 +2191,6 @@
       "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
       "dev": true
     },
-    "copy-to-clipboard": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz",
-      "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==",
-      "requires": {
-        "toggle-selection": "^1.0.6"
-      }
-    },
     "core-js": {
       "version": "3.21.0",
       "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.0.tgz",
@@ -2357,6 +2359,11 @@
         }
       }
     },
+    "delegate": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
+      "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
+    },
     "dijkstrajs": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
@@ -2980,6 +2987,14 @@
       "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
       "dev": true
     },
+    "good-listener": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+      "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
+      "requires": {
+        "delegate": "^3.1.2"
+      }
+    },
     "graceful-fs": {
       "version": "4.2.9",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
@@ -4726,6 +4741,11 @@
       "dev": true,
       "optional": true
     },
+    "select": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
+      "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
+    },
     "semver": {
       "version": "7.3.5",
       "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz",
@@ -5340,6 +5360,11 @@
         }
       }
     },
+    "tiny-emitter": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+      "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
+    },
     "to-fast-properties": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -5453,11 +5478,6 @@
         "is-number": "^7.0.0"
       }
     },
-    "toggle-selection": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
-      "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI="
-    },
     "token-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/token-stream/-/token-stream-1.0.0.tgz",

+ 1 - 1
package.json

@@ -13,7 +13,7 @@
     "@rongcloud/plugin-rtc": "^5.3.1",
     "@types/qrcode": "^1.4.2",
     "clean-deep": "^3.4.0",
-    "copy-to-clipboard": "^3.3.1",
+    "clipboard": "^2.0.10",
     "dayjs": "^1.10.7",
     "element-plus": "^2.0.2",
     "html-to-image": "^1.9.0",

+ 25 - 8
src/components/live-broadcast/share.tsx

@@ -5,11 +5,12 @@ import styles from './share.module.less'
 import request from "/src/helpers/request";
 import { vaildStudentUrl } from "/src/helpers/validate";
 import { toPng } from "html-to-image";
-import copy from "copy-to-clipboard";
+import Clipboard from "clipboard";
 import GroupChat from './groupChat'
 import Preview from './preview'
 import { state } from '/src/state'
 const GroupChatRef: Ref<DefineComponent<{}, {}, any> | null> = ref(null)
+const shareText: Ref<HTMLDivElement | null> = ref(null)
 export default defineComponent({
     name: 'LiveBroadcastShare',
     props: {
@@ -26,13 +27,13 @@ export default defineComponent({
                 liveStartTime: '',
                 liveRemark: '',
                 roomUid: '',
-                speakerName:''
+                speakerName: ''
             },
             url: ''
         }
     },
     async mounted() {
-        this.detail = {...state.user}
+        this.detail = { ...state.user }
         this.url = vaildStudentUrl() + `/#/liveClassTransfer?roomUid=${this.detail.roomUid}`;
     },
     methods: {
@@ -41,9 +42,25 @@ export default defineComponent({
                 }\n直播时间:${this.detail.liveStartTime || ""}\n直播内容:${this.detail.liveRemark || ""
                 }\n直播地址:${this.url}\n`;
             if (text) {
-                copy(text);
-                ElMessage.success("复制成功");
-                this.onClose()
+                const el = document.createElement('button')
+                var clipboard = new Clipboard(el, {
+                    text: function (trigger) {
+                        return text;
+                    },
+                });
+                clipboard.on("success", (e) => {
+                    ElMessage.success("复制成功");
+                    this.onClose()
+                    // 释放内存
+                    clipboard.destroy();
+                });
+                clipboard.on("error", (e) => {
+                    // 不支持复制
+                    console.log("该浏览器不支持自动复制");
+                    // 释放内存
+                    clipboard.destroy();
+                });
+                el.click()
             }
         },
         shareImage() {
@@ -82,7 +99,7 @@ export default defineComponent({
                 }
                 const res = await request.get('/api-web/imLiveBroadcastRoom/shareGroup', {
                     params: {
-                       ...obj
+                        ...obj
                     }
                 });
                 ElMessage.success('分享成功')
@@ -116,7 +133,7 @@ export default defineComponent({
                             <p>直播内容:{this.detail.liveRemark}</p>
                             <p>直播地址:{this.url}</p>
                         </div>
-                        <div class={styles.shareBtn} onClick={this.copyText}>复制分享内容</div>
+                        <div class={[styles.shareBtn, 'shareText']} onClick={this.copyText} ref='shareText' data-clipboard-action="copy">复制分享内容</div>
                     </div> : null}
                 </div >
                 {this.form.shareType === '2' ? <div class={styles.codeWrap} >