diff --git a/src/api/index.js b/src/api/index.js index 0b11630..170e883 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -19,8 +19,8 @@ const service = axios.create({ // baseURL: 'https://submission.tmrjournals.com/', //正式 记得切换 // baseURL: 'http://www.tougao.com/', //测试本地 记得切换 // baseURL: 'http://192.168.110.110/tougao/public/index.php/', - // baseURL: '/api', //本地 - baseURL: '/', //正式 + baseURL: '/api', //本地 + // baseURL: '/', //正式 }); diff --git a/src/common/js/commonJS.js b/src/common/js/commonJS.js index 85f9027..e0120d8 100644 --- a/src/common/js/commonJS.js +++ b/src/common/js/commonJS.js @@ -137,8 +137,7 @@ export default { console.error("解析粘贴内容失败:", error); callback([]); } - } - , + }, async extractWordTablesToArrays(file, callback) { const Zip = new JSZip(); @@ -419,13 +418,7 @@ export default { const levelIndex = parseInt(level, 10) - 1; return currentLevelNumbers[levelIndex] || 1; }); - } - - , - - - - + }, async extractTablesFromWord(arrayBuffer, callback) { @@ -450,8 +443,25 @@ export default { const numberingMap = this.parseNumbering(numberingDoc); console.log('numberingMap at line 232:', numberingMap) // 提取表格 - const tables = xmlDoc.getElementsByTagName("w:tbl"); - console.log('tables at line 17:', tables) + // 获取所有的段落 + const paragraphs = xmlDoc.getElementsByTagName("w:p"); + // 获取所有的表格 + const tables = xmlDoc.getElementsByTagName("w:tbl"); + + // 找到表格前的段落 + let previousParagraphs = []; + let tableIndex = 0; + + // 遍历段落,找到第一个表格之前的段落 + for (let i = 0; i < paragraphs.length; i++) { + if (tableIndex < tables.length && paragraphs[i].nextSibling === tables[tableIndex]) { + break; // 找到表格 + } + previousParagraphs.push(paragraphs[i]); + } +// 将前一段的内容转化为 HTML 或文本 +const previousHtml = this.convertParagraphsToHtml(previousParagraphs); + console.log('tables at line 17:', previousHtml) const tableHtml = this.convertTablesToHtml(tables, numberingMap); console.log('tableHtml at line 18:', tableHtml) @@ -467,7 +477,45 @@ export default { callback("

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

"); } }, +// 转换段落为 HTML +convertParagraphsToHtml(paragraphs) { + let html = ""; + paragraphs.forEach(p => { + let paragraphHtml = ""; + + // 处理段落中的所有子元素 + const runs = p.getElementsByTagName("w:r"); // 获取段落中的所有文本运行(可能包含上标、下标等) + + Array.from(runs).forEach(run => { + let text = ""; + + // 获取文本内容 + const textNodes = run.getElementsByTagName("w:t"); + Array.from(textNodes).forEach(t => { + text += t.textContent || t.text; + }); + + // 检查是否为上标或下标 + const isSuperscript = run.getElementsByTagName("w:vertAlign")[0]?run.getElementsByTagName("w:vertAlign")[0].getAttribute("w:val") === "superscript":""; + const isSubscript = run.getElementsByTagName("w:vertAlign")[0]?run.getElementsByTagName("w:vertAlign")[0].getAttribute("w:val") === "subscript":''; + if (isSuperscript) { + text = `${text}`; + } else if (isSubscript) { + text = `${text}`; + } + + // 拼接到段落 HTML 中 + paragraphHtml += text; + }); + + // 将运行的文本拼接成完整的段落 + html += `

${paragraphHtml}

`; + }); + + return html; +} +, convertTablesToHtml(tables, numberingMap) { const namespace = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"; let html = ""; @@ -544,8 +592,7 @@ export default { } return html; - } - , + }, diff --git a/src/components/common/common.vue b/src/components/common/common.vue index 5b5359b..1b4465d 100644 --- a/src/components/common/common.vue +++ b/src/components/common/common.vue @@ -2,12 +2,12 @@ //记得切换 //正式 -const mediaUrl = '/public/'; -const baseUrl = '/'; +// const mediaUrl = '/public/'; +// const baseUrl = '/'; -// const mediaUrl = 'https://submission.tmrjournals.com/public/'; -// const baseUrl = '/api'; +const mediaUrl = 'https://submission.tmrjournals.com/public/'; +const baseUrl = '/api'; //本地(正式环境 ) diff --git a/src/components/page/GenerateCharts.vue b/src/components/page/GenerateCharts.vue index 4577fc6..dbfbad7 100644 --- a/src/components/page/GenerateCharts.vue +++ b/src/components/page/GenerateCharts.vue @@ -131,7 +131,7 @@ :action="baseUrl+'api/Preaccept/up_img_mainImage'" :show-file-list="false" name="mainImage" - accept=".jpg,.jpeg,.png" + accept=".jpg,.jpeg,.png,.tif" :on-success="handleAvatarSuccess" :on-error="handleAvatarError" :before-upload="beforeAvatarUpload" @@ -174,7 +174,7 @@ @updateChange="(res) => updateChange(res, 'title')" :value="lineStyle.title" class="paste-area text-container" - toolbar="bold italic subscript superscript clearButton" + toolbar="bold italic subscript superscript clearButton" height="120" > @@ -262,7 +262,7 @@ @getContent="getContent" :value="currentContent.content" class="paste-area text-container" - toolbar="bold italic subscript superscript clearButton" + toolbar="bold italic forecolor subscript superscript clearButton" style="" > @@ -392,19 +392,19 @@ export default { computed: { combinedValue() { // 将两个值组合成一个新的值,可以是字符串、数组、对象等 - return `${this.isFirstComponentLoaded}-${this.isWordComponentLoaded}`; + // return `${this.isFirstComponentLoaded}-${this.isWordComponentLoaded}`; } }, watch: { // 监听计算属性 - combinedValue(newVal, oldVal) { - console.log('value1 或 value2 发生变化'); - console.log('新值:', newVal); - console.log('旧值:', oldVal); + // combinedValue(newVal, oldVal) { + // console.log('value1 或 value2 发生变化'); + // console.log('新值:', newVal); + // console.log('旧值:', oldVal); - // 处理任意一个值变化的逻辑 - this.updateWordTiffImage(newVal); - } + // // 处理任意一个值变化的逻辑 + // this.updateWordTiffImage(newVal); + // } }, directives: { @@ -431,23 +431,23 @@ export default { this.isWordComponentLoaded = true; }, // 监听第一个兄弟组件加载完毕 - onFirstComponentLoaded(imagesList) { - this.imagesList = [...imagesList]; - this.isFirstComponentLoaded = true; - }, - updateWordTiffImage(data) { - console.log('updateWordTiffImage at line 423:', data); + // onFirstComponentLoaded(imagesList) { + // this.imagesList = [...imagesList]; + // this.isFirstComponentLoaded = true; + // }, + // updateWordTiffImage(data) { + // console.log('updateWordTiffImage at line 423:', data); - if (this.isFirstComponentLoaded && this.isWordComponentLoaded) { - this.imagesList.forEach((e) => { - if (e.dataUrl) { - this.$nextTick(() => { - this.$refs.commonWord.replacePlaceholderImage(e.ami_id, e.dataUrl); - }); - } - }); - } - }, + // if (this.isFirstComponentLoaded && this.isWordComponentLoaded) { + // this.imagesList.forEach((e) => { + // if (e.dataUrl) { + // this.$nextTick(() => { + // this.$refs.commonWord.replacePlaceholderImage(e.ami_id, e.dataUrl); + // }); + // } + // }); + // } + // }, handleSaveContent() { this.$refs.tinymceChild.getContent('content'); }, @@ -937,8 +937,8 @@ export default { }, // 获取数据 async getDate() { - this.isFirstComponentLoaded = false; - this.isWordComponentLoaded = false; + // this.isFirstComponentLoaded = false; + // this.isWordComponentLoaded = false; this.imagesList = []; let urlLInk = ''; let urlTask = {}; @@ -1277,7 +1277,7 @@ export default { // this.$message.error('Picture size cannot exceed 10M!'); // } // return isLt2M; - const isValidFormat = ['image/jpeg', 'image/png'].includes(file.type); + const isValidFormat = ['image/jpeg', 'image/png', 'image/tiff'].includes(file.type); if (!isValidFormat) { this.$message.error(this.$t('commonTable.uploadImageInfo')); } diff --git a/src/components/page/articleDetailEditor.vue b/src/components/page/articleDetailEditor.vue index 0891b9c..285f06d 100644 --- a/src/components/page/articleDetailEditor.vue +++ b/src/components/page/articleDetailEditor.vue @@ -467,7 +467,7 @@ :visible.sync="drawer" direction="rtl" :before-close="handleClose" - size="1200px" + size="1000px" >