更改 新加青年编委报错问题 代码执行顺序有误

This commit is contained in:
2026-05-25 15:03:01 +08:00
parent e03be40fc6
commit d4e158105e
5 changed files with 293 additions and 67 deletions

View File

@@ -1587,6 +1587,19 @@ const en = {
nextRef: 'Next reference', nextRef: 'Next reference',
manuscript: 'Manuscript', manuscript: 'Manuscript',
excerpt: '(excerpt)', excerpt: '(excerpt)',
simManuscriptPage: 'Simulated manuscript page',
locationMatcher: 'Location context matcher',
manuscriptSection: 'Manuscript section',
highlightedMatch: 'Highlighted match',
excerptEmpty: 'No excerpt available yet.',
annotationComment: 'Comment',
annotationDelete: 'Suggest removal',
annotationRevision: 'Revision',
annotationOkDefault: 'This citation matches the surrounding argument; keep as is.',
annotationReviewDefault: 'Verify that this statement aligns with the cited source.',
annotationDeleteDefault: 'This citation is weakly related to the paragraph focus; consider removing or rephrasing.',
annotationYearDefault: 'The publication year in the text does not match the reference.',
annotationMethodDefault: 'When borrowing methods, note differences in cohort and time range from the cited study.',
citeListTitle: 'This reference · all in-text citations', citeListTitle: 'This reference · all in-text citations',
citeListTotal: '{n} citation(s)', citeListTotal: '{n} citation(s)',
current: 'Current', current: 'Current',

View File

@@ -1568,6 +1568,19 @@ const zh = {
nextRef: '下一篇参考文献', nextRef: '下一篇参考文献',
manuscript: '稿件', manuscript: '稿件',
excerpt: '(摘录)', excerpt: '(摘录)',
simManuscriptPage: '模拟稿件页面',
locationMatcher: '引用位置匹配',
manuscriptSection: '稿件段落',
highlightedMatch: '高亮匹配',
excerptEmpty: '暂无段落原文,待接口返回',
annotationComment: '批注',
annotationDelete: '建议删除',
annotationRevision: '修订',
annotationOkDefault: '此处引用与正文论述匹配,可保留。',
annotationReviewDefault: '建议核对此处表述与文献是否一致。',
annotationDeleteDefault: '该处引用与段落主旨关联较弱,可考虑删去或改述。',
annotationYearDefault: '正文年份与文献出版年不一致。',
annotationMethodDefault: '借用方法时需交代与本文研究人群、年份范围的差异。',
citeListTitle: '本参考文献 · 全部引用处', citeListTitle: '本参考文献 · 全部引用处',
citeListTotal: '共 {n} 处', citeListTotal: '共 {n} 处',
current: '当前', current: '当前',

View File

@@ -622,18 +622,13 @@
</template> </template>
<div v-if="relevanceReviewItem" class="ref-review"> <div v-if="relevanceReviewItem" class="ref-review">
<div class="ref-review-body"> <div class="ref-review-body">
<div class="ref-review-doc"> <div class="ref-review-doc ref-review-doc--sim">
<div class="ref-review-doc-label"> <div class="ref-review-doc-label ref-review-doc-label--sim">
<div class="ref-review-doc-label-left"> <span class="ref-review-doc-sim-title">{{ refRelevanceT('simManuscriptPage') }}</span>
<span>{{ $t('refRelevance.manuscript') }}</span> <span class="ref-review-doc-locator">{{ refRelevanceT('locationMatcher') }}</span>
<span v-if="!relevanceReviewFromMain" class="ref-review-doc-src">{{ $t('refRelevance.excerpt') }}</span>
</div>
<span v-if="relevanceCiteLocatorTip" class="ref-review-cite-locator ref-review-cite-locator--doc-end">{{
relevanceCiteLocatorTip
}}</span>
</div> </div>
<div <div
class="ref-review-para ref-review-word" class="ref-review-para ref-review-word ref-review-ms-scroll"
ref="relevanceReviewPara" ref="relevanceReviewPara"
v-loading="articleMainsLoading" v-loading="articleMainsLoading"
v-html="relevanceReviewMainHtml" v-html="relevanceReviewMainHtml"
@@ -722,6 +717,40 @@
<script> <script>
import VueUeditorWrap from 'vue-ueditor-wrap'; // ES6 Module import VueUeditorWrap from 'vue-ueditor-wrap'; // ES6 Module
const REF_RELEVANCE_UI_FALLBACK = {
en: {
simManuscriptPage: 'Simulated manuscript page',
locationMatcher: 'Location context matcher',
manuscriptSection: 'Manuscript section',
highlightedMatch: 'Highlighted match',
excerptEmpty: 'No excerpt available yet.',
annotationComment: 'Comment',
annotationDelete: 'Suggest removal',
annotationRevision: 'Revision',
annotationOkDefault: 'This citation matches the surrounding argument; keep as is.',
annotationReviewDefault: 'Verify that this statement aligns with the cited source.',
annotationDeleteDefault: 'This citation is weakly related to the paragraph focus; consider removing or rephrasing.',
annotationYearDefault: 'The publication year in the text does not match the reference.',
annotationMethodDefault: 'When borrowing methods, note differences in cohort and time range from the cited study.'
},
zh: {
simManuscriptPage: '模拟稿件页面',
locationMatcher: '引用位置匹配',
manuscriptSection: '稿件段落',
highlightedMatch: '高亮匹配',
excerptEmpty: '暂无段落原文,待接口返回',
annotationComment: '批注',
annotationDelete: '建议删除',
annotationRevision: '修订',
annotationOkDefault: '此处引用与正文论述匹配,可保留。',
annotationReviewDefault: '建议核对此处表述与文献是否一致。',
annotationDeleteDefault: '该处引用与段落主旨关联较弱,可考虑删去或改述。',
annotationYearDefault: '正文年份与文献出版年不一致。',
annotationMethodDefault: '借用方法时需交代与本文研究人群、年份范围的差异。'
}
};
export default { export default {
data() { data() {
return { return {
@@ -907,9 +936,36 @@ export default {
}); });
} }
} }
},
'$i18n.locale'() {
if (!this.relevanceReviewVisible || !this.relevanceReviewItem) return;
if (this.relevanceReviewRefRow) {
this.getRefRelevanceList(this.relevanceReviewRefRow).forEach((row) => {
delete row.annotations;
this.enrichRelevanceAnnotations(row);
});
}
this.refreshRelevanceMainHtml();
} }
}, },
methods: { methods: {
refRelevanceT(key) {
const path = 'refRelevance.' + key;
if (this.$te && this.$te(path)) {
return this.$t(path);
}
const locale = this.$i18n && this.$i18n.locale === 'zh' ? 'zh' : 'en';
const fb = REF_RELEVANCE_UI_FALLBACK[locale] || REF_RELEVANCE_UI_FALLBACK.en;
return (fb && fb[key]) || this.$t(path);
},
resolveRelevanceDesc(item) {
if (!item) return '';
const isZh = this.$i18n && this.$i18n.locale === 'zh';
const desc = isZh
? String(item.ai_desc || '').trim()
: String(item.ai_desc_en || item.ai_desc || '').trim();
return desc;
},
formatTitle(title) { formatTitle(title) {
if (!title) return ''; if (!title) return '';
@@ -1158,14 +1214,14 @@ export default {
enrichRelevanceAnnotations(item) { enrichRelevanceAnnotations(item) {
if (!item || (Array.isArray(item.annotations) && item.annotations.length)) return; if (!item || (Array.isArray(item.annotations) && item.annotations.length)) return;
const needFix = this.isRelevanceNeedModify(item); const needFix = this.isRelevanceNeedModify(item);
const desc = String(item.ai_desc || '').trim(); const desc = this.resolveRelevanceDesc(item);
if (!needFix) { if (!needFix) {
item.annotations = [ item.annotations = [
{ {
id: 1, id: 1,
type: 'comment', type: 'comment',
type_label: '批注', type_label: this.refRelevanceT('annotationComment'),
text: desc || '此处引用与正文论述匹配,可保留。' text: desc || this.refRelevanceT('annotationOkDefault')
} }
]; ];
return; return;
@@ -1178,37 +1234,37 @@ export default {
{ {
id: 1, id: 1,
type: 'comment', type: 'comment',
type_label: '批注', type_label: this.refRelevanceT('annotationComment'),
anchor: anchor, anchor: anchor,
text: desc || item.modify_brief || '建议核对此处表述与文献是否一致。' text: desc || item.modify_brief || this.refRelevanceT('annotationReviewDefault')
} }
]; ];
if (/精简|删除|弱化/.test(desc + (item.modify_brief || ''))) { if (/精简|删除|弱化|delete|remove|trim|weak/i.test(desc + (item.modify_brief || ''))) {
annotations.push({ annotations.push({
id: 2, id: 2,
type: 'delete', type: 'delete',
type_label: '建议删除', type_label: this.refRelevanceT('annotationDelete'),
text: '该处引用与段落主旨关联较弱,可考虑删去或改述。' text: this.refRelevanceT('annotationDeleteDefault')
}); });
} }
if (/年份|2023|2024|不一致/.test(desc + snippet)) { if (/年份|2023|2024|不一致|year|mismatch/i.test(desc + snippet)) {
annotations.push({ annotations.push({
id: annotations.length + 1, id: annotations.length + 1,
type: 'revision', type: 'revision',
type_label: '修订', type_label: this.refRelevanceT('annotationRevision'),
anchor: '2023', anchor: '2023',
text: '正文年份与文献出版年不一致。', text: this.refRelevanceT('annotationYearDefault'),
original: '2023', original: '2023',
suggested: '2024' suggested: '2024'
}); });
} }
if (/差异|说明|方法|人群/.test(desc)) { if (/差异|说明|方法|人群|difference|method|cohort/i.test(desc)) {
annotations.push({ annotations.push({
id: annotations.length + 1, id: annotations.length + 1,
type: 'revision', type: 'revision',
type_label: '修订', type_label: this.refRelevanceT('annotationRevision'),
anchor: anchor, anchor: anchor,
text: '借用方法时需交代与本文研究人群、年份范围的差异。', text: this.refRelevanceT('annotationMethodDefault'),
original: 'as described previously', original: 'as described previously',
suggested: 'with adaptations as noted below' suggested: 'with adaptations as noted below'
}); });
@@ -1230,7 +1286,9 @@ export default {
label: '高相关', label: '高相关',
need_modify: false, need_modify: false,
modify_brief: '引用恰当', modify_brief: '引用恰当',
ai_desc: '引言段用于概括深度学习在医学影像中的应用背景,与文献主题一致,引用恰当。' ai_desc: '引言段用于概括深度学习在医学影像中的应用背景,与文献主题一致,引用恰当。',
ai_desc_en:
'Introduction: supports the background on deep learning in medical imaging; appropriate citation.'
} }
], ],
[ [
@@ -1246,7 +1304,9 @@ export default {
label: '高相关', label: '高相关',
need_modify: false, need_modify: false,
modify_brief: '可保留', modify_brief: '可保留',
ai_desc: '直接支撑 CNN 与 ViT 在 COVID-19 影像检测中的对比论述,高度相关。' ai_desc: '直接支撑 CNN 与 ViT 在 COVID-19 影像检测中的对比论述,高度相关。',
ai_desc_en:
'Directly supports the CNN vs ViT comparison for COVID-19 imaging; highly relevant.'
} }
], ],
[ [
@@ -1262,7 +1322,9 @@ export default {
label: '较相关', label: '较相关',
need_modify: false, need_modify: false,
modify_brief: '可保留', modify_brief: '可保留',
ai_desc: '方法段引用:实验流程与文献中的 CNN/ViT 对比设置基本一致,可作为方法参考。' ai_desc: '方法段引用:实验流程与文献中的 CNN/ViT 对比设置基本一致,可作为方法参考。',
ai_desc_en:
'Methods: the experimental setup aligns with the cited CNN/ViT comparison; suitable as a methods reference.'
}, },
{ {
cite_index: 2, cite_index: 2,
@@ -1276,7 +1338,9 @@ export default {
label: '部分相关', label: '部分相关',
need_modify: true, need_modify: true,
modify_brief: '建议精简或改写', modify_brief: '建议精简或改写',
ai_desc: '讨论段仅用于对比任务设定差异,与本文核心结论关联偏弱,建议精简表述。' ai_desc: '讨论段仅用于对比任务设定差异,与本文核心结论关联偏弱,建议精简表述。',
ai_desc_en:
'Discussion: used only to contrast task settings; weak link to main findings—consider trimming.'
} }
], ],
[ [
@@ -1292,7 +1356,8 @@ export default {
label: '待核实', label: '待核实',
need_modify: true, need_modify: true,
modify_brief: '年份不一致', modify_brief: '年份不一致',
ai_desc: '正文年份与文献出版年不一致,需核对后再保留该处引用。' ai_desc: '正文年份与文献出版年不一致,需核对后再保留该处引用。',
ai_desc_en: 'Publication year in the text does not match the reference; verify before keeping this citation.'
} }
], ],
[ [
@@ -1308,7 +1373,9 @@ export default {
label: '高相关', label: '高相关',
need_modify: false, need_modify: false,
modify_brief: '可保留', modify_brief: '可保留',
ai_desc: '结果段第 1 处:直接引用 CNN 与 ViT 在 Brain MRI 数据集上的性能对比结论,高度匹配。' ai_desc: '结果段第 1 处:直接引用 CNN 与 ViT 在 Brain MRI 数据集上的性能对比结论,高度匹配。',
ai_desc_en:
'Results (cite 1): directly cites CNN vs ViT performance on brain MRI; strong match.'
}, },
{ {
cite_index: 2, cite_index: 2,
@@ -1321,7 +1388,9 @@ export default {
label: '方法参考', label: '方法参考',
need_modify: true, need_modify: true,
modify_brief: '需补充差异说明', modify_brief: '需补充差异说明',
ai_desc: '方法段借用训练超参数设置,但数据集规模与预处理步骤不同,需补充说明。' ai_desc: '方法段借用训练超参数设置,但数据集规模与预处理步骤不同,需补充说明。',
ai_desc_en:
'Methods: borrows training hyperparameters; dataset size and preprocessing differ—clarify in text.'
}, },
{ {
cite_index: 3, cite_index: 3,
@@ -1334,7 +1403,9 @@ export default {
label: '弱相关', label: '弱相关',
need_modify: true, need_modify: true,
modify_brief: '建议删除', modify_brief: '建议删除',
ai_desc: '讨论段第 3 处:文献未涉及边缘部署主题,与本文实验结论关联较弱,建议弱化或删除。' ai_desc: '讨论段第 3 处:文献未涉及边缘部署主题,与本文实验结论关联较弱,建议弱化或删除。',
ai_desc_en:
'Discussion (cite 3): source does not address edge deployment; weak tie—consider removing.'
} }
], ],
[ [
@@ -1350,7 +1421,8 @@ export default {
label: '背景相关', label: '背景相关',
need_modify: true, need_modify: true,
modify_brief: '不宜作主要依据', modify_brief: '不宜作主要依据',
ai_desc: '仅作混合架构背景铺垫,不宜作为本文 CNN vs ViT 对比的主要论据。' ai_desc: '仅作混合架构背景铺垫,不宜作为本文 CNN vs ViT 对比的主要论据。',
ai_desc_en: 'Background on hybrid architectures only; not a primary basis for the CNN vs ViT comparison.'
} }
], ],
[ [
@@ -1366,7 +1438,8 @@ export default {
label: '高相关', label: '高相关',
need_modify: false, need_modify: false,
modify_brief: '可保留', modify_brief: '可保留',
ai_desc: '与重复条目 [4] 相同文献,此处引用结论与正文数据量依赖性论述一致。' ai_desc: '与重复条目 [4] 相同文献,此处引用结论与正文数据量依赖性论述一致。',
ai_desc_en: 'Same source as ref. [4]; citation aligns with the data-availability argument in the text.'
} }
], ],
[ [
@@ -1382,7 +1455,8 @@ export default {
label: '较相关', label: '较相关',
need_modify: false, need_modify: false,
modify_brief: '可保留', modify_brief: '可保留',
ai_desc: '讨论段引用 ViT 可解释性优势,与本文模型对比讨论方向一致。' ai_desc: '讨论段引用 ViT 可解释性优势,与本文模型对比讨论方向一致。',
ai_desc_en: 'Discussion cites ViT interpretability; consistent with the model-comparison narrative.'
} }
], ],
[ [
@@ -1397,7 +1471,9 @@ export default {
label: '部分相关', label: '部分相关',
need_modify: true, need_modify: true,
modify_brief: '建议精简或改写', modify_brief: '建议精简或改写',
ai_desc: '预处理流程引用合理,但文献针对 CT 影像,与本文 MRI 模态不完全匹配,宜注明差异。' ai_desc: '预处理流程引用合理,但文献针对 CT 影像,与本文 MRI 模态不完全匹配,宜注明差异。',
ai_desc_en:
'Preprocessing citation is reasonable, but the source uses CT while this study uses MRI—note the difference.'
}, },
{ {
cite_index: 2, cite_index: 2,
@@ -1410,7 +1486,8 @@ export default {
label: '弱相关', label: '弱相关',
need_modify: true, need_modify: true,
modify_brief: '建议删除', modify_brief: '建议删除',
ai_desc: '筛查系统论述与本文模型性能对比主题偏离,建议删除或改述。' ai_desc: '筛查系统论述与本文模型性能对比主题偏离,建议删除或改述。',
ai_desc_en: 'Screening-system claim is off-topic for a model-comparison study—remove or rephrase.'
} }
], ],
[ [
@@ -1426,7 +1503,8 @@ export default {
label: '高相关', label: '高相关',
need_modify: false, need_modify: false,
modify_brief: '引用恰当', modify_brief: '引用恰当',
ai_desc: '讨论段展望集成策略,与全文 CNN/ViT 对比研究脉络一致,可保留。' ai_desc: '讨论段展望集成策略,与全文 CNN/ViT 对比研究脉络一致,可保留。',
ai_desc_en: 'Discussion outlook on ensemble strategies fits the CNN/ViT comparison thread; keep.'
} }
], ],
[ [
@@ -1442,7 +1520,9 @@ export default {
label: '高相关', label: '高相关',
need_modify: false, need_modify: false,
modify_brief: '可保留', modify_brief: '可保留',
ai_desc: '结论段综述性引用,用于归纳 transformer 在医学影像中的研究趋势,匹配度高。' ai_desc: '结论段综述性引用,用于归纳 transformer 在医学影像中的研究趋势,匹配度高。',
ai_desc_en:
'Conclusion: survey-style citation summarizing transformer trends in medical imaging; strong match.'
} }
] ]
]; ];
@@ -1622,7 +1702,7 @@ export default {
}, },
getRelevanceInsightText(item) { getRelevanceInsightText(item) {
if (!item) return ''; if (!item) return '';
const desc = String(item.ai_desc || '').trim(); const desc = this.resolveRelevanceDesc(item);
if (desc) return desc; if (desc) return desc;
const anns = this.getRelevanceAnnotations(item); const anns = this.getRelevanceAnnotations(item);
return anns.length ? String(anns[0].text || '') : ''; return anns.length ? String(anns[0].text || '') : '';
@@ -1893,8 +1973,40 @@ export default {
if (idx < 0) return html; if (idx < 0) return html;
return this.wrapHtmlRange(html, idx, idx + plainText.length, markClass); return this.wrapHtmlRange(html, idx, idx + plainText.length, markClass);
}, },
highlightCiteContextInHtml(html, matchIndex, matchLen, highlightWholeBlock) { wrapManuscriptSectionHtml(innerHtml, isMatch, extraClass) {
if (!html) return html; const sectionCls = isMatch ? 'ref-ms-section is-match' : 'ref-ms-section is-muted';
const extra = extraClass ? ' ' + extraClass : '';
const matchTag = isMatch
? '<span class="ref-ms-match-tag">' + this.refRelevanceT('highlightedMatch') + '</span>'
: '';
return (
'<div class="' +
sectionCls +
extra +
'">' +
'<div class="ref-ms-section-head">' +
'<span class="ref-ms-section-label">' +
this.refRelevanceT('manuscriptSection') +
'</span>' +
matchTag +
'</div>' +
'<div class="ref-ms-section-body">' +
innerHtml +
'</div>' +
'</div>'
);
},
highlightCiteContextInHtml(html, matchIndex, matchLen, highlightWholeBlock, bracketOnly) {
if (!html)
return html;
if (bracketOnly) {
if (matchIndex < 0 || !matchLen) return html;
const markText = this.extractCiteMarkTextFromHtml(html, matchIndex, matchLen);
if (markText) {
return this.wrapFirstPlainTextInHtml(html, markText, 'ref-review-cite-bracket');
}
return html;
}
if (highlightWholeBlock) { if (highlightWholeBlock) {
let out = '<mark class="ref-review-cite-active ref-review-cite-para">' + html + '</mark>'; let out = '<mark class="ref-review-cite-active ref-review-cite-para">' + html + '</mark>';
if (matchIndex >= 0 && matchLen) { if (matchIndex >= 0 && matchLen) {
@@ -2054,12 +2166,14 @@ export default {
if (!html && block.type !== 0 && block.type !== '0' && block.type != null) { if (!html && block.type !== 0 && block.type !== '0' && block.type != null) {
return; return;
} }
if (loc && loc.block && loc.block.am_id === block.am_id) { const isMatch = !!(loc && loc.block && loc.block.am_id === block.am_id);
if (isMatch) {
html = this.highlightCiteContextInHtml( html = this.highlightCiteContextInHtml(
html, html,
loc.matchIndex, loc.matchIndex,
loc.matchLen, loc.matchLen,
loc.highlightWholeBlock loc.highlightWholeBlock,
true
); );
} }
if (activeAmId != null && block.am_id == activeAmId && item) { if (activeAmId != null && block.am_id == activeAmId && item) {
@@ -2067,9 +2181,9 @@ export default {
} }
const cls = this.getMainBlockClass(block); const cls = this.getMainBlockClass(block);
const amId = block.am_id != null ? block.am_id : ''; const amId = block.am_id != null ? block.am_id : '';
parts.push( const amAttr = amId !== '' ? ' data-am-id="' + amId + '"' : '';
'<div class="' + cls + '"' + (amId !== '' ? ' data-am-id="' + amId + '"' : '') + '>' + (html || '') + '</div>' const blockHtml = ['<div class="', cls, '"', amAttr, '>', html || '', '</div>'].join('');
); parts.push(this.wrapManuscriptSectionHtml(blockHtml, isMatch));
}); });
return parts.join(''); return parts.join('');
}, },
@@ -2124,6 +2238,7 @@ export default {
const container = this.$refs.relevanceReviewPara; const container = this.$refs.relevanceReviewPara;
if (!container) return; if (!container) return;
const mark = const mark =
container.querySelector('.ref-ms-section.is-match') ||
container.querySelector('.ref-review-cite-bracket') || container.querySelector('.ref-review-cite-bracket') ||
container.querySelector('.ref-review-cite-para'); container.querySelector('.ref-review-cite-para');
if (!mark) return; if (!mark) return;
@@ -2241,8 +2356,7 @@ export default {
.replace(/"/g, '&quot;'); .replace(/"/g, '&quot;');
}, },
formatRelevanceParaHtml(item) { formatRelevanceParaHtml(item) {
let html = this.escapeRelevanceHtml(this.formatRelevanceSnippet(item) || '(暂无段落原文,待接口返回)'); let html = this.escapeRelevanceHtml(this.formatRelevanceSnippet(item) || this.refRelevanceT('excerptEmpty'));
html = '<mark class="ref-review-cite-active">' + html + '</mark>';
const anns = this.getRelevanceAnnotations(item); const anns = this.getRelevanceAnnotations(item);
anns.forEach((ann) => { anns.forEach((ann) => {
const anchor = String(ann.anchor || '').trim(); const anchor = String(ann.anchor || '').trim();
@@ -2252,7 +2366,8 @@ export default {
ann.type === 'revision' ? 'ref-review-mark ref-review-mark--rev' : 'ref-review-mark ref-review-mark--cmt'; ann.type === 'revision' ? 'ref-review-mark ref-review-mark--rev' : 'ref-review-mark ref-review-mark--cmt';
html = html.split(esc).join('<mark class="' + markClass + '">' + esc + '</mark>'); html = html.split(esc).join('<mark class="' + markClass + '">' + esc + '</mark>');
}); });
return html; const body = '<p class="ref-ms-excerpt-text">' + html + '</p>';
return this.wrapManuscriptSectionHtml(body, true, 'is-excerpt');
}, },
wordTextOp() { wordTextOp() {
////console.log(this.wordText) ////console.log(this.wordText)
@@ -4119,6 +4234,37 @@ export default {
min-height: 420px; min-height: 420px;
max-height: min(68vh, 620px); max-height: min(68vh, 620px);
} }
.ref-review-doc--sim {
border-color: #dce3ed;
background: #fff;
}
.ref-review-doc-label--sim {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 10px 14px;
font-size: 11px;
font-weight: 600;
color: #64748b;
border-bottom: 1px solid #e4e9f0;
background: #f8fafc;
letter-spacing: 0.02em;
}
.ref-review-doc-sim-title {
color: #475569;
}
.ref-review-doc-locator {
font-size: 11px;
font-weight: 500;
color: #94a3b8;
text-transform: none;
letter-spacing: 0;
}
.ref-review-ms-scroll {
padding: 12px 14px;
background: #fbfcfe;
}
.ref-review-doc-label, .ref-review-doc-label,
.ref-review-pane-label { .ref-review-pane-label {
padding: 8px 14px; padding: 8px 14px;
@@ -4193,6 +4339,55 @@ export default {
text-align: justify; text-align: justify;
color: #606266; color: #606266;
} }
::v-deep .ref-ms-section {
margin-bottom: 10px;
border-radius: 6px;
transition: opacity 0.2s ease;
}
::v-deep .ref-ms-section.is-muted {
opacity: 0.36;
pointer-events: none;
}
::v-deep .ref-ms-section.is-match {
opacity: 1;
border: 1px dashed #409eff;
background: #f0f7ff;
box-shadow: 0 0 0 1px rgba(64, 158, 255, 0.1);
}
::v-deep .ref-ms-section.is-excerpt {
margin-bottom: 0;
}
::v-deep .ref-ms-section-head {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 12px 4px;
}
::v-deep .ref-ms-section-label {
font-size: 10px;
font-weight: 600;
letter-spacing: 0.03em;
color: #94a3b8;
}
::v-deep .ref-ms-match-tag {
font-size: 10px;
font-weight: 700;
letter-spacing: 0.02em;
color: #409eff;
background: #dbeafe;
padding: 2px 8px;
border-radius: 999px;
}
::v-deep .ref-ms-section-body {
padding: 2px 12px 12px;
}
::v-deep .ref-ms-excerpt-text {
margin: 0;
font-size: 14px;
line-height: 1.65;
color: #303133;
text-align: justify;
}
::v-deep .ref-review-word .isTitleH1.pMainH1, ::v-deep .ref-review-word .isTitleH1.pMainH1,
::v-deep .ref-review-word .pMainH1 { ::v-deep .ref-review-word .pMainH1 {
font-family: 'Charis SIL', serif; font-family: 'Charis SIL', serif;
@@ -4490,12 +4685,12 @@ export default {
} }
::v-deep mark.ref-review-cite-bracket { ::v-deep mark.ref-review-cite-bracket {
display: inline; display: inline;
padding: 0 3px; padding: 1px 6px;
border-radius: 3px; border-radius: 3px;
background: #fff; background: #409eff;
color: #e6a23c; color: #fff;
font-weight: 700; font-weight: 700;
box-shadow: 0 0 0 2px #e6a23c; box-shadow: none;
vertical-align: baseline; vertical-align: baseline;
line-height: inherit; line-height: inherit;
animation: none !important; animation: none !important;

View File

@@ -75,25 +75,25 @@
<el-table-column label="Contributions" align="center" width="150"> <el-table-column label="Contributions" align="center" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="Contributions"> <div class="Contributions">
<div>Articles: <em v-if="scope.row.articles.length > 0">{{scope.row.articles.length}}</em><em v-else>0</em> / <div>Articles: <em v-if="scope.row&&scope.row.articles.length > 0">{{scope.row.articles.length}}</em><em v-else>0</em> /
<em v-if="scope.row.articles_all.length > 0">{{scope.row.articles_all.length}}</em><em v-else>0</em></div> <em v-if="scope.row&&scope.row.articles_all.length > 0">{{scope.row.articles_all.length}}</em><em v-else>0</em></div>
<div>Reviewes: <em v-if="scope.row.reviewes.length > 0">{{scope.row.reviewes.length}}</em><em v-else>0</em></div> <div>Reviewes: <em v-if="scope.row&&scope.row.reviewes.length > 0">{{scope.row.reviewes.length}}</em><em v-else>0</em></div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="H-WOS" width="110px" align="center"> <el-table-column label="H-WOS" width="110px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<p v-html="colorIndex(scope.row.wos_index,scope.row.wos_time)"></p> <p v-if="scope.row" v-html="colorIndex(scope.row.wos_index,scope.row.wos_time)"></p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="H-Google" width="110px" align="center"> <el-table-column label="H-Google" width="110px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<p v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></p> <p v-if="scope.row" v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="grade" label="Grade" width="110px" align="center"> <el-table-column prop="grade" label="Grade" width="110px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<p style="display: inline-block;" v-if="scope.row.starList_mark!=0"> <p style="display: inline-block;" v-if="scope.row&&scope.row.starList_mark!=0">
<img src="../../assets/img/star-all.png" v-for="item in scope.row.starList" <img src="../../assets/img/star-all.png" v-for="item in scope.row.starList"
v-if="scope.row.starList_mark<=8&&item.star==1" class="starSty"> v-if="scope.row.starList_mark<=8&&item.star==1" class="starSty">
<img src="../../assets/img/star-traf.png" v-for="item in scope.row.starList" <img src="../../assets/img/star-traf.png" v-for="item in scope.row.starList"
@@ -107,7 +107,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="Term of service" align="center" width="160"> <el-table-column label="Term of service" align="center" width="160">
<template slot-scope="scope"> <template slot-scope="scope" v-if="scope.row">
<p v-for="item in scope.row.sd"> <p v-for="item in scope.row.sd">
{{formatYear(item.start_date)}} {{formatYear(item.start_date)}}
<span style="margin: 0 3px;">-</span> <span style="margin: 0 3px;">-</span>
@@ -153,7 +153,7 @@
</div> </div>
<!-- 添加弹出框 --> <!-- 添加弹出框 -->
<el-dialog title="Add Young Scientist" :visible.sync="addVisible" width="620px" :close-on-click-modal="false" <el-dialog destroy-on-close title="Add Young Scientist" :visible.sync="addVisible" width="620px" :close-on-click-modal="false"
@close='addVisCancle'> @close='addVisCancle'>
<el-form ref="add_Form" :model="addForm" :rules="rules" label-width="140px" v-if="!dis_able"> <el-form ref="add_Form" :model="addForm" :rules="rules" label-width="140px" v-if="!dis_able">
<el-form-item label="Email / Account :" prop="account" v-if="!dis_able"> <el-form-item label="Email / Account :" prop="account" v-if="!dis_able">
@@ -196,7 +196,7 @@
</el-dialog> </el-dialog>
<!-- 续约弹出框 --> <!-- 续约弹出框 -->
<el-dialog title="Renewal Young Scientist" :visible.sync="reneVisible" width="600px" :close-on-click-modal="false"> <el-dialog destroy-on-close title="Renewal Young Scientist" :visible.sync="reneVisible" width="600px" :close-on-click-modal="false">
<el-form ref="rene_Form" :model="reneForm" :rules="rules" label-width="140px"> <el-form ref="rene_Form" :model="reneForm" :rules="rules" label-width="140px">
<el-form-item label="Account :"> <el-form-item label="Account :">
{{reneForm.account}} {{reneForm.account}}
@@ -405,6 +405,7 @@ import bus from '../common/bus'
.post('api/User/getYboardlist', this.query) .post('api/User/getYboardlist', this.query)
.then(res => { .then(res => {
if (res.code == 0) { if (res.code == 0) {
console.log(res.data.yboards,'zheli');
this.tableData = res.data.yboards; this.tableData = res.data.yboards;
for (var i = 0; i < this.tableData.length; i++) { for (var i = 0; i < this.tableData.length; i++) {
this.getScoreData(i, this.tableData[i].score) this.getScoreData(i, this.tableData[i].score)
@@ -478,7 +479,10 @@ import bus from '../common/bus'
// 新增 // 新增
addHandle() { addHandle() {
this.dis_able = false this.dis_able = false
this.addForm.account = '' this.addForm= {
account: '',
}
this.addVisible = true this.addVisible = true
}, },
@@ -499,7 +503,7 @@ import bus from '../common/bus'
this.addVisible = false; this.addVisible = false;
this.getDate(); this.getDate();
this.$message.success(`Added successfully`); this.$message.success(`Added successfully`);
this.$refs.add_Form.resetFields();
this.dis_able = false this.dis_able = false
loading.close(); loading.close();
@@ -521,7 +525,7 @@ import bus from '../common/bus'
// 添加关闭 // 添加关闭
addVisCancle() { addVisCancle() {
this.addVisible = false this.addVisible = false
this.$refs.add_Form.resetFields(); // this.$refs.add_Form.resetFields();
}, },
// 查找与他相同的账号 // 查找与他相同的账号

View File

@@ -70,7 +70,8 @@ module.exports = {
}, },
proxy: { proxy: {
'/api': { '/api': {
// target: 'http://zmzm.tougao.dev.com/',//晓玲本地
// target: 'http://192.168.110.131/tougao/public/index.php/',//后端本地
target: 'https://submission.tmrjournals.com/',//正式 target: 'https://submission.tmrjournals.com/',//正式
// target: 'http://tougaotest.tmrjournals.com/public/index.php/',//测试环境 // target: 'http://tougaotest.tmrjournals.com/public/index.php/',//测试环境
// target: 'http://mytest.tmrjournals.com/public/index.php/',//新测试环境 // target: 'http://mytest.tmrjournals.com/public/index.php/',//新测试环境