mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	update 优化 富文本Editor组件检验图片格式
This commit is contained in:
		@@ -9,14 +9,13 @@
 | 
			
		||||
        name="file"
 | 
			
		||||
        :show-file-list="false"
 | 
			
		||||
        :headers="headers"
 | 
			
		||||
        style="display: none"
 | 
			
		||||
        ref="uploadRef"
 | 
			
		||||
        v-if="type == 'url'"
 | 
			
		||||
    >
 | 
			
		||||
    </el-upload>
 | 
			
		||||
    <div class="editor">
 | 
			
		||||
      <quill-editor
 | 
			
		||||
          ref="myQuillEditor"
 | 
			
		||||
          ref="quillEditorRef"
 | 
			
		||||
          v-model:content="content"
 | 
			
		||||
          contentType="html"
 | 
			
		||||
          @textChange="(e) => $emit('update:modelValue', content)"
 | 
			
		||||
@@ -68,7 +67,7 @@ const { proxy } = getCurrentInstance();
 | 
			
		||||
// 上传的图片服务器地址
 | 
			
		||||
const uploadUrl = ref(import.meta.env.VITE_APP_BASE_API + "/system/oss/upload");
 | 
			
		||||
const headers = ref({ Authorization: "Bearer " + getToken() });
 | 
			
		||||
const myQuillEditor = ref();
 | 
			
		||||
const quillEditorRef = ref();
 | 
			
		||||
 | 
			
		||||
const options = ref({
 | 
			
		||||
  theme: "snow",
 | 
			
		||||
@@ -101,7 +100,7 @@ const options = ref({
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  placeholder: '请输入内容',
 | 
			
		||||
  placeholder: "请输入内容",
 | 
			
		||||
  readOnly: props.readOnly,
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@@ -114,7 +113,7 @@ const styles = computed(() => {
 | 
			
		||||
    style.height = `${props.height}px`;
 | 
			
		||||
  }
 | 
			
		||||
  return style;
 | 
			
		||||
})
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const content = ref("");
 | 
			
		||||
watch(() => props.modelValue, (v) => {
 | 
			
		||||
@@ -125,10 +124,10 @@ watch(() => props.modelValue, (v) => {
 | 
			
		||||
 | 
			
		||||
// 图片上传成功返回图片地址
 | 
			
		||||
function handleUploadSuccess(res, file) {
 | 
			
		||||
  // 获取富文本实例
 | 
			
		||||
  let quill = toRaw(myQuillEditor.value).getQuill();
 | 
			
		||||
  // 如果上传成功
 | 
			
		||||
  if (res.code == 200) {
 | 
			
		||||
    // 获取富文本实例
 | 
			
		||||
    let quill = toRaw(myQuillEditor.value).getQuill();
 | 
			
		||||
    // 获取光标位置
 | 
			
		||||
    let length = quill.selection.savedRange.index;
 | 
			
		||||
    // 插入图片,res为服务器返回的图片链接地址
 | 
			
		||||
@@ -144,6 +143,13 @@ function handleUploadSuccess(res, file) {
 | 
			
		||||
 | 
			
		||||
// 图片上传前拦截
 | 
			
		||||
function handleBeforeUpload(file) {
 | 
			
		||||
  const type = ["image/jpeg", "image/jpg", "image/png", "image/svg"];
 | 
			
		||||
  const isJPG = type.includes(file.type);
 | 
			
		||||
  //检验文件格式
 | 
			
		||||
  if (!isJPG) {
 | 
			
		||||
    proxy.$modal.msgError(`图片格式错误!`);
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
  // 校检文件大小
 | 
			
		||||
  if (props.fileSize) {
 | 
			
		||||
    const isLt = file.size / 1024 / 1024 < props.fileSize;
 | 
			
		||||
@@ -164,6 +170,9 @@ function handleUploadError(err) {
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style>
 | 
			
		||||
.editor-img-uploader {
 | 
			
		||||
  display: none;
 | 
			
		||||
}
 | 
			
		||||
.editor, .ql-toolbar {
 | 
			
		||||
  white-space: pre-wrap !important;
 | 
			
		||||
  line-height: normal !important;
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ export default {
 | 
			
		||||
      type: Boolean,
 | 
			
		||||
      default: false,
 | 
			
		||||
    },
 | 
			
		||||
    // 上传文件大小限制(MB)
 | 
			
		||||
    /* 上传文件大小限制(MB) */
 | 
			
		||||
    fileSize: {
 | 
			
		||||
      type: Number,
 | 
			
		||||
      default: 5,
 | 
			
		||||
@@ -129,7 +129,6 @@ export default {
 | 
			
		||||
      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 {
 | 
			
		||||
@@ -158,6 +157,13 @@ export default {
 | 
			
		||||
    },
 | 
			
		||||
    // 上传前校检格式和大小
 | 
			
		||||
    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;
 | 
			
		||||
@@ -169,10 +175,10 @@ export default {
 | 
			
		||||
      return true;
 | 
			
		||||
    },
 | 
			
		||||
    handleUploadSuccess(res, file) {
 | 
			
		||||
      // 获取富文本组件实例
 | 
			
		||||
      let quill = this.Quill;
 | 
			
		||||
      // 如果上传成功
 | 
			
		||||
      if (res.code == 200) {
 | 
			
		||||
        // 获取富文本组件实例
 | 
			
		||||
        let quill = this.Quill;
 | 
			
		||||
        // 获取光标所在位置
 | 
			
		||||
        let length = quill.getSelection().index;
 | 
			
		||||
        // 插入图片  res.url为服务器返回的图片地址
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user