提交 05941989 authored 作者: 李仕聪's avatar 李仕聪

feat: 修改富文本编辑器

上级 9abae992
......@@ -10,6 +10,34 @@ import { queryApiActionPath, queryFileUrl } from '@/webPublic/one_stop_public/ut
const E = Editor;
const { BtnMenu } = E;
window.message = message;
/**
* 提取HTML标签内的内容
*
* @param {*} html
* @param {标签} tag
* @return {*}
*/
function extractBodyContent(html, tag) {
// 使用正则表达式匹配<body>标签内的内容
// 注意:这个正则表达式假设<body>标签内不会嵌套另一个<html>或<head>等标签
// 这种情况在正常的HTML文档中几乎不会发生
let regex;
if (tag === 'body') {
regex = /<body[^>]*>([\s\S]*?)<\/body>/i;
}
if (tag === 'style') {
regex = /<style[^>]*>([\s\S]*?)<\/style>/i;
}
const match = html.match(regex);
if (match && match.length > 1) {
// 返回<body>标签内的内容
return match[1];
} else {
// 如果没有找到<body>标签,则返回空字符串
return '';
}
}
export default class WordMenu extends BtnMenu {
constructor(editor) {
......@@ -34,19 +62,29 @@ export default class WordMenu extends BtnMenu {
dom.onchange = (v) => {
if (dom.files && dom.files.length) {
window.message.info('正在上传文件, 请耐心等待');
this.editor.disable();
const file = dom.files[0];
const fileName = file.name;
uploadWordToHtml(file)
.then((res) => {
setTimeout(() => {
if (res && res.html) {
this.editor.enable();
window.message.success('上传文件成功');
// 30354 【移动端】家庭经济困难学生认定,手机端这么搞,已通过项目组审核
// 将 embed 改完iframe 解决移动端不显示pdf 文件的bug
this.editor.txt.append(res.html);
const styleStr = extractBodyContent(res.html, 'style');
const newStyleStr = `<style type="text/css">.selfEditor ${styleStr.replace(/\}/g, '} .selfEditor')}</style>`;
const bodyStr = extractBodyContent(res.html, 'body');
const newHtml = `<div>${newStyleStr}<div class='selfEditor'> ${bodyStr} </div></div>`;
this.editor.txt.append(newHtml);
}
}, 2000);
}).catch((err) => {
this.editor.enable();
window.message.error('上传文件失败');
});
}
};
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论