2 changed files with 158 additions and 10 deletions
@ -0,0 +1,91 @@ |
|||||
|
|
||||
|
<script lang='ts' setup> |
||||
|
import { ref, onMounted } from "vue"; |
||||
|
import tinymce from "tinymce/tinymce"; |
||||
|
import "tinymce/models/dom"; // 特别注意 tinymce 6.0.0 版本之后必须引入,否则不显示 |
||||
|
import "tinymce/themes/silver/theme"; |
||||
|
import Editor from "@tinymce/tinymce-vue"; // 引入组件 |
||||
|
|
||||
|
import { v4 as uuidv4 } from "uuid"; |
||||
|
|
||||
|
let onlyNumber = uuidv4().replaceAll('-','').toString(); //获取唯一编码 |
||||
|
//onlyNumber = "#"+onlyNumber |
||||
|
/** |
||||
|
* 初始富文本组件 |
||||
|
*/ |
||||
|
const tinymceInit = { |
||||
|
selector: "#tinymce", |
||||
|
language_url: "/tinymce/langs/zh-Hans.js", // 引入语言包(该语言包在public下,注意文件名称) |
||||
|
language: "zh-Hans", // 这里名称根据 zh-Hans.js 里面写的名称而定 |
||||
|
skin_url: "/tinymce/skins/ui/oxide", // 这里引入的样式 |
||||
|
height: 260, // 限制高度 |
||||
|
statusbar:false, |
||||
|
toolbar:false, |
||||
|
branding: false, //是否禁用“Powered by TinyMCE” |
||||
|
menubar: false, //顶部菜单栏显示 |
||||
|
forced_root_block:'', |
||||
|
newline_behavior:"", |
||||
|
content_css: "/tinymce/skins/content/default/content.css", //以css文件方式自定义可编辑区域的css样式,css文件需自己创建并引入 |
||||
|
} |
||||
|
const props = defineProps({ |
||||
|
aftText:{ |
||||
|
type: String, |
||||
|
default(){ |
||||
|
return {} |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
}) |
||||
|
|
||||
|
let $emit = defineEmits(["textChange"]); |
||||
|
|
||||
|
const tinymceHtml = ref("") |
||||
|
tinymceHtml.value = props.aftText |
||||
|
|
||||
|
|
||||
|
|
||||
|
onMounted(() => { |
||||
|
|
||||
|
tinymce.init({}); // 初始化富文本 |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
|
||||
|
|
||||
|
const addIcon = (currentObject) =>{ |
||||
|
console.log(currentObject) |
||||
|
tinymce.activeEditor?.execCommand('mceInsertContent', false, `<span style="margin:3px;background-color: #4189EF;border-radius: 5px; padding:3px" contenteditable="false" data-keyid= "${currentObject.id}" >${currentObject.label}</span>`); |
||||
|
$emit('textChange',tinymceHtml); |
||||
|
} |
||||
|
|
||||
|
const handelCancel = (associatedFormsHideDialogTextCopy) =>{ |
||||
|
|
||||
|
console.log(associatedFormsHideDialogTextCopy) |
||||
|
tinymceHtml.value = associatedFormsHideDialogTextCopy |
||||
|
|
||||
|
|
||||
|
} |
||||
|
const tinymceReInit = ()=>{ |
||||
|
|
||||
|
//tinymce.init({}); // 初始化富文本 |
||||
|
console.log(tinymce.get("tinymce")) |
||||
|
tinymce.get("tinymce").setContent('<p>213342</p>') |
||||
|
} |
||||
|
|
||||
|
|
||||
|
defineExpose({ |
||||
|
tinymceHtml, |
||||
|
addIcon, |
||||
|
handelCancel, |
||||
|
tinymceReInit, |
||||
|
}) |
||||
|
|
||||
|
</script> |
||||
|
<template> |
||||
|
|
||||
|
<editor id="tinymce" v-model="tinymceHtml" :init="tinymceInit" ></editor> |
||||
|
</template> |
||||
|
|
||||
|
<style lang='scss' scoped> |
||||
|
|
||||
|
</style> |
||||
Loading…
Reference in new issue