Merge branch 'master' of https://git.nuttyreading.com/wangjinlei/tougao_web into Editorial-Board

This commit is contained in:
2025-11-28 16:54:15 +08:00
12 changed files with 1329 additions and 964 deletions

View File

@@ -156,8 +156,11 @@
> >
</h4> </h4>
<p style="color: #505050; font-size: 14px; padding: 20px; box-sizing: border-box"> <p style="color: #505050; font-size: 14px; padding: 20px; box-sizing: border-box">
<i class="el-icon-warning" style="color: #517fd5; margin-right: 8px"></i> A total of <template v-if="Ainfo.refer_state.num==0">
<i class="tip">{{ Ainfo.refer_state.num }}</i> references in this manuscript is identified. <i class="el-icon-warning" style="color: #e6a23c; margin-right: 8px"></i>Please wait patiently while the Editorial Office processes the references.
</template>
<template v-else> <i class="el-icon-warning" style="color: #517fd5; margin-right: 8px"></i> Please review and revise the reference formatting.</template>
</p> </p>
<p style="color: #505050; font-size: 14px; padding: 0 20px 20px; box-sizing: border-box" v-if="Ainfo.refer_state.num>0" > <p style="color: #505050; font-size: 14px; padding: 0 20px 20px; box-sizing: border-box" v-if="Ainfo.refer_state.num>0" >

View File

@@ -721,10 +721,10 @@ export default {
console.log('res at line 191:', res); console.log('res at line 191:', res);
if (res.code == 0) { if (res.code == 0) {
this.article_pay_info = { this.article_pay_info = {
fee: res.data.article.fee, fee: res.data.article ? res.data.article.fee : 0,
is_buy: res.data.article.is_buy, is_buy: res.data.article ? res.data.article.is_buy : 0,
original_price: res.data.journal.fee, original_price: res.data.journal ? res.data.journal.fee : 0,
fee_remark: res.data.article.fee_remark, fee_remark: res.data.article ? res.data.article.fee_remark : '',
order: res.data.order, order: res.data.order,
paystation_fee: res.data.order && res.data.order.paystation ? res.data.order.paystation.amount : '', paystation_fee: res.data.order && res.data.order.paystation ? res.data.order.paystation.amount : '',
paystation_time: res.data.order && res.data.order.paystation ? res.data.order.paystation.request_time : '', paystation_time: res.data.order && res.data.order.paystation ? res.data.order.paystation.request_time : '',
@@ -732,7 +732,7 @@ export default {
}; };
if (this.article_pay_info.is_buy == 1) { if (this.article_pay_info.is_buy == 1) {
if (this.article_pay_info.fee == 0) { if (Number(this.article_pay_info.fee) == 0) {
this.feeStatus = 2; this.feeStatus = 2;
} else { } else {
this.feeStatus = 1; this.feeStatus = 1;
@@ -864,7 +864,10 @@ export default {
} }
this.$nextTick(() => { this.$nextTick(() => {
// 更新引用列表 // 更新引用列表
this.$refs.editPublicRefRdit.init(this.chanFerForm); if(this.$refs.editPublicRefRdit){
this.$refs.editPublicRefRdit.init(this.chanFerForm);
}
}); });
}) })
.catch((err) => { .catch((err) => {
@@ -2153,7 +2156,7 @@ export default {
width: 260px !important; width: 260px !important;
} }
.scroll-item { .scroll-item {
margin: 10px 20px 20px 276px; margin: 10px 20px 20px 280px;
} }
.payment_info_box { .payment_info_box {
margin-bottom: 10px; margin-bottom: 10px;

View File

@@ -1,110 +1,27 @@
<template> <template>
<div v-loading.fullscreen.lock="holeLoading"> <div v-loading.fullscreen.lock="holeLoading">
<div class="container" v-loading="importIoading" element-loading-text="In the process of importing, please wait"> <div class="container" v-loading="importIoading" element-loading-text="In the process of importing, please wait">
<div v-if="tableData.length == 0"> <div v-if="tableData.length > 0">
<!-- 没有引用时 --> <div class="topInfo operation1">
<!-- <div class="noneData">
<img src="../../assets/img/noneData.png" alt="" class="icon_img">
<p class="nodatatext">TMR did not identify an available article citation in your latest uploaded document</p>
</div> -->
<el-row :gutter="20">
<!-- 教程 -->
<el-col>
<div class="whoDo mt20">
<div>
<h2>
What should I do
<el-tooltip class="item" effect="light" content="click for more help" placement="right">
<span class="el-icon-warning-outline help" @click="showHelp"></span>
</el-tooltip>
</h2>
<p class="mt10 c666">you can add a citation in the following way.</p>
<ul>
<!-- 文件上传的形式 -->
<li>
<div class="mt20">
<h4>
Add in bulk by uploading excel files &nbsp;&nbsp;
<!-- <el-button class="inlinebutton" type="primary" plain size="mini" @click="showUpload">Add</el-button> -->
</h4>
<p class="mt10 c666">
Before uploading the file, you need to download the template file,
<a
href="https://submission.tmrjournals.com/public/system/refer.xlsx"
download="refer"
target="_blank"
class="downloadbtn"
>click download</a
>
,to add your references to the template file, and upload it.
</p>
<div v-if="uploadVisible">
<div class="uploadBox">
<el-upload
ref="uploadFile"
class="upload-demo up_newstyle mt10"
:action="upload_manuscirpt"
accept=".xlsx"
name="referFile"
:before-upload="beforeupload_manuscirpt"
:on-error="uperr_coverLetter"
:on-success="upSuccess_manuscirpt"
:limit="1"
:on-exceed="alertlimit"
:on-remove="removefilemanuscirpt"
:file-list="fileL_manuscirpt"
>
<div class="el-upload__text" @click="clearUploadedFile">
<em>Upload</em>
</div>
</el-upload>
</div>
</div>
</div>
</li>
<!-- 文本域 -->
<!-- <li>
<div class="mt20">
<h4>Add in bulk by text field &nbsp;&nbsp;&nbsp;<el-button @click="addText" class="inlinebutton" type="primary" plain size="mini">Add</el-button></h4>
<div v-if="textareaVisible">
<el-input class="textarea mt10"
type="textarea"
:rows="3"
placeholder="Put your reference entry here"
v-model="textarea">
</el-input>
<el-button class="mt10" icon="el-icon-check" type="primary" size="mini" @click="importText()">Import</el-button>
</div>
</div>
</li> -->
</ul>
</div>
</div>
</el-col>
</el-row>
</div>
<!-- 有引用数据-->
<div v-else>
<div class="topInfo">
<h3>Dear {{ user_name }}</h3> <h3>Dear {{ user_name }}</h3>
<p class="mt10">Please check and modify the references information on this page with the following instructions:</p> <p class="mt10">Please check and revise the references information on this page with the following instructions:</p>
<ul class="mt20"> <ul class="mt20">
<li> <li>
<p> <p>
- Please modify the reference in the - Please revise the references marked with the
<span class="status warn float"><i class="el-icon-warning-outline"></i></span> <span class="status warn float"><i class="el-icon-warning-outline"></i></span> the status , check the
status, moving the reference information from reference marked with <span style="position: relative"><i class="itemChanged"></i> </span> the
<span class="status warn float"><i class="el-icon-warning-outline"></i></span> status to status(revised by editor)&nbsp;,&nbsp; and update them until they are marked with
<span class="status ok float"><i class="el-icon-circle-check"></i></span> status. <span class="status ok float"><i class="el-icon-circle-check"></i></span> the status.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
- If you find the number of reference is disorder for technical reason, please click the - Please use the
<el-button type="warning" size="mini" plain></el-button> <el-button type="warning" size="mini" plain></el-button>
and <span style="margin: 0 5px">and</span>
<el-button type="warning" size="mini" plain></el-button> behind each piece of information to adjust the <el-button type="warning" size="mini" plain></el-button>
order of the data. <span style="margin: 0 5px">buttons to adjust the order of the reference.</span>
</p> </p>
</li> </li>
<li> <li>
@@ -129,131 +46,50 @@
style="width: 24px; height: 24px; margin-left: 5px; margin-right: 5px" style="width: 24px; height: 24px; margin-left: 5px; margin-right: 5px"
/> />
</span> </span>
it indicates that the current reference is duplicated . it indicates that the current reference is duplicated.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
- Please do not forget to recheck all references in the - Please do not forget to recheck all references in the
<span class="status ok float"><i class="el-icon-circle-check"></i></span> status,especially abbreviated <span class="status ok float"><i class="el-icon-circle-check"></i></span> status, especially abbreviated
journal title. journal title.
</p> </p>
</li> </li>
</ul> </ul>
<div class="template-info">
<span class="template-title">Article from a Journal (General format)</span> <br />
Author(s) Last Name First Initial.&nbsp;Title of article.&nbsp;<i>Abbreviated Journal Title</i>.&nbsp;Year;Volume(issue):Inclusive page
numbers.<br />
<br />
<span class="template-title">For example:</span><br />
Article with More than Six Authors<br />
Crompton J, Imms C, McCoy AT, et al. Group-based taskrelated training for children with cerebral palsy: a pilot
study.&nbsp;<i>Phys Occup Ther Pediatr.</i>&nbsp;2007;27:43-65.<br />
Special note: If the number of authors is 6 or fewer, all authors should be listed.
</div>
</div> </div>
<div class="refenceCentent mt20"> <div class="refenceCentent mt20">
<div>
<div style="display: flex;align-items: center;justify-content: space-between;"> <editPublicRefRdit
<el-table style="width: 100%" ref="editPublicRefRdit"
:data="tableData" :chanFerForm="tableData"
ref="multipleTable" :chanFerFormRepeatList="chanFerFormRepeatList"
:row-style="tableRowStyle" role="user"
empty-text="New messages (0)" p_article_id=""
:show-header="false" @refrashComp="refrashComp"
:stripe="false" @changeRefer="changeRefer"
:highlight-current-row="false" ></editPublicRefRdit>
>
<el-table-column type="index" label="No." width="60" align="center">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="Duplicate references" placement="top">
<img
src="../../assets/img/repeat.png"
v-if="scope.row.is_repeat == 1"
alt=""
style="width: 24px; height: 24px; float: left"
/>
</el-tooltip>
<span>{{ scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column label="state" width="55" align="center">
<template slot-scope="scope">
<span
class="status ok"
v-if="
(scope.row.refer_type == 'journal' && scope.row.doilink != '') ||
(scope.row.refer_type == 'book' && scope.row.isbn != '')
"
>
<i class="el-icon-circle-check"></i>
</span>
<span class="status warn" v-else>
<i class="el-icon-warning-outline"></i>
</span>
</template>
</el-table-column>
<el-table-column label="Title" align="left">
<template slot-scope="scope">
<!-- journal 形式 -->
<div style="text-align: left" v-if="scope.row.refer_type == 'journal'">
<p>
{{ scope.row.author }}&nbsp;{{ scope.row.title }}.&nbsp;<em>{{ scope.row.joura }}</em
>&nbsp;{{ scope.row.dateno }}.<br />
</p>
<a class="doiLink" :href="scope.row.doilink" target="_blank">{{ scope.row.doilink }}</a>
</div>
<!-- book 形式 -->
<div style="text-align: left" v-if="scope.row.refer_type == 'book'">
<p>{{ scope.row.author }}&nbsp;{{ scope.row.title }}.&nbsp;{{ scope.row.dateno }}.&nbsp;<br /></p>
<a class="doiLink" :href="scope.row.isbn" target="_blank">{{ scope.row.isbn }}</a>
</div>
<!-- other 形式 -->
<p class="wrongLine" style="text-align: left" v-if="scope.row.refer_type == 'other'">
{{ scope.row.refer_frag }}
</p>
</template>
</el-table-column>
<el-table-column align="center" width="360">
<div slot-scope="scope">
<el-button
style="margin-left: 10px"
@click="change(scope.row, 'Edit')"
plain
type="primary"
size="mini"
icon="el-icon-edit"
>edit</el-button
>
<el-tooltip
popper-class="tps"
class="item"
effect="light"
content="Add one under this line"
placement="top"
>
<el-button @click="addLine(scope.row, 'Add')" type="success" size="mini" plain>Add</el-button>
</el-tooltip>
<el-button
type="warning"
size="mini"
plain
:disabled="scope.$index != 0 ? false : true"
@click="changeOrder(scope.row, 'up')"
>↑</el-button
>
<el-button
type="warning"
size="mini"
plain
:disabled="scope.$index == tableData.length - 1 ? true : false"
@click="changeOrder(scope.row, 'down')"
>↓</el-button
>
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
style="float: right"
plain
@click="deleteLine(scope.row)"
>delete</el-button
>
</div>
</el-table-column>
</el-table>
</div> </div>
</div>
</div>
<div v-else>
<div class="topInfo operation1">
<h3>Dear {{ user_name }}</h3>
<p class="mt10">
<i class="el-icon-warning" style="color: #e6a23c; margin-right: 8px"></i>Please wait patiently while the Editorial
Office processes the references.
</p>
</div> </div>
</div> </div>
</div> </div>
@@ -263,7 +99,8 @@
:title="dialogTitle + ' References'" :title="dialogTitle + ' References'"
:visible.sync="editboxVisible" :visible.sync="editboxVisible"
width="800px" width="800px"
@close="cancelSave" :close-on-click-modal="false" @close="cancelSave"
:close-on-click-modal="false"
> >
<p class="yinyongPre c888"> <p class="yinyongPre c888">
Now you are starting to add or modify this reference. If this reference has a DOI, you can directly copy it into the DOI Now you are starting to add or modify this reference. If this reference has a DOI, you can directly copy it into the DOI
@@ -376,13 +213,8 @@
<!-- 临时引用信息 --> <!-- 临时引用信息 -->
<el-dialog title="Reference List" :visible.sync="linVisible" width="1200px" :close-on-click-modal="false" class="reference-dialog"> <el-dialog title="Reference List" :visible.sync="linVisible" width="1200px" :close-on-click-modal="false" class="reference-dialog">
<div class="newpro"> <div class="newpro">
<el-progress <el-progress v-if="isUpload" :stroke-width="15" :percentage="progressPercent" style="width: 100%"></el-progress>
v-if="isUpload" </div>
:stroke-width="15"
:percentage="progressPercent"
style="width: 100%"
></el-progress>
</div>
<div class="refenceCentent mt20" v-if="Tempredable.length > 0"> <div class="refenceCentent mt20" v-if="Tempredable.length > 0">
<el-table <el-table
@@ -397,61 +229,61 @@
<el-table-column type="index" label="No." width="55" align="center"></el-table-column> <el-table-column type="index" label="No." width="55" align="center"></el-table-column>
<el-table-column label="Title" align="left"> <el-table-column label="Title" align="left">
<template slot-scope="scope"> <template slot-scope="scope">
<p style="text-align: left;line-height: 18px;" v-if="!parseVisible"> <p style="text-align: left; line-height: 18px" v-if="!parseVisible">
{{ scope.row.content }}<br /><el-link type="primary">{{ scope.row.doi }}</el-link>
{{ scope.row.content }}<br/><el-link type="primary">{{ scope.row.doi }}</el-link>
</p> </p>
<p style="text-align: left;line-height: 18px;" v-if="parseVisible"> <p style="text-align: left; line-height: 18px" v-if="parseVisible">
{{ scope.row.refer_content }}<br /><el-link type="primary">{{ scope.row.refer_doi }}</el-link>
{{ scope.row.refer_content }}<br/><el-link type="primary">{{ scope.row.refer_doi }}</el-link>
</p> </p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="Status" align="center" width="55" v-if="parseVisible"> <el-table-column label="Status" align="center" width="55" v-if="parseVisible">
<template slot-scope="scope"> <template slot-scope="scope">
<i class="el-icon-loading" style="font-size: 24px; color: #606266" v-if="scope.row.is_deal == 2"></i>
<i class="el-icon-loading" style="font-size: 24px;color: #606266;" v-if="scope.row.is_deal==2"></i>
<i class="el-icon-success" style="font-size: 24px; color: #2ac95c" v-if="scope.row.is_deal == 1"></i>
<i class="el-icon-success" style="font-size: 24px;color: #2ac95c;" v-if="scope.row.is_deal==1"></i>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="shuoming mt20" > <div class="shuoming mt20">
<p class="c888"> <p class="c888">
<i class="el-icon-message-solid"></i>&nbsp;&nbsp;<span v-if="!parseVisible" >The above is the citation data identified according to your <i class="el-icon-message-solid"></i>&nbsp;&nbsp;<span v-if="!parseVisible"
uploaded file, you can choose to import, or discard this data and upload again.</span> >The above is the citation data identified according to your uploaded file, you can choose to import, or discard
this data and upload again.</span
>
<span v-if="parseVisible">We are currently identifying the citation data you uploaded. Please be patient.</span> <span v-if="parseVisible">We are currently identifying the citation data you uploaded. Please be patient.</span>
</p> </p>
</div> </div>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<div v-if="!parseVisible"> <div v-if="!parseVisible">
<el-button @click="abandon">Abandon and Reimport</el-button> <el-button @click="abandon">Abandon and Reimport</el-button>
<el-button type="primary" @click="handleparse">Import</el-button> <el-button type="primary" @click="handleparse">Import</el-button>
</div> </div>
<div v-if="parseVisible"> <div v-if="parseVisible">
<el-button @click="parseVisible=false;linVisible=false;">Cancel</el-button> <el-button
@click="
parseVisible = false;
linVisible = false;
"
>Cancel</el-button
>
</div> </div>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import editPublicRefRdit from './editPublicRefRdit'; // 公共引用编辑页面
export default { export default {
data() { data() {
return { return {
TempredableNew: [], chanFerFormRepeatList: [],
uploadTimer: null,//调取进度条的轮询定时器 uploadTimer: null, //调取进度条的轮询定时器
isUpload: false,//文件是否上传中 isUpload: false, //文件是否上传中
progressPercent: 0,//进度条当前进度 progressPercent: 0, //进度条当前进度
curPercentage: 0, curPercentage: 0,
user_name: localStorage.getItem('U_relname'), user_name: localStorage.getItem('U_relname'),
holeLoading: false, // 进入页面的loading holeLoading: false, // 进入页面的loading
importIoading: false, importIoading: false,
@@ -546,61 +378,59 @@ export default {
created() { created() {
this.openFullScreen1(); this.openFullScreen1();
this.getRefData(); this.getRefData();
this.holeLoading = true; },
components: {
editPublicRefRdit
}, },
beforeDestroy() { beforeDestroy() {
clearInterval(this.uploadTimer); clearInterval(this.uploadTimer);
}, },
methods: { methods: {
changeRefer(val) {
this.getRefData();
},
refrashComp() {
this.$refs.editPublicRefRdit.$forceUpdate();
console.log('editPublicRefRdit');
},
async getProgress() { async getProgress() {
var that = this; var that = this;
this.getRefData() this.getRefData();
var progress = 0; var progress = 0;
this.$api
.post(
'api/Preaccept/getReferState',{ article_id: this.$route.query.id})
.then(async (res) => {
if(res.status==1){
progress = Number(res.data.processed_total);
this.TempredableNew=res.data.refer;
}
//percent是后端返回的进度
if (progress == res.data.total) {
this.isUpload = false;
clearInterval(this.uploadTimer);
that.uploadTimer = null;
this.$api.post('api/Preaccept/getReferState', { article_id: this.$route.query.id }).then(async (res) => {
this.$forceUpdate(); if (res.status == 1) {
} progress = Number(res.data.processed_total);
}); this.TempredableNew = res.data.refer;
}
return progress; //percent是后端返回的进度
},
// 删除部分引用 if (progress == res.data.total) {
deleteSomeRefs() { this.isUpload = false;
clearInterval(this.uploadTimer);
that.uploadTimer = null;
this.$forceUpdate();
}
});
return progress;
},
// 删除部分引用
deleteSomeRefs() {
var ids = []; var ids = [];
ids = this.tableData.map((item) => { ids = this.tableData.map((item) => {
return item.p_refer_id; return item.p_refer_id;
}); });
console.log('ids at line 570:', ids) console.log('ids at line 570:', ids);
this.$api this.$api
.post('api/Preaccept/delRefers', { .post('api/Preaccept/delRefers', {
ids: ids ids: ids
}) })
.then((res) => { .then((res) => {})
.catch((err) => {});
})
.catch((err) => {
});
}, },
tableRowStyle({ row }) { tableRowStyle({ row }) {
if (row.is_repeat === 1) { if (row.is_repeat === 1) {
@@ -612,7 +442,6 @@ export default {
gotoFormate() { gotoFormate() {
// this.$refs['refenceForm'].validateField('doi', (callback)=>{ // this.$refs['refenceForm'].validateField('doi', (callback)=>{
if (this.refenceForm.doi != '') { if (this.refenceForm.doi != '') {
this.holeLoading = true;
this.$api this.$api
.post('/api/Preaccept/searchDoi', { doi: this.refenceForm.doi }) .post('/api/Preaccept/searchDoi', { doi: this.refenceForm.doi })
.then((res) => { .then((res) => {
@@ -632,7 +461,6 @@ export default {
}) })
.catch((e) => { .catch((e) => {
this.$message.error(e.msg); this.$message.error(e.msg);
this.holeLoading = false;
}); });
} else { } else {
this.$message.error('The Doi cannot be empty!'); this.$message.error('The Doi cannot be empty!');
@@ -640,21 +468,27 @@ export default {
// }) // })
}, },
// 全页面加载动画 // 全页面加载动画
openFullScreen1() { openFullScreen1() {},
this.holeLoading = true;
},
// 获取引用文献信息 // 获取引用文献信息
getRefData() { getRefData() {
const loading = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.$api this.$api
.post('api/Preaccept/getArticleReferences', { article_id: this.$route.query.id }) .post('api/Preaccept/getArticleReferences', { article_id: this.$route.query.id })
.then((res) => { .then((res) => {
console.log(res); console.log(res);
if (res.code == 0 && res.data.refers.length > 0) { if (res.code == 0 && res.data.refers.length > 0) {
this.tableData = res.data.refers; this.tableData = res.data.refers;
this.chanFerFormRepeatList = Object.values(res.data.repeat);
} }
this.holeLoading = false; loading.close();
}) })
.catch((err) => { .catch((err) => {
loading.close();
console.log(err); console.log(err);
}); });
}, },
@@ -677,15 +511,9 @@ export default {
// }, // },
// 获取解析数据 // 获取解析数据
getParseData() { getParseData() {
this.linVisible = false;
this.parseVisible = true;
this.isUpload = true;
this.linVisible=false;
this.parseVisible = true;
this.isUpload=true
}, },
// 导入文本域 // 导入文本域
handleparse() { handleparse() {
@@ -702,17 +530,16 @@ this.linVisible=false;
referFile: this.form.referFile referFile: this.form.referFile
}) })
.then((res) => { .then((res) => {
loading.close() loading.close();
if (res.code == 0) { if (res.code == 0) {
this.getParseData(); this.getParseData();
}else{ loading.close() } else {
loading.close();
this.$message.error(res.msg); this.$message.error(res.msg);
} }
}) })
.catch((err) => { .catch((err) => {
loading.close() loading.close();
console.log(err); console.log(err);
}); });
}, },
@@ -1114,7 +941,6 @@ this.linVisible=false;
return this.baseUrl + 'api/Preaccept/up_refer_file'; return this.baseUrl + 'api/Preaccept/up_refer_file';
} }
}, },
watch: { watch: {
SourceType: { SourceType: {
@@ -1130,20 +956,20 @@ this.linVisible=false;
deep: true // 可以深度检测到 person 对象的属性值的变化 deep: true // 可以深度检测到 person 对象的属性值的变化
}, },
//监听文件是否上传 //监听文件是否上传
isUpload: { isUpload: {
handler(val, oldVal) { handler(val, oldVal) {
if (this.isUpload) { if (this.isUpload) {
this.uploadTimer = setInterval(async () => { this.uploadTimer = setInterval(async () => {
//需要定时执行的代码 //需要定时执行的代码
this.progressPercent = await this.getProgress(); this.progressPercent = await this.getProgress();
}, 1000); }, 1000);
} else { } else {
clearInterval(this.uploadTimer); clearInterval(this.uploadTimer);
this.currentFile = {}; this.currentFile = {};
}
},
deep: true
} }
},
deep: true,
},
} }
}; };
</script> </script>
@@ -1183,11 +1009,11 @@ this.linVisible=false;
} }
.status { .status {
display: block; display: block;
width: 40px; width: 36px;
height: 40px; height: 36px;
border-radius: 40px; border-radius: 36px;
font-size: 22px; font-size: 22px;
line-height: 40px; line-height: 36px;
color: #fff; color: #fff;
text-align: center; text-align: center;
} }
@@ -1201,7 +1027,9 @@ this.linVisible=false;
display: inline-block; display: inline-block;
} }
.topInfo { .topInfo {
padding: 20px; padding: 0px;
margin-top: -10px;
margin-bottom: 30px;
} }
.topInfo ul { .topInfo ul {
padding-left: 30px; padding-left: 30px;
@@ -1231,7 +1059,7 @@ this.linVisible=false;
font-size: 26px; font-size: 26px;
} }
.mt20 { .mt20 {
margin-top: 20px; margin-top: 14px;
} }
.content_box { .content_box {
padding: 15px 10px; padding: 15px 10px;
@@ -1245,7 +1073,7 @@ p {
font-size: 14px; font-size: 14px;
} }
.mt10 { .mt10 {
margin-top: 10px; margin-top: 14px;
} }
.more { .more {
font-weight: bold; font-weight: bold;
@@ -1295,43 +1123,75 @@ p {
/deep/ .el-table tr:nth-child(2n) { /deep/ .el-table tr:nth-child(2n) {
background: #fff; background: #fff;
} }
::v-deep .reference-dialog .el-dialog__body{ ::v-deep .reference-dialog .el-dialog__body {
padding: 0 20px !important; padding: 0 20px !important;
} }
.newpro .el-progress-bar__inner:before { .newpro .el-progress-bar__inner:before {
content: ""; content: '';
width: 100%; width: 100%;
height: 100%; height: 100%;
display: block; display: block;
background-image: repeating-linear-gradient( background-image: repeating-linear-gradient(
-45deg, -45deg,
hsla(0, 0%, 100%, 0.15) 25%, hsla(0, 0%, 100%, 0.15) 25%,
transparent 0, transparent 0,
transparent 50%, transparent 50%,
hsla(0, 0%, 100%, 0.15) 0, hsla(0, 0%, 100%, 0.15) 0,
hsla(0, 0%, 100%, 0.15) 75%, hsla(0, 0%, 100%, 0.15) 75%,
transparent 0, transparent 0,
transparent transparent
); );
background-size: 40px 40px; background-size: 40px 40px;
animation: mymove 2s linear infinite; animation: mymove 2s linear infinite;
} }
@keyframes mymove { @keyframes mymove {
0% { 0% {
background-position: 0; background-position: 0;
} }
25% { 25% {
background-position: 50px; background-position: 50px;
} }
50% { 50% {
background-position: 100px; background-position: 100px;
} }
75% { 75% {
background-position: 150px; background-position: 150px;
} }
100% { 100% {
background-position: 200px; background-position: 200px;
} }
} }
::v-deep .operation1 .el-button--mini {
font-size: 14px !important;
padding: 6px 10px !important;
zoom: 0.9;
}
.itemChanged {
display: inline-block;
background: #006699;
color: #fff;
padding: 5px;
border-radius: 0 0 7px 7px;
left: 0;
top: 0;
}
.template-info {
margin-top: 20px;
background: rgb(244, 244, 245);
border: 1px solid rgb(211, 212, 214);
font-size: 14px;
color: #606266;
padding-left: 15px;
border-radius: 4px;
padding: 14px;
box-sizing: border-box;
}
.template-title {
/* font-size: 16px; */
font-weight: bold;
margin-bottom: 10px;
color: #333;
display: inline-block;
}
</style> </style>

View File

@@ -819,7 +819,10 @@
<br /> <br />
<font style="color: #006699">3.Value:</font> This manuscript belongs to the advanced topic and can attract wide <font style="color: #006699">3.Value:</font> This manuscript belongs to the advanced topic and can attract wide
attention. attention.
</p> <br />
<span style="margin-top:6px"> please download the manuscript template <font @click="dowloadFileTemplate()" style="color: #006699;margin-left: 2px;cursor: pointer;"> <i class="el-icon-download" style="font-weight: bold"></i> Microsoft Word template</font>.
</span>
</p>
<common-word-html <common-word-html
:articleId="stagingID" :articleId="stagingID"
imgHeight="120px" imgHeight="120px"
@@ -2489,7 +2492,22 @@ this.checkAll = false;
onDeleteTuijian(item, index) { onDeleteTuijian(item, index) {
this.tuiJianForm.splice(index, 1); this.tuiJianForm.splice(index, 1);
}, },
dowloadFileTemplate(){
var filePath = 'https://submission.tmrjournals.com/public/ArticleTemplate/manuscirpt/ManuscirptWordTemplate.docx';
// 获取heads中的filename文件名
let downloadElement = document.createElement('a');
// 创建下载的链接
downloadElement.href = filePath; // 下载后文件名
downloadElement.target = '_blank';
document.body.appendChild(downloadElement);
// 点击下载
downloadElement.click();
// 下载完成移除元素
document.body.removeChild(downloadElement);
},
// 下载文件 // 下载文件
dowloadFile(file) { dowloadFile(file) {
let filePath = '/public/' + file.url; let filePath = '/public/' + file.url;

View File

@@ -1457,7 +1457,16 @@ export default {
window.open(routeData.href, '_blank'); window.open(routeData.href, '_blank');
}, },
// 算平均分 // 算平均分
avegeCount(arry) {
var ratedLength = arry.map(item => item.rated).filter(rated => rated&&rated>0).length;
let str = 0;
let all = 0;
for (let i = 0; i < arry.length; i++) {
all += Number(arry[i].rated);
}
str = (all / ratedLength).toFixed(1);
return str;
},
toggleShowAll(item, i) { toggleShowAll(item, i) {
this.$set(this.tableData[i], 'showAll', !item.showAll); this.$set(this.tableData[i], 'showAll', !item.showAll);
this.$forceUpdate(); this.$forceUpdate();
@@ -2639,20 +2648,7 @@ export default {
//文章类型 //文章类型
// 算平均分
avegeCount(arry) {
console.log('arry at line 2643:', arry)
var ratedLength = arry.map(item => item.rated).filter(rated => rated&&rated>0).length;
let str = 0;
let all = 0;
for (let i = 0; i < arry.length; i++) {
all += arry[i].rated;
}
str = (all / ratedLength).toFixed(1);
return str;
},
// 算终审分 // 算终审分
finalCount(arry) { finalCount(arry) {
let str = 0; let str = 0;

View File

@@ -222,7 +222,17 @@ export default {
// 跳页录入排版 // 跳页录入排版
changeEnter(val) { changeEnter(val) {
this.$router.push('/articleListEditor_B1?id=' + val.p_article_id); window.open(
this.$router.resolve({
path: '/articleListEditor_B1',
query: {
id: val.p_article_id,
}
}).href,
'_blank'
);
} }
} }
}; };

View File

@@ -1,16 +1,17 @@
<template> <template>
<div> <div style="width: 100%; height: 100%">
<div class="tab_post"> <div class="tab_post">
<el-button <el-button
size="mini" size="mini"
type="success" type="success"
plain plain
icon="el-icon-tickets" icon="el-icon-tickets"
@click="showdetaileditor(detailMes)" @click="showdetaileditor(detailMes)"
style="padding:6px;margin-left: 0px;position: absolute;bottom: -32px;left: 0px;" style="padding: 6px; margin-left: 0px; position: absolute; bottom: 20px; left: 0px"
> Detailed for MS</el-button >
> Detailed for MS</el-button
<div v-for="(item, index) in tabsList" @click="jumpTab(index, item)" :class="tabName == item.refName ? 'P_style' : ''"> >
<div class="tab_item" v-for="(item, index) in tabsList" @click="jumpTab(index, item)" :class="tabName == item.refName ? 'P_style' : ''">
<h5> <h5>
<span>{{ index + 1 }}</span> <span>{{ index + 1 }}</span>
{{ item.name }} {{ item.name }}
@@ -23,36 +24,28 @@
<i class="el-icon-finished"></i> <i class="el-icon-finished"></i>
Push Online Push Online
</el-button> </el-button>
<div class="editorial_advisory_board" style="margin: 12px 0 0" v-if="finalReview"> <div class="editorial_advisory_board" style="margin: 20px 0 0" v-if="finalReview">
<li>
<li>Editorial Advisory Board : Editorial Advisory Board :
<template v-if="finalReview.reviewer_id"> <template v-if="finalReview.reviewer_id">
<span style="font-weight: bold;color: #333;" v-if="finalReview.realname">{{finalReview.realname}}</span> <span style="font-weight: bold; color: #333" v-if="finalReview.realname">{{ finalReview.realname }}</span>
<span style="font-weight: bold;color: #333;" v-else>No reviewer name</span> <span style="font-weight: bold; color: #333" v-else>No reviewer name</span>
</template> </template>
<span v-else>No</span> <span v-else>No</span>
</li>
</li> <template v-if="finalReview.reviewer_id">
<template v-if="finalReview.reviewer_id"> <li>Received : {{ finalReview.received_time ? finalReview.received_time : 'No Time' }}</li>
<li>Received : {{ finalReview.received_time? finalReview.received_time : 'No Time' }}</li> <li>Revision : {{ finalReview.revision_time ? finalReview.revision_time : 'No Time' }}</li>
<li>Revision : {{ finalReview.revision_time? finalReview.revision_time : 'No Time' }}</li> <li>Accepted : {{ finalReview.accepted_time ? finalReview.accepted_time : 'No Time' }}</li>
<li>Accepted : {{ finalReview.accepted_time? finalReview.accepted_time : 'No Time' }}</li> <li>Available online : {{ finalReview.available_online ? finalReview.available_online : 'No Time' }}</li>
<li>Available online : {{ finalReview.available_online? finalReview.available_online : 'No Time' }}</li> </template>
</template>
</div> </div>
</div> </div>
</div> </div>
<div <div class="scroll-content guanSty" @scroll="onScroll" :style="'height: calc(100%);overflow: auto;'">
class="scroll-content guanSty"
@scroll="onScroll"
:style="'overflow-x: hidden; overflow-y: auto;height:' + contentStyleObj.height"
>
<!-- 基本信息 --> <!-- 基本信息 -->
<div :ref="tabsList[0].refName" class="scroll-item"> <div :ref="tabsList[0].refName" class="scroll-item">
<div class="bor_style_onli" style="margin: 20px 0"> <div class="bor_style_onli" style="margin: 20px 0">
@@ -132,35 +125,34 @@
<el-input v-model="detailMes.author_contribution"></el-input> <el-input v-model="detailMes.author_contribution"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="Abstract :" prop="abstract"> <el-form-item label="Abstract :" prop="abstract">
<template slot="label"> <template slot="label"> <span style="color: #f56c6c; margin-right: 4px">*</span>Abstract : </template>
<span style="color: #f56c6c; margin-right: 4px">*</span>Abstract :
</template>
<tinymce <tinymce
type="Abstract" type="Abstract"
:height="160" :height="160"
:id="id" ref="tinymceChild1"
ref="tinymceChild1" :wordStyle="`p{font-size: 13px;}`"
:wordStyle="`p{font-size: 13px;}`" :isAutomaticUpdate="true"
:isAutomaticUpdate="true" @getContent="getContent"
@getContent="getContent" @updateChange="updateChange"
@updateChange="updateChange" :value="abstract"
:value="abstract" class="paste-area text-container"
class="paste-area text-container" :toolbar="[
:toolbar="['bold italic |customBlue removeBlue|myuppercase myuppercasea Line|subscript superscript|clearButton']" 'bold italic |customBlue removeBlue|myuppercase myuppercasea Line|subscript superscript|clearButton'
style=" ]"
line-height: 12px; style="
overflow: auto; line-height: 12px;
font-size: 13px; /* 字体大小 */ overflow: auto;
margin-top: 0pt; /* 段前间距 */ font-size: 13px; /* 字体大小 */
margin-bottom: 0pt; /* 段间距 */ margin-top: 0pt; /* 段间距 */
" margin-bottom: 0pt; /* 段后间距 */
></tinymce> "
></tinymce>
<!-- <quill-editor ref="myTextEditor" v-model="detailMes.abstract" :options="editorOption"> </quill-editor> --> <!-- <quill-editor ref="myTextEditor" v-model="detailMes.abstract" :options="editorOption"> </quill-editor> -->
</el-form-item> </el-form-item>
</el-form> </el-form>
<div style="text-align: center; margin: 25px 0 0 0"> <div style="text-align: center; margin: 25px 0 0 0">
<el-button type="primary" @click="ZsSaveMes" style="width: 400px; margin-right: 20px"> <el-button type="primary" @click="ZsSaveMes" class="save-btn">
<i class="el-icon-check"></i> <i class="el-icon-check"></i>
Save Essential Information Save Essential Information
</el-button> </el-button>
@@ -202,21 +194,34 @@
</p> </p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="organs" label="Affiliated organization" width="300%"> <el-table-column prop="organs" label="Affiliated organization" min-width="300px">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-for="(u, i) in scope.row.organs">{{ u.organ_name }}<br /></span> <span v-for="(u, i) in scope.row.organs">{{ u.organ_name }}<br /></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="author_country" label="Country"></el-table-column> <el-table-column prop="author_country" label="Country" width="140px"></el-table-column>
<el-table-column prop="orcid" label="ORCID"></el-table-column> <el-table-column prop="orcid" label="ORCID"></el-table-column>
<el-table-column label="" width="190" align="center"> <el-table-column label="" width="190" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button icon="el-icon-edit" type="primary" @click="authorhandEdit(scope.$index, scope.row)" <div class="operation">
>Edit <el-button
</el-button> icon="el-icon-edit"
<el-button type="danger" icon="el-icon-delete" class="red" @click="authorDelete(scope.$index, scope.row)" size="mini"
>Delete</el-button plain
> type="primary"
@click="authorhandEdit(scope.$index, scope.row)"
>Edit
</el-button>
<el-button
size="mini"
type="danger"
plain
icon="el-icon-delete"
class="red"
@click="authorDelete(scope.$index, scope.row)"
>Delete</el-button
>
</div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -250,13 +255,13 @@
<el-form-item label="Affiliated organization :"> <el-form-item label="Affiliated organization :">
<el-checkbox-group v-model="addFomauthor.organs" class="suoshu_jigou"> <el-checkbox-group v-model="addFomauthor.organs" class="suoshu_jigou">
<el-checkbox <el-checkbox
v-for="(item,index) in mechanism" v-for="(item, index) in mechanism"
style="display: block" style="display: block"
name="type" name="type"
:label="item.p_article_organ_id" :label="item.p_article_organ_id"
:key="item.p_article_organ_id" :key="item.p_article_organ_id"
> >
<span style="margin-right:4px ;">{{ index+1 }}. </span> {{ item.organ_name }} <span style="margin-right: 4px">{{ index + 1 }}. </span> {{ item.organ_name }}
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
@@ -316,12 +321,12 @@
<el-form-item label="Affiliated organization :"> <el-form-item label="Affiliated organization :">
<el-checkbox-group v-model="editFomauthor.organs" class="suoshu_jigou"> <el-checkbox-group v-model="editFomauthor.organs" class="suoshu_jigou">
<el-checkbox <el-checkbox
v-for="(item,index) in mechanism" v-for="(item, index) in mechanism"
style="display: block" style="display: block"
:label="item.p_article_organ_id + ''" :label="item.p_article_organ_id + ''"
:key="item.p_article_organ_id" :key="item.p_article_organ_id"
> >
<span style="margin-right:4px ;">{{ index+1 }}. </span> {{ item.organ_name }} <span style="margin-right: 4px">{{ index + 1 }}. </span> {{ item.organ_name }}
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
@@ -364,12 +369,24 @@
<el-table-column prop="organ_name" label="Affiliation"></el-table-column> <el-table-column prop="organ_name" label="Affiliation"></el-table-column>
<el-table-column label="" width="190" align="center"> <el-table-column label="" width="190" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button icon="el-icon-edit" type="primary" @click="schoolhandEdit(scope.$index, scope.row)" <div class="operation">
>Edit <el-button
</el-button> icon="el-icon-edit"
<el-button icon="el-icon-delete" type="danger" @click="schoolDelete(scope.$index, scope.row)" size="mini"
>Delete</el-button plain
> type="primary"
@click="schoolhandEdit(scope.$index, scope.row)"
>Edit
</el-button>
<el-button
size="mini"
icon="el-icon-delete"
plain
type="danger"
@click="schoolDelete(scope.$index, scope.row)"
>Delete</el-button
>
</div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -402,7 +419,7 @@
<!-- 文件上传 --> <!-- 文件上传 -->
<div :ref="tabsList[2].refName" class="scroll-item"> <div :ref="tabsList[2].refName" class="scroll-item">
<div class="bor_style_onli" style="height: auto !important;max-height: 700px"> <div class="bor_style_onli" style="height: auto !important">
<h4>{{ tabsList[2].name }}</h4> <h4>{{ tabsList[2].name }}</h4>
<el-form label-width="220px"> <el-form label-width="220px">
<el-form-item label="SUB File Upload :"> <el-form-item label="SUB File Upload :">
@@ -572,7 +589,7 @@
<!-- 参考文献 --> <!-- 参考文献 -->
<div :ref="tabsList[3].refName" class="scroll-item"> <div :ref="tabsList[3].refName" class="scroll-item">
<div class="bor_style_onli" > <div class="bor_style_onli">
<h4>{{ tabsList[3].name }}</h4> <h4>{{ tabsList[3].name }}</h4>
<PreIngestedEditorProduce <PreIngestedEditorProduce
type="produce" type="produce"
@@ -580,20 +597,22 @@
:article_id="detailMes.article_id" :article_id="detailMes.article_id"
:p_article_id="p_article_id" :p_article_id="p_article_id"
></PreIngestedEditorProduce> ></PreIngestedEditorProduce>
</div> </div>
</div> </div>
<!-- Html排版 --> <!-- Html排版 -->
<div :ref="tabsList[4].refName" class="scroll-item"> <div :ref="tabsList[4].refName" class="scroll-item">
<div class="bor_style_onli" style="height: auto !important;max-height: 700px"> <div class="bor_style_onli" style="height: auto !important">
<h4>{{ tabsList[4].name }}</h4> <h4>{{ tabsList[4].name }}</h4>
<div> <div>
<p style="color: #606266; font-size: 14px; line-height: 21px; margin-bottom: 15px">HTML typesetting and AI proofreading</p> <p style="color: #606266; font-size: 14px; line-height: 21px; margin-bottom: 15px">
HTML typesetting and AI proofreading
</p>
</div> </div>
<div style="text-align: center"> <div style="text-align: center">
<el-button type="primary" @click="htmlContet()" style="width: 300px"> <el-button type="primary" @click="htmlContet()" class="save-btn">
<i class="el-icon-document-copy"></i> <i class="el-icon-document-copy"></i>
Proofread Proofread
</el-button> </el-button>
</div> </div>
</div> </div>
@@ -614,7 +633,7 @@
> >
<el-option v-for="item in fol_low" :key="item.value" :label="item.label" :value="item.value"> </el-option> <el-option v-for="item in fol_low" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select> </el-select>
<el-button type="primary" style="width: 150px; margin: 0 5px 0 15px" @click="EstaBlish"> <el-button type="primary" plain style="width: 150px; margin: 0 5px 0 15px" @click="EstaBlish">
<i class="el-icon-document"></i> <i class="el-icon-document"></i>
Create Manuscript Create Manuscript
</el-button> </el-button>
@@ -663,8 +682,16 @@
:on-remove="removefileUpTy" :on-remove="removefileUpTy"
style="display: inline-block" style="display: inline-block"
> >
<div class="el-upload__text" style="padding: 6px 10px; background-color: #006699"> <div
<font style="color: #fff; font-size: 12px"> class="el-upload__text"
style="
padding: 6px 10px;
background-color: #ecf5ff;
border: 1px solid #b3d8ff !important;
border-radius: 2px;
"
>
<font style="color: #409eff; font-size: 12px">
<b class="el-icon-upload2" style="font-weight: bold; margin-right: 5px"></b> <b class="el-icon-upload2" style="font-weight: bold; margin-right: 5px"></b>
Click Re upload Click Re upload
</font> </font>
@@ -680,7 +707,6 @@
<h5 style="font-size: 16px; margin: 0 0 30px 0; letter-spacing: -0.5px">Improve information</h5> <h5 style="font-size: 16px; margin: 0 0 30px 0; letter-spacing: -0.5px">Improve information</h5>
<!-- 时间Doi简介信息 --> <!-- 时间Doi简介信息 -->
<el-form ref="Abs_Form" :model="detailMes" :rules="rules" label-width="150px" style="margin-top: 30px"> <el-form ref="Abs_Form" :model="detailMes" :rules="rules" label-width="150px" style="margin-top: 30px">
<el-form-item label="Doi :" prop="doi"> <el-form-item label="Doi :" prop="doi">
<span>https://doi.org/10.53388/</span> <span>https://doi.org/10.53388/</span>
<el-input v-model="detailMes.doi" style="margin-left: 10px; width: 325px"> </el-input> <el-input v-model="detailMes.doi" style="margin-left: 10px; width: 325px"> </el-input>
@@ -698,7 +724,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div style="text-align: center; margin: 25px 0 0 0"> <div style="text-align: center; margin: 25px 0 0 0">
<el-button type="primary" @click="ZsSaveAbs" style="width: 300px; margin-right: 20px"> <el-button type="primary" @click="ZsSaveAbs" class="save-btn">
<i class="el-icon-check"></i> <i class="el-icon-check"></i>
Save Essential Information Save Essential Information
</el-button> </el-button>
@@ -724,7 +750,7 @@
<div style="height: 1px; background-color: #c5e1f1; width: 100%; margin: 30px 0 20px 0"></div> <div style="height: 1px; background-color: #c5e1f1; width: 100%; margin: 30px 0 20px 0"></div>
<div style="text-align: center; margin: 25px 0 0 0" v-if="detailMes.proof_state == 0"> <div style="text-align: center; margin: 25px 0 0 0" v-if="detailMes.proof_state == 0">
<el-button type="primary" @click="TjQdingFirm" style="width: 300px; margin-right: 20px"> <el-button type="primary" @click="TjQdingFirm" class="save-btn">
<i class="el-icon-document-checked"></i> <i class="el-icon-document-checked"></i>
Ask the author to confirm Ask the author to confirm
</el-button> </el-button>
@@ -831,7 +857,13 @@
</el-dialog> </el-dialog>
<!-- 预览文章--> <!-- 预览文章-->
<el-dialog :title="`${deMesYul.title}`" :visible.sync="preArtVisible" width="1200px" class="htmlDialog" :close-on-click-modal="false"> <el-dialog
:title="`${deMesYul.title}`"
:visible.sync="preArtVisible"
width="1200px"
class="htmlDialog"
:close-on-click-modal="false"
>
<div class="aArticle"> <div class="aArticle">
<div class="aArt_doi"> <div class="aArt_doi">
{{ deMesYul.journal_title }} {{ deMesYul.journal_title }}
@@ -962,8 +994,7 @@ export default {
], ],
detailMes: { detailMes: {
type: '', type: '',
journal_special_id: 'None', journal_special_id: 'None'
}, },
abstract: '', abstract: '',
opInstal: [], opInstal: [],
@@ -1336,47 +1367,40 @@ export default {
this.getHight(); this.getHight();
window.addEventListener('resize', this.getHight); window.addEventListener('resize', this.getHight);
this.getData(); this.getData();
this.getAuthorJG(); this.getAuthorJG();
this.getCount(); this.getCount();
this.getWorldPdf(); this.getWorldPdf();
}, },
methods: { methods: {
getArticleFinal(id){ getArticleFinal(id) {
// api/Finalreview/getRecord // api/Finalreview/getRecord
this.$api this.$api
.post('api/Finalreview/getRecord', { .post('api/Finalreview/getRecord', {
article_id: id, article_id: id
// article_id: 6075 // article_id: 6075
}) })
.then((res) => { .then((res) => {
console.log('res at line 1460:', res) console.log('res at line 1460:', res);
if (res.status == 1) { if (res.status == 1) {
this.finalReview = res.data; this.finalReview = res.data;
} else {
this.finalReview = { reviewer_id: null };
}else{
this.finalReview = {reviewer_id: null};
} }
}) });
}, },
updateChange(content){ updateChange(content) {
this.abstract = content;
this.abstract = content
}, },
getTinymceContent(type) { getTinymceContent(type) {
this.$refs.tinymceChild1.getContent(type); this.$refs.tinymceChild1.getContent(type);
}, },
getContent(type, content) { getContent(type, content) {
console.log('content at line 1449:', content) console.log('content at line 1449:', content);
console.log('type at line 1449:', type) console.log('type at line 1449:', type);
}, },
// 跳转文章详情 // 跳转文章详情
showdetaileditor(data) { showdetaileditor(data) {
this.$router.push({ this.$router.push({
path: 'articleDetailEditor', path: 'articleDetailEditor',
query: { query: {
@@ -1421,7 +1445,7 @@ export default {
this.addFomauthor.p_article_id = this.p_article_id; this.addFomauthor.p_article_id = this.p_article_id;
this.addFomschool.p_article_id = this.p_article_id; this.addFomschool.p_article_id = this.p_article_id;
this.UpTypeFile.p_article_id = this.p_article_id; this.UpTypeFile.p_article_id = this.p_article_id;
this.abstract = '' this.abstract = '';
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: 'Loading...', text: 'Loading...',
@@ -1436,11 +1460,10 @@ this.abstract = ''
if (res.code == 0) { if (res.code == 0) {
this.detailMes = res.data.production; this.detailMes = res.data.production;
this.abstract = res.data.production.abstract; this.abstract = res.data.production.abstract;
if(this.abstract != ''){ if (this.abstract != '') {
this.$nextTick(()=>{ this.$nextTick(() => {
this.$refs.tinymceChild1.setContent(this.abstract); this.$refs.tinymceChild1.setContent(this.abstract);
}) });
} }
this.UpTyFIle = res.data.production.file_pdf; this.UpTyFIle = res.data.production.file_pdf;
this.getArticleFinal(res.data.production.article_id); this.getArticleFinal(res.data.production.article_id);
@@ -1571,8 +1594,10 @@ this.abstract = ''
this.deMesYul.journal_title = res.data.journal.title; this.deMesYul.journal_title = res.data.journal.title;
let reg = new RegExp('<q>', 'g'); let reg = new RegExp('<q>', 'g');
let reb = new RegExp('</q>', 'g'); let reb = new RegExp('</q>', 'g');
this.deAuthorYul.author = this.deAuthorYul.author.replace(reg, '<sup>'); this.deAuthorYul.author = this.deAuthorYul.author ? this.deAuthorYul.author.replace(reg, '<sup>') : '';
this.deAuthorYul.author = this.deAuthorYul.author.replace(reb, '</sup>,<span style="margin-left:8px"></span>'); this.deAuthorYul.author = this.deAuthorYul.author
? this.deAuthorYul.author.replace(reb, '</sup>,<span style="margin-left:8px"></span>')
: '';
let lastIndex = this.deAuthorYul.author.lastIndexOf(','); let lastIndex = this.deAuthorYul.author.lastIndexOf(',');
this.deAuthorYul.author = this.deAuthorYul.author =
this.deAuthorYul.author.substring(0, lastIndex) + this.deAuthorYul.author.substring(0, lastIndex) +
@@ -1728,63 +1753,61 @@ this.abstract = ''
return e.stage_year + ' Vol.' + e.stage_vol + ' issue.' + e.stage_no + e.stage_pagename + e.stage_page; return e.stage_year + ' Vol.' + e.stage_vol + ' issue.' + e.stage_no + e.stage_pagename + e.stage_page;
}, },
async abstractFormat(content) { async abstractFormat(content) {
content = this.$commonJS.transformHtmlString(content); content = this.$commonJS.transformHtmlString(content);
var div = document.createElement('div'); var div = document.createElement('div');
div.innerHTML = content; div.innerHTML = content;
// 1. 剔除所有 img 标签 // 1. 剔除所有 img 标签
var imgTags = div.getElementsByTagName('img'); var imgTags = div.getElementsByTagName('img');
for (var i = imgTags.length - 1; i >= 0; i--) { for (var i = imgTags.length - 1; i >= 0; i--) {
imgTags[i].parentNode.removeChild(imgTags[i]); imgTags[i].parentNode.removeChild(imgTags[i]);
} }
// 2. 新增:剔除所有 table 相关标签table、tr、td // 2. 新增:剔除所有 table 相关标签table、tr、td
var tableTags = div.getElementsByTagName('table'); var tableTags = div.getElementsByTagName('table');
for (var i = tableTags.length - 1; i >= 0; i--) { for (var i = tableTags.length - 1; i >= 0; i--) {
tableTags[i].parentNode.removeChild(tableTags[i]); tableTags[i].parentNode.removeChild(tableTags[i]);
} }
// 3. 替换 strong → b、em → i原有逻辑 // 3. 替换 strong → b、em → i原有逻辑
var strongTags = div.getElementsByTagName('strong'); var strongTags = div.getElementsByTagName('strong');
for (var i = 0; i < strongTags.length; i++) { for (var i = 0; i < strongTags.length; i++) {
var bTag = document.createElement('b'); var bTag = document.createElement('b');
bTag.innerHTML = strongTags[i].innerHTML; bTag.innerHTML = strongTags[i].innerHTML;
strongTags[i].parentNode.replaceChild(bTag, strongTags[i]); strongTags[i].parentNode.replaceChild(bTag, strongTags[i]);
} }
var emTags = div.getElementsByTagName('em'); var emTags = div.getElementsByTagName('em');
for (var i = 0; i < emTags.length; i++) { for (var i = 0; i < emTags.length; i++) {
var iTag = document.createElement('i'); var iTag = document.createElement('i');
iTag.innerHTML = emTags[i].innerHTML; iTag.innerHTML = emTags[i].innerHTML;
emTags[i].parentNode.replaceChild(iTag, emTags[i]); emTags[i].parentNode.replaceChild(iTag, emTags[i]);
} }
// 处理 p 标签 + 解码 // 处理 p 标签 + 解码
content = div.innerHTML; content = div.innerHTML;
content = content.replace(/^<p>\s*(.*?)\s*<\/p>$/, '$1').trim(); content = content.replace(/^<p>\s*(.*?)\s*<\/p>$/, '$1').trim();
content = await this.$commonJS.decodeHtml(content); content = await this.$commonJS.decodeHtml(content);
return content; return content;
}, },
// 1----保存稿件信息 // 1----保存稿件信息
async ZsSaveMes() { async ZsSaveMes() {
var abstractStr = '';
var abstractStr = "";
if (this.detailMes.journal_stage_id == 0) { if (this.detailMes.journal_stage_id == 0) {
this.$message.error('Please select an installment!'); this.$message.error('Please select an installment!');
return; return;
} }
if (this.abstract == "") { if (this.abstract == '') {
this.$message.error('Please input abstract!'); this.$message.error('Please input abstract!');
return; return;
} else{ } else {
abstractStr = await this.abstractFormat(this.abstract); abstractStr = await this.abstractFormat(this.abstract);
} }
console.log('abstractStr at line 1820:', abstractStr) console.log('abstractStr at line 1820:', abstractStr);
this.$refs.Mes_Form.validate((valid) => { this.$refs.Mes_Form.validate((valid) => {
if (valid) { if (valid) {
this.$api this.$api
.post('api/Production/editProduction', {...this.detailMes,abstract:abstractStr}) .post('api/Production/editProduction', { ...this.detailMes, abstract: abstractStr })
.then((res) => { .then((res) => {
if (res.code == 0) { if (res.code == 0) {
this.$message.success(`Successfully save the article!`); this.$message.success(`Successfully save the article!`);
@@ -1807,11 +1830,11 @@ this.abstract = ''
// 2----添加作者操作 // 2----添加作者操作
add_Authorclick(index, row) { add_Authorclick(index, row) {
this.aid = index; this.aid = index;
this. addFomauthor={ this.addFomauthor = {
is_first: '0', is_first: '0',
is_report: '0', is_report: '0',
organs: [] organs: []
} };
this.addFomauthor.p_article_id = this.p_article_id; this.addFomauthor.p_article_id = this.p_article_id;
this.addAuthor = true; this.addAuthor = true;
}, },
@@ -1901,7 +1924,7 @@ this.abstract = ''
// 2----添加机构操作 // 2----添加机构操作
add_Schoolclick(index, row) { add_Schoolclick(index, row) {
this.aid = index; this.aid = index;
this.addFomschool={} this.addFomschool = {};
this.addFomschool.p_article_id = this.p_article_id; this.addFomschool.p_article_id = this.p_article_id;
this.addSchool = true; this.addSchool = true;
}, },
@@ -2880,26 +2903,34 @@ this.abstract = ''
} }
}, },
// 滚动条滚动
onScroll(e) { onScroll(e) {
let scrollItems = document.querySelectorAll('.scroll-item'); const scrollContainer = e.target;
for (let i = scrollItems.length - 1; i >= 0; i--) { const scrollItems = document.querySelectorAll('.scroll-item');
// 判断滚动条滚动距离是否大于当前滚动项可滚动距离
let judge = e.target.scrollTop >= scrollItems[i].offsetTop - scrollItems[0].offsetTop; // 遍历所有滚动项,找到“当前在可视区域内”的项
if (judge) { for (let i = 0; i < scrollItems.length; i++) {
const item = scrollItems[i];
this.tabIndex = i.toString(); // 计算项相对于滚动容器的位置(顶部距离)
const itemTop = item.offsetTop - scrollContainer.offsetTop;
// 找对应的tab-name值 // 计算项的底部距离
this.tabName = this.tabsList[this.tabIndex].refName; const itemBottom = itemTop + item.offsetHeight;
// this.tabClick = this.tabsList[this.tabIndex].refName
break; // 判断:项的顶部 <= 滚动距离,且项的底部 >= 滚动距离(即项在可视区域内)
} const isInView = (itemTop <= scrollContainer.scrollTop) && (itemBottom >= scrollContainer.scrollTop);
if (isInView) {
this.tabIndex = i.toString();
// 先判断tabsList是否存在对应索引避免报错
if (this.tabsList[i]) {
this.tabName = this.tabsList[i].refName;
} }
}, break; // 找到第一个匹配的项就停止
}
}
},
getHight() { getHight() {
this.contentStyleObj.height = window.innerHeight - 140 + 'px'; this.contentStyleObj.height = window.innerHeight - 60 + 'px';
// this.jumpTab(0,this.tabsList[0]) // this.jumpTab(0,this.tabsList[0])
} }
}, },
@@ -2921,6 +2952,27 @@ this.abstract = ''
color: #888; color: #888;
font-size: 12px; font-size: 12px;
} }
.bor_style_onli {
height: auto !important;
overflow: auto;
/* min-height: 400px; */
}
.save-btn {
width: 250px !important;
margin: 20px 0px 0px;
float: right;
}
.operation {
zoom: 0.9;
}
::v-deep .operation .el-button--mini {
font-size: 14px !important;
padding: 6px 10px !important;
}
.tab_item{
height: 6vh;
min-height: 60px;
}
</style> </style>
<style> <style>
.handle-box { .handle-box {
@@ -2932,11 +2984,12 @@ this.abstract = ''
} }
.tab_post { .tab_post {
height: calc(100vh - 60px);
background-color: #fafafa; background-color: #fafafa;
position: absolute; position: absolute;
left: 25px; left: 15px;
top: 40px; top: 60px;
width: 220px; width: 260px;
z-index: 50; z-index: 50;
} }
@@ -2987,7 +3040,14 @@ this.abstract = ''
position: absolute; position: absolute;
border: 1px dashed #999; border: 1px dashed #999;
} }
.tab_post > div:nth-child(9) .line { .tab_post > div:nth-child(8) .line {
top: 40px;
left: 11px;
bottom: -10px;
position: absolute;
border: 1px dashed #999;
}
.tab_post > div:nth-child(10) .line {
top: 40px; top: 40px;
left: 11px; left: 11px;
bottom: -10px; bottom: -10px;
@@ -3014,7 +3074,7 @@ this.abstract = ''
} }
.scroll-item { .scroll-item {
margin: 0 30px 50px 255px; margin: 0 2px 50px 280px;
} }
.bor_style_onli { .bor_style_onli {

View File

@@ -0,0 +1,137 @@
<template>
<!-- 绑定 ref 用于获取 iframe 元素 -->
<div>
<el-input
type="textarea"
rows="20"
v-model="queryTitle"
placeholder="输入参考文献标题查询"
@keyup.enter="fetchCrossRefData"
></el-input>
<button @click="queryAllReferences">查询参考文献</button>
<!-- 展示查询结果 -->
<div v-if="referenceList.length">
<h3>查询结果 {{ totalResults }} </h3>
<div v-for="(item, index) in referenceList" :key="index">
{{ item }}
</div>
</div>
</div>
</template>
<script>
import axios from 'axios';
export default {
name: 'IframeFillInput',
data() {
return {
queryTitle: '', // 输入框绑定的查询标题
referenceList: [], // 查询结果列表
totalResults: 0, // 总结果数量
iframeElem: null // iframe 元素引用
}
},
// Vue 2 中通过 ref 获取 DOM 元素,在 mounted 钩子中访问
mounted() {
// 获取 iframe 元素实例
this.iframeElem = this.$refs.crossrefIframe;
if (!this.iframeElem) return;
// 监听 iframe 加载完成事件(必须等加载完成再操作 DOM
this.iframeElem.addEventListener('load', this.handleIframeLoad);
},
beforeDestroy() {
// 组件销毁前移除事件监听,避免内存泄漏
if (this.iframeElem) {
this.iframeElem.removeEventListener('load', this.handleIframeLoad);
}
},
methods: {
// 示例查询标题包含“hypertensive nephropathy”的所有文献
async queryAllReferences() {
const queryParams = {
'query.title': 'hypertensive nephropathy' // 你的查询条件
};
const allReferences = await this.fetchTargetReferences(queryParams);
console.log('allReferences at line 60:', allReferences)
// 后续处理:格式化、查重等
// this.formatReferences(allReferences);
},
// 在 Vue 2 组件的 methods 中添加
// 提取左侧46条的标题逐个查询API
async fetchTargetReferences(manualReferences) {
const targetResults = [];
for (const ref of manualReferences) {
try {
// 按“标题+作者”精准查询
const res = await axios.get('https://api.crossref.org/works', {
params: {
'query.title': ref.title,
'query.author': ref.author,
rows: 1 // 只取最匹配的1条
}
});
if (res.data.message.items.length > 0) {
targetResults.push(res.data.message.items[0]);
} else {
// 未匹配到的情况
targetResults.push({ ...ref, status: '未找到匹配数据' });
}
} catch (e) {
targetResults.push({ ...ref, status: '查询失败' });
}
// 限流间隔
await new Promise(resolve => setTimeout(resolve, 500));
}
console.log('左侧46条对应的API数据', targetResults);
return targetResults;
},
// iframe 加载完成后尝试填充输入框
handleIframeLoad() {
try {
// 1. 获取 iframe 内部的文档对象(跨源会直接抛出 DOM 异常)
const iframeDoc = this.iframeElem.contentDocument || this.iframeElem.contentWindow.document;
// 2. 查找目标 input 框(关键:需知道子页面 input 的选择器,如 id/name/class
// 示例1通过 name 查找(假设子页面 input 的 name 为 "query",需按实际调整)
const targetInput = iframeDoc.querySelector('input[name="query"]');
// 示例2通过 id 查找(若知道 input 的 id优先用 id更稳定
// const targetInput = iframeDoc.getElementById('target-input-id');
// 示例3通过类型+位置查找(第一个文本输入框,不稳定,子页面结构变了就失效)
// const targetInput = iframeDoc.querySelectorAll('input[type="text"]')[0];
// 3. 若找到 input 框,赋值填充
if (targetInput) {
targetInput.value = '你想填充的内容'; // 替换为实际要填充的内容
// 可选:触发 input 事件(部分页面需要手动触发事件才会识别输入)
targetInput.dispatchEvent(new Event('input', { bubbles: true }));
targetInput.dispatchEvent(new Event('change', { bubbles: true }));
} else {
console.log('未找到目标输入框(可能选择器错误或子页面结构变更)');
}
} catch (e) {
// 跨源场景下会进入这里,直接提示跨源限制
console.error('填充失败:', e.message);
console.warn('原因:跨源访问被浏览器阻止,或子页面有安全限制(子页面非同源且不可控)');
}
}
}
};
</script>
<style scoped>
/* 可选:调整 iframe 样式 */
iframe {
border: 1px solid #eee;
border-radius: 4px;
}
</style>

View File

@@ -1,28 +1,42 @@
<template> <template>
<div class="success-box" v-if="articleInfo&&(articleInfo.state==0||articleInfo.state==1)"> <div class="success-box" v-if="articleInfo && (articleInfo.state == 0 || articleInfo.state == 1)">
<div :class="{'payment-success': articleInfo.state==1, 'payment-failed': articleInfo.state==0}"> <div :class="{ 'payment-success': articleInfo.state == 1, 'payment-failed': articleInfo.state == 0 }">
<div style="display: flex; align-items: center; margin-bottom: 10px"> <div style="display: flex; align-items: center; margin-bottom: 10px">
<h2 style="margin: 0 auto; display: flex; align-items: center"> <h2 style="margin: 0 auto; display: flex; align-items: center">
<img v-if="articleInfo.state==1" src="@/assets/img/success.png" alt="" style="margin-right: 20px; width: 128px; height: 128px" /> <img
<img v-if="articleInfo.state==0" src="@/assets/img/error.png" alt="" style="margin-right: 20px; width: 128px; height: 128px" /> v-if="articleInfo.state == 1"
{{ articleInfo.state==1 ? 'Payment Successful' : 'Payment Failed' }} src="@/assets/img/success.png"
</h2> alt=""
style="margin-right: 20px; width: 128px; height: 128px"
/>
<img
v-if="articleInfo.state == 0"
src="@/assets/img/error.png"
alt=""
style="margin-right: 20px; width: 128px; height: 128px"
/>
{{ articleInfo.state == 1 ? 'Payment Successful' : 'Payment Failed' }}
</h2>
</div> </div>
<p v-if="articleInfo.state==1">Thank you for your payment. Your order has been successfully processed.</p> <p v-if="articleInfo.state == 1">Thank you for your payment. Your order has been successfully processed.</p>
<p v-else>We are sorry, but your payment has failed. Please try again.</p> <p v-else>We are sorry, but your payment has failed. Please try again.</p>
<!-- <p> <!-- <p>
Article ID: Article ID:
<span style="color: #333; font-weight: 600"> {{ articleInfo.order_sn }}</span> <span style="color: #333; font-weight: 600"> {{ articleInfo.order_sn }}</span>
</p> --> </p> -->
<p v-if="articleInfo.state==1"> <p v-if="articleInfo.state == 1">
Total Amount: <span style="color: #ff5000"></span Total Amount: <span style="color: #ff5000"></span
><span style="color: #ff5000; font-size: 24px; line-height: 24px">{{ formatAmount(total) }} <span class="" style="font-size: 20px;">{{ articleInfo.paystation.currency }}</span></span> ><span style="color: #ff5000; font-size: 24px; line-height: 24px"
>{{ formatAmount(total) }} <span class="" style="font-size: 20px">{{ articleInfo.currency }}</span></span
>
</p> </p>
<!-- <p>Payment Method: {{ paymentMethod }}</p> --> <!-- <p>Payment Method: {{ paymentMethod }}</p> -->
<p v-if="articleInfo.state==1">You will receive an email confirmation shortly.</p> <p v-if="articleInfo.state == 1">You will receive an email confirmation shortly.</p>
<button @click="goBack" :class="articleInfo.state==1?'btn-success':'btn-danger'">Continue Operation</button> <button @click="goBack" :class="articleInfo.state == 1 ? 'btn-success' : 'btn-danger'">Continue Operation</button>
<p :style="articleInfo.state==1?'color:#67c23a':'color:#F56C6C'" style="font-size: 13px; line-height: 40px">Automatically jump after {{ hideSec }} seconds</p> <p :style="articleInfo.state == 1 ? 'color:#67c23a' : 'color:#F56C6C'" style="font-size: 13px; line-height: 40px">
Automatically jump after {{ hideSec }} seconds
</p>
</div> </div>
</div> </div>
</template> </template>
@@ -33,34 +47,33 @@ export default {
return { return {
alertShow: true, alertShow: true,
urlList: { urlList: {
detail: 'api/Preaccept/getPreacceptPayment', detail: 'api/Order/PaystationLookup',
createdOrder: 'api/Order/creatArticleOrder'
}, },
articleInfo: {}, articleInfo: {},
journalInfo: {}, journalInfo: {},
total: '', total: '',
articleId: this.$route.query.id, articleId: this.$route.query.id,
dingshi: null, dingshi: null,
hideSec: 5 hideSec: 10
}; };
}, },
created() { created() {
this.getDetail(); this.getDetail();
}, },
mounted() { mounted() {
this.hideAlert();
}, },
methods: { methods: {
hideAlert() { hideAlert() {
this.dingshi = setInterval(() => { this.dingshi = setInterval(() => {
this.hideSec -= 1; this.hideSec -= 1;
if (this.hideSec == 1) { if (this.hideSec == 1) {
this.goBack(); this.goBack();
return false return false;
} }
// console.log(this.hideSec) // console.log(this.hideSec)
}, 1000); }, 1000);
}, },
formatAmount(amount) { formatAmount(amount) {
@@ -80,15 +93,24 @@ export default {
.then((res) => { .then((res) => {
console.log('res at line 191:', res); console.log('res at line 191:', res);
if (res.code == 0) { if (res.code == 0) {
this.hideAlert();
setTimeout(() => { setTimeout(() => {
if (res.data.result == 'success') {
this.articleInfo = res.data.paystation;
this.articleInfo.state = 1;
this.total = Number(this.articleInfo.amount / 100);
} else if (res.data.result == 'fail') {
this.articleInfo.state = 0;
this.$forceUpdate();
}
loading.close(); loading.close();
this.articleInfo = res.data.order;
this.total = Number(res.data.order.paystation.amount / 100);
}, 1000); }, 1000);
} else {
loading.close();
this.$message.error(res.msg);
} }
}).catch(() => { })
.catch(() => {
loading.close(); loading.close();
}); });
}, },
@@ -112,9 +134,9 @@ export default {
this.$router.replace({ name: 'success' }); this.$router.replace({ name: 'success' });
this.$router.push({ this.$router.push({
path: '/PreIngested', path: '/PreIngested',
query:{ query: {
id: id id: id
} }
}); });
// } // }
// //
@@ -144,7 +166,7 @@ export default {
background-color: #fff; background-color: #fff;
border: 1px solid #fcc3c3; border: 1px solid #fcc3c3;
border-radius: 16px; border-radius: 16px;
color: #F56C6C; color: #f56c6c;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* 添加阴影效果 */ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* 添加阴影效果 */
width: 600px; width: 600px;
} }
@@ -159,7 +181,7 @@ p {
button { button {
padding: 10px 20px; padding: 10px 20px;
color: #fff; color: #fff;
border: none; border: none;
border-radius: 5px; border-radius: 5px;
@@ -167,20 +189,19 @@ button {
margin-top: 20px; margin-top: 20px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); /* 按钮添加阴影效果 */ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); /* 按钮添加阴影效果 */
} }
.btn-success{ .btn-success {
background-color: #00c286; background-color: #00c286;
} }
.btn-danger{ .btn-danger {
background-color: #F56C6C; background-color: #f56c6c;
} }
.btn-success:hover{ .btn-success:hover {
background-color: #00c286; background-color: #00c286;
} }
.btn-danger:hover{ .btn-danger:hover {
background-color: #F56C6C; background-color: #f56c6c;
} }
button:hover { button:hover {
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); /* 按钮悬停时的阴影效果 */ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); /* 按钮悬停时的阴影效果 */
} }
.success-box { .success-box {

File diff suppressed because it is too large Load Diff

View File

@@ -210,7 +210,7 @@ const i18n = new VueI18n({
router.beforeEach(async (to, from, next) => { router.beforeEach(async (to, from, next) => {
const currentRoute = to; // 获取当前路由路径,例如 "/home" const currentRoute = to; // 获取当前路由路径,例如 "/home"
console.log('currentRoute at line 211:', currentRoute.meta) console.log('currentRoute at line 211:', currentRoute.meta)
if(currentRoute.meta.hideTitle){ if(currentRoute.meta.hideJournal){
}else{ }else{
try { try {

View File

@@ -101,6 +101,9 @@ export default new Router({
component: () => import('../components/page/articleListEditor_B1.vue'), component: () => import('../components/page/articleListEditor_B1.vue'),
meta: { meta: {
title: 'Manuscript typesetting', title: 'Manuscript typesetting',
hideSidebar: true,
bgColor: '#fafafa',
hideJournal: true
}, },
hidden: true hidden: true
}, },
@@ -1046,7 +1049,8 @@ export default new Router({
path: '/ReferenceEditor', //用户端预收录-引用编辑 path: '/ReferenceEditor', //用户端预收录-引用编辑
component: () => import('../components/page/ReferenceEditor'), component: () => import('../components/page/ReferenceEditor'),
meta: { meta: {
title: 'Reference Workflow' title: 'Reference Workflow',
hideJournal: true
} }
}, },
{ {
@@ -1054,7 +1058,8 @@ export default new Router({
component: () => import('../components/page/GenerateCharts'), component: () => import('../components/page/GenerateCharts'),
meta: { meta: {
title: 'Text Proofread', title: 'Text Proofread',
hideSidebar: true hideSidebar: true,
hideJournal: true
} }
}, },
{ {
@@ -1062,7 +1067,8 @@ export default new Router({
component: () => import('../components/page/OnlineProofreading'), component: () => import('../components/page/OnlineProofreading'),
meta: { meta: {
title: 'Online Proofreading', title: 'Online Proofreading',
hideSidebar: true hideSidebar: true,
hideJournal: true
} }
}, },
{ {
@@ -1072,6 +1078,7 @@ export default new Router({
title: 'LateX', title: 'LateX',
hideSidebar: true, hideSidebar: true,
hideTitle: true, hideTitle: true,
hideJournal: true
} }
}, },
{ {
@@ -1081,6 +1088,17 @@ export default new Router({
title: 'References', title: 'References',
hideSidebar: true, hideSidebar: true,
hideTitle: true, hideTitle: true,
hideJournal: true
}
},
{
path: '/crossref', //用户端预收录-引用编辑
component: () => import('../components/page/components/OnlineProofreading/crossref.vue'),
meta: {
title: 'crossref',
hideSidebar: true,
hideTitle: true,
hideJournal: true
} }
}, },
{ {
@@ -1091,7 +1109,8 @@ export default new Router({
title: 'PreIngestedEditor', title: 'PreIngestedEditor',
hideSidebar: true, hideSidebar: true,
bgColor: '#fafafa' bgColor: '#fafafa',
hideJournal: true
} }
}, },
{ {