<template> <div> <textarea type="text/plain" :id="id"></textarea> <!-- 选择图片 --> <el-dialog title="选择文件" :visible.sync="changeState" width="1240px"> <ChooseImg @SelectId="SelectId" :IsMultiple="IsMultiple"></ChooseImg> </el-dialog> </div> </template> <script> import ChooseImg from "@/components/global/ChooseImg.vue"; export default { components: { ChooseImg }, name: 'UE', data() { return { id: 'editor' + (Math.floor((Math.random() * 10000) + 1)), editor: null, changeState: false, isInputChange: false, tempContent: this.defaultMsg } }, props: { defaultMsg: { type: String }, config: { type: Object }, //是否多选 IsMultiple: { type: Boolean } }, mounted() { this.loadUe(); }, watch: { defaultMsg(newVal, oldVal) { if (!this.isInputChange && newVal) { if (this.editor && this.editor.isReady === 1) { this.editor.setContent(newVal); } else { this.tempContent = newVal; } } if (this.isInputChange) { this.isInputChange = false; } }, }, methods: { InitData() { }, SelectId(resultMsg) { if (resultMsg) { let html = ''; this.ue = UE.getEditor(this.id); if (this.IsMultiple) { if (resultMsg.length > 0) { resultMsg.forEach(item => { html += '<img src="' + this.getIconLink(item.url) + '" style="max-width: 100%;" />'; }) } } else { html = '<img src="' + this.getIconLink(resultMsg.url) + '" style="max-width: 100%;" />'; } this.ue.execCommand('inserthtml', html); } this.changeState = false; }, getUEContent() { // 获取内容方法 if (this.editor) { return this.editor.getContent(); } return ""; }, loadUe() { const _this = this; UE.registerUI('appinsertimage', (editor, uiName) => { return new UE.ui.Button({ name: uiName, title: '插入图片', //添加额外样式,指定icon图标,这里默认使用一个重复的icon cssRules: 'background-position: -381px 0px;', onclick() { self.editor = editor; _this.changeState = true; }, }); }); this.editor = UE.getEditor(this.id, this.config); // 初始化UE let self = this; this.editor.addListener("ready", function () { _this.editor.setContent(_this.defaultMsg); // 确保UE加载完成后,放入内容。 }); this.editor.addListener('ready', editor => { if (_this.tempContent) { _this.editor.setContent(_this.tempContent); } }); this.editor.addListener('keyup', editor => { this.isInputChange = true; _this.$emit('input', _this.editor.getContent()); }); this.editor.addListener('contentChange', editor => { this.isInputChange = true; _this.$emit('input', _this.editor.getContent()); }); } }, destroyed() { this.editor.destroy(); }, } </script>