This commit is contained in:
2025-08-29 15:05:26 +08:00
parent daba55e418
commit d71f54f1f7
24 changed files with 2939 additions and 1581 deletions

View File

@@ -2,7 +2,7 @@
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item> <i class="el-icon-lx-calendar"></i> Manuscript reviewer list </el-breadcrumb-item>
<el-breadcrumb-item> <i class="el-icon-lx-calendar"></i> Manuscript final reviewer list </el-breadcrumb-item>
<el-breadcrumb-item>
<div>
<span>ID:{{ articleBaseInfo.accept_sn }} </span>
@@ -28,24 +28,29 @@
empty-text="New messages (0)"
>
<el-table-column type="index" label="No." align="center" width="50"></el-table-column>
<el-table-column label="Base Information" width="280px">
<el-table-column label="Base Information" width="320px">
<template slot-scope="scope">
<p class="tab_tie_col">
<span>Name: </span>
<el-badge is-dot :hidden="scope.row.reviewer_act == 1 ? false : true" class="item">
<b style="font-size: 15px; letter-spacing: -0.5px">{{ scope.row.reviewer }}</b>
</el-badge>
<b style="font-size: 15px; letter-spacing: -0.5px">{{ scope.row.account }}</b>
</p>
<p class="tab_tie_col">
<span>Realname: </span>
{{ scope.row.realname }}
</p>
<p class="tab_tie_col"><span>Country: </span>{{ scope.row.country }}</p>
<p class="tab_tie_col"><span>Email: </span>{{ scope.row.email }}</p>
<p class="tab_tie_col">
<span>Identity: </span>
<span v-if="scope.row.reviewer_type == 0" style="color: #409eff">Editor-in-Chief</span>
<span v-if="scope.row.reviewer_type == 1" style="color: #409eff">Vice Editor-in-Chief</span>
<span v-if="scope.row.reviewer_type == 2" style="color: #409eff">Editorial Board Member</span>
</p>
</template>
</el-table-column>
<el-table-column label="Other Information">
<!-- <el-table-column label="Other Information">
<template slot-scope="scope">
<p class="tab_tie_col">
<span>Field: </span>
@@ -57,7 +62,7 @@
{{ scope.row.company }}
</p>
</template>
</el-table-column>
</el-table-column> -->
<!-- <el-table-column prop="art_rev_id" label="ID" align="center" width="60"></el-table-column> -->
<!-- <el-table-column label="Reviewer" align="center" width="130">
<template slot-scope="scope">
@@ -70,7 +75,7 @@
<!-- <el-table-column prop="email" label="Email" align="center"></el-table-column> -->
<!-- <el-table-column prop="company" label="Company" align="center"></el-table-column> -->
<!-- <el-table-column prop="major_str" label="Major"></el-table-column> -->
<el-table-column label="Research areas" width="260">
<el-table-column label="Research areas">
<template slot-scope="scope">
<commonMajorTableList
:user_id="scope.row.reviewer_id"
@@ -81,18 +86,22 @@
</template>
</el-table-column>
<!-- <el-table-column prop="field" label="Field"></el-table-column> -->
<el-table-column label="State" align="center" width="130">
<el-table-column label="State" align="center" width="180">
<template slot-scope="scope">
<span style="font-size: 16px" v-html="revstate(scope.row)"></span>
<font style="color: #aaa; display: block; line-height: 18px; font-size: 13px" v-html="formatDate(scope.row.ctime)">
<font
v-if="scope.row.update_time"
style="color: #aaa; display: block; line-height: 18px; font-size: 13px"
v-html="formatDate(scope.row.update_time)"
>
</font>
</template>
</el-table-column>
<el-table-column label="" width="100" align="center">
<template slot-scope="scope">
<el-button
v-show="scope.row.state != 4"
v-show="scope.row.state == 1 || scope.row.state == 2 || scope.row.state == 3"
ize="mini"
type="primary"
plain
@@ -114,41 +123,64 @@
></el-pagination>
</div>
</div>
<el-dialog title="Add Editorial Board Members" :visible.sync="AddSuggest" width="1200px" custom-class="editorialBoardDialog">
<!-- <el-select v-model="editorialBoardForm.type" placeholder="" @change="selectEditorialBoardType" style="margin-bottom: 20px">
<el-dialog
:close-on-click-modal="false"
title="Add Editorial Board Members"
:visible.sync="AddSuggest"
width="1200px"
custom-class="editorialBoardDialog"
>
<el-select
v-model="editorialBoardForm.type"
placeholder=""
@change="selectEditorialBoardType"
style="margin-bottom: 20px; width: 200px"
>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select> -->
</el-select>
<el-input clearable v-model="editorialBoardForm.email" style="width: 300px; margin-left: 20px" placeholder="Email "></el-input>
<el-button type="primary" style="margin-left: 40px" size="mini" @click="search">Search</el-button>
<el-button type="primary" plain style="margin-left: 10px" size="mini" @click="reset">Reset</el-button>
<el-table
:data="tableSuggest"
stripe
class="table"
ref="multipleTable"
header-cell-class-name="table-header"
empty-text="New messages (0)"
>
<el-table-column prop="User Message" label="Realname" width="340">
>
<el-table-column type="index" label="No." align="center" width="50"></el-table-column>
<el-table-column prop="User Message" label="Realname" width="340">
<template slot-scope="scope">
<p style="font-size: 14px; font-weight: bold; margin-top: 2px">{{ scope.row.realname }}</p>
<p style="margin: 2px 0 0px 0">
<span style="color: #999">Email :</span>
{{ scope.row.email }}
</p>
<p style="margin: 0 0 5px 0" v-if="scope.row.title != ''">
<span style="color: #999">Identity : </span>
<span v-if="scope.row.type == 0" style="color: #409eff">Editor-in-Chief</span>
<span v-if="scope.row.type == 1" style="color: #409eff">Vice Editor-in-Chief</span>
<span v-if="scope.row.type == 2" style="color: #409eff">Editorial Board Members</span>
</p>
</template>
</el-table-column>
<template slot-scope="scope">
<p style="font-size: 14px;font-weight: bold;margin-top: 2px;">{{scope.row.realname}}</p>
<p style="margin: 2px 0 0px 0;">
<span style="color: #999;">Email :</span>
{{scope.row.email}}
</p>
<p style="margin: 0 0 5px 0;" v-if="scope.row.title!=''">
<span style="color: #999;">Identity : </span>
<span v-if="scope.row.type == 0" style="color: #409EFF ;">Editor-in-Chief</span>
<span v-if="scope.row.type == 1" style="color: #409EFF;">Deputy Editor-in-Chief</span>
<span v-if="scope.row.type == 2" style="color: #409EFF ;">Member of the Editorial Board</span>
</p>
</template>
</el-table-column>
<el-table-column prop="research_areas" label="Research Areas">
<template slot-scope="scope">
<commonMajorTableList
:user_id="scope.row.user_id"
:baseInfo="scope.row"
:key="scope.row.user_id"
:disabled="true"
></commonMajorTableList>
</template>
</el-table-column>
<el-table-column prop="research_areas" label="Research Areas"></el-table-column>
<el-table-column label="" width="120" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain icon="el-icon-check" @click="selSuggest(scope.row)"> Select</el-button>
@@ -207,268 +239,44 @@
<el-button type="primary" @click="saveEdit">save</el-button>
</span>
</el-dialog>
<el-dialog
title="Supplement"
:visible.sync="editVisible1"
width="40%"
v-loading="loading"
element-loading-text="Loading..."
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)"
>
<el-form :model="questionform" ref="question" label-width="300px" label-position="top">
<el-divider content-position="center">REFEREE'S ASSESSMENT</el-divider>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="1.Originality of the topic">
<el-radio-group v-model="questionform.qu1">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="2.Importance in its Field">
<el-radio-group v-model="questionform.qu3">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="3.Does the manuscript fall within the aim and scope of the journal?">
<el-radio-group v-model="questionform.qu6">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="4.English language">
<el-radio-group v-model="questionform.qu8">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="5.Readily Understandable">
<el-radio-group v-model="questionform.qu5">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-collapse>
<el-form-item label="6.Does the title represent manuscript's contents?">
<el-col :span="8">
<el-radio-group v-model="questionform.qu9">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="12">
<el-collapse-item name="1" style="margin-top: -10px">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.qu9contents"
:rows="4"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
</el-collapse>
</el-col>
</el-row>
<articleEditorDetail :dateId="FinalDetailBaseInfo.id" ref="commonFinalDetail"></articleEditorDetail>
<el-collapse>
<el-form-item label="7.Is the Abstract accurate and concise?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu10">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="2" style="margin-top: -10px">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.qu10contents"
:rows="4"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-form-item label="8.Are the approach/ methods properly described?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu11">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="3" style="margin-top: -10px">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.qu11contents"
:rows="4"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-form-item label="9.Are the conclusions and interpretations sound?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu12">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="4" style="margin-top: -10px">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.qu12contents"
:rows="4"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-form-item label="10.Are the references properly cited?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu13">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="5" style="margin-top: -10px">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.qu13contents"
:rows="4"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-divider content-position="center">REFEREE'S RECOMMENDATIONS</el-divider>
<el-form-item label="Overall the Paper is Rated">
(Poor------------------------Excellent)
<br />
<el-radio-group v-model="questionform.rated" size="small">
<el-radio-button label="1"></el-radio-button>
<el-radio-button label="2"></el-radio-button>
<el-radio-button label="3"></el-radio-button>
<el-radio-button label="4"></el-radio-button>
<el-radio-button label="5"></el-radio-button>
<el-radio-button label="6"></el-radio-button>
<el-radio-button label="7"></el-radio-button>
<el-radio-button label="8"></el-radio-button>
<el-radio-button label="9"></el-radio-button>
<el-radio-button label="10"></el-radio-button>
</el-radio-group>
<span style="margin-left: 20px">>Your score:{{ questionform.rated }}</span>
</el-form-item>
<el-form-item label="REFEREE'S RECOMMENDATIONS" prop="recommend">
<el-radio-group v-model="questionform.recommend" style="line-height: 30px">
<el-radio :label="1">Accept with minor revision</el-radio>
<br />
<el-radio :label="2">Accept with major revision</el-radio>
<br />
<el-radio :label="3">Reject in current form, but may be resubmitted</el-radio>
<br />
<el-radio :label="4">Reject, with no resubmission</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="OTHER SPECIFIC CRITICISMS">
<el-radio-group v-model="questionform.other" style="line-height: 30px">
<el-radio :label="1">Imperfect style</el-radio>
<br />
<el-radio :label="2">Too long</el-radio>
<br />
<el-radio :label="3">References incorrectly presented</el-radio>
<br />
<el-radio :label="4">Typographical and Grammatical errors</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="Comments for the Authors">
<el-input type="textarea" placeholder="please input content" v-model="questionform.comment" :rows="8"></el-input>
</el-form-item>
<el-form-item label="Confidential Comments to the Editor">
<el-input type="textarea" placeholder="please input content" v-model="questionform.confident" :rows="8"></el-input>
</el-form-item>
<el-form-item label="Please choose disclose your name or remain anonymous.">
<el-radio-group v-model="questionform.is_anonymous" style="line-height: 30px">
<el-radio :label="0">Disclose name</el-radio>
<br />
<el-radio :label="1">Remain anonymous</el-radio>
</el-radio-group>
<p style="line-height: 20px; color: #aaa; font-size: 13px; margin: 12px 0 0 0">
If you agree to disclose your name, we will acknowledge you by name in the published PDF. However, if you prefer
to remain anonymous, we will still express our gratitude by thanking you as an anonymous reviewer.
<br />For example, {{ txt_mess.title }} would like to thank AAAAAAAA, BBBBBBBB, and other anonymous reviewers
for their invaluable contributions to the peer review process of this paper.
</p>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addArtRev">submit</el-button>
</el-form-item>
</el-collapse>
</el-form>
</el-dialog>
</div>
</template>
<script>
import { Loading } from 'element-ui';
import articleEditorDetail from './articleEditorDetail.vue';
import commonMajorTableList from '../page/components/major/tableList.vue';
export default {
components: {
commonMajorTableList
commonMajorTableList,
articleEditorDetail
},
data() {
return {
FinalDetailBaseInfo: {},
options: [
{
value: 0,
label: 'Editor-in-Chief'
},
value: 0,
label: 'Editor-in-Chief'
},
{
value: 1,
label: 'Deputy Editor-in-Chief'
},
value: 1,
label: 'Vice Editor-in-Chief'
},
{
value: 2,
label: 'Member of the Editorial Board'
},
],
value: 2,
label: 'Editorial Board Members'
}
],
editorialBoardForm: {
page: 1,
size:10,
type:0
size: 10,
type: 0
},
majorData: [],
baseUrl: this.Common.baseUrl,
@@ -507,10 +315,12 @@ export default {
txt_mess: {},
query: {
articleId: this.$route.query.id,
article_id: this.$route.query.id,
article_id: this.$route.query.id
// page: 1,
// size: 10
},
page: 1,
size: 10,
editform: {
uid: 0,
articleId: this.$route.query.id
@@ -537,7 +347,7 @@ export default {
tableSuggest: [],
loading: false,
Total: 0,
editorialBoardTotal: 0,
editorialBoardTotal: 0
};
},
created() {
@@ -552,12 +362,22 @@ export default {
},
methods: {
selectEditorialBoardType(type) {
console.log('type at line 525:', type)
console.log('type at line 525:', type);
this.editorialBoardForm.page = 1;
this.$forceUpdate();
this.getEditorialBoardType();
},
search() {
this.editorialBoardForm.page = 1;
this.getEditorialBoardType();
},
reset() {
this.editorialBoardForm.page = 1;
this.editorialBoardForm.email = '';
this.getEditorialBoardType();
},
initArticle() {
this.$api
.post('api/Article/getArticleDetail', {
@@ -571,17 +391,29 @@ export default {
// 获取编辑列表数据
getdate() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)',
zIndex: 9999 // 设置一个足够高的层级
});
this.$api
.post('api/Finalreview/getReviewRecord', {
article_id:this.$route.query.id
.post('api/Finalreview/inviteBoardLists', {
article_id: this.$route.query.id,
page: this.page,
size: this.size
})
.then((res) => {
console.log('res at line 562:', res)
// this.Total = res.totle;
this.tableData = res.data.article_final;
loading.close();
console.log('res at line 562:', res);
this.Total = res.data.total;
this.tableData = res.data.lists;
})
.catch((err) => {
loading.close();
console.log(err);
});
},
@@ -626,11 +458,17 @@ export default {
if (this.editform.uid == 0) {
this.$message.error('please select a reviewer');
} else {
this.loading = true;
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)',
zIndex: 9999 // 设置一个足够高的层级
});
this.$api
.post('api/Article/addArticleReviewer', this.editform)
.then((res) => {
this.loading = false;
loading.close();
if (res.code == 0) {
this.$message.success('add success');
this.$router.go(0);
@@ -639,6 +477,7 @@ export default {
}
})
.catch((err) => {
loading.close();
console.log(err);
});
}
@@ -668,59 +507,119 @@ export default {
},
getEditorialBoardType() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)',
zIndex: 9999 // 设置一个足够高的层级
});
this.$api
.post('api/Finalreview/boardLists', {
...this.editorialBoardForm,
article_id: this.query.article_id
})
.then((res) => {
loading.close();
this.tableSuggest = res.data.lists;
this.editorialBoardTotal = res.data.total;
this.AddSuggest = true;
})
.catch((err) => {
loading.close();
console.log(err);
});
},
// 添加推荐审稿人
async openSuggRev() {
await this.getEditorialBoardType();
this.AddSuggest = true;
async openSuggRev() {
await this.getEditorialBoardType();
},
selSuggest(e) {
this.loading = true;
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)',
zIndex: 9999 // 设置一个足够高的层级
});
this.$api
.post('api/Finalreview/invite', {
reviewer_id: e.user_id,
article_id: this.$route.query.id
})
.then((res) => {
this.loading = false;
if (res.status == 0) {
loading.close();
if (res.status == 1) {
this.$message.success('Add Success');
this.AddSuggest = false;
this.getdate();
} else {
this.$message.error('Add Error');
this.$message.error('Add Error:' + res.msg);
}
})
.catch((err) => {
this.loading = false;
loading.close();
console.log(err);
});
},
showdetail(row) {
if (row.state == 4) {
this.$message.error('Review expired!');
} else {
this.$router.push({
path: 'articleReviewerDetail',
query: {
id: row.art_rev_id
}
});
}
this.FinalDetailBaseInfo={...row}
// const loading = this.$loading({
// lock: true,
// text: 'Loading',
// spinner: 'el-icon-loading',
// background: 'rgba(0, 0, 0, 0.7)',
// zIndex: 9999 // 设置一个足够高的层级
// });
// this.$api
// .post('api/Finalreview/view', {
// record_id: row.id
// // reviewer_id: this.$route.query.reviewer_id
// })
// .then((res) => {
// this.detailDate.artrevid = res.art_rev_id;
// this.detailDate.article = res.data.article.title;
// this.detailDate.reviewer = res.data.article_final.realname;
// this.detailDate.ctime = res.data.article_final.update_time;
// this.detailDate.article_final = res.data.article_final;
// this.detailDate.state = res.state;
// this.txt_mess = res;
// this.journal_id = res.journal_id;
// this.articleId = res.data.article.article_id;
// this.$nextTick(() => {
// this.$refs.commonEditor.getData();
// loading.close();
// });
// this.$forceUpdate();
// })
// .catch((err) => {
// loading.close();
// console.log(err);
// });
this.$nextTick(() => {
this.$refs.commonFinalDetail.init();
});
// this.$router.push({
// path: 'articleEditorDetail',
// query: {
// id: row.id
// }
// });
},
changereviewer() {
if (this.editform.uid !== 0) {
@@ -760,21 +659,22 @@ export default {
},
revstate(row, column, cellValue, index) {
let frag = '';
if (row.state == 0) {
frag = 'With reviewer';
frag = '<text style="color:#67c23a">Agree to review</text>';
} else if (row.state == 1) {
// 大修
frag = 'Major revision';
frag = '<text style="color:#67c23a">Accept</text>';
// frag = 'Revision';
} else if (row.state == 2) {
frag = 'Reject';
} else if (row.state == 3) {
frag = '<text style="color:#0077b8">Revision</text>';
} else if (row.state == 2) {
//小修
// frag = 'Accept';
frag = 'Minor revision';
frag = '<text style="color:#f56c6c">Reject</text>';
} else if (row.state == 4) {
frag = '<text style="color:#aaa">invalid</text>';
frag = '<text style="color:#888">invalid</text>';
} else if (row.state == 5) {
frag = 'invitation';
}
@@ -873,11 +773,11 @@ export default {
margin: 0 5px 0 0;
font-size: 13px;
}
::v-deep .editorialBoardDialog .el-dialog__body{
padding-top: 10px !important;
padding-bottom: 0px !important;
::v-deep .editorialBoardDialog .el-dialog__body {
padding-top: 10px !important;
padding-bottom: 0px !important;
}
::v-deep .editorialBoardDialog .el-dialog__body .el-table--mini .el-table__cell{
padding: 0px !important
::v-deep .editorialBoardDialog .el-dialog__body .el-table--mini .el-table__cell {
padding: 0px !important;
}
</style>