Files
tougao_web/src/components/page/articleReviewer.vue
xulu d115bd19dd 1
2021-09-02 09:15:24 +08:00

535 lines
18 KiB
Vue

<template>
<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>
</div>
<div class="container">
<div class="handle-box">
<el-button type="primary" icon="el-icon-circle-plus-outline" @click="editVisible = true">Add reviewer</el-button>
<el-button type="primary" icon="el-icon-circle-plus-outline" @click="editVisible1 = true">Supplement</el-button>
</div>
<el-table :data="tableData" border stripe class="table" ref="multipleTable" header-cell-class-name="table-header">
<el-table-column type="index" label="No." align="center" width="60"></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">
<template slot-scope="scope">
<el-badge is-dot :hidden="scope.row.reviewer_act == 1 ? false : true" class="item">
{{ scope.row.reviewer }}
</el-badge>
</template>
</el-table-column>
<el-table-column prop="country" label="Country" align="center"></el-table-column>
<el-table-column prop="company" label="Company" align="center"></el-table-column>
<el-table-column :formatter="majorTitle" label="Major" align="center"></el-table-column>
<el-table-column prop="field" label="Field" align="center"></el-table-column>
<el-table-column :formatter="revstate" label="state" align="center"></el-table-column>
<el-table-column label="" width="230" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain icon="el-icon-tickets" @click="showdetail(scope.row)">Detail</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background layout="total, prev, pager, next" :current-page="query.pageIndex" :page-size="query.pageSize"
:total="Total" @current-change="handlePageChange"></el-pagination>
</div>
</div>
<el-dialog title="add reviewer" :visible.sync="editVisible" 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 ref="editform" :model="editform" label-width="100px">
<el-form-item label="state">
<el-select v-model="editform.uid" filterable @change="changereviewer()" placeholder="Please select">
<el-option :key="0" label="please select" :value="0"></el-option>
<el-option v-for="item in reviewerList" :key="item.user_id" :label="item.account" :value="item.user_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Country" v-if="editform.uid != 0">
<span>{{ reviewer_data.country }}</span>
</el-form-item>
<el-form-item label="Company" v-if="editform.uid != 0">
<span>{{ reviewer_data.company }}</span>
</el-form-item>
<el-form-item label="Major" v-if="editform.uid != 0">
<span>{{ reviewer_data.major_title }}</span>
</el-form-item>
<el-form-item label="Field" v-if="editform.uid != 0">
<span>{{ reviewer_data.field }}</span>
</el-form-item>
<el-form-item label="Introduction" v-if="editform.uid != 0">
<span>{{ reviewer_data.introduction }}</span>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editVisible = false">cancel</el-button>
<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 ref="questionform" :model="questionform" label-position="top" label-width="300px">
<el-form-item label="Reviewer">
<el-select v-model="questionform.uid" filterable @change="changereviewer1()" placeholder="Please select">
<el-option :key="0" label="please select" :value="0"></el-option>
<el-option v-for="item in reviewerList" :key="item.user_id" :label="item.account" :value="item.user_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Country" v-if="questionform.uid != 0">
<span>{{ reviewer_data1.country }}</span>
</el-form-item>
<el-form-item label="Company" v-if="questionform.uid != 0">
<span>{{ reviewer_data1.company }}</span>
</el-form-item>
<el-form-item label="Major" v-if="questionform.uid != 0">
<span>{{ reviewer_data1.major_title }}</span>
</el-form-item>
<el-form-item label="Field" v-if="questionform.uid != 0">
<span>{{ reviewer_data1.field }}</span>
</el-form-item>
<el-form-item label="Introduction" v-if="questionform.uid != 0">
<span>{{ reviewer_data1.introduction }}</span>
</el-form-item>
<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-form-item label="2.Technical Quality">
<el-radio-group v-model="questionform.qu2">
<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-form-item label="3.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-form-item label="4.Style & Overall Representation">
<el-radio-group v-model="questionform.qu4">
<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-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-form-item label="6.Suitability for 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-form-item label="7.Adequate Illustrations or Drawings">
<el-radio-group v-model="questionform.qu7">
<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-form-item label="8.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-collapse>
<el-form-item label="9.Does the title represent manuscript's contents?">
<el-switch v-model="questionform.qu9" active-text="yes" inactive-text="no"></el-switch>
<el-collapse-item name="1">
<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-form-item>
<el-form-item label="10.Is the Abstract accurate and concise?">
<el-switch v-model="questionform.qu10" active-text="yes" inactive-text="no"></el-switch>
<el-collapse-item name="2">
<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-form-item>
<el-form-item label="11.Are the approach/ methods properly described?">
<el-switch v-model="questionform.qu11" active-text="yes" inactive-text="no"></el-switch>
<el-collapse-item name="3">
<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-form-item>
<el-form-item label="12.Are the conclusions and interpretations sound?">
<el-switch v-model="questionform.qu12" active-text="yes" inactive-text="no"></el-switch>
<el-collapse-item name="4">
<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-form-item>
<el-form-item label="13.Are the references properly cited?">
<el-switch v-model="questionform.qu13" active-text="yes" inactive-text="no"></el-switch>
<el-collapse-item name="5">
<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-form-item>
<el-form-item label="14.Is this a new/ original/ confirmatory contribution?">
<el-switch v-model="questionform.qu14" active-text="yes" inactive-text="no"></el-switch>
<el-collapse-item name="6">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input type="textarea" placeholder="please input content" v-model="questionform.qu14contents" :rows="4"></el-input>
</el-collapse-item>
</el-form-item>
<el-form-item label="15.Is it within the scope of the journal?">
<el-switch v-model="questionform.qu15" active-text="yes" inactive-text="no"></el-switch>
<el-collapse-item name="7">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input type="textarea" placeholder="please input content" v-model="questionform.qu15contents" :rows="4"></el-input>
</el-collapse-item>
</el-form-item>
</el-collapse>
<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>
<br />
<span>Your score:{{ questionform.rated }}</span>
</el-form-item>
<el-form-item label="REFEREE'S RECOMMENDATIONS" prop="recommend">
<el-radio-group v-model="questionform.recommend">
<el-radio :label="1">Accept with minor changes</el-radio>
<br />
<el-radio :label="2">Accept subject to revisions, as noted in comments</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">
<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="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="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>
<el-button type="primary" @click="addArtRev">submit</el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
baseUrl: this.Common.baseUrl,
questionform: {
uid: 0,
articleId: this.$route.query.id,
qu1: '',
qu2: '',
qu3: '',
qu4: '',
qu5: '',
qu6: '',
qu7: '',
qu8: '',
qu9: 'false',
qu9contents: '',
qu10: 'false',
qu10contents: '',
qu11: 'false',
qu11contents: '',
qu12: 'false',
qu12contents: '',
qu13: 'false',
qu13contents: '',
qu14: 'false',
qu14contents: '',
qu15: 'false',
qu15contents: '',
rated: '',
recommend: '',
other: '',
confident: '',
comment: ''
},
query: {
articleId: this.$route.query.id,
pageIndex: 1,
pageSize: 10
},
editform: {
uid: 0,
articleId: this.$route.query.id
},
reviewer_data: {
introduction: '',
country: '',
company: '',
major_title: '',
field: ''
},
reviewer_data1: {
introduction: '',
country: '',
company: '',
major_title: '',
field: ''
},
editVisible: false,
editVisible1: false,
tableData: [],
reviewerList: [],
loading: false,
Total: 0
};
},
created() {
this.getdate();
this.initreviewerList();
},
computed: {
upload_url: function() {
return this.baseUrl + 'api/Reviewer/up_file';
}
},
methods: {
// 获取编辑列表数据
getdate() {
this.$api
.post('api/Article/getReviewerList', this.query)
.then((res) => {
this.Total = res.totle;
this.tableData = res.data;
})
.catch((err) => {
console.log(err);
});
},
// 分页导航
handlePageChange(val) {
this.$set(this.query, 'pageIndex', val);
this.getdate();
},
addReviewer() {
alert('sssss');
},
//初始化审查员列表
initreviewerList() {
this.$api
.post('api/Article/getArticleReviewerList', {
articleId: this.query.articleId
})
.then((res) => {
this.reviewerList = res.data;
})
.catch((err) => {
console.log(err);
});
},
//保存添加操作
saveEdit() {
if (this.editform.uid == 0) {
this.$message.error('please select a reviewer');
} else {
this.loading = true;
this.$api
.post('api/Article/addArticleReviewer', this.editform)
.then((res) => {
this.loading = false;
if (res.code == 0) {
this.$message.success('add success');
this.$router.go(0);
} else {
this.$message.error('add error');
}
})
.catch((err) => {
console.log(err);
});
}
},
addArtRev() {
if (this.questionform.uid == 0) {
this.$message.error('Please select a reviewer');
} else {
this.loading = true;
this.$api.post('api/Article/addArtRev', this.questionform)
.then((res) => {
this.loading = false;
if (res.code == 0) {
this.$message.success('add success');
this.$router.go(0);
} else {
this.$message.error('add error');
}
})
.catch((err) => {
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
}
});
}
},
changereviewer() {
if (this.editform.uid !== 0) {
this.$api
.post('api/Article/getReviewerdetail', {
uid: this.editform.uid
})
.then((res) => {
this.reviewer_data.introduction = res.data.introduction;
this.reviewer_data.country = res.data.country;
this.reviewer_data.company = res.data.company;
this.reviewer_data.major_title = res.data.major_title;
this.reviewer_data.field = res.data.field;
})
.catch((err) => {
console.log(err);
});
}
},
changereviewer1() {
if (this.questionform.uid !== 0) {
this.$api
.post('api/Article/getReviewerdetail', {
uid: this.questionform.uid
})
.then((res) => {
this.reviewer_data1.introduction = res.data.introduction;
this.reviewer_data1.country = res.data.country;
this.reviewer_data1.company = res.data.company;
this.reviewer_data1.major_title = res.data.major_title;
this.reviewer_data1.field = res.data.field;
})
.catch((err) => {
console.log(err);
});
}
},
majorTitle(row, column, cellValue, index) {
return row.major_title + '(' + row.major_ctitle + ')';
},
revstate(row, column, cellValue, index) {
let frag = '';
if (row.state == 0) {
frag = 'With reviewer';
} else if (row.state == 1) {
frag = 'Revision';
} else if (row.state == 2) {
frag = 'Reject';
} else if (row.state == 3) {
frag = 'Accepted';
} else if (row.state == 4) {
frag = 'invalid';
}
return frag;
}
}
};
</script>
<style scoped>
.handle-box {
margin-bottom: 20px;
}
.handle-select {
width: 120px;
}
.handle-input {
width: 300px;
display: inline-block;
}
.table {
width: 100%;
font-size: 14px;
}
.red {
color: #ff0000;
}
.mr10 {
margin-right: 10px;
}
.table-td-thumb {
display: block;
margin: auto;
width: 40px;
height: 40px;
}
.el-table .warning-row {
background: #f3ca7f;
}
.el-table .success-row {
background: #bcfc9a;
}
.el-table .normol-row {
background: #d8f1c7;
}
.el-table .red-row {
background: #f05555;
}
</style>