数通智联化工云平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
2.5 KiB

2 years ago
<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 {}
}
},
2 years ago
aftTextCopy:{
type: String,
default(){
return {}
}
},
2 years ago
})
let $emit = defineEmits(["textChange"]);
const tinymceHtml = ref("")
tinymceHtml.value = props.aftText
onMounted(() => {
tinymce.init({}); // 初始化富文本
});
2 years ago
watch(tinymceHtml, (val) => {
$emit('textChange',val);
})
2 years ago
2 years ago
const addIcon = (currentObject:any) =>{
2 years ago
//console.log(currentObject)
2 years ago
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>`);
2 years ago
2 years ago
}
2 years ago
//取消
2 years ago
const handelCancel = (associatedFormsHideDialogTextCopy:any) =>{
2 years ago
2 years ago
//console.log(associatedFormsHideDialogTextCopy)
2 years ago
tinymceHtml.value = associatedFormsHideDialogTextCopy
}
2 years ago
const tinymceReInit = ()=>{
//alert("tinymceReInit")
2 years ago
//tinymce.init({}); // 初始化富文本
2 years ago
//console.log(tinymce.get("tinymce"))
2 years ago
//setTimeout(() => {
let str:string = props.aftTextCopy
console.log(str)
//tinymce.get("tinymce")?.setContent(str)
//}, 60);
2 years ago
}
defineExpose({
tinymceHtml,
addIcon,
handelCancel,
tinymceReInit,
})
</script>
<template>
<editor id="tinymce" v-model="tinymceHtml" :init="tinymceInit" ></editor>
2 years ago
2 years ago
</template>
<style lang='scss' scoped>
</style>