WXL (wul)
2 天以前 78c84cf61b2a7f558582673a3eecdf8b91eb24c3
src/views/knowledge/education/compilequer/index.vue
@@ -357,59 +357,77 @@
      // 编辑器模式
      mode: "default",
fileList:[],
      fileList: [],
      // 工具栏配置
      toolbarConfig: {
        excludeKeys: [
          "group-video",
          "insertVideo",
          "uploadVideo",
          "emotion",
          "codeBlock",
        ],
        excludeKeys: ["emotion", "codeBlock"],
      },
      // 编辑器配置
      editorConfig: {
        placeholder: "请输入宣教内容...",
        placeholder: "请输入内容...",
        MENU_CONF: {
          // 图片上传配置
          uploadImage: {
            server: process.env.VUE_APP_BASE_API + "/common/uploadSort",
            fieldName: "file",
            maxFileSize: 2 * 1024 * 1024,
            maxNumberOfFiles: 1,
            allowedFileTypes: ["image/*"],
            headers: {
              Authorization: "Bearer " + getToken(),
            },
            customUpload: async (file, insertFn) => {
              try {
                const formData = new FormData();
                formData.append("file", file);
                const response = await axios.post(
                  process.env.VUE_APP_BASE_API + "/common/uploadSort",
                  formData,
                  {
                    headers: {
                      // "Content-Type": "multipart/form-data",
                      Authorization: "Bearer " + getToken(),
                    },
                  }
            // 自定义插入图片
            customInsert: (res, insertFn) => {
              const url = res.url || res.data || res.filePath;
              if (url) {
                // 处理内网地址转换
                const processedUrl = url.replace(
                  "http://192.168.191.181:8095/profile/upload",
                  "http://m.zjtongde.com:13871/prod-api/profile/upload"
                );
                if (response.data && response.data.url) {
                  let imgUrl = response.data.url;
                  imgUrl = imgUrl.replace(
                    "http://218.108.11.22:8093/profile-api/upload",
                    "http://192.168.191.181:8095/profile/upload"
                  );
                  insertFn(imgUrl);
                }
              } catch (error) {
                console.error("图片上传失败", error);
                this.$message.error("图片上传失败");
                insertFn(processedUrl);
              }
            },
            // 上传成功回调
            onSuccess: (file, res) => {
              console.log("图片上传成功", res);
              return res.url || res.data || res.filePath;
            },
            onFailed: (file, res) => {
              this.$message.error("图片上传失败");
              console.error("图片上传失败", res);
            },
          },
          // 视频上传配置
          uploadVideo: {
            server: process.env.VUE_APP_BASE_API + "/common/uploadSort",
            fieldName: "file",
            maxFileSize: 50 * 1024 * 1024, // 50MB
            allowedFileTypes: ["video/*"],
            headers: {
              Authorization: "Bearer " + getToken(),
            },
            // 自定义插入视频
            customInsert: (res, insertFn) => {
              const url = res.url || res.data || res.filePath;
              if (url) {
                // 处理内网地址转换
                const processedUrl = url.replace(
                  "http://192.168.191.181:8095/profile/upload",
                  "http://m.zjtongde.com:13871/prod-api/profile/upload"
                );
                insertFn(processedUrl, "视频");
              }
            },
            onSuccess: (file, res) => {
              console.log("视频上传成功", res);
              return res.url || res.data || res.filePath;
            },
            onFailed: (file, res) => {
              this.$message.error("视频上传失败");
              console.error("视频上传失败", res);
            },
            onError: (file, err, res) => {
              this.$message.error("视频上传出错");
              console.error("视频上传出错", err);
            },
          },
        },
@@ -480,11 +498,13 @@
      options: [],
      optionstag: [],
      // 内网的部分(文件)
      oldPattern: "http://192.168.191.181:8095/profile/upload",
      // oldPattern: "http://192.168.191.181:8095/profile/upload",
      oldPattern: "http://192.88.117.236:8090/prod-api/profile/upload",
      // 内网的部分(文件)
      oldPatternhtml: "/http:\/\/192\.168\.191\.181:8095\/profile\/upload\//g",
      oldPatternhtml: "/http:\/\/192\.88\.117\.236:8095\/profile\/upload\//g",
      // 外网部分(文件)
      newPattern: "http://218.108.11.22:8093/profile-api/upload",
      // newPattern: "http://218.108.11.22:8093/profile-api/upload",、、新华
      newPattern: "http://m.zjtongde.com:13871/prod-api/profile/upload",
      xjxsoptions: [
        {
@@ -630,7 +650,7 @@
      // ------------------
      // let html =
      //   '<p>测试</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.168.191.181:8095/profile/upload/vadio/营养泵介绍.mp4"></video><p>测试111</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.168.191.181:8095/profile/upload/vadio/注射器推注.mp4"></video><p><br></p>';
      //   '<p>测试</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.88.117.236:8090/prod-api/profile/upload/vadio/营养泵介绍.mp4"></video><p>测试111</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.88.117.236:8090/prod-api/profile/upload/vadio/注射器推注.mp4"></video><p><br></p>';
      // // html = html.parserdom(this.oldPattern, this.newPattern);
      // html = this.parserdom(html);
      // console.log(html, "html");
@@ -645,17 +665,42 @@
      var doc = parser.parseFromString(html, "text/html");
      // 定义要替换的新旧URL
      var oldUrlBase = "http://192.168.191.181:8095/profile/upload";
      var newUrlBase = "http://218.108.11.22:8093/profile-api/upload";
      var oldUrlBase = this.oldPattern;
      // var newUrlBase = "http://218.108.11.22:8093/profile-api/upload";
      var newUrlBase = this.newPattern;
      // 获取所有的video元素
      var videos = doc.querySelectorAll("video");
      var images = doc.querySelectorAll("img");
      console.log(videos, "videos");
      console.log(images, "images");
      // 遍历所有的video元素并替换src属性
      videos.forEach(function (video) {
        // 先检查video元素自身的src属性
        var src = video.getAttribute("src");
        if (src.startsWith(oldUrlBase)) {
        if (src && src.startsWith(oldUrlBase)) {
          video.setAttribute("src", src.replace(oldUrlBase, newUrlBase));
        }
        // 然后检查video元素内部的source子元素
        var sources = video.querySelectorAll("source");
        sources.forEach(function (source) {
          var sourceSrc = source.getAttribute("src");
          if (sourceSrc && sourceSrc.startsWith(oldUrlBase)) {
            source.setAttribute(
              "src",
              sourceSrc.replace(oldUrlBase, newUrlBase)
            );
          }
        });
      });
      console.log(images, "images");
      images.forEach(function (img) {
        var src = img.getAttribute("src");
        if (src.startsWith(oldUrlBase)) {
          img.setAttribute("src", src.replace(oldUrlBase, newUrlBase));
        }
      });
@@ -684,7 +729,13 @@
        content: this.parserdom(this.content),
        fileName: this.generateRandomHtmlFilename(),
      }).then((res) => {
        console.log(55);
        this.ruleForm.richText = res.msg;
        this.ruleForm.richText = res.msg.replace(
          this.oldPattern,
          this.newPattern
        );
        console.log(this.ruleForm.richText, "this.ruleForm.richText");
        // 处理内网html
        addrichText({