Files
tougao_web/src/components/page/edit_per_ewer.vue
2025-11-17 17:00:14 +08:00

674 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"> Final Decision</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. To facilitate your review of articles, we have developed a new testing product. If you have any suggestions regarding this, please feel free to contact us at 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"> -->
Final Decision
</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:'/edit_per_text',query:{Art_id:item.id}}">
<h3><span
style="margin-right: 6px;color: #006699;">{{index+1}}.</span>{{item.title }}
</h3>
<el-button type="primary" plain style="float: right;">Final Decision</el-button>
</router-link>
<h4>
<span>
<font style="color: #006699;">Journal : </font>{{item.journal_name}}
</span>
<span>
<font style="color: #006699;">Type : </font>{{item.article_type_name}}
</span>
<span style="color: #888;margin-left: 20px;color: #006699;">
{{item.agree_review_time}}
</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" 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 Final Decision
</h2>
This list will show you the manuscript that the editor invited you to Final Decision. You can click on
the details to
check the content and then decide whether to Final Decision the manuscript. In addtion, you can also
refuse to Final Decision
the manuscript.
</div>
<ul class="ta1_uli ta1_ulicad">
<li v-for="(item,index) in tableData2">
<div>
<!-- a_id=6348&r_id=1 -->
<router-link :to="{path:'/edit_per_text_yq',query:{a_id:item.article_id,r_id:item.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_name}}.
</span>
<span>
<font style="color: #006699;">Type : </font>{{item.article_type_name}}
</span>
<span style="margin-left: 20px;">
<font style="color: #006699;">Invitation Time : </font> {{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"
size="mini"
@click="saveNow(item)"
>I agree to conduct the final review
</el-button>
<el-button
type="danger"
size="mini"
@click="saveRef(item)"
>I decline to conduct the final 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: {
reviewer_id: localStorage.getItem('U_id'),
pageIndex: 1,
pageSize: 9999,
},
Art_id: this.$route.query.Art_id,
tableData1: [],
tableData2: [],
tableData3: [],
revisionList:[], // 复审列表
TaBle2: {
user_id: localStorage.getItem('U_id'),
},
TaBle3: {
reviewer_id: localStorage.getItem('U_id'),
journal_id: 0,
pageIndex: 1,
pageSize: 5
},
link_Tota3: 0,
};
},
mounted() {
},
created() {
this.getData();
},
methods: {
saveNow(data) {
// 二次确认
this.$confirm('Are you sure you want to agree?', 'Tips', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/Finalreview/review', {
article_id: data.article_id,
record_id: data.id,
reviewer_id: localStorage.getItem('U_id'),
state: 0
})
.then((res) => {
if (res.status == 1) {
this.$message.success('Review now successfully!');
this.$router.push('/edit_per_text?Art_id=' + data.id);
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 拒绝
saveRef(data) {
// 二次确认
this.$confirm('Are you sure you want to refuse?', 'Tips', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/Finalreview/review', {
article_id: data.article_id,
record_id: data.id,
reviewer_id: localStorage.getItem('U_id'),
state: 4
})
.then((res) => {
if (res.status == 1) {
this.loading = true;
this.getTable();
// this.$router.push('/edit_per_text?Art_id=' + this.record_id);
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 获取数据
getData() {
this.$api
.post('api/Finalreview/lists', {...this.query,state:0})
.then(res => {
if (res.status == 1) {
for (let i = 0; i < res.data.lists.length; i++) {
let date = new Date(parseInt(res.data.lists[i].agree_review_time) * 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].agree_review_time = 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/Finalreview/lists', {...this.query,state:5})
.then(res => {
if (res.status == 1) {
for (let i = 0; i < res.data.lists.length; i++) {
let date = new Date(parseInt(res.data.lists[i].invited_time) * 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.tableData2 = res.data.lists;
} else {
// this.$message.error(res.msg);
this.tableData2 =[]
}
})
.catch(err => {
this.$message.error(err);
this.tableData2=[]
});
},
// 分页导航
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) {
window.open(
this.$router.resolve({
path: '/per_text',
query: {
Art_id: index
}
}).href,
'_blank'
);
// 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!');
window.open(
this.$router.resolve({
path: '/per_text',
query: {
Art_id: res.data.art_rev_id
}
}).href,
'_blank'
);
// 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>