Merge branch 'master' of https://git.nuttyreading.com/wangjinlei/tougao_web into Editorial-Board
This commit is contained in:
@@ -156,8 +156,11 @@
|
||||
>
|
||||
</h4>
|
||||
<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
|
||||
<i class="tip">{{ Ainfo.refer_state.num }}</i> references in this manuscript is identified.
|
||||
<template v-if="Ainfo.refer_state.num==0">
|
||||
<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 style="color: #505050; font-size: 14px; padding: 0 20px 20px; box-sizing: border-box" v-if="Ainfo.refer_state.num>0" >
|
||||
|
||||
@@ -721,10 +721,10 @@ export default {
|
||||
console.log('res at line 191:', res);
|
||||
if (res.code == 0) {
|
||||
this.article_pay_info = {
|
||||
fee: res.data.article.fee,
|
||||
is_buy: res.data.article.is_buy,
|
||||
original_price: res.data.journal.fee,
|
||||
fee_remark: res.data.article.fee_remark,
|
||||
fee: res.data.article ? res.data.article.fee : 0,
|
||||
is_buy: res.data.article ? res.data.article.is_buy : 0,
|
||||
original_price: res.data.journal ? res.data.journal.fee : 0,
|
||||
fee_remark: res.data.article ? res.data.article.fee_remark : '',
|
||||
order: res.data.order,
|
||||
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 : '',
|
||||
@@ -732,7 +732,7 @@ export default {
|
||||
};
|
||||
|
||||
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;
|
||||
} else {
|
||||
this.feeStatus = 1;
|
||||
@@ -864,7 +864,10 @@ export default {
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
// 更新引用列表
|
||||
if(this.$refs.editPublicRefRdit){
|
||||
this.$refs.editPublicRefRdit.init(this.chanFerForm);
|
||||
}
|
||||
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -2153,7 +2156,7 @@ export default {
|
||||
width: 260px !important;
|
||||
}
|
||||
.scroll-item {
|
||||
margin: 10px 20px 20px 276px;
|
||||
margin: 10px 20px 20px 280px;
|
||||
}
|
||||
.payment_info_box {
|
||||
margin-bottom: 10px;
|
||||
|
||||
@@ -1,110 +1,27 @@
|
||||
<template>
|
||||
<div v-loading.fullscreen.lock="holeLoading">
|
||||
<div class="container" v-loading="importIoading" element-loading-text="In the process of importing, please wait">
|
||||
<div v-if="tableData.length == 0">
|
||||
<!-- 没有引用时 -->
|
||||
<!-- <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
|
||||
<!-- <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 <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">
|
||||
<div v-if="tableData.length > 0">
|
||||
<div class="topInfo operation1">
|
||||
<h3>Dear {{ user_name }}</h3>
|
||||
<p class="mt10">Please check and modify the reference’s information on this page with the following instructions:</p>
|
||||
<p class="mt10">Please check and revise the reference’s information on this page with the following instructions:</p>
|
||||
<ul class="mt20">
|
||||
<li>
|
||||
<p>
|
||||
- Please modify the reference in the
|
||||
<span class="status warn float"><i class="el-icon-warning-outline"></i></span>
|
||||
status, moving the reference information from
|
||||
<span class="status warn float"><i class="el-icon-warning-outline"></i></span> status to
|
||||
<span class="status ok float"><i class="el-icon-circle-check"></i></span> status.
|
||||
- Please revise the references marked with the
|
||||
<span class="status warn float"><i class="el-icon-warning-outline"></i></span> the status , check the
|
||||
reference marked with <span style="position: relative"><i class="itemChanged"></i> </span> the
|
||||
status(revised by editor) , and update them until they are marked with
|
||||
<span class="status ok float"><i class="el-icon-circle-check"></i></span> the status.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<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>
|
||||
and
|
||||
<el-button type="warning" size="mini" plain>↓</el-button> behind each piece of information to adjust the
|
||||
order of the data.
|
||||
<span style="margin: 0 5px">and</span>
|
||||
<el-button type="warning" size="mini" plain>↓</el-button>
|
||||
<span style="margin: 0 5px">buttons to adjust the order of the reference.</span>
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
@@ -140,120 +57,39 @@
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="template-info">
|
||||
<span class="template-title">Article from a Journal (General format)</span> <br />
|
||||
Author(s) Last Name First Initial. Title of article. <i>Abbreviated Journal Title</i>. 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. <i>Phys Occup Ther Pediatr.</i> 2007;27:43-65.<br />
|
||||
Special note: If the number of authors is 6 or fewer, all authors should be listed.
|
||||
</div>
|
||||
</div>
|
||||
<div class="refenceCentent mt20">
|
||||
|
||||
<div style="display: flex;align-items: center;justify-content: space-between;">
|
||||
<el-table style="width: 100%"
|
||||
:data="tableData"
|
||||
ref="multipleTable"
|
||||
:row-style="tableRowStyle"
|
||||
empty-text="New messages (0)"
|
||||
:show-header="false"
|
||||
:stripe="false"
|
||||
:highlight-current-row="false"
|
||||
>
|
||||
<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 }} {{ scope.row.title }}. <em>{{ scope.row.joura }}</em
|
||||
> {{ scope.row.dateno }}.<br />
|
||||
<div>
|
||||
<editPublicRefRdit
|
||||
ref="editPublicRefRdit"
|
||||
:chanFerForm="tableData"
|
||||
:chanFerFormRepeatList="chanFerFormRepeatList"
|
||||
role="user"
|
||||
p_article_id=""
|
||||
@refrashComp="refrashComp"
|
||||
@changeRefer="changeRefer"
|
||||
></editPublicRefRdit>
|
||||
</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>
|
||||
<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 }} {{ scope.row.title }}. {{ scope.row.dateno }}. <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>
|
||||
@@ -263,7 +99,8 @@
|
||||
:title="dialogTitle + ' References'"
|
||||
:visible.sync="editboxVisible"
|
||||
width="800px"
|
||||
@close="cancelSave" :close-on-click-modal="false"
|
||||
@close="cancelSave"
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<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
|
||||
@@ -376,12 +213,7 @@
|
||||
<!-- 临时引用信息 -->
|
||||
<el-dialog title="Reference List" :visible.sync="linVisible" width="1200px" :close-on-click-modal="false" class="reference-dialog">
|
||||
<div class="newpro">
|
||||
<el-progress
|
||||
v-if="isUpload"
|
||||
:stroke-width="15"
|
||||
:percentage="progressPercent"
|
||||
style="width: 100%"
|
||||
></el-progress>
|
||||
<el-progress v-if="isUpload" :stroke-width="15" :percentage="progressPercent" style="width: 100%"></el-progress>
|
||||
</div>
|
||||
|
||||
<div class="refenceCentent mt20" v-if="Tempredable.length > 0">
|
||||
@@ -397,34 +229,29 @@
|
||||
<el-table-column type="index" label="No." width="55" align="center"></el-table-column>
|
||||
<el-table-column label="Title" align="left">
|
||||
<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>
|
||||
|
||||
</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>
|
||||
|
||||
</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="Status" align="center" width="55" v-if="parseVisible">
|
||||
<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>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="shuoming mt20">
|
||||
<p class="c888">
|
||||
<i class="el-icon-message-solid"></i> <span v-if="!parseVisible" >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>
|
||||
<i class="el-icon-message-solid"></i> <span v-if="!parseVisible"
|
||||
>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>
|
||||
|
||||
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -434,20 +261,25 @@
|
||||
<el-button type="primary" @click="handleparse">Import</el-button>
|
||||
</div>
|
||||
<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>
|
||||
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import editPublicRefRdit from './editPublicRefRdit'; // 公共引用编辑页面
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
TempredableNew: [],
|
||||
chanFerFormRepeatList: [],
|
||||
uploadTimer: null, //调取进度条的轮询定时器
|
||||
isUpload: false, //文件是否上传中
|
||||
progressPercent: 0, //进度条当前进度
|
||||
@@ -546,21 +378,27 @@ export default {
|
||||
created() {
|
||||
this.openFullScreen1();
|
||||
this.getRefData();
|
||||
this.holeLoading = true;
|
||||
},
|
||||
components: {
|
||||
editPublicRefRdit
|
||||
},
|
||||
beforeDestroy() {
|
||||
clearInterval(this.uploadTimer);
|
||||
},
|
||||
methods: {
|
||||
changeRefer(val) {
|
||||
this.getRefData();
|
||||
},
|
||||
refrashComp() {
|
||||
this.$refs.editPublicRefRdit.$forceUpdate();
|
||||
console.log('editPublicRefRdit');
|
||||
},
|
||||
async getProgress() {
|
||||
var that = this;
|
||||
this.getRefData()
|
||||
this.getRefData();
|
||||
var progress = 0;
|
||||
|
||||
this.$api
|
||||
.post(
|
||||
'api/Preaccept/getReferState',{ article_id: this.$route.query.id})
|
||||
.then(async (res) => {
|
||||
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;
|
||||
@@ -568,12 +406,10 @@ export default {
|
||||
//percent是后端返回的进度
|
||||
|
||||
if (progress == res.data.total) {
|
||||
|
||||
this.isUpload = false;
|
||||
clearInterval(this.uploadTimer);
|
||||
that.uploadTimer = null;
|
||||
|
||||
|
||||
this.$forceUpdate();
|
||||
}
|
||||
});
|
||||
@@ -585,22 +421,16 @@ export default {
|
||||
deleteSomeRefs() {
|
||||
var ids = [];
|
||||
ids = this.tableData.map((item) => {
|
||||
|
||||
return item.p_refer_id;
|
||||
});
|
||||
console.log('ids at line 570:', ids)
|
||||
console.log('ids at line 570:', ids);
|
||||
|
||||
this.$api
|
||||
.post('api/Preaccept/delRefers', {
|
||||
ids: ids
|
||||
})
|
||||
.then((res) => {
|
||||
|
||||
|
||||
})
|
||||
.catch((err) => {
|
||||
|
||||
});
|
||||
.then((res) => {})
|
||||
.catch((err) => {});
|
||||
},
|
||||
tableRowStyle({ row }) {
|
||||
if (row.is_repeat === 1) {
|
||||
@@ -612,7 +442,6 @@ export default {
|
||||
gotoFormate() {
|
||||
// this.$refs['refenceForm'].validateField('doi', (callback)=>{
|
||||
if (this.refenceForm.doi != '') {
|
||||
this.holeLoading = true;
|
||||
this.$api
|
||||
.post('/api/Preaccept/searchDoi', { doi: this.refenceForm.doi })
|
||||
.then((res) => {
|
||||
@@ -632,7 +461,6 @@ export default {
|
||||
})
|
||||
.catch((e) => {
|
||||
this.$message.error(e.msg);
|
||||
this.holeLoading = false;
|
||||
});
|
||||
} else {
|
||||
this.$message.error('The Doi cannot be empty!');
|
||||
@@ -640,21 +468,27 @@ export default {
|
||||
// })
|
||||
},
|
||||
// 全页面加载动画
|
||||
openFullScreen1() {
|
||||
this.holeLoading = true;
|
||||
},
|
||||
openFullScreen1() {},
|
||||
// 获取引用文献信息
|
||||
getRefData() {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: 'Loading...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
});
|
||||
this.$api
|
||||
.post('api/Preaccept/getArticleReferences', { article_id: this.$route.query.id })
|
||||
.then((res) => {
|
||||
console.log(res);
|
||||
if (res.code == 0 && res.data.refers.length > 0) {
|
||||
this.tableData = res.data.refers;
|
||||
this.chanFerFormRepeatList = Object.values(res.data.repeat);
|
||||
}
|
||||
this.holeLoading = false;
|
||||
loading.close();
|
||||
})
|
||||
.catch((err) => {
|
||||
loading.close();
|
||||
console.log(err);
|
||||
});
|
||||
},
|
||||
@@ -677,15 +511,9 @@ export default {
|
||||
// },
|
||||
// 获取解析数据
|
||||
getParseData() {
|
||||
|
||||
|
||||
|
||||
this.linVisible = false;
|
||||
this.parseVisible = true;
|
||||
this.isUpload=true
|
||||
|
||||
|
||||
|
||||
this.isUpload = true;
|
||||
},
|
||||
// 导入文本域
|
||||
handleparse() {
|
||||
@@ -702,17 +530,16 @@ this.linVisible=false;
|
||||
referFile: this.form.referFile
|
||||
})
|
||||
.then((res) => {
|
||||
loading.close()
|
||||
loading.close();
|
||||
if (res.code == 0) {
|
||||
|
||||
|
||||
this.getParseData();
|
||||
}else{ loading.close()
|
||||
} else {
|
||||
loading.close();
|
||||
this.$message.error(res.msg);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
loading.close()
|
||||
loading.close();
|
||||
console.log(err);
|
||||
});
|
||||
},
|
||||
@@ -1115,7 +942,6 @@ this.linVisible=false;
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
watch: {
|
||||
SourceType: {
|
||||
handler(newVal, oldVal) {
|
||||
@@ -1142,8 +968,8 @@ this.linVisible=false;
|
||||
this.currentFile = {};
|
||||
}
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
@@ -1183,11 +1009,11 @@ this.linVisible=false;
|
||||
}
|
||||
.status {
|
||||
display: block;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 40px;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 36px;
|
||||
font-size: 22px;
|
||||
line-height: 40px;
|
||||
line-height: 36px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
@@ -1201,7 +1027,9 @@ this.linVisible=false;
|
||||
display: inline-block;
|
||||
}
|
||||
.topInfo {
|
||||
padding: 20px;
|
||||
padding: 0px;
|
||||
margin-top: -10px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.topInfo ul {
|
||||
padding-left: 30px;
|
||||
@@ -1231,7 +1059,7 @@ this.linVisible=false;
|
||||
font-size: 26px;
|
||||
}
|
||||
.mt20 {
|
||||
margin-top: 20px;
|
||||
margin-top: 14px;
|
||||
}
|
||||
.content_box {
|
||||
padding: 15px 10px;
|
||||
@@ -1245,7 +1073,7 @@ p {
|
||||
font-size: 14px;
|
||||
}
|
||||
.mt10 {
|
||||
margin-top: 10px;
|
||||
margin-top: 14px;
|
||||
}
|
||||
.more {
|
||||
font-weight: bold;
|
||||
@@ -1299,7 +1127,7 @@ p {
|
||||
padding: 0 20px !important;
|
||||
}
|
||||
.newpro .el-progress-bar__inner:before {
|
||||
content: "";
|
||||
content: '';
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: block;
|
||||
@@ -1333,5 +1161,37 @@ p {
|
||||
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>
|
||||
|
||||
@@ -819,6 +819,9 @@
|
||||
<br />
|
||||
<font style="color: #006699">3.Value:</font> This manuscript belongs to the advanced topic and can attract wide
|
||||
attention.
|
||||
<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
|
||||
:articleId="stagingID"
|
||||
@@ -2489,7 +2492,22 @@ this.checkAll = false;
|
||||
onDeleteTuijian(item, index) {
|
||||
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) {
|
||||
let filePath = '/public/' + file.url;
|
||||
|
||||
@@ -1457,7 +1457,16 @@ export default {
|
||||
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) {
|
||||
this.$set(this.tableData[i], 'showAll', !item.showAll);
|
||||
this.$forceUpdate();
|
||||
@@ -2639,19 +2648,6 @@ 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) {
|
||||
|
||||
@@ -222,7 +222,17 @@ export default {
|
||||
|
||||
// 跳页录入排版
|
||||
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'
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div>
|
||||
<div style="width: 100%; height: 100%">
|
||||
<div class="tab_post">
|
||||
<el-button
|
||||
size="mini"
|
||||
@@ -7,10 +7,11 @@
|
||||
plain
|
||||
icon="el-icon-tickets"
|
||||
@click="showdetaileditor(detailMes)"
|
||||
style="padding:6px;margin-left: 0px;position: absolute;bottom: -32px;left: 0px;"
|
||||
> Detailed for MS</el-button
|
||||
style="padding: 6px; margin-left: 0px; position: absolute; bottom: 20px; left: 0px"
|
||||
>
|
||||
<div v-for="(item, index) in tabsList" @click="jumpTab(index, item)" :class="tabName == item.refName ? 'P_style' : ''">
|
||||
Detailed for MS</el-button
|
||||
>
|
||||
<div class="tab_item" v-for="(item, index) in tabsList" @click="jumpTab(index, item)" :class="tabName == item.refName ? 'P_style' : ''">
|
||||
<h5>
|
||||
<span>{{ index + 1 }}</span>
|
||||
{{ item.name }}
|
||||
@@ -24,35 +25,27 @@
|
||||
Push Online
|
||||
</el-button>
|
||||
|
||||
<div class="editorial_advisory_board" style="margin: 12px 0 0" v-if="finalReview">
|
||||
|
||||
<li>Editorial Advisory Board :
|
||||
<div class="editorial_advisory_board" style="margin: 20px 0 0" v-if="finalReview">
|
||||
<li>
|
||||
Editorial Advisory Board :
|
||||
<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-else>No reviewer name</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>
|
||||
</template>
|
||||
|
||||
<span v-else>No</span>
|
||||
|
||||
</li>
|
||||
<template v-if="finalReview.reviewer_id">
|
||||
<li>Received : {{ finalReview.received_time ? finalReview.received_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>Available online : {{ finalReview.available_online ? finalReview.available_online : 'No Time' }}</li>
|
||||
|
||||
</template>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="scroll-content guanSty"
|
||||
@scroll="onScroll"
|
||||
:style="'overflow-x: hidden; overflow-y: auto;height:' + contentStyleObj.height"
|
||||
>
|
||||
<div class="scroll-content guanSty" @scroll="onScroll" :style="'height: calc(100%);overflow: auto;'">
|
||||
<!-- 基本信息 -->
|
||||
<div :ref="tabsList[0].refName" class="scroll-item">
|
||||
<div class="bor_style_onli" style="margin: 20px 0">
|
||||
@@ -132,13 +125,10 @@
|
||||
<el-input v-model="detailMes.author_contribution"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Abstract :" prop="abstract">
|
||||
<template slot="label">
|
||||
<span style="color: #f56c6c; margin-right: 4px">*</span>Abstract :
|
||||
</template>
|
||||
<template slot="label"> <span style="color: #f56c6c; margin-right: 4px">*</span>Abstract : </template>
|
||||
<tinymce
|
||||
type="Abstract"
|
||||
:height="160"
|
||||
:id="id"
|
||||
ref="tinymceChild1"
|
||||
:wordStyle="`p{font-size: 13px;}`"
|
||||
:isAutomaticUpdate="true"
|
||||
@@ -146,7 +136,9 @@
|
||||
@updateChange="updateChange"
|
||||
:value="abstract"
|
||||
class="paste-area text-container"
|
||||
:toolbar="['bold italic |customBlue removeBlue|myuppercase myuppercasea Line|subscript superscript|clearButton']"
|
||||
:toolbar="[
|
||||
'bold italic |customBlue removeBlue|myuppercase myuppercasea Line|subscript superscript|clearButton'
|
||||
]"
|
||||
style="
|
||||
line-height: 12px;
|
||||
overflow: auto;
|
||||
@@ -160,7 +152,7 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<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>
|
||||
Save Essential Information
|
||||
</el-button>
|
||||
@@ -202,21 +194,34 @@
|
||||
</p>
|
||||
</template>
|
||||
</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">
|
||||
<span v-for="(u, i) in scope.row.organs">{{ u.organ_name }}<br /></span>
|
||||
</template>
|
||||
</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 label="" width="190" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button icon="el-icon-edit" type="primary" @click="authorhandEdit(scope.$index, scope.row)"
|
||||
<div class="operation">
|
||||
<el-button
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
plain
|
||||
type="primary"
|
||||
@click="authorhandEdit(scope.$index, scope.row)"
|
||||
>Edit
|
||||
</el-button>
|
||||
<el-button type="danger" icon="el-icon-delete" class="red" @click="authorDelete(scope.$index, scope.row)"
|
||||
<el-button
|
||||
size="mini"
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
class="red"
|
||||
@click="authorDelete(scope.$index, scope.row)"
|
||||
>Delete</el-button
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -256,7 +261,7 @@
|
||||
:label="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-group>
|
||||
</el-form-item>
|
||||
@@ -321,7 +326,7 @@
|
||||
:label="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-group>
|
||||
</el-form-item>
|
||||
@@ -364,12 +369,24 @@
|
||||
<el-table-column prop="organ_name" label="Affiliation"></el-table-column>
|
||||
<el-table-column label="" width="190" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button icon="el-icon-edit" type="primary" @click="schoolhandEdit(scope.$index, scope.row)"
|
||||
<div class="operation">
|
||||
<el-button
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
plain
|
||||
type="primary"
|
||||
@click="schoolhandEdit(scope.$index, scope.row)"
|
||||
>Edit
|
||||
</el-button>
|
||||
<el-button icon="el-icon-delete" type="danger" @click="schoolDelete(scope.$index, scope.row)"
|
||||
<el-button
|
||||
size="mini"
|
||||
icon="el-icon-delete"
|
||||
plain
|
||||
type="danger"
|
||||
@click="schoolDelete(scope.$index, scope.row)"
|
||||
>Delete</el-button
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -402,7 +419,7 @@
|
||||
|
||||
<!-- 文件上传 -->
|
||||
<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>
|
||||
<el-form label-width="220px">
|
||||
<el-form-item label="SUB File Upload :">
|
||||
@@ -585,13 +602,15 @@
|
||||
|
||||
<!-- Html排版 -->
|
||||
<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>
|
||||
<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 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>
|
||||
Proofread
|
||||
</el-button>
|
||||
@@ -614,7 +633,7 @@
|
||||
>
|
||||
<el-option v-for="item in fol_low" :key="item.value" :label="item.label" :value="item.value"> </el-option>
|
||||
</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>
|
||||
Create Manuscript
|
||||
</el-button>
|
||||
@@ -663,8 +682,16 @@
|
||||
:on-remove="removefileUpTy"
|
||||
style="display: inline-block"
|
||||
>
|
||||
<div class="el-upload__text" style="padding: 6px 10px; background-color: #006699">
|
||||
<font style="color: #fff; font-size: 12px">
|
||||
<div
|
||||
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>
|
||||
Click Re upload
|
||||
</font>
|
||||
@@ -680,7 +707,6 @@
|
||||
<h5 style="font-size: 16px; margin: 0 0 30px 0; letter-spacing: -0.5px">Improve information</h5>
|
||||
<!-- 时间Doi简介信息 -->
|
||||
<el-form ref="Abs_Form" :model="detailMes" :rules="rules" label-width="150px" style="margin-top: 30px">
|
||||
|
||||
<el-form-item label="Doi :" prop="doi">
|
||||
<span>https://doi.org/10.53388/</span>
|
||||
<el-input v-model="detailMes.doi" style="margin-left: 10px; width: 325px"> </el-input>
|
||||
@@ -698,7 +724,7 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<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>
|
||||
Save Essential Information
|
||||
</el-button>
|
||||
@@ -724,7 +750,7 @@
|
||||
<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">
|
||||
<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>
|
||||
Ask the author to confirm
|
||||
</el-button>
|
||||
@@ -831,7 +857,13 @@
|
||||
</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="aArt_doi">
|
||||
{{ deMesYul.journal_title }}
|
||||
@@ -962,8 +994,7 @@ export default {
|
||||
],
|
||||
detailMes: {
|
||||
type: '',
|
||||
journal_special_id: 'None',
|
||||
|
||||
journal_special_id: 'None'
|
||||
},
|
||||
abstract: '',
|
||||
opInstal: [],
|
||||
@@ -1337,7 +1368,6 @@ export default {
|
||||
window.addEventListener('resize', this.getHight);
|
||||
this.getData();
|
||||
|
||||
|
||||
this.getAuthorJG();
|
||||
this.getCount();
|
||||
this.getWorldPdf();
|
||||
@@ -1347,33 +1377,27 @@ export default {
|
||||
// api/Finalreview/getRecord
|
||||
this.$api
|
||||
.post('api/Finalreview/getRecord', {
|
||||
article_id: id,
|
||||
article_id: id
|
||||
// article_id: 6075
|
||||
})
|
||||
.then((res) => {
|
||||
console.log('res at line 1460:', res)
|
||||
console.log('res at line 1460:', res);
|
||||
if (res.status == 1) {
|
||||
this.finalReview = res.data;
|
||||
|
||||
|
||||
} else {
|
||||
this.finalReview = { reviewer_id: null };
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
updateChange(content) {
|
||||
|
||||
this.abstract = content
|
||||
|
||||
this.abstract = content;
|
||||
},
|
||||
getTinymceContent(type) {
|
||||
this.$refs.tinymceChild1.getContent(type);
|
||||
},
|
||||
getContent(type, content) {
|
||||
console.log('content at line 1449:', content)
|
||||
console.log('type at line 1449:', type)
|
||||
|
||||
|
||||
console.log('content at line 1449:', content);
|
||||
console.log('type at line 1449:', type);
|
||||
},
|
||||
// 跳转文章详情
|
||||
showdetaileditor(data) {
|
||||
@@ -1421,7 +1445,7 @@ export default {
|
||||
this.addFomauthor.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.abstract = ''
|
||||
this.abstract = '';
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: 'Loading...',
|
||||
@@ -1439,8 +1463,7 @@ this.abstract = ''
|
||||
if (this.abstract != '') {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.tinymceChild1.setContent(this.abstract);
|
||||
})
|
||||
|
||||
});
|
||||
}
|
||||
this.UpTyFIle = res.data.production.file_pdf;
|
||||
this.getArticleFinal(res.data.production.article_id);
|
||||
@@ -1571,8 +1594,10 @@ this.abstract = ''
|
||||
this.deMesYul.journal_title = res.data.journal.title;
|
||||
let reg = 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.replace(reb, '</sup>,<span style="margin-left:8px"></span>');
|
||||
this.deAuthorYul.author = this.deAuthorYul.author ? this.deAuthorYul.author.replace(reg, '<sup>') : '';
|
||||
this.deAuthorYul.author = this.deAuthorYul.author
|
||||
? this.deAuthorYul.author.replace(reb, '</sup>,<span style="margin-left:8px"></span>')
|
||||
: '';
|
||||
let lastIndex = this.deAuthorYul.author.lastIndexOf(',');
|
||||
this.deAuthorYul.author =
|
||||
this.deAuthorYul.author.substring(0, lastIndex) +
|
||||
@@ -1766,20 +1791,18 @@ this.abstract = ''
|
||||
},
|
||||
// 1----保存稿件信息
|
||||
async ZsSaveMes() {
|
||||
|
||||
var abstractStr = "";
|
||||
var abstractStr = '';
|
||||
if (this.detailMes.journal_stage_id == 0) {
|
||||
this.$message.error('Please select an installment!');
|
||||
return;
|
||||
}
|
||||
if (this.abstract == "") {
|
||||
if (this.abstract == '') {
|
||||
this.$message.error('Please input abstract!');
|
||||
return;
|
||||
} else {
|
||||
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) => {
|
||||
if (valid) {
|
||||
@@ -1811,7 +1834,7 @@ this.abstract = ''
|
||||
is_first: '0',
|
||||
is_report: '0',
|
||||
organs: []
|
||||
}
|
||||
};
|
||||
this.addFomauthor.p_article_id = this.p_article_id;
|
||||
this.addAuthor = true;
|
||||
},
|
||||
@@ -1901,7 +1924,7 @@ this.abstract = ''
|
||||
// 2----添加机构操作
|
||||
add_Schoolclick(index, row) {
|
||||
this.aid = index;
|
||||
this.addFomschool={}
|
||||
this.addFomschool = {};
|
||||
this.addFomschool.p_article_id = this.p_article_id;
|
||||
this.addSchool = true;
|
||||
},
|
||||
@@ -2880,26 +2903,34 @@ this.abstract = ''
|
||||
}
|
||||
},
|
||||
|
||||
// 滚动条滚动
|
||||
onScroll(e) {
|
||||
let scrollItems = document.querySelectorAll('.scroll-item');
|
||||
for (let i = scrollItems.length - 1; i >= 0; i--) {
|
||||
// 判断滚动条滚动距离是否大于当前滚动项可滚动距离
|
||||
let judge = e.target.scrollTop >= scrollItems[i].offsetTop - scrollItems[0].offsetTop;
|
||||
if (judge) {
|
||||
const scrollContainer = e.target;
|
||||
const scrollItems = document.querySelectorAll('.scroll-item');
|
||||
|
||||
// 遍历所有滚动项,找到“当前在可视区域内”的项
|
||||
for (let i = 0; i < scrollItems.length; i++) {
|
||||
const item = scrollItems[i];
|
||||
// 计算项相对于滚动容器的位置(顶部距离)
|
||||
const itemTop = item.offsetTop - scrollContainer.offsetTop;
|
||||
// 计算项的底部距离
|
||||
const itemBottom = itemTop + item.offsetHeight;
|
||||
|
||||
// 判断:项的顶部 <= 滚动距离,且项的底部 >= 滚动距离(即项在可视区域内)
|
||||
const isInView = (itemTop <= scrollContainer.scrollTop) && (itemBottom >= scrollContainer.scrollTop);
|
||||
|
||||
if (isInView) {
|
||||
this.tabIndex = i.toString();
|
||||
|
||||
// 找对应的tab-name值
|
||||
this.tabName = this.tabsList[this.tabIndex].refName;
|
||||
// this.tabClick = this.tabsList[this.tabIndex].refName
|
||||
break;
|
||||
// 先判断tabsList是否存在对应索引,避免报错
|
||||
if (this.tabsList[i]) {
|
||||
this.tabName = this.tabsList[i].refName;
|
||||
}
|
||||
break; // 找到第一个匹配的项就停止
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getHight() {
|
||||
this.contentStyleObj.height = window.innerHeight - 140 + 'px';
|
||||
this.contentStyleObj.height = window.innerHeight - 60 + 'px';
|
||||
// this.jumpTab(0,this.tabsList[0])
|
||||
}
|
||||
},
|
||||
@@ -2921,6 +2952,27 @@ this.abstract = ''
|
||||
color: #888;
|
||||
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>
|
||||
.handle-box {
|
||||
@@ -2932,11 +2984,12 @@ this.abstract = ''
|
||||
}
|
||||
|
||||
.tab_post {
|
||||
height: calc(100vh - 60px);
|
||||
background-color: #fafafa;
|
||||
position: absolute;
|
||||
left: 25px;
|
||||
top: 40px;
|
||||
width: 220px;
|
||||
left: 15px;
|
||||
top: 60px;
|
||||
width: 260px;
|
||||
z-index: 50;
|
||||
}
|
||||
|
||||
@@ -2987,7 +3040,14 @@ this.abstract = ''
|
||||
position: absolute;
|
||||
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;
|
||||
left: 11px;
|
||||
bottom: -10px;
|
||||
@@ -3014,7 +3074,7 @@ this.abstract = ''
|
||||
}
|
||||
|
||||
.scroll-item {
|
||||
margin: 0 30px 50px 255px;
|
||||
margin: 0 2px 50px 280px;
|
||||
}
|
||||
|
||||
.bor_style_onli {
|
||||
|
||||
137
src/components/page/components/OnlineProofreading/crossref.vue
Normal file
137
src/components/page/components/OnlineProofreading/crossref.vue
Normal 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>
|
||||
@@ -3,8 +3,18 @@
|
||||
<div :class="{ 'payment-success': articleInfo.state == 1, 'payment-failed': articleInfo.state == 0 }">
|
||||
<div style="display: flex; align-items: center; margin-bottom: 10px">
|
||||
<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 v-if="articleInfo.state==0" src="@/assets/img/error.png" alt="" style="margin-right: 20px; width: 128px; height: 128px" />
|
||||
<img
|
||||
v-if="articleInfo.state == 1"
|
||||
src="@/assets/img/success.png"
|
||||
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>
|
||||
@@ -17,12 +27,16 @@
|
||||
</p> -->
|
||||
<p v-if="articleInfo.state == 1">
|
||||
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>Payment Method: {{ paymentMethod }}</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>
|
||||
<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>
|
||||
</template>
|
||||
@@ -33,22 +47,22 @@ export default {
|
||||
return {
|
||||
alertShow: true,
|
||||
urlList: {
|
||||
detail: 'api/Preaccept/getPreacceptPayment',
|
||||
|
||||
detail: 'api/Order/PaystationLookup',
|
||||
createdOrder: 'api/Order/creatArticleOrder'
|
||||
},
|
||||
articleInfo: {},
|
||||
journalInfo: {},
|
||||
total: '',
|
||||
articleId: this.$route.query.id,
|
||||
dingshi: null,
|
||||
hideSec: 5
|
||||
hideSec: 10
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getDetail();
|
||||
},
|
||||
mounted() {
|
||||
this.hideAlert();
|
||||
|
||||
},
|
||||
methods: {
|
||||
hideAlert() {
|
||||
@@ -56,11 +70,10 @@ export default {
|
||||
this.hideSec -= 1;
|
||||
if (this.hideSec == 1) {
|
||||
this.goBack();
|
||||
return false
|
||||
return false;
|
||||
}
|
||||
|
||||
// console.log(this.hideSec)
|
||||
|
||||
}, 1000);
|
||||
},
|
||||
formatAmount(amount) {
|
||||
@@ -80,15 +93,24 @@ export default {
|
||||
.then((res) => {
|
||||
console.log('res at line 191:', res);
|
||||
if (res.code == 0) {
|
||||
this.hideAlert();
|
||||
setTimeout(() => {
|
||||
loading.close();
|
||||
this.articleInfo = res.data.order;
|
||||
|
||||
this.total = Number(res.data.order.paystation.amount / 100);
|
||||
}, 1000);
|
||||
|
||||
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();
|
||||
}
|
||||
}).catch(() => {
|
||||
loading.close();
|
||||
}, 1000);
|
||||
} else {
|
||||
loading.close();
|
||||
this.$message.error(res.msg);
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
loading.close();
|
||||
});
|
||||
},
|
||||
@@ -144,7 +166,7 @@ export default {
|
||||
background-color: #fff;
|
||||
border: 1px solid #fcc3c3;
|
||||
border-radius: 16px;
|
||||
color: #F56C6C;
|
||||
color: #f56c6c;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* 添加阴影效果 */
|
||||
width: 600px;
|
||||
}
|
||||
@@ -171,16 +193,15 @@ button {
|
||||
background-color: #00c286;
|
||||
}
|
||||
.btn-danger {
|
||||
background-color: #F56C6C;
|
||||
background-color: #f56c6c;
|
||||
}
|
||||
.btn-success:hover {
|
||||
background-color: #00c286;
|
||||
}
|
||||
.btn-danger:hover {
|
||||
background-color: #F56C6C;
|
||||
background-color: #f56c6c;
|
||||
}
|
||||
button:hover {
|
||||
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); /* 按钮悬停时的阴影效果 */
|
||||
}
|
||||
.success-box {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -210,7 +210,7 @@ const i18n = new VueI18n({
|
||||
router.beforeEach(async (to, from, next) => {
|
||||
const currentRoute = to; // 获取当前路由路径,例如 "/home"
|
||||
console.log('currentRoute at line 211:', currentRoute.meta)
|
||||
if(currentRoute.meta.hideTitle){
|
||||
if(currentRoute.meta.hideJournal){
|
||||
|
||||
}else{
|
||||
try {
|
||||
|
||||
@@ -101,6 +101,9 @@ export default new Router({
|
||||
component: () => import('../components/page/articleListEditor_B1.vue'),
|
||||
meta: {
|
||||
title: 'Manuscript typesetting',
|
||||
hideSidebar: true,
|
||||
bgColor: '#fafafa',
|
||||
hideJournal: true
|
||||
},
|
||||
hidden: true
|
||||
},
|
||||
@@ -1046,7 +1049,8 @@ export default new Router({
|
||||
path: '/ReferenceEditor', //用户端预收录-引用编辑
|
||||
component: () => import('../components/page/ReferenceEditor'),
|
||||
meta: {
|
||||
title: 'Reference Workflow'
|
||||
title: 'Reference Workflow',
|
||||
hideJournal: true
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1054,7 +1058,8 @@ export default new Router({
|
||||
component: () => import('../components/page/GenerateCharts'),
|
||||
meta: {
|
||||
title: 'Text Proofread',
|
||||
hideSidebar: true
|
||||
hideSidebar: true,
|
||||
hideJournal: true
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1062,7 +1067,8 @@ export default new Router({
|
||||
component: () => import('../components/page/OnlineProofreading'),
|
||||
meta: {
|
||||
title: 'Online Proofreading',
|
||||
hideSidebar: true
|
||||
hideSidebar: true,
|
||||
hideJournal: true
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1072,6 +1078,7 @@ export default new Router({
|
||||
title: 'LateX',
|
||||
hideSidebar: true,
|
||||
hideTitle: true,
|
||||
hideJournal: true
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1081,6 +1088,17 @@ export default new Router({
|
||||
title: 'References',
|
||||
hideSidebar: 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',
|
||||
hideSidebar: true,
|
||||
bgColor: '#fafafa'
|
||||
bgColor: '#fafafa',
|
||||
hideJournal: true
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user