xieren 4 سال پیش
والد
کامیت
7977ce8ea7
3فایلهای تغییر یافته به همراه51 افزوده شده و 13 حذف شده
  1. 1 0
      src/common/api.js
  2. 8 3
      src/components/common/MyUEditor.vue
  3. 42 10
      src/components/daily4StudyAbroad/material/CreateEdit.vue

+ 1 - 0
src/common/api.js

@@ -12,6 +12,7 @@ const apis = {
   mapboxJs: "//api.tiles.mapbox.com/mapbox-gl-js/v0.51.0/mapbox-gl.js",
   mapboxCss: "//api.tiles.mapbox.com/mapbox-gl-js/v0.51.0/mapbox-gl.css",
   api_get_autocomplete: `${api}/common/google/get-autocomplete`,
+  api_common_upload_url: `${api}/common/upload/upload-url`, // 把图片下载到hooli服务器
   api_common_files: `${api}/common/upload/files` /*上传图片 */,
   api_common_files_del: `${api}/common/upload/del` /*删除上传到服务器的图片 */,
   api_common_items_options: `${api}/platform/communal/common/items-options`,

+ 8 - 3
src/components/common/MyUEditor.vue

@@ -171,20 +171,25 @@ export default {
       },
       ue: null, // 编辑器实例
       content: "", // 富文本内容
-      isShowUpload: false
+      isShowUpload: false,
+      isOver: false
     };
   },
   watch: {
     content: {
       immediate: true,
       handler() {
-        this.$emit("postData", this.content);
+        if (!this.isOver) {
+          this.$emit("postData", this.content);
+        }
+        this.isOver = false;
       }
     }
   },
   methods: {
     // 写入内容
-    setContent(content) {
+    setContent(content, isOver = false) {
+      this.isOver = isOver;
       if (this.ue) {
         this.ue.setContent(content);
       }

+ 42 - 10
src/components/daily4StudyAbroad/material/CreateEdit.vue

@@ -206,6 +206,7 @@ export default {
         statusOptions: [] // 状态选项
       },
       tagArr: [], // 话题数组
+      imgs: [],
       // 表单对象
       formData: {
         title: "", // 标题
@@ -378,17 +379,48 @@ export default {
     // 富文本传输数据
     editorPostData(content) {
       this.formData.content = content;
-      this.$nextTick(() => {
-        const imgsUrl = [];
-        const imgs = document.querySelectorAll(".render-container img");
-        for (let i = 0; i < imgs.length; i++) {
-          if (i < 3) {
-            imgsUrl.push(imgs[i].src);
-          } else {
-            break;
+      this.$nextTick(async () => {
+        const imgNodes = document.querySelectorAll(".render-container img");
+        const imgs = [];
+        for (let i = 0; i < imgNodes.length; i++) {
+          imgs.push(imgNodes[i].src);
+        }
+        if (JSON.stringify(this.imgs) === JSON.stringify(imgs)) {
+          return false;
+        }
+        if (imgs.length === 0) {
+          return false;
+        }
+        this.imgs = imgs;
+        const params = {};
+        params.data = {
+          imgs: JSON.stringify(imgs),
+          contentType:
+            process.env.VUE_APP_ENV === "prod"
+              ? "run/material"
+              : "dev/run/material"
+        };
+        params.url = this.$apis.api_common_upload_url;
+        const { code, data } = await this.$net.req(params, this).catch(() => {
+          return {
+            code: 555,
+            data: null
+          };
+        });
+        if (parseInt(code) === 0 && Array.isArray(data) && data.length > 0) {
+          const imgsUrl = [];
+          for (let i = 0; i < imgNodes.length; i++) {
+            const url = data[i].host + data[i].url;
+            imgNodes[i].src = url;
+            if (i < 3) {
+              imgsUrl.push(url);
+            }
           }
+          this.formData.imgsUrl = imgsUrl;
+          const content = document.querySelector(".render-container").innerHTML;
+          this.formData.content = content;
+          this.$refs.myUEditor.setContent(content, true);
         }
-        this.formData.imgsUrl = imgsUrl;
       });
     },
     // 本地匹配作者
@@ -765,7 +797,7 @@ export default {
   .render-container {
     width: 750px;
     margin: 0 auto;
-    padding: 0 30px;
+    // padding: 0 30px;
     /deep/ * {
       line-height: initial;
       margin: 1em 0;