From b27571cf78742a5de2e1d43c4af5f8cc436860e2 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期五, 12 四月 2024 15:51:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/components/Editor/index.vue |   96 +++++++++++++++++++++++++++++++++++------------
 1 files changed, 71 insertions(+), 25 deletions(-)

diff --git a/src/components/Editor/index.vue b/src/components/Editor/index.vue
index 8981d76..692d899 100644
--- a/src/components/Editor/index.vue
+++ b/src/components/Editor/index.vue
@@ -1,19 +1,10 @@
 <template>
   <div>
-    <el-upload
-      :action="uploadUrl"
-      :before-upload="handleBeforeUpload"
-      :on-success="handleUploadSuccess"
-      :on-error="handleUploadError"
-      name="file"
-      :show-file-list="false"
-      :headers="headers"
-      style="display: none"
-      ref="upload"
-      v-if="this.type == 'url'"
-    >
+    <el-upload :action="uploadUrl" :before-upload="handleBeforeUpload" :on-success="handleUploadSuccess"
+      :on-error="handleUploadError" name="file" :show-file-list="false" :headers="headers" style="display: none"
+      ref="upload" v-if="this.type == 'url'">
     </el-upload>
-    <div class="editor" ref="editor" :style="styles"></div>
+    <div class="editor" ref="editor" :style="styles" @paste="onPaste($event)"></div>
   </div>
 </template>
 
@@ -23,6 +14,8 @@
 import "quill/dist/quill.snow.css";
 import "quill/dist/quill.bubble.css";
 import { getToken } from "@/utils/auth";
+import request from '@/utils/request';
+
 
 export default {
   name: "Editor",
@@ -47,7 +40,7 @@
       type: Boolean,
       default: false,
     },
-    /* 涓婁紶鏂囦欢澶у皬闄愬埗(MB) */
+    // 涓婁紶鏂囦欢澶у皬闄愬埗(MB)
     fileSize: {
       type: Number,
       default: 5,
@@ -122,6 +115,45 @@
     this.Quill = null;
   },
   methods: {
+    /**鐩戝惉瀵屾枃鏈紪杈戝櫒鐨勭矘璐翠簨浠�  閽堝鍥剧墖杩涜鎿嶄綔 */
+    onPaste(evt) {
+      // 鑾峰彇瑙f瀽 绮樿创鐨勫唴瀹�
+      //鍏堝垽鏂矘璐寸殑鍐呭鏄惁鏄浘鐗�
+      if (
+        evt.clipboardData &&
+        evt.clipboardData.files &&
+        evt.clipboardData.files.length
+      ) {
+        evt.preventDefault();
+        [].forEach.call(evt.clipboardData.files, (file) => {
+          if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) {
+            return;
+          }
+          const formData = new FormData();
+          formData.append("file", file);
+          //甯﹁姹傚ご杩囬獙璇�
+          const config = {
+            headers: {
+              "Authorization": "Bearer " + getToken()
+            }
+          };
+          request.post("/common/upload", formData, config).then(
+            res => {
+              if (res.code == 200) {
+                let length = this.Quill.getSelection().index; //鍏夋爣浣嶇疆
+                // 鎻掑叆鍥剧墖鍦板潃
+                this.Quill.insertEmbed(length, "image", 'https://s.rongeying.cn/' + res.fileName);
+                // 鍏夋爣鍚庣Щ涓�浣�
+                this.Quill.setSelection(length + 1);
+              } else {
+                this.$message.error("鍥剧墖鎻掑叆澶辫触");
+              }
+            })
+        });
+      }
+
+    },
+
     init() {
       const editor = this.$refs.editor;
       this.Quill = new Quill(editor, this.options);
@@ -129,6 +161,7 @@
       if (this.type == 'url') {
         let toolbar = this.Quill.getModule("toolbar");
         toolbar.addHandler("image", (value) => {
+          this.uploadType = "image";
           if (value) {
             this.$refs.upload.$children[0].$refs.input.click();
           } else {
@@ -157,13 +190,6 @@
     },
     // 涓婁紶鍓嶆牎妫�鏍煎紡鍜屽ぇ灏�
     handleBeforeUpload(file) {
-      const type = ["image/jpeg", "image/jpg", "image/png", "image/svg"];
-      const isJPG = type.includes(file.type);
-      // 妫�楠屾枃浠舵牸寮�
-      if (!isJPG) {
-        this.$message.error(`鍥剧墖鏍煎紡閿欒!`);
-        return false;
-      }
       // 鏍℃鏂囦欢澶у皬
       if (this.fileSize) {
         const isLt = file.size / 1024 / 1024 < this.fileSize;
@@ -175,14 +201,15 @@
       return true;
     },
     handleUploadSuccess(res, file) {
+      // 鑾峰彇瀵屾枃鏈粍浠跺疄渚�
+      let quill = this.Quill;
       // 濡傛灉涓婁紶鎴愬姛
       if (res.code == 200) {
-        // 鑾峰彇瀵屾枃鏈粍浠跺疄渚�
-        let quill = this.Quill;
         // 鑾峰彇鍏夋爣鎵�鍦ㄤ綅缃�
         let length = quill.getSelection().index;
         // 鎻掑叆鍥剧墖  res.url涓烘湇鍔″櫒杩斿洖鐨勫浘鐗囧湴鍧�
-        quill.insertEmbed(length, "image", process.env.VUE_APP_BASE_API + res.fileName);
+        // quill.insertEmbed(length, "image", 'https://rongeying.cn/ronge/' + res.fileName);
+        quill.insertEmbed(length, "image", 'https://s.rongeying.cn/' + res.fileName);
         // 璋冩暣鍏夋爣鍒版渶鍚�
         quill.setSelection(length + 1);
       } else {
@@ -197,76 +224,95 @@
 </script>
 
 <style>
-.editor, .ql-toolbar {
+.editor,
+.ql-toolbar {
   white-space: pre-wrap !important;
   line-height: normal !important;
 }
+
 .quill-img {
   display: none;
 }
+
 .ql-snow .ql-tooltip[data-mode="link"]::before {
   content: "璇疯緭鍏ラ摼鎺ュ湴鍧�:";
 }
+
 .ql-snow .ql-tooltip.ql-editing a.ql-action::after {
   border-right: 0px;
   content: "淇濆瓨";
   padding-right: 0px;
 }
+
 .ql-snow .ql-tooltip[data-mode="video"]::before {
   content: "璇疯緭鍏ヨ棰戝湴鍧�:";
 }
+
 .ql-snow .ql-picker.ql-size .ql-picker-label::before,
 .ql-snow .ql-picker.ql-size .ql-picker-item::before {
   content: "14px";
 }
+
 .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before,
 .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before {
   content: "10px";
 }
+
 .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before,
 .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before {
   content: "18px";
 }
+
 .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before,
 .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before {
   content: "32px";
 }
+
 .ql-snow .ql-picker.ql-header .ql-picker-label::before,
 .ql-snow .ql-picker.ql-header .ql-picker-item::before {
   content: "鏂囨湰";
 }
+
 .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
 .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
   content: "鏍囬1";
 }
+
 .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
 .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
   content: "鏍囬2";
 }
+
 .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
 .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
   content: "鏍囬3";
 }
+
 .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
 .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
   content: "鏍囬4";
 }
+
 .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
 .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
   content: "鏍囬5";
 }
+
 .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
 .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
   content: "鏍囬6";
 }
+
 .ql-snow .ql-picker.ql-font .ql-picker-label::before,
 .ql-snow .ql-picker.ql-font .ql-picker-item::before {
   content: "鏍囧噯瀛椾綋";
 }
+
 .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before,
 .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before {
   content: "琛嚎瀛椾綋";
 }
+
 .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before,
 .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before {
   content: "绛夊瀛椾綋";

--
Gitblit v1.8.0