|
@@ -49,6 +49,7 @@ import 'tinymce/plugins/ax_wordlimit'; // 字数限制插件
|
|
|
import { getRandomNumber } from '@/utils';
|
|
|
import { isNodeType } from '@/utils/validate';
|
|
|
import { fileUpload } from '@/api/app';
|
|
|
+import { addTone, handleToneValue } from '@/views/exercise_questions/data/common';
|
|
|
|
|
|
export default {
|
|
|
name: 'RichText',
|
|
@@ -130,6 +131,12 @@ export default {
|
|
|
editor.getBody().style.fontSize = `${this.font_size}pt`; // 设置默认字体大小
|
|
|
editor.getBody().style.fontFamily = 'Arial'; // 设置默认字体
|
|
|
});
|
|
|
+
|
|
|
+ editor.on('click', () => {
|
|
|
+ if (editor.queryCommandState('ToggleToolbarDrawer')) {
|
|
|
+ editor.execCommand('ToggleToolbarDrawer');
|
|
|
+ }
|
|
|
+ });
|
|
|
},
|
|
|
font_formats:
|
|
|
'楷体=楷体,微软雅黑;' +
|
|
@@ -358,6 +365,35 @@ export default {
|
|
|
},
|
|
|
handleRichTextBlur() {
|
|
|
this.$emit('handleRichTextBlur');
|
|
|
+ let content = tinymce.get(this.id).getContent();
|
|
|
+ // 用标签分割富文本,保留标签
|
|
|
+ let reg = /(<[^>]+>)/g;
|
|
|
+ let text = content
|
|
|
+ .split(reg)
|
|
|
+ .filter((item) => item)
|
|
|
+ // 如果是标签,直接返回
|
|
|
+ // 如果是文本,将文本按空格分割为数组,如果是拼音,将拼音转为带音调的拼音
|
|
|
+ .map((item) => {
|
|
|
+ return reg.test(item) ? item : item.split(/\s+/).map((item) => handleToneValue(item));
|
|
|
+ })
|
|
|
+ // 如果是标签,直接返回
|
|
|
+ // 二维数组,转为拼音,并打平为一维数组
|
|
|
+ .map((item) => {
|
|
|
+ if (/<[^>]+>/g.test(item)) return item;
|
|
|
+ return item
|
|
|
+ .map((li) =>
|
|
|
+ li.map(({ number, con }) => (number && con ? addTone(Number(number), con) : number || con || '')),
|
|
|
+ )
|
|
|
+ .flat();
|
|
|
+ })
|
|
|
+ // 如果是数组,将数组字符串每两个之间加一个空格
|
|
|
+ .map((item) => {
|
|
|
+ if (typeof item === 'string') return item;
|
|
|
+ return item.join(' ');
|
|
|
+ })
|
|
|
+ .join('');
|
|
|
+ // 更新 v-model
|
|
|
+ this.$emit('input', text);
|
|
|
},
|
|
|
// 设置填空
|
|
|
setFill() {
|