Files
tougao_web/src/components/page/per_ewer.vue
@fawn-nine 28681bdc57 微调
2023-07-31 17:50:47 +08:00

664 lines
18 KiB
Vue
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-collection"></i> <span class="top_dao"> Peer Review</span>
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<el-alert class="mes_alert" style="margin: 20px 0 10px 0;" :title="'Dear '+ user_name"
description="Welcome to our submission system. In order to facilitate reviewers to review articles we have developed a new test product. if you have any suggestions about this, please do not hesitate to contact us: tmr@tmrjournals.com">
</el-alert>
<div class="container_l">
<el-row :gutter="20">
<el-col :span="24">
<div class="ma_title" style="height: 100%;">
<h2>
<!-- <img src="../../assets/img/icon_5.png" alt="" class="icon_img"> -->
Under review
</h2>
In this column, the manuscripts that currently need your comments are displayed. You can click
detail to review
or change your comments.
</div>
<ul class="ta1_uli ta1_ulicad">
<li v-for="(item,index) in tableData1">
<!-- <h5>{{item.type}}</h5> -->
<router-link :to="{path:'/per_text',query:{Art_id:item.art_rev_id}}">
<h3><span
style="margin-right: 6px;color: #006699;">{{index+1}}.</span>{{item.article_title}}
</h3>
<el-button type="primary" plain style="float: right;">Review</el-button>
</router-link>
<h4>
<span>
<font style="color: #006699;">Journal : </font>{{item.journal_title}}.
</span>
<span>
<font style="color: #006699;">Type : </font>{{item.type}}
</span>
<span style="color: #888;margin-left: 20px;color: #006699;">
{{item.ctime}}
</span><br>
<!-- <span v-if="item.abstrart!=''" style="max-width: 1000px;">
<font style="color: #888;">Abstrart : </font>{{item.abstrart | ellipsis}}
</span> -->
</h4>
</li>
<p v-if="tableData1==''" style="color:#6f6f6f;font-size: 14px;margin: 20px 0 0 30px;">No article
</p>
</ul>
</el-col>
<!-- 复审 -->
<el-col :span="24">
<div style="background-color: #ccc;height: 2px;width: 100%;margin:20px 0 35px 0;"></div>
<div class="ma_title" style="height: 100%;">
<h2>
<!-- <img src="../../assets/img/icon_5.png" alt="" class="icon_img"> -->
Second review
</h2>
Please click on the Re-review button for a second review.
</div>
<ul class="ta1_uli ta1_ulicad">
<li v-for="(item,index) in revisionList" :key="index">
<!-- <h5>{{item.type}}</h5> -->
<div class="btns">
<router-link :to="{path:'/Re_review',query:{Art_id:item.art_rev_id}}" style="display: inline-block; margin-left: 10px;">
<el-button type="success" plain >Re-review</el-button>
</router-link>
</div>
<router-link :to="{path:'/Re_review',query:{Art_id:item.art_rev_id}}">
<h3><span
style="margin-right: 6px;color: #006699;">{{index+1}}.</span>{{item.article_title}}
</h3>
</router-link>
<h4>
<span>
<font style="color: #006699;">Journal : </font>{{item.journal_title}}.
</span>
<span>
<font style="color: #006699;">Type : </font>{{item.type | Actype}}
</span>
<span style="color: #888;margin-left: 20px;color: #006699;">
{{item.ctime | formatDatehms}}
</span><br>
<!-- <span v-if="item.abstrart!=''" style="max-width: 1000px;">
<font style="color: #888;">Abstrart : </font>{{item.abstrart | ellipsis}}
</span> -->
</h4>
</li>
<p v-if="revisionList==''" style="color:#6f6f6f;font-size: 14px;margin: 20px 0 0 30px;">No article
</p>
</ul>
</el-col>
<el-col :span="24" v-if="tableData2!=''">
<div style="background-color: #ccc;height: 2px;width: 100%;margin:20px 0 35px 0;"></div>
<!-- <el-card class="box-card"> -->
<div class="ma_title" style="margin-bottom: 5px;">
<h2>
<!-- <img src="../../assets/img/icon_1.png" alt="" class="icon_img"> -->
Invitation for review
</h2>
This list will show you the manuscript that the editor invited you to review. You can click on
the details to
check the content and then decide whether to review the manuscript. In addtion, you can also
refuse to review
the manuscript.
</div>
<ul class="ta1_uli ta1_ulicad">
<li v-for="(item,index) in tableData2">
<div>
<router-link :to="{path:'/per_text_yq',query:{Art_id:item.art_rev_id}}">
<h3><span
style="margin-right: 6px;color: #006699;">{{index+1}}.</span>{{item.title}}
</h3>
<el-button type="primary" plain style="float: right;">Detail</el-button>
</router-link>
</div>
<h4>
<span>
<font style="color: #006699;">Journal : </font>{{item.journal_title}}.
</span>
<span>
<font style="color: #006699;">Type : </font>{{item.type}}
</span>
<span style="color: #888;margin-left: 20px;color: #006699;">
{{item.ctime}}
</span><br>
<span v-if="item.abstrart!=''" style="max-width: 1000px;">
<font style="color: #006699;">Abstract : </font>{{item.abstrart | ellipsis}}
</span>
</h4>
<div style="margin-top: 10px;">
<el-button type="success" plain @click="wen_nowrw(item.art_rev_id)">Review</el-button>
<!-- <el-button type="success" plain @click="wen_agree(item.art_rev_id)" style="margin: 0 10px 0 20px;">Review
later</el-button> -->
<el-button type="danger" plain @click="wen_refuse(item.art_rev_id)">Reject to review
</el-button>
</div>
</li>
</ul>
<!-- </el-card> -->
</el-col>
<!-- <el-col :span="24">
<div style="background-color: #ccc;height: 2px;width: 100%;margin: 30px 0 5px 0;"></div>
</el-col>
<el-col :span="24" style="margin-top: 20px;">
<div class="ma_title">
<h2>
Awaitingreviewerassignment
</h2>
In this column, all the manuscripts of the TMR Publishing Group that need to be reviewed are displayed. You can
click detail to view the content of the manuscript . If you have comments on the manuscript, you can apply for
review. Sincerely look forward to your comments.
</div>
<ul class="ta1_uli ta1_ulicad">
<li v-for="(item,index) in tableData3">
<h3><span style="margin-right: 6px;">{{index+1+(TaBle3.pageIndex-1)*TaBle3.pageSize}}.</span>{{item.title}}</h3>
<el-button type="primary" plain style="float: right;" @click="svAccept(item.article_id)">Agree review</el-button>
<h4>
<span>
<font style="color: #006699;">Journal : </font>{{item.journal_title}}.
</span>
<span>
<font style="color: #006699;">Type : </font>{{item.type}}
</span>
<span style="color: #888;margin-left: 20px;margin-bottom: 10px;color: #006699;">
{{item.ctime}}
</span><br>
<span v-if="item.abstrart!=''" style="max-width: 1000px;">
<font style="color: #006699;">Abstract : </font>
<font style="font-size: 12px;" :class="{active: item.isShowMore}">{{item.abstrart}}</font>
<font style="font-size: 12px;" :class="{active: !item.isShowMore}" v-if="item.isDescStatus">{{item.abstrart_}}</font>
<span class="isShow" v-if="item.isDescStatus" @click="item.isShowMore = !item.isShowMore">
{{item.isShowMore ? '... Open ' : 'Recover '}}
</span>
</span>
</h4>
</li>
<p v-if="tableData3==''" style="color:#6f6f6f;font-size: 14px;margin: 20px 0 0 30px;">No articles</p>
</ul>
<div class="pagination">
<el-pagination layout="total, prev, pager, next" :current-page="TaBle3.pageIndex" :page-size="TaBle3.pageSize"
:total="link_Tota3" @current-change="handlePageChange3">
</el-pagination>
</div>
</el-col> -->
</el-row>
</div>
</div>
</template>
<script>
export default {
data() {
return {
user_name: localStorage.getItem('U_relname'),
query: {
user_id: localStorage.getItem('U_id')
},
Art_id: this.$route.query.Art_id,
tableData1: [],
tableData2: [],
tableData3: [],
revisionList:[], // 复审列表
TaBle2: {
user_id: localStorage.getItem('U_id'),
},
TaBle3: {
user_id: localStorage.getItem('U_id'),
journal_id: 0,
pageIndex: 1,
pageSize: 5
},
link_Tota3: 0,
};
},
mounted() {
},
created() {
this.getData();
},
methods: {
// 获取数据
getData() {
this.$api
.post('api/Reviewer/getReviewerListPending', this.query)
.then(res => {
if (res.code == 0) {
for (let i = 0; i < res.data.lists.length; i++) {
let date = new Date(parseInt(res.data.lists[i].ctime) * 1000);
let Y = date.getFullYear() + '-';
let M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) + '-' : date
.getMonth() + 1 + '-';
let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
res.data.lists[i].ctime = Y + M + D;
}
this.tableData1 = res.data.lists;
this.revisionList = res.data.repeats
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
this.$api
.post('api/Reviewer/getInvitatReviewList', this.TaBle2)
.then(res => {
if (res.code == 0) {
if (res.data.articles != '') {
for (let i = 0; i < res.data.articles.length; i++) {
let date = new Date(parseInt(res.data.articles[i].ctime) * 1000);
let Y = date.getFullYear() + '-';
let M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) + '-' : date
.getMonth() + 1 + '-';
let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
res.data.articles[i].ctime = Y + M + D;
}
}
this.tableData2 = res.data.articles;
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
this.$api
.post('api/Reviewer/getAllReviewerList', this.TaBle3)
.then(res => {
if (res.code == 0) {
if (res.data.articles != '') {
for (let i = 0; i < res.data.articles.length; i++) {
let date = new Date(parseInt(res.data.articles[i].ctime) * 1000);
let Y = date.getFullYear() + '-';
let M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) + '-' : date
.getMonth() + 1 + '-';
let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
res.data.articles[i].ctime = Y + M + D;
if (res.data.articles[i].abstrart.length > 380) {
res.data.articles[i].isShowMore = true;
res.data.articles[i].isDescStatus = true;
res.data.articles[i].abstrart_ = JSON.parse(JSON.stringify(res.data.articles[i]
.abstrart)).slice(0, 380);
res.data.articles[i].abstrart_ = res.data.articles[i].abstrart_.slice(0, res
.data.articles[i].abstrart_.lastIndexOf(
" "));
} else {
res.data.articles[i].isShowMore = false;
res.data.articles[i].isDescStatus = false;
}
}
}
this.tableData3 = res.data.articles;
this.link_Tota3 = res.data.count || 0;
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
// 分页导航
handlePageChange3(val) {
this.$set(this.TaBle3, 'pageIndex', val);
this.getData();
},
// 马上同意
wen_nowrw(index) {
// 二次确认
this.$confirm('Are you sure you want to review now', 'Tips', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/Reviewer/agreeReviewerArticle', {
art_rev_id: index
})
.then(res => {
if (res.code == 0) {
this.$router.push('/per_text?Art_id=' + index);
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 同意
wen_agree(index) {
// 二次确认
this.$confirm(
'Are you sure you want to agreeYou can click on the details to check the content and then decide whether to review the manuscript',
'Tips', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/Reviewer/agreeReviewerArticle', {
art_rev_id: index
})
.then(res => {
if (res.code == 0) {
this.$message.success('Agree successful!');
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 拒绝
wen_refuse(index) {
// 二次确认
this.$confirm('Are you sure you want to refuse', 'Tips', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/Reviewer/refuseReviewerArticle', {
art_rev_id: index
})
.then(res => {
if (res.code == 0) {
this.$message.success('Reject successful!');
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 申请
svAccept(parem) {
// 二次确认
this.$confirm('I am willing to review this manuscript.', ' ', {
type: 'warning',
confirmButtonText: 'Yes'
})
.then(() => {
this.$api
.post('api/Reviewer/launchReviewer', {
article_id: parem,
user_id: localStorage.getItem('U_id')
})
.then(res => {
if (res.code == 0) {
this.$message.success('Successful application!');
this.$router.push('/per_text?Art_id=' + res.data.art_rev_id);
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(() => {});
},
},
filters: {
ellipsis(value) {
if (!value) return "";
if (value.length > 380) {
value = value.slice(0, 380);
return value.slice(0, value.lastIndexOf(" ")) + "...";
}
return value;
},
// 文章类型
Actype(value) {
let frag = '';
switch (value) {
case "A":
frag = 'Article';
break;
case 'B':
frag = 'Review';
break;
case 'C':
frag = 'Case report';
break;
case 'P':
frag = 'Research proposal';
break;
case 'N':
frag = 'News';
break;
case 'T':
frag = 'Comment';
break;
case 'CT':
frag = 'Correction';
break;
case 'HT':
frag = 'Hypothesis';
break;
case 'PF':
frag = 'Preface';
break;
case 'ET':
frag = 'Editorial';
break;
case 'RP':
frag = 'Report';
break;
case 'LR':
frag = 'Letter';
break;
case 'EF':
frag = 'Empirical formula';
break;
case 'EM':
frag = 'Evidence-based medicine';
break;
case 'EC':
frag = 'Expert consensus';
break;
case 'LTE':
frag = 'Letter to editor';
break;
case 'QI':
frag = 'Questionnaire investigation';
break;
case 'PT':
frag = 'Protocol';
break;
case 'CS':
frag = 'Case Series';
break;
case 'RT':
frag = 'Retraction';
break;
case 'MR':
frag = 'Mini Review';
break;
default:
frag = 'Others';
}
return frag;
},
},
watch: {
}
};
</script>
<style scoped>
.ma_title {
margin-bottom: 20px;
font-size: 14px;
/* border-right: 1px solid #e1e1e1; */
padding: 0 20px;
line-height: 20px;
}
.ma_title h2 {
font-size: 16px;
margin: 10px 0;
/* white-space: nowrap; */
}
.ma_title .icon_img {
width: 20px;
height: 20px;
margin-right: 10px;
vertical-align: middle;
}
/* .top_card_b::-webkit-scrollbar {
width: 5px;
height: 10px;
}
.top_card_b::-webkit-scrollbar-thumb {
background-color: #c9c9cc;
border-radius: 3px;
} */
.ta1_uli {}
.ta1_uli li {
list-style: none;
/* border-bottom: 1px dashed #e0e0e0; */
/* box-shadow: 0 0 10px #e1e1e1; */
/* padding: 10px 20px 20px 20px; */
padding-bottom: 8px;
background-color: #fff;
margin-top: 10px;
}
.ta1_ulicad li {
margin-top: 0;
padding: 20px;
}
.ta1_ulicad li:nth-child(2n+1) {
background-color: #f8fbff;
box-shadow: 2px 30px 15px -20px #ebf5ff inset;
}
.ta1_ulicad li:nth-child(2n) {
background-color: #fff;
}
.ta1_uli li:hover {
/* background: #fafafa; */
}
.ta1_uli li h3 {
color: #006699;
margin-top: 8px;
margin-right: 150px;
font-family: "Helvetica Neue", Helvetica, Georgia, sans-serif;
font-size: 16px;
word-wrap: break-word;
line-height: 22px;
}
.ta1_uli li h3:hover {
/* text-decoration: underline; */
cursor: pointer;
}
.ta1_uli li h4 {
/* color: #6f6f6f; */
margin-top: 8px;
margin-right: 150px;
font-weight: normal;
font-size: 14px;
line-height: 22px;
}
.ta1_uli li h4 span {
margin-right: 20px;
display: inline-block;
margin-bottom: 2px;
}
.ta1_uli li h4 span>font {
font-size: 13px;
}
.ta1_uli li h5 {
color: #006699;
margin-top: 5px;
padding-bottom: 10px;
font-weight: normal;
border-bottom: 1px solid #f1f1f1;
}
.ta1_uli li h6 {
font-weight: normal;
font-family: Calibri;
font-size: 16px;
margin-top: 10px;
}
.mes_alert .el-alert__content {
margin-bottom: 10px;
}
.btns{float: right;}
.mes_alert .el-alert__content .el-alert__title {
font-size: 18px !important;
margin: 10px 0 !important;
display: block;
}
.mes_alert .el-alert__description {
font-size: 16px !important;
}
.ta1_uli li .active {
display: none;
}
.ta1_uli li .isShow {
color: #006699;
cursor: pointer;
font-size: 12px;
font-weight: bold;
margin-left: 5px;
}
</style>