From b1cac52d2ad191352aa6e4bcaae6482278c8951e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=8B=E4=BA=8E=E5=88=9D=E8=A7=81?= <752204717@qq.com> Date: Thu, 5 Dec 2024 16:32:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/img/word.png | Bin 0 -> 943 bytes src/common/js/commonJS.js | 215 ++ src/components/page/GenerateCharts.vue | 20 +- .../page/components/Tinymce/img/bit_bug.png | Bin 38804 -> 0 bytes .../page/components/Tinymce/index.vue | 259 +- .../page/components/table/dragWord.vue | 109 +- .../page/components/table/table copy 2.vue | 432 --- .../page/components/table/table copy 3.vue | 657 ---- .../page/components/table/template.txt | 3241 ----------------- src/main.js | 3 +- 10 files changed, 315 insertions(+), 4621 deletions(-) create mode 100644 src/assets/img/word.png create mode 100644 src/common/js/commonJS.js delete mode 100644 src/components/page/components/Tinymce/img/bit_bug.png delete mode 100644 src/components/page/components/table/table copy 2.vue delete mode 100644 src/components/page/components/table/table copy 3.vue delete mode 100644 src/components/page/components/table/template.txt diff --git a/src/assets/img/word.png b/src/assets/img/word.png new file mode 100644 index 0000000000000000000000000000000000000000..75058a4fea540d760ec3424cd7f1175d152b7206 GIT binary patch literal 943 zcmV;g15o^lP)Px&X-PyuRA@u(S-(#dK^T2AyX@WtcY$!oVZb12L1Q8@CSHLDe}cpqe>7HFl1OPn zp`}JNHWtRhU}Ax>u~Io>L19B|Bq1aaA)ycfH3H_iUGpstncLgb-DCF_@TTHsf82ZD zdvCtEfnkpiw#V_~|09rnx{_twegdE~X7%Q5&iVo?(D!UP2OHU#!Eb#%!@J-FMwjhf z0saq&8iBags41}L6zF~Yxq=Wga4iAGmC*SHwovBbrwRxFT&+W$(HuU3^p)3HSUmK` z#O!tGYz9Va3dYeM2e{spj)1_$@f?^PO=GgwpyelFcAbK1q@XplhDN})?A1a(|BQft=pNqGd5cUlIA{)WYE!)aEK2+ znu>=2DKIp!rNY4NNlZ+wYy%T^$a-=AkC9f@^#r>ZI{Q3tW|XaUO^Uf zWGSjHNn}Ca)2pg3Pup>o;jf?@Mjm#Zn!XN@F>>(7P<&=6x zxd79%Ytt{GnjKIZI>D3SZsu$on8+V}<~*$Q5t2G<(G z!7jZe@WGaTxZn3F22+w?Y67a+1*RFhgFy25d4B}B3a08{Tyuak%>>uX_!X!>aoryQ z2`aBM!ILR4MUS6=(K8g7fMRrn4qUu2a0bjXw|o;|OmQ**7XGPp#RMA9-uF!)va;`F z71{>`9^`QzDd Rk3awb002ovPDHLkV1ikiujc>& literal 0 HcmV?d00001 diff --git a/src/common/js/commonJS.js b/src/common/js/commonJS.js new file mode 100644 index 0000000..d72dffe --- /dev/null +++ b/src/common/js/commonJS.js @@ -0,0 +1,215 @@ +export default { + // 提取 Word 文件中的表格 + extractTablesFromWord(arrayBuffer, callback) { + const zip = new JSZip(); + zip.loadAsync(arrayBuffer) + .then((zip) => zip.file('word/document.xml').async('string')) + .then((docXml) => { + const parser = new DOMParser(); + const xmlDoc = parser.parseFromString(docXml, 'text/xml'); + const tables = xmlDoc.getElementsByTagName('w:tbl'); // 查找 Word 表格标签 + let html = ''; + const wordTables = [] + for (let table of tables) { + var str = this.convertTableToHtml(table); + const container = document.createElement('div'); + container.innerHTML = str; + wordTables.push({ + html: this.updateTableStyles(container), + orientation: 'portrait' // 默认纵向 + }); + + html += str; + } + + if (!html) + html = '

未检测到表格内容。

'; + + + callback( Array.from(wordTables).map((table) => table.html).join(''), wordTables); + }) + .catch(function (err) { + console.error('解析 Word 文件出错:', err); + callback('

文件解析失败,请检查文件格式。

'); + }); + }, + //更新传入所有表格样式 + updateTableStyles(container,type,setTopBottomBorder) { + var typesettingType=type?type:1 + const tables = container.querySelectorAll('table'); + tables.forEach((table) => { + table.setAttribute( + 'style', + `width: ${typesettingType == 1 ? '17.18cm' : '25.88cm' + };border: none; margin: 0 auto !important;border-collapse: collapse; ` + ); + const cells = table.querySelectorAll('td'); + cells.forEach((td) => { + if (/^-?\d+(\.\d+)?$/.test(td.textContent.trim())) { + this.replaceNegativeSign(td); + } + // 检查当前 td 是否包含上下标 + if (!this.containsSupOrSub(td)) { + // 递归处理单元格内的所有子节点 + td.childNodes.forEach((node) => this.capitalizeFirstLetter(node)); + // 替换 标签为其内部文本 + td.querySelectorAll('a').forEach((a) => a.replaceWith(document.createTextNode(a.textContent))); + } + const childElements = td.querySelectorAll('*'); + // 遍历每个子元素 + childElements.forEach((element) => { + // 如果元素的文本内容匹配正则表达式 + if (/\[\d+(?:,\d+)*\]/g.test(element.textContent)) { + element.classList.add('color-highlight'); + element.style.color = 'rgb(0,130,170)'; + } + }); + }); + if(setTopBottomBorder){ + const firstRowTdElements = container.querySelectorAll('tr:first-child td'); // 获取第一个 中的所有 元素 + firstRowTdElements.forEach((td) => { + const currentStyle = td.getAttribute('style'); + if (currentStyle) { + td.setAttribute( + 'style', + currentStyle + + ';border-top:1.0000pt solid #000 !important;mso-border-top-alt:0.5000pt solid #000 !important;border-bottom:1.0000pt solid #000 !important;mso-border-bottom-alt:0.5000pt solid #000 !important;' + ); + } else { + td.setAttribute( + 'style', + 'border-top:1.0000pt solid #000 !important;mso-border-top-alt:0.5000pt solid #000 !important;border-bottom:1.0000pt solid #000 !important;mso-border-bottom-alt:0.5000pt solid #000 !important;' + ); + } + }); + const firstRowTdElementsLast = container.querySelectorAll('tr:last-of-type td'); + firstRowTdElementsLast.forEach((td) => { + // 获取当前的 style 属性(如果有) + const currentStyle = td.getAttribute('style'); + // 如果已有 style 属性,则追加边框样式;如果没有 style 属性,则设置新的 style + if (currentStyle) { + td.setAttribute( + 'style', + currentStyle + + ';border-bottom:1.0000pt solid #000 !important;mso-border-bottom-alt:0.5000pt solid #000 !important;' + ); + } else { + td.setAttribute( + 'style', + 'border-bottom:1.0000pt solid #000 !important;mso-border-bottom-alt:0.5000pt solid #000 !important;' + ); + } + }); + } + + }); + return Array.from(tables).map((table) => table.outerHTML).join(''); + + }, + // 将 XML 表格转换为 HTML + convertTableToHtml(tableNode) { + const rows = tableNode.getElementsByTagName('w:tr'); + let html = ''; + for (let row of rows) { + html += ''; + const cells = row.getElementsByTagName('w:tc'); + for (let cell of cells) { + let cellHtml = ''; + const paragraphs = cell.getElementsByTagName('w:p'); // 获取单元格内段落 + + for (let paragraph of paragraphs) { + const texts = paragraph.getElementsByTagName('w:r'); // 获取段落内的文本和样式 + for (let run of texts) { + const textNode = run.getElementsByTagName('w:t')[0]; + if (textNode) { + const style = this.getStyleFromRun(run); // 提取样式 + cellHtml += `${textNode.textContent}`; + } + } + cellHtml += '
'; // 段落换行 + } + + html += ``; + } + html += ''; + } + html += '
${cellHtml}
'; + + return html; + }, + + // 提取 w:r 节点中的样式并转换为 CSS + getStyleFromRun(run) { + const styleNode = run.getElementsByTagName('w:rPr')[0]; + let style = ''; + if (styleNode) { + // 加粗 + if (styleNode.getElementsByTagName('w:b').length > 0) { + style += 'font-weight: bold;'; + } + // 斜体 + if (styleNode.getElementsByTagName('w:i').length > 0) { + style += 'font-style: italic;'; + } + // 上标或下标 + const vertAlign = styleNode.getElementsByTagName('w:vertAlign')[0]; + if (vertAlign) { + const alignVal = vertAlign.getAttribute('w:val'); + if (alignVal === 'superscript') { + style += 'vertical-align: super; font-size: smaller;'; + } else if (alignVal === 'subscript') { + style += 'vertical-align: sub; font-size: smaller;'; + } + } + // 字体颜色 + const colorNode = styleNode.getElementsByTagName('w:color')[0]; + if (colorNode) { + const colorVal = colorNode.getAttribute('w:val'); + style += `color: #${colorVal};`; + } + } + + return style; + }, + replaceNegativeSign(node) { + if (node.nodeType === Node.TEXT_NODE) { + // 如果是文本节点,替换负号 + node.nodeValue = node.nodeValue.replace(/^-(?=\d)/, '−'); + } else if (node.nodeType === Node.ELEMENT_NODE) { + this.applyToChildNodes(node, (child) => this.replaceNegativeSign(child)); + } + }, + + capitalizeFirstLetter(node) { + if (node.nodeType === Node.TEXT_NODE) { + // 如果是文本节点,只处理第一个非空字符 + node.nodeValue = node.nodeValue.replace(/^\s*([a-zA-Z])/, (match, firstLetter) => firstLetter.toUpperCase()); + } else if (node.nodeType === Node.ELEMENT_NODE) { + this.applyToChildNodes(node, (child) => this.capitalizeFirstLetter(child)); + } + }, + + applyToChildNodes(node, fn) { + if (node.nodeType === Node.ELEMENT_NODE) { + node.childNodes.forEach(fn); + } + }, + + + containsSupOrSub(element) { + // 如果当前节点是元素节点 + if (element.nodeType === 1) { + // 如果是 标签,返回 true + if (element.tagName === 'SUP' || element.tagName === 'SUB') { + return true; + } + // 否则,递归检查子节点 + return Array.from(element.childNodes).some((child) => this.containsSupOrSub(child)); + } + // 如果不是元素节点(如文本节点),返回 false + return false; + }, + + // 通用递归方法 + +}; \ No newline at end of file diff --git a/src/components/page/GenerateCharts.vue b/src/components/page/GenerateCharts.vue index 2a10d79..3d37207 100644 --- a/src/components/page/GenerateCharts.vue +++ b/src/components/page/GenerateCharts.vue @@ -70,7 +70,7 @@ Push Online - +
+ @@ -234,10 +241,8 @@ * Content : - - - + @@ -548,13 +553,12 @@ export default { }, // 表格段落 MTxtTable(val, num) { - // this.lineStyle.p_main_id = val.p_main_id; this.lineStyle.textarea = ''; this.lineStyle.titleCon = ''; this.lineTable = []; - + this.lineStyle = {}; this.threeVisible = true; - this.typesettingType = '1'; + this.$forceUpdate(); }, diff --git a/src/components/page/components/Tinymce/img/bit_bug.png b/src/components/page/components/Tinymce/img/bit_bug.png deleted file mode 100644 index 28dbbb7873fec803426e6be6878bb93f995d8cfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38804 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%0ASNGpGuCe#|{H=cMi2>D`A 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 z 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 { - const hasHorizontalScrollbar = editorBody.scrollWidth > editorBody.clientWidth; - if (hasHorizontalScrollbar) { - console.log('TinyMCE 出现横向滚动条'); - } else { - console.log('没有横向滚动条'); - } + console.log('editorBody at line 313:', editorBody); + // _this.updateTableStyles(editorBody, _this.typesettingType); + // const hasHorizontalScrollbar = editorBody.scrollWidth > editorBody.clientWidth; + // if (hasHorizontalScrollbar) { + // console.log('TinyMCE 出现横向滚动条'); + // } else { + // console.log('没有横向滚动条'); + // } }); // 监听子节点和内容的变化 @@ -338,7 +347,10 @@ export default { let content = ed.getContent(); // 获取内容 content = content.replace(//g, '').replace(/<\/strong>/g, ''); content = content.replace(//g, '').replace(/<\/strong>/g, ''); - _this.export('table', content); + const container = document.createElement('div'); + container.innerHTML = content; + + _this.export('table', _this.$commonJS.updateTableStyles(container, _this.typesettingType, 1)); } }); // 定义自定义按钮 @@ -377,222 +389,14 @@ export default { }); }, // 提取 Word 文件中的表格 - extractTablesFromWord(arrayBuffer, callback) { - const zip = new JSZip(); - var that = this; - zip.loadAsync(arrayBuffer) - .then(function (zip) { - const docXmlPath = 'word/document.xml'; // Word 主文档的 XML 路径 - return zip.file(docXmlPath).async('string'); - }) - .then(function (docXml) { - const parser = new DOMParser(); - const xmlDoc = parser.parseFromString(docXml, 'text/xml'); - const tables = xmlDoc.getElementsByTagName('w:tbl'); // 查找 Word 表格标签 - let html = ''; - for (let table of tables) { - html += that.convertTableToHtml(table); - } - - if (!html) { - html = '

未检测到表格内容。

'; - } - callback(html); - const container = document.createElement('div'); - container.innerHTML = html; - that.updateTableStyles(container); - - console.log('html at line 400:', html); - }) - .catch(function (err) { - console.error('解析 Word 文件出错:', err); - callback('

文件解析失败,请检查文件格式。

'); - }); - }, - - // 将 XML 表格转换为 HTML - convertTableToHtml(tableNode) { - const rows = tableNode.getElementsByTagName('w:tr'); - let html = ''; - for (let row of rows) { - html += ''; - const cells = row.getElementsByTagName('w:tc'); - for (let cell of cells) { - let cellHtml = ''; - const paragraphs = cell.getElementsByTagName('w:p'); // 获取单元格内段落 - - for (let paragraph of paragraphs) { - const texts = paragraph.getElementsByTagName('w:r'); // 获取段落内的文本和样式 - for (let run of texts) { - const textNode = run.getElementsByTagName('w:t')[0]; - if (textNode) { - const style = this.getStyleFromRun(run); // 提取样式 - cellHtml += `${textNode.textContent}`; - } - } - cellHtml += '
'; // 段落换行 - } - - html += ``; - } - html += ''; - } - html += '
${cellHtml}
'; - - return html; - }, - - // 提取 w:r 节点中的样式并转换为 CSS - getStyleFromRun(run) { - const styleNode = run.getElementsByTagName('w:rPr')[0]; - let style = ''; - - if (styleNode) { - // 加粗 - if (styleNode.getElementsByTagName('w:b').length > 0) { - style += 'font-weight: bold;'; - } - // 斜体 - if (styleNode.getElementsByTagName('w:i').length > 0) { - style += 'font-style: italic;'; - } - // 上标或下标 - const vertAlign = styleNode.getElementsByTagName('w:vertAlign')[0]; - if (vertAlign) { - const alignVal = vertAlign.getAttribute('w:val'); - if (alignVal === 'superscript') { - style += 'vertical-align: super; font-size: smaller;'; - } else if (alignVal === 'subscript') { - style += 'vertical-align: sub; font-size: smaller;'; - } - } - // 字体颜色 - const colorNode = styleNode.getElementsByTagName('w:color')[0]; - if (colorNode) { - const colorVal = colorNode.getAttribute('w:val'); - style += `color: #${colorVal};`; - } - } - - return style; - }, - replaceNegativeSign(node) { - if (node.nodeType === Node.TEXT_NODE) { - // 如果是文本节点,替换负号 - node.nodeValue = node.nodeValue.replace(/^-(?=\d)/, '−'); - } else if (node.nodeType === Node.ELEMENT_NODE) { - // 如果是元素节点,递归处理子节点 - node.childNodes.forEach(this.replaceNegativeSign); - } - }, - capitalizeFirstLetter(node) { - if (node.nodeType === Node.TEXT_NODE) { - // 如果是文本节点,只处理第一个非空字符 - node.nodeValue = node.nodeValue.replace(/^\s*([a-zA-Z])/, (match, firstLetter) => { - return firstLetter.toUpperCase(); - }); - } else if (node.nodeType === Node.ELEMENT_NODE) { - // 递归处理子节点 - node.childNodes.forEach(this.capitalizeFirstLetter); - } - }, updateTableStyles(container) { - var _this = this; - // 更新表格样式 - const tables = container.querySelectorAll('table'); - - tables.forEach((table) => { - table.setAttribute( - 'style', - `width: ${ - this.typesettingType == 1 ? '17.18cm' : '25.88cm' - };border: none; margin: 0 auto !important;border-collapse: collapse; ` - ); - const cells = table.querySelectorAll('td'); - cells.forEach((td) => { - if (/^-?\d+(\.\d+)?$/.test(td.textContent.trim())) { - _this.replaceNegativeSign(td); - } - const hasSupOrSub = _this.containsSupOrSub(td); // 检查当前 td 是否包含上下标 - if (!hasSupOrSub) { - // 递归处理单元格内的所有子节点 - td.childNodes.forEach(_this.capitalizeFirstLetter); - // 替换
标签为其内部文本 - td.querySelectorAll('a').forEach((a) => { - const textNode = document.createTextNode(a.textContent); // 创建文本节点 - a.replaceWith(textNode); // 用文本节点替换 标签 - }); - } - - // 获取 td 元素中的所有子元素 - const childElements = td.querySelectorAll('*'); - - // 遍历每个子元素 - childElements.forEach((element) => { - // 如果元素的文本内容匹配正则表达式 - if (/\[\d+(?:,\d+)*\]/g.test(element.textContent)) { - console.log('匹配到带有数字的方括号内容'); - // 为匹配的元素添加样式类 - element.classList.add('color-highlight'); - element.style.color = 'rgb(0,130,170)'; - } - }); - }); - const firstRowTdElements = container.querySelectorAll('tr:first-child td'); // 获取第一个 中的所有 元素 - // 遍历所有 元素,添加上下边框样式 - firstRowTdElements.forEach((td) => { - const currentStyle = td.getAttribute('style'); - if (currentStyle) { - td.setAttribute( - 'style', - currentStyle + - ';border-top:1.0000pt solid #000 !important;mso-border-top-alt:0.5000pt solid #000 !important;border-bottom:1.0000pt solid #000 !important;mso-border-bottom-alt:0.5000pt solid #000 !important;' - ); - } else { - td.setAttribute( - 'style', - 'border-top:1.0000pt solid #000 !important;mso-border-top-alt:0.5000pt solid #000 !important;border-bottom:1.0000pt solid #000 !important;mso-border-bottom-alt:0.5000pt solid #000 !important;' - ); - } - }); - const firstRowTdElementsLast = container.querySelectorAll('tr:last-of-type td'); - // 遍历所有 元素,添加上下边框样式 - firstRowTdElementsLast.forEach((td) => { - // 获取当前的 style 属性(如果有) - const currentStyle = td.getAttribute('style'); - // 如果已有 style 属性,则追加边框样式;如果没有 style 属性,则设置新的 style - if (currentStyle) { - td.setAttribute( - 'style', - currentStyle + - ';border-bottom:1.0000pt solid #000 !important;mso-border-bottom-alt:0.5000pt solid #000 !important;' - ); - } else { - td.setAttribute( - 'style', - 'border-bottom:1.0000pt solid #000 !important;mso-border-bottom-alt:0.5000pt solid #000 !important;' - ); - } - }); - }); - var editor = window.tinymce.activeEditor; - var html = ''; - tables.forEach((e) => { - console.log('e at line 579:', e); - - html += e.outerHTML; - console.log('html at line 582:', html); - }); - // 将外部 DOM 内容更新到编辑器 + var html = this.$commonJS.updateTableStyles(container, this.typesettingType); + var editor = window.tinymce.activeEditor; // 将外部 DOM 内容更新到编辑器 const container1 = document.createElement('div'); container1.innerHTML = html; // html 是更新后的 HTML 内容 - - // 更新编辑器内容 - editor.setContent(container1.innerHTML); - - // 触发编辑器内容变化后,如果需要,可能还要设置编辑器的样式 - editor.focus(); // 聚焦到编辑器 + editor.setContent(container1.innerHTML); // 更新编辑器内容 + editor.focus(); // 聚焦到编辑器// 触发编辑器内容变化后,如果需要,可能还要设置编辑器的样式 }, //销毁富文本 destroyTinymce() { @@ -682,19 +486,6 @@ export default { console.log(arr, '222'); const _this = this; window.tinymce.get(_this.tinymceId).insertContent(arr); - }, - containsSupOrSub(element) { - // 如果当前节点是元素节点 - if (element.nodeType === 1) { - // 如果是 标签,返回 true - if (element.tagName === 'SUP' || element.tagName === 'SUB') { - return true; - } - // 否则,递归检查子节点 - return Array.from(element.childNodes).some((child) => this.containsSupOrSub(child)); - } - // 如果不是元素节点(如文本节点),返回 false - return false; } }, destroyed() { diff --git a/src/components/page/components/table/dragWord.vue b/src/components/page/components/table/dragWord.vue index 8f8fbae..0db0bb3 100644 --- a/src/components/page/components/table/dragWord.vue +++ b/src/components/page/components/table/dragWord.vue @@ -4,12 +4,12 @@

将 Word 文件拖拽到此处

-
@@ -43,28 +43,34 @@ export default { data() { return { tables: [], // 保存解析后的表格数据 - addVisible:false, + addVisible: false }; }, methods: { - clickUpload(){ + addVisCancle(){ +this.addVisible = false; + }, + clickUpload() { + this.tables = []; + var that = this; const input = document.createElement('input'); - input.type = 'file'; - input.accept = '.docx'; // 限制为 Word 文件 - input.addEventListener('change', function () { - const file = input.files[0]; - if (file) { - const reader = new FileReader(); - reader.onload = function (e) { - const arrayBuffer = e.target.result; - _this.extractTablesFromWord(arrayBuffer, function (tablesHtml) { - ed.setContent(tablesHtml); - }); - }; - reader.readAsArrayBuffer(file); - } - }); - input.click(); + input.type = 'file'; + input.accept = '.docx'; // 限制为 Word 文件 + input.addEventListener('change', function () { + const file = input.files[0]; + if (file) { + const reader = new FileReader(); + reader.onload = function (e) { + const arrayBuffer = e.target.result; + that.extractTablesFromWord(arrayBuffer, function (tablesHtml) { + console.log('tablesHtml at line 61:', that.tables); + that.addVisible = true; + }); + }; + reader.readAsArrayBuffer(file); + } + }); + input.click(); }, // 拖拽事件处理 onDragOver(event) { @@ -74,9 +80,8 @@ export default { event.currentTarget.style.borderColor = '#ccc'; }, - - // 提取 Word 文件中的表格 - extractTablesFromWord(arrayBuffer, callback) { + // 提取 Word 文件中的表格 + extractTablesFromWord(arrayBuffer, callback) { const zip = new JSZip(); var that = this; zip.loadAsync(arrayBuffer) @@ -91,18 +96,22 @@ export default { let html = ''; for (let table of tables) { - html += that.convertTableToHtml(table); + var str = that.convertTableToHtml(table); + const container = document.createElement('div'); + container.innerHTML = str; + that.tables.push({ + html: that.updateTableStyles(container), + orientation: 'portrait' // 默认纵向 + }); + + html += str; } if (!html) { html = '

未检测到表格内容。

'; } - callback(html); - const container = document.createElement('div'); - container.innerHTML = html; - that.updateTableStyles(container); - console.log('html at line 400:', html); + callback(html); }) .catch(function (err) { console.error('解析 Word 文件出错:', err); @@ -126,7 +135,7 @@ export default { orientation: 'portrait' // 默认纵向 })); - this.addVisible=true + this.addVisible = true; var html = ''; for (let table of this.tables) { html += this.convertTableToHtml(table.html); @@ -152,7 +161,7 @@ export default { reader.onload = async (e) => { try { const arrayBuffer = e.target.result; - + const zip = new JSZip(); const zipContent = await zip.loadAsync(arrayBuffer); const docXmlPath = 'word/document.xml'; @@ -167,8 +176,8 @@ export default { reader.readAsArrayBuffer(file); }); }, - // 将 XML 表格转换为 HTML - convertTableToHtml(tableNode) { + // 将 XML 表格转换为 HTML + convertTableToHtml(tableNode) { const rows = tableNode.getElementsByTagName('w:tr'); let html = ''; for (let row of rows) { @@ -257,7 +266,6 @@ export default { var _this = this; // 更新表格样式 const tables = container.querySelectorAll('table'); - tables.forEach((table) => { table.setAttribute( 'style', @@ -291,7 +299,7 @@ export default { console.log('匹配到带有数字的方括号内容'); // 为匹配的元素添加样式类 element.classList.add('color-highlight'); - element.style.color = 'rgb(0,130,170)'; + element.style.color = 'rgb(0,130,170)'; } }); }); @@ -332,26 +340,31 @@ export default { } }); }); - var editor = window.tinymce.activeEditor; + console.log('tables.forEach at line 270:', tables); + // var editor = window.tinymce.activeEditor; var html = ''; tables.forEach((e) => { - console.log('e at line 579:', e); - html += e.outerHTML; console.log('html at line 582:', html); }); - // 将外部 DOM 内容更新到编辑器 - const container1 = document.createElement('div'); - container1.innerHTML = html; // html 是更新后的 HTML 内容 - - // 更新编辑器内容 - editor.setContent(container1.innerHTML); - - // 触发编辑器内容变化后,如果需要,可能还要设置编辑器的样式 - editor.focus(); // 聚焦到编辑器 + this.$forceUpdate(); + return html + }, - + containsSupOrSub(element) { + // 如果当前节点是元素节点 + if (element.nodeType === 1) { + // 如果是 标签,返回 true + if (element.tagName === 'SUP' || element.tagName === 'SUB') { + return true; + } + // 否则,递归检查子节点 + return Array.from(element.childNodes).some((child) => this.containsSupOrSub(child)); + } + // 如果不是元素节点(如文本节点),返回 false + return false; + }, // 确认表格 confirmTable(index) { const table = this.tables[index]; diff --git a/src/components/page/components/table/table copy 2.vue b/src/components/page/components/table/table copy 2.vue deleted file mode 100644 index f163449..0000000 --- a/src/components/page/components/table/table copy 2.vue +++ /dev/null @@ -1,432 +0,0 @@ - - - - - diff --git a/src/components/page/components/table/table copy 3.vue b/src/components/page/components/table/table copy 3.vue deleted file mode 100644 index a5df5a9..0000000 --- a/src/components/page/components/table/table copy 3.vue +++ /dev/null @@ -1,657 +0,0 @@ - - - - - diff --git a/src/components/page/components/table/template.txt b/src/components/page/components/table/template.txt deleted file mode 100644 index 4e6d6b3..0000000 --- a/src/components/page/components/table/template.txt +++ /dev/null @@ -1,3241 +0,0 @@ - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

No.

-
-

RT

-

(min)

-
-

Formula

-
-

Adduct

-
-

Theo. (m/z)

-
-

Exp.

-

(m/z)

-
-

Error (ppm)

-
-

MS2 fragment ion

-
-

Potential compound

-
-

Class

-
-

Ref.

-
-

M1

-
-

1.15

-
-

C6H12O7

-
-

[M–H]

-
-

195.05830

-
-

195.05049

-
-

−4.00

-
-

159.02975, 129.01912, 75.00863

-
-

Gluconic acid

-
-

Organic acid

-
-

[33]

-
-

M2

-
-

1.17

-
-

C7H12O6

-
-

[M–H]

-
-

191.06339

-
-

191.05562

-
-

−4.07

-
-

127.03978, 85.02937

-
-

Quinic acid

-
-

Organic acid

-
-

[1]

-
-

M3

-
-

1.17

-
-

C4H6O5

-
-

[M–H]

-
-

133.02152

-
-

133.01899

-
-

−1.90

-
-

115.00346, 89.02427, 71.01373

-
-

DL-Malic acid

-
-

Organic acid

-
-

[34]

-
-

M4

-
-

1.20

-
-

C6H8O7

-
-

[M–H]

-
-

191.02700

-
-

191.01924

-
-

−4.06

-
-

129.01910, 111.00858, 87.00865

-
-

Citric acid

-
-

Organic acid

-
-

[34]

-
-

M5

-
-

1.22

-
-

C5H6O4

-
-

[M–H]

-
-

129.02661

-
-

129.02613

-
-

−0.37

-
-

101.02432, 85.02946

-
-

Glutaconic acid

-
-

Organic acid

-
-

[35]

-
-

M6

-
-

1.32

-
-

C4H6O4

-
-

[M–H]

-
-

117.02661

-
-

117.02104

-
-

−4.76

-
-

73.02940

-
-

Methylmalonic acid

-
-

Organic acid

-
-

[36]

-
-

M7

-
-

1.35

-
-

C6H10O5

-
-

[M–H]

-
-

161.05282

-
-

161.04512

-
-

−4.78

-
-

99.04504, 57.03442

-
-

Meglutol

-
-

Organic acid

-
-

[35]

-
-

M8

-
-

1.49

-
-

C6H6O3

-
-

[M–H]

-
-

125.03169

-
-

125.02802

-
-

−2.94

-
-

97.02926

-
-

Pyrogallol

-
-

Phenolic acids

-
-

[37]

-
-

M9

-
-

1.49

-
-

C7H6O5

-
-

[M–H]

-
-

169.02152

-
-

169.01405

-
-

−4.42

-
-

125.02426

-
-

*Gallic acid

-
-

Phenolic acids

-
-

[38]

-
-

M10

-
-

2.62

-
-

C7H6O4

-
-

[M–H]

-
-

153.02661

-
-

153.01901

-
-

−4.97

-
-

109.02924

-
-

Gentisic acid

-
-

Phenolic acids

-
-

[39]

-
-

M11

-
-

3.08

-
-

C6H10O4

-
-

[M–H]

-
-

145.05791

-
-

145.05620

-
-

−1.18

-
-

101.06063, 83.05013

-
-

Adipic acid

-
-

Organic acid

-
-

[40]

-
-

M12

-
-

3.12

-
-

C16H18O9

-
-

[M–H]

-
-

353.09508

-
-

353.08716

-
-

−2.24

-
-

191.05582, 179.03470, 135.04498

-
-

Neochlorogenic acid

-
-

Phenylpropanoids

-
-

[37]

-
-

M13

-
-

4.05

-
-

C7H6O3

-
-

[M–H]

-
-

137.03169

-
-

137.02405

-
-

−5.58

-
-

93.03446

-
-

Salicylic acid

-
-

Phenylpropanoids

-
-

[41]

-
-

M14

-
-

4.28

-
-

C30H26O12

-
-

[M+H]+

-
-

579.14243

-
-

579.14941

-
-

1.21

-
-

409.09109, 287.05457, 163.03876, 127.03899

-
-

Procyanidin B1

-
-

Flavonoids

-
-

[42]

-
-

M15

-
-

4.48

-
-

C16H18O8

-
-

[M–H]

-
-

337.10017

-
-

337.09213

-
-

−2.39

-
-

191.05573, 163.03976, 119.04998

-
-

3-p-CoumaRoylquinic acid

-
-

Phenylpropanoids

-
-

[43]

-
-

M16

-
-

4.54

-
-

C9H8O3

-
-

[M–H]

-
-

163.04734

-
-

163.03960

-
-

−4.75

-
-

119.04996

-
-

P-Hydroxy-cinnamic acid

-
-

Phenylpropanoids

-
-

[44]

-
-

M17

-
-

4.67

-
-

C16H12O6

-
-

[M+H]+

-
-

301.06339

-
-

301.07001

-
-

2.20

-
-

286.04688, 258.05206, 229.04921

-
-

Diosmetin

-
-

Flavonoids

-
-

[45]

-
-

M18

-
-

4.68

-
-

C8H8O5

-
-

[M–H]

-
-

183.03717

-
-

183.02931

-
-

−4.29

-
-

168.00607, 140.01128, 124.01627

-
-

Methyl gallate

-
-

Phenols

-
-

[1]

-
-

M19

-
-

4.87

-
-

C16H18O9

-
-

[M–H]

-
-

353.09508

-
-

353.08670

-
-

−2.37

-
-

191.05569, 161.02394, 135.04495

-
-

Chlorogenic acid

-
-

Phenylpropanoids

-
-

[21]

-
-

M20

-
-

4.89

-
-

C15H14O6

-
-

[M–H]

-
-

289.07904

-
-

289.07117

-
-

−2.72

-
-

245.08150, 203.07112, 123.04498, 109.02930

-
-

Catechin

-
-

Flavonoids

-
-

[13]

-
-

M21

-
-

4.97

-
-

C7H6O3

-
-

[M+H]+

-
-

139.03169

-
-

139.03577

-
-

2.93

-
-

111.04432, 93.03400, 65.03931

-
-

Protocatechualdehyde

-
-

Phenols

-
-

[46]

-
-

M22

-
-

5.31

-
-

C27H22O18

-
-

[M–H]

-
-

633.08061

-
-

633.07196

-
-

−1.37

-
-

300.99826, 275.01923, 229.01360

-
-

Corilagin

-
-

Phenols

-
-

[45]

-
-

M23

-
-

5.37

-
-

C15H10O6

-
-

[M+H]

-
-

287.04774

-
-

287.05453

-
-

2.37

-
-

177.01813, 137.02327, 121.02857

-
-

Fisetin

-
-

Flavonoids

-
-

[37]

-
-

M24

-
-

5.58

-
-

C9H8O4

-
-

[M-H]-

-
-

179.04226

-
-

179.03448

-
-

−4.35

-
-

135.04494

-
-

Caffeic acid

-
-

Phenylpropanoids

-
-

[39]

-
-

M25

-
-

5.94

-
-

C27H24O18

-
-

[M–H]

-
-

635.09626

-
-

635.08783

-
-

−1.33

-
-

313.05594, 169.01385, 125.02409

-
-

1,3,6-Trigalloyl glucose

-
-

Phenols

-
-

[47]

-
-

M26

-
-

6.20

-
-

C10H10O2

-
-

[M+H]

-
-

163.06808

-
-

163.07507

-
-

4.29

-
-

131.04916, 103.05463

-
-

Methyl cinnamate

-
-

Phenylpropanoids

-
-

[48]

-
-

M27

-
-

6.34

-
-

C27H30O16

-
-

[M+H]

-
-

611.15338

-
-

611.16010

-
-

1.10

-
-

449.10773, 303.04956, 287.05469, 85.02901

-
-

Kaempferol-3-O-Gentiobioside

-
-

Flavonoid glycosides

-
-

[49]

-
-

M28

-
-

6.51

-
-

C15H14O6

-
-

[M–H]

-
-

289.07904

-
-

289.07104

-
-

−2.77

-
-

245.08153, 203.07101, 123.04419, 109.02931

-
-

Epicatechin

-
-

Flavonoids

-
-

[42]

-
-

M29

-
-

6.84

-
-

C15H10O5

-
-

[M+H]

-
-

271.05282

-
-

271.05966

-
-

2.52

-
-

243.06497, 215.07007, 149.02325

-
-

Genistein

-
-

Flavonoids

-
-

[35]

-
-

M30

-
-

7.54

-
-

C30H26O12

-
-

[M–H]

-
-

577.14243

-
-

577.13385

-
-

−1.49

-
-

407.07642, 289.07129, 161.02412, 125.02417

-
-

Procyanidin B2

-
-

Flavonoids

-
-

[42]

-
-

M31

-
-

7.65

-
-

C8H8O4

-
-

[M+H]+

-
-

169.04226

-
-

169.04921

-
-

4.11

-
-

151.03888, 125.05983, 111.04436, 65.03933

-
-

Isovanillic acid

-
-

Phenolic acids

-
-

[37]

-
-

M32

-
-

7.95

-
-

C21H20O11

-
-

[M+H]+

-
-

449.10056

-
-

449.10754

-
-

1.55

-
-

287.05457, 153.0181

-
-

Cynaroside

-
-

Flavonoid glycosides

-
-

[50]

-
-

M33

-
-

8.21

-
-

C21H22O12

-
-

[M–H]

-
-

465.11113

-
-

465.10269

-
-

−1.81

-
-

437.10843, 285.03989, 125.02415

-
-

Plantagoside

-
-

Flavonoid glycosides

-
-

[51]

-
-

M34

-
-

8.22

-
-

C15H12O7

-
-

[M+H]+

-
-

305.05830

-
-

305.06512

-
-

2.24

-
-

287.05444, 259.05991, 153.01817, 123.04425

-
-

Taxifolin

-
-

Flavonoids

-
-

[39]

-
-

M35

-
-

8.30

-
-

C14H8O5

-
-

[M+H]+

-
-

257.03717

-
-

257.04398

-
-

2.65

-
-

229.04938

-
-

Purpurin

-
-

Anthraquinones

-
-

[52]

-
-

M36

-
-

8.49

-
-

C27H30O16

-
-

[M–H]

-
-

609.15338

-
-

609.14539

-
-

−1.35

-
-

429.08124, 284.03210, 255.02946, 227.03459

-
-

*Kaempferol-3-O-sophoroside

-
-

Flavonoid glycosides

-
-

[13]

-
-

M37

-
-

8.53

-
-

C14H6O8

-
-

[M–H]

-
-

301.00627

-
-

300.99817

-
-

−2.72

-
-

283.99554, 229.01360

-
-

*Ellagic acid

-
-

Phenols

-
-

[13]

-
-

M38

-
-

8.71

-
-

C26H28O16

-
-

[M–H]

-
-

595.13773

-
-

595.12927

-
-

−1.42

-
-

300.02689, 271.02432, 255.02942

-
-

Peltatoside

-
-

Flavonoid glycosides

-
-

[53]

-
-

M39

-
-

8.71

-
-

C22H18O10

-
-

[M–H]

-
-

441.09000

-
-

441.08151

-
-

−1.92

-
-

289.07114, 245.08159, 137.02405, 109.02924

-
-

(-)-Epicatechin gallate

-
-

Flavonoids

-
-

[45]

-
-

M40

-
-

8.97

-
-

C27H30O16

-
-

[M–H]

-
-

609.15338

-
-

609.14508

-
-

−1.36

-
-

300.02682, 271.02429, 255.02942, 151.00334

-
-

Rutin

-
-

Flavonoids

-
-

[1]

-
-

M41

-
-

9.00

-
-

C15H12O5

-
-

[M+H]

-
-

273.06847

-
-

273.07504

-
-

2.41

-
-

171.02843, 153.01807, 147.04387, 119.04927

-
-

Naringeninchalcone

-
-

Flavonoids

-
-

[45]

-
-

M42

-
-

9.05

-
-

C28H32O16

-
-

[M–H]

-
-

623.16903

-
-

623.16034

-
-

−1.39

-
-

314.04263, 299.01904, 271.02432

-
-

Isorhamnetin-3-Rutinoside

-
-

Flavonoid glycosides

-
-

[54]

-
-

M43

-
-

9.16

-
-

C21H20O12

-
-

[M–H]

-
-

463.09548

-
-

463.08765

-
-

−1.78

-
-

300.02695, 271.02444, 255.02954, 151.00336

-
-

*Hyperoside

-
-

Flavonoid glycosides

-
-

[1,55]

-
-

M44

-
-

9.33

-
-

C21H18O13

-
-

[M–H]

-
-

477.07474

-
-

477.06644

-
-

−1.74

-
-

301.03491, 169.01402, 151.00342, 125.02422

-
-

Miquelianin

-
-

Flavonoid glycosides

-
-

[5]

-
-

M45

-
-

9.38

-
-

C41H28O27

-
-

[M–H]

-
-

951.08180

-
-

951.07184

-
-

−1.05

-
-

613.04590, 300.99832, 273.00351

-
-

Geraniin

-
-

Phenols

-
-

[56]

-
-

M46

-
-

9.44

-
-

C21H20O13

-
-

[M–H]

-
-

479.09039

-
-

479.08157

-
-

−1.84

-
-

316.02194, 299.01898, 271.02448, 151.00339

-
-

Myricetin 3-O-beta-D-galactopyranoside

-
-

Flavonoid glycosides

-
-

[57]

-
-

M47

-
-

9.44

-
-

C21H20O12

-
-

[M–H]

-
-

463.09548

-
-

463.08752

-
-

−1.74

-
-

300.02698, 271.02438, 255.02948

-
-

*Isoquercitrin

-
-

Flavonoid glycosides

-
-

[1]

-
-

M48

-
-

10.07

-
-

C20H18O11

-
-

[M+H]+

-
-

435.08491

-
-

435.09177

-
-

1.58

-
-

303.04965, 153.01811, 73.029140

-
-

Reynoutrin

-
-

Flavonoid glycosides

-
-

[58]

-
-

M49

-
-

10.29

-
-

C26H28O15

-
-

[M–H]

-
-

579.14282

-
-

579.13428

-
-

−1.47

-
-

284.03204, 255.02943, 227.03459

-
-

Leucoside

-
-

Flavonoid glycosides

-
-

[59]

-
-

M50

-
-

10.53

-
-

C21H20O11

-
-

[M–H]

-
-

447.10056

-
-

447.09241

-
-

−1.82

-
-

284.03217, 255.02953, 227.03465

-
-

Trifolin

-
-

Flavonoid glycosides

-
-

[45]

-
-

M51

-
-

10.70

-
-

C27H30O15

-
-

[M–H]

-
-

593.15847

-
-

593.15045

-
-

−1.39

-
-

285.04001, 255.02950, 227.03456

-
-

*Kaempferol-3-O-rutinoside

-
-

Flavonoid glycosides

-
-

[1]

-
-

M52

-
-

10.95

-
-

C20H18O11

-
-

[M–H]

-
-

433.08491

-
-

433.07663

-
-

−1.91

-
-

300.02695, 271.02438, 255.02948, 151.00336

-
-

Quercetin-3-O-Xyloside

-
-

Flavonoid glycosides

-
-

[1]

-
-

M53

-
-

10.95

-
-

C20H18O11

-
-

[M+H]+

-
-

435.08491

-
-

435.09158

-
-

1.53

-
-

303.04947

-
-

Avicularin

-
-

Flavonoid glycosides

-
-

[13]

-
-

M54

-
-

10.95

-
-

C15H10O7

-
-

[M+H]+

-
-

303.04265

-
-

303.04944

-
-

2.24

-
-

229.04936, 153.01814, 137.02327

-
-

Morin

-
-

Flavonoid

-
-

[39]

-
-

M55

-
-

11.29

-
-

C21H18O12

-
-

[M–H]

-
-

461.07983

-
-

461.07089

-
-

−1.94

-
-

285.03967, 229.04994, 113.02418, 85.02931

-
-

Kaempferol-3-O-glucuronoside

-
-

Flavonoid glycosides

-
-

[60]

-
-

M56

-
-

11.33

-
-

C21H20O11

-
-

[M–H]

-
-

447.10056

-
-

447.09256

-
-

−1.79

-
-

284.03223, 255.02956, 227.03470

-
-

Kaempferol-3-O-glucoside

-
-

Flavonoid glycosides

-
-

[61]

-
-

M57

-
-

11.48

-
-

C21H20O11

-
-

[M–H]

-
-

447.10056

-
-

447.09262

-
-

−1.82

-
-

300.02701, 271.02448, 255.02957, 151.00337

-
-

*Quercitrin

-
-

Flavonoid glycosides

-
-

[13]

-
-

M58

-
-

11.88

-
-

C15H12O6

-
-

[M–H]

-
-

287.06339

-
-

287.05533

-
-

−2.81

-
-

259.06055, 243.06557, 177.05530, 125.02409

-
-

Dihydrokaempferol

-
-

Flavonoids

-
-

[45]

-
-

M59

-
-

12.09

-
-

C21H22O10

-
-

[M–H]

-
-

433.12130

-
-

433.11307

-
-

−1.90

-
-

271.0607, 151.00339, 119.05000

-
-

Prunin

-
-

Flavonoid glycosides

-
-

[62]

-
-

M60

-
-

12.27

-
-

C21H20O12

-
-

[M–H]

-
-

463.09548

-
-

463.08725

-
-

−1.78

-
-

301.03461, 178.99818, 151.00330, 107.01363

-
-

Spiraeoside

-
-

Flavonoid glycosides

-
-

[63]

-
-

M61

-
-

12.51

-
-

C20H18O10

-
-

[M–H]

-
-

417.09000

-
-

417.08191

-
-

−1.94

-
-

284.03214, 255.02948, 227.03462

-
-

Juglalin

-
-

Flavonoid glycosides

-
-

[13]

-
-

M62

-
-

12.85

-
-

C21H20O11

-
-

[M–H]

-
-

447.10056

-
-

447.09213

-
-

−1.89

-
-

284.03189, 151.00323, 107.0136

-
-

Kaempferol-7-O-glucoside

-
-

Flavonoid glycosides

-
-

[60]

-
-

M63

-
-

14.39

-
-

C21H20O10

-
-

[M–H]

-
-

431.10565

-
-

431.09750

-
-

−1.91

-
-

285.03992, 255.02950, 227.03461

-
-

*Afzelin

-
-

Flavonoid glycosides

-
-

[13]

-
-

M64

-
-

14.54

-
-

C21H24O10

-
-

[M–H]

-
-

435.13695

-
-

435.12878

-
-

−1.88

-
-

273.07645, 167.03471, 123.04498

-
-

Phloridzin

-
-

Flavonoid glycosides

-
-

[45]

-
-

M65

-
-

17.19

-
-

C15H12O6

-
-

[M–H]

-
-

287.06339

-
-

287.05539

-
-

−2.79

-
-

151.00333, 135.04491, 107.01366

-
-

Eriodictyol

-
-

Flavonoids

-
-

[64]

-
-

M66

-
-

18.48

-
-

C15H10O7

-
-

[M–H]

-
-

301.04265

-
-

301.03467

-
-

−2.67

-
-

178.99820, 151.00334, 121.02925, 107.01366

-
-

*Quercetin

-
-

Flavonoids

-
-

[1]

-
-

M67

-
-

21.31

-
-

C30H26O13

-
-

[M–H]

-
-

593.13734

-
-

593.12946

-
-

−1.36

-
-

447.09296, 285.03998, 255.02954, 227.03467

-
-

*Tiliroside

-
-

Flavonoid glycosides

-
-

[61]

-
-

M68

-
-

21.35

-
-

C9H8O3

-
-

[M+H]+

-
-

165.04734

-
-

165.05434

-
-

4.24

-
-

147.04395, 119.04936, 91.05478

-
-

4-Coumaric acid

-
-

Phenylpropanoids

-
-

[41]

-
-

M69

-
-

22.88

-
-

C15H12O4

-
-

[M+H]+

-
-

257.07356

-
-

257.08044

-
-

2.68

-
-

153.01811, 131.04915, 103.05463

-
-

Pinocembrin

-
-

Flavonoids

-
-

[45]

-
-

M70

-
-

23.11

-
-

C15H12O5

-
-

[M–H]

-
-

271.06847

-
-

271.06058

-
-

−2.91

-
-

177.01913, 151.00337, 119.04999, 107.01367

-
-

Naringenin

-
-

Flavonoids

-
-

[39]

-
-

M71

-
-

24.09

-
-

C15H10O5

-
-

[M–H]

-
-

269.05282

-
-

269.04489

-
-

−2.95

-
-

225.05533, 151.00330, 117.03436

-
-

Apigenin

-
-

Flavonoids

-
-

[39]

-
-

M72

-
-

25.11

-
-

C16H12O6

-
-

[M–H]

-
-

299.06339

-
-

299.05545

-
-

−2.65

-
-

284.03217, 227.03505, 136.98788

-
-

Hispidulin

-
-

Flavonoids

-
-

[65]

-
-

M73

-
-

25.32

-
-

C15H10O6

-
-

[M–H]

-
-

285.04774

-
-

285.03989

-
-

−2.81

-
-

257.04471, 229.05026, 151.00334

-
-

*Kaempferol

-
-

Flavonoids

-
-

[60]

-
-

M74

-
-

26.73

-
-

C9H6O2

-
-

[M+H]+

-
-

147.03678

-
-

147.04378

-
-

4.76

-
-

119.04935, 91.05477

-
-

Coumarin

-
-

Phenylpropanoids

-
-

[66]

-
-

M75

-
-

28.95

-
-

C18H16O8

-
-

[M+H]+

-
-

361.08452

-
-

361.09125

-
-

1.86

-
-

331.04443, 303.04959, 151.03888

-
-

Centaureidin

-
-

Flavonoids

-
-

[67]

-
-

M76

-
-

29.50

-
-

C17H14O6

-
-

[M+H]+

-
-

315.07904

-
-

315.08582

-
-

2.15

-
-

300.06259, 282.05203, 254.05717, 154.02602

-
-

Scrophulein/ Cirsimaritin

-
-

Flavonoids

-
-

[68]

-
-

M77

-
-

30.03

-
-

C30H48O6

-
-

[M–H]

-
-

503.34509

-
-

503.33691

-
-

−1.63

-
-

111.08073, 421.31030

-
-

Arjungenin

-
-

Triterpenes

-
-

[69]

-
-

M78

-
-

30.05

-
-

C19H18O8

-
-

[M–H]

-
-

373.10017

-
-

373.09207

-
-

−2.17

-
-

358.06909, 343.04535, 285.00366, 257.00900

-
-

Casticin

-
-

Flavonoids

-
-

[70]

-
-

M79

-
-

30.17

-
-

C18H16O7

-
-

[M+H]+

-
-

345.08960

-
-

345.09644

-
-

1.98

-
-

330.07285, 315.04947, 201.00281, 133.06482

-
-

Lysionotin

-
-

Flavonoids

-
-

[71]

-
-

M80

-
-

30.29

-
-

C16H12O5

-
-

[M+H]+

-
-

285.06847

-
-

285.07529

-
-

2.39

-
-

270.05191, 242.05705, 153.01805

-
-

Glycitein

-
-

Flavonoids

-
-

[35]

-
-

M81

-
-

30.31

-
-

C17H14O6

-
-

[M–H]

-
-

313.07904

-
-

313.07098

-
-

−2.57

-
-

298.04770, 283.02435, 255.02953, 163.00333

-
-

Pectolinarigenin

-
-

Flavonoids

-
-

[72]

-
-

M82

-
-

30.60

-
-

C19H18O8

-
-

[M–H]

-
-

373.10017

-
-

373.09210

-
-

−2.16

-
-

358.06891, 328.02194, 285.00363, 241.01399

-
-

Chrysosplenetin B

-
-

Flavonoids

-
-

[73]

-
-

M83

-
-

30.73

-
-

C30H48O5

-
-

[M–H]

-
-

487.35017

-
-

487.34213

-
-

−1.65

-
-

469.33154

-
-

Asiatic acid

-
-

Triterpenes

-
-

[74]

-
-

M84

-
-

31.65

-
-

C16H32O3

-
-

[M–H]

-
-

271.23514

-
-

271.22708

-
-

−2.97

-
-

253.21635, 225.22192

-
-

16-Hydroxyhexadecanoic acid

-
-

Fatty acid

-
-

[75]

-
-

M85

-
-

31.74

-
-

C18H28O3

-
-

[M+H]+

-
-

293.20384

-
-

293.21030

-
-

2.20

-
-

275.20013, 149.09596, 107.08582, 79.05482

-
-

12-oxophytodienoic acid

-
-

Fatty acid

-
-

[76]

-
-

M86

-
-

31.87

-
-

C18H30O2

-
-

[M+H]+

-
-

279.22458

-
-

279.23132

-
-

2.41

-
-

261.22107, 173.13228, 109.10149, 81.07050

-
-

α-Eleostearic acid

-
-

Fatty acid

-
-

[77]

-
-

M87

-
-

33.09

-
-

C20H30O2

-
-

[M+H]+

-
-

303.22458

-
-

303.23129

-
-

2.21

-
-

285.22089, 175.14809, 119.08578, 81.07054

-
-

Eicosapentaenoic acid

-
-

Fatty acid

-
-

[78]

-
-

M88

-
-

33.21

-
-

C18H30O2

-
-

[M+H]+

-
-

279.22458

-
-

279.23114

-
-

2.35

-
-

223.16911, 149.02319, 109.10143, 81.07047

-
-

α-Linolenic acid

-
-

Fatty acid

-
-

[61]

-
-

M89

-
-

33.33

-
-

C21H38O4

-
-

[M+H]+

-
-

355.27701

-
-

355.28369

-
-

1.88

-
-

263.23685, 245.22607, 109.10155, 81.07052

-
-

1-Linoleoyl glycerol

-
-

Fatty acid

-
-

[79]

-
-

- - \ No newline at end of file diff --git a/src/main.js b/src/main.js index 8f2c68a..540b3f9 100644 --- a/src/main.js +++ b/src/main.js @@ -54,7 +54,8 @@ Vue.filter('formatDate', function(originVal) { }) // 引入wps文档编辑 import mammoth from "mammoth"; - +import commonJS from '@/common/js/commonJS.js' +Vue.prototype.$commonJS = commonJS Vue.prototype.Common = Common;