liyongli 1 年之前
父节点
当前提交
cf0e00d47d

+ 53 - 0
src/utils/tool.js

@@ -1,3 +1,4 @@
+import { ElMessage } from 'element-plus';
 export function formatter(num) {
   if (isNaN(num) || !num) return 0;
   let n = num.toString().split('.');
@@ -5,3 +6,55 @@ export function formatter(num) {
   if (n[1]) number = number + '.' + n[1];
   return number;
 }
+
+export function copyurl(text) {
+  if (!('clipboard' in navigator)) return;
+  auth()
+    .then(res => {
+      if (!res) {
+        // 未授权
+        ElMessage({
+          type: 'error',
+          message: '授权未通过',
+        });
+        return;
+      }
+      navigator.clipboard.writeText(text).then(
+        () => {
+          ElMessage({
+            type: 'success',
+            message: '地址复制成功',
+          });
+        },
+        () => {
+          ElMessage({
+            type: 'error',
+            message: '复制失败',
+          });
+        }
+      );
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'error',
+        message: '授权未通过',
+      });
+    });
+}
+
+const auth = () => {
+  return new Promise((resolve, reject) => {
+    navigator.permissions.query({ name: 'clipboard-read' }).then(
+      result => {
+        if (result.state == 'granted' || result.state == 'prompt') {
+          resolve(true);
+        } else {
+          resolve(false);
+        }
+      },
+      error => {
+        reject(error);
+      }
+    );
+  });
+};

+ 4 - 10
src/view/allMedia/AIeditor/components/advertisement.vue

@@ -66,11 +66,7 @@
       <div class="item" v-for="(item, i) in form.list[form.page - 1]" :key="i">
         <div class="content" v-text="item.text"></div>
         <div class="btn_div">
-          <el-tooltip
-            effect="dark"
-            content="左侧导入"
-            placement="top"
-          >
+          <el-tooltip effect="dark" content="左侧导入" placement="top">
             <el-icon
               @click="() => inputText(item.text)"
               style="
@@ -85,11 +81,7 @@
           </el-tooltip>
         </div>
         <div class="btn_div">
-          <el-tooltip
-            effect="dark"
-            content="复制"
-            placement="top"
-          >
+          <el-tooltip effect="dark" content="复制" placement="top">
             <el-icon
               style="
                 left: 50;
@@ -97,6 +89,7 @@
                 transform: translate(-50%, -50%);
                 cursor: pointer;
               "
+              @click="() => copyurl(item.text)"
               color="#cacaca"
               ><CopyDocument
             /></el-icon>
@@ -113,6 +106,7 @@
 </template>
 
 <script setup>
+import { copyurl } from '@/utils/tool.js';
 import { ref, defineEmits } from 'vue';
 import { image_base64 } from './data.js';
 import { advertisement, generate_pc_get } from '@/api/aleditor.js';

+ 2 - 0
src/view/allMedia/AIeditor/components/brainstorming.vue

@@ -64,6 +64,7 @@
                 transform: translate(-50%, -50%);
                 cursor: pointer;
               "
+              @click="() => copyurl(item.text)"
               color="#cacaca"
               ><CopyDocument
             /></el-icon>
@@ -75,6 +76,7 @@
 </template>
 
 <script setup>
+import { copyurl } from '@/utils/tool.js';
 import { ref, defineEmits } from 'vue';
 import { image_base64 } from './data.js';
 import { advertisement, generate_pc_get } from '@/api/aleditor.js';

+ 2 - 0
src/view/allMedia/AIeditor/components/email.vue

@@ -64,6 +64,7 @@
                 transform: translate(-50%, -50%);
                 cursor: pointer;
               "
+              @click="() => copyurl(item.text)"
               color="#cacaca"
               ><CopyDocument
             /></el-icon>
@@ -75,6 +76,7 @@
 </template>
 
 <script setup>
+import { copyurl } from '@/utils/tool.js';
 import { ref, defineEmits } from 'vue';
 import { image_base64 } from './data.js';
 import { advertisement, generate_pc_get } from '@/api/aleditor.js';

+ 2 - 0
src/view/allMedia/AIeditor/components/fission.vue

@@ -64,6 +64,7 @@
                 transform: translate(-50%, -50%);
                 cursor: pointer;
               "
+              @click="() => copyurl(item.text)"
               color="#cacaca"
               ><CopyDocument
             /></el-icon>
@@ -75,6 +76,7 @@
 </template>
 
 <script setup>
+import { copyurl } from '@/utils/tool.js';
 import { ref, defineEmits } from 'vue';
 import { image_base64 } from './data.js';
 import { advertisement, generate_pc_get } from '@/api/aleditor.js';

+ 2 - 0
src/view/allMedia/AIeditor/components/little_red_book.vue

@@ -104,6 +104,7 @@
                 transform: translate(-50%, -50%);
                 cursor: pointer;
               "
+              @click="() => copyurl(item.text)"
               color="#cacaca"
               ><CopyDocument
             /></el-icon>
@@ -115,6 +116,7 @@
 </template>
 
 <script setup>
+import { copyurl } from '@/utils/tool.js';
 import { ref, defineEmits } from 'vue';
 import { image_base64 } from './data.js';
 import { advertisement, generate_pc_get } from '@/api/aleditor.js';

+ 2 - 0
src/view/allMedia/AIeditor/components/poetry.vue

@@ -74,6 +74,7 @@
                 transform: translate(-50%, -50%);
                 cursor: pointer;
               "
+              @click="() => copyurl(item.text)"
               color="#cacaca"
               ><CopyDocument
             /></el-icon>
@@ -85,6 +86,7 @@
 </template>
 
 <script setup>
+import { copyurl } from '@/utils/tool.js';
 import { ref, defineEmits } from 'vue';
 import { image_base64 } from './data.js';
 import { advertisement, generate_pc_get } from '@/api/aleditor.js';

+ 12 - 4
src/view/allMedia/AIeditor/components/short_video.vue

@@ -98,8 +98,9 @@
                   cursor: pointer;
                 "
                 color="#cacaca"
-                ><DArrowLeft
-              /></el-icon>
+              >
+                <DArrowLeft />
+              </el-icon>
             </el-tooltip>
           </div>
           <div class="btn_div">
@@ -111,9 +112,11 @@
                   transform: translate(-50%, -50%);
                   cursor: pointer;
                 "
+                @click="() => copyurl(item.text)"
                 color="#cacaca"
-                ><CopyDocument
-              /></el-icon>
+              >
+                <CopyDocument />
+              </el-icon>
             </el-tooltip>
           </div>
         </div>
@@ -123,6 +126,7 @@
 </template>
 
 <script setup>
+import { copyurl } from '@/utils/tool.js';
 import { image_base64 } from './data.js';
 import { CircleClose, CirclePlus } from '@element-plus/icons-vue';
 import { ref, defineEmits } from 'vue';
@@ -247,6 +251,7 @@ const get = p => {
 .btn_group {
   padding-right: 1em;
 }
+
 .bottom-content-safe-tip {
   display: -webkit-box;
   display: -ms-flexbox;
@@ -258,16 +263,19 @@ const get = p => {
   width: 100%;
   zoom: 0.83;
 }
+
 .bottom-content-safe-tip .content-safe-tip-icon {
   width: 15px;
   height: 15px;
   margin-right: 10px;
 }
+
 .bottom-content-safe-tip .content-safe-tip-text {
   font-size: 12px;
   line-height: 15px;
   color: #cacaca;
 }
+
 .item {
   width: 100%;
   min-height: 45px;

+ 2 - 0
src/view/allMedia/AIeditor/components/weekly.vue

@@ -106,6 +106,7 @@
                 transform: translate(-50%, -50%);
                 cursor: pointer;
               "
+              @click="() => copyurl(item.text)"
               color="#cacaca"
               ><CopyDocument
             /></el-icon>
@@ -117,6 +118,7 @@
 </template>
 
 <script setup>
+import { copyurl } from '@/utils/tool.js';
 import { ref, defineEmits } from 'vue';
 import { image_base64 } from './data.js';
 import { advertisement, generate_pc_get } from '@/api/aleditor.js';