diff --git a/manager/src/views/live/control-panel.vue b/manager/src/views/live/control-panel.vue index 21081355..3be1dedd 100644 --- a/manager/src/views/live/control-panel.vue +++ b/manager/src/views/live/control-panel.vue @@ -27,7 +27,7 @@
直播预览
- +
@@ -644,7 +644,7 @@ export default { }, buildShareUrl() { const base = (this.wapUrl || BASE?.WAP_URL || config.website || "").replace(/\/?$/, "/"); - return `${base}pages/promotions/live/detail?id=${this.liveId}`; + return `${base}pages/promotion/live/room?id=${this.liveId}`; }, handleShare() { const url = this.buildShareUrl(); diff --git a/manager/src/views/live/list.vue b/manager/src/views/live/list.vue index 96d4f6b0..e84f105e 100644 --- a/manager/src/views/live/list.vue +++ b/manager/src/views/live/list.vue @@ -237,7 +237,7 @@ export default { }, buildH5ShareUrl(liveId) { const base = (this.wapUrl || BASE?.WAP_URL || config.website || "").replace(/\/?$/, "/"); - return `${base}pages/promotions/live/detail?id=${liveId}`; + return `${base}pages/promotion/live/room?id=${liveId}`; }, handleShare(row) { this.shareTitle = row.title || ""; @@ -246,8 +246,40 @@ export default { }, copyShareUrl() { if (!this.shareH5Url) return; - navigator.clipboard.writeText(this.shareH5Url); - this.$Message.success("链接已复制"); + this.copyText(this.shareH5Url); + }, + copyText(text) { + const onSuccess = () => this.$Message.success("链接已复制"); + const onFail = () => this.$Message.error("复制失败,请手动复制"); + + if (navigator.clipboard?.writeText) { + navigator.clipboard + .writeText(text) + .then(onSuccess) + .catch(() => { + this.copyTextFallback(text) ? onSuccess() : onFail(); + }); + return; + } + + this.copyTextFallback(text) ? onSuccess() : onFail(); + }, + copyTextFallback(text) { + const textArea = document.createElement("textarea"); + textArea.value = text; + textArea.style.position = "fixed"; + textArea.style.left = "-9999px"; + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + let ok = false; + try { + ok = document.execCommand("copy"); + } catch (e) { + ok = false; + } + document.body.removeChild(textArea); + return ok; }, handleStart(row) { if (row.liveStatus === "LIVING") {