This commit is contained in:
2025-06-19 11:41:19 +08:00
21 changed files with 3756 additions and 1431 deletions

View File

@@ -1449,4 +1449,12 @@ wmath {
.ML__keyboard {
z-index: 99999 !important;
position: fixed !important;
}
}
.sticky-header {
position: sticky;
top: 0;
z-index: 1000; /* 保证在上层 */
background-color: transparent;
/* padding: 10px; */
box-shadow: 0 2px 2px rgba(221, 221, 221, 0.2);
}

View File

@@ -273,6 +273,7 @@ const en = {
state4: 'Revision',
state5: 'Accept',
state6: 'Pre-accept',
// state7: 'Final Decision',
act1: 'Dealing',
act2: 'Finished'
},

View File

@@ -266,6 +266,7 @@ const zh = {
state4: '退修',
state5: '接收',
state6: '终审',
// state7: '终审',
act1: '审查中',
act2: '已完结'
},

View File

@@ -1,5 +1,5 @@
<template>
<div>
<div :style="[2,5].includes(activeIndex) ?'height:100%':''">
<!-- <div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
@@ -7,6 +7,8 @@
</el-breadcrumb-item>
</el-breadcrumb>
</div> -->
<div class="tab_all">
<!-- 正在处理 -->
<p @click="tabIndex(1)" :class="activeIndex == 1 ? 'tab_Normal tab_Select' : 'tab_Normal'">Edit</p>
@@ -25,8 +27,11 @@
<!-- <p @click="tabIndex(4)" :class="activeIndex == 4 ? 'tab_Normal tab_Select' : 'tab_Normal'">Investigte and
Retrace</p> -->
<br clear="both" />
</div>
<div class="container" style="padding: 20px 15px">
<div class="container" style="padding: 20px 15px 10px;box-sizing: border-box;"
:style="[2,5].includes(activeIndex) ?'height:calc(100% - 60px)':''"
>
<articleListA v-if="activeIndex == '1'" :journals="journals[0]"></articleListA>
<articleListB v-if="activeIndex == '2'" :journals="journals[1]" @changeEvent="changeEvent"></articleListB>
@@ -153,6 +158,7 @@ export default {
</script>
<style scoped>
.tab_all {
border-bottom: 1px solid #ddd;
}
@@ -182,4 +188,7 @@ export default {
.tab_Select:hover {
}
.sticky-header{
background-color: #fafafa;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,172 @@
<template>
<div class="block commonMajor" style="width: 100%;overflow: hidden;">
<el-button type="primary" plain size="mini" @click="handleAdd" style="float:right;margin-bottom: 20px;"><i class="el-icon-plus" ></i>Add Remark </el-button>
<div
v-for="(field, index) in fields"
:key="index"
class="cascader-container"
style="margin-bottom: 10px; display: flex; align-items: center; justify-content: space-between"
>
<span style="margin-right: 10px; font-size: 12px; color: #006699; font-weight: bold">{{ Number(index+1) }}</span>
<el-input style="width: calc(100% - 80px)" type="textarea" :autosize="{minRows: 1, maxRows: 3}" v-model="field.text" :key="index"></el-input>
<!-- <el-cascader
:ref="`cascader${index}`"
@change="handleChange(index)"
v-model="field.selectedValue"
:placeholder="'Please select Field '"
:options="options"
:props="getProps()"
style="width: calc(100% - 120px)"
></el-cascader> -->
<!-- Delete button -->
<el-button size="mini" type="danger" style="margin-left: 10px;" @click="handleDelete(index)"><i class="el-icon-delete"></i></el-button>
</div>
<!-- <el-dialog title="Add Field " :visible.sync="coreVisible1" width="780px" :close-on-click-modal="false">
<el-form :model="coreForm1" :rules="rules1" ref="core_Form1" label-width="140px" >
<el-form-item prop="major">
<span slot="label">
<i style="color: #f56c6c; margin-right: 4px">*</i>
Field
</span>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="coreVisible1 = false">Cancel</el-button>
<el-button type="primary" @click="onSubmit_core1(coreForm1)">Save</el-button>
</span>
</el-dialog> -->
<!-- 渲染多个 el-cascader 组件 -->
</div>
</template>
<script>
export default {
props: {
userId: {
type: String,
default: ''
},
list: {
type: Array,
default: []
}
},
watch: {
list: {
handler(e) {
this.fields=this.list.length>0?[...this.list]:[{}]
},
immediate: true
},
},
data() {
return {
rules1:{},
coreVisible1: false,
coreForm1: {
majorList: []
},
fields: [], // 用于存储多个领域的选项数据
options: [] // 用于存储级联选择的选项数据
};
},
created() {
this.loadFields(); // 初始化时加载数据
},
methods: {
// 动态添加一个新的 Cascader
handleAdd() {
this.$nextTick(() => {
// this.fields=[]
const today = new Date();
const formattedDate = today.getFullYear() + '.' +
String(today.getMonth() + 1).padStart(2, '0') + '.' +
String(today.getDate()).padStart(2, '0');
this.fields.push({ text: '' });
this.$emit('load',this.fields)
// this.coreVisible1 = true;
});
},
// 删除指定的 Cascader
handleDelete(index) {
this.fields.splice(index, 1); // 删除指定索引的字段
this.$emit('load',this.fields)
},
// 获取 Cascader 配置
getProps() {
return {
value: 'value',
label: 'label',
children: 'children',
checkStrictly: true, // 允许任意选择一级
expandTrigger: 'hover' // 使用 hover 触发展开
};
},
// API 调用,获取子节点数据
getMajor(majorId) {
return this.$api
.post('api/Ucenter/getMajor', { major_id: majorId })
.then((response) => response.data)
.catch((error) => {
console.error('API Error:', error);
return [];
});
},
// 加载多个领域数据
loadFields() {
this.$api.post('api/Major/getMajorList', {}).then((res) => {
const transformData = (data) => {
return data.map((item) => {
const transformedItem = {
...item,
value: item.major_id,
label: `${item.major_title}`
};
// 如果存在 children递归处理
if (item.children && item.children.length > 0) {
transformedItem.children = transformData(item.children);
}
return transformedItem;
});
};
// 执行递归,获取选项数据
const data = transformData(res.data.majors.find((item) => item.major_id == 1).children);
this.options = [...data]; // 将选项数据赋给 options
});
}
}
};
</script>
<style scoped>
/* 你可以根据需要自定义样式 */
.cascader-container {
width: 100%;
/* margin-top: 40px; */
display: flex;
align-items: center;
justify-content: space-between;
}
::v-deep input[aria-hidden='true'] {
display: none !important;
}
</style>

View File

@@ -1,308 +1,323 @@
<template>
<div>
<div class="handle-box">
<el-select v-model="queryType.journal_id" @change="getDateType" placeholder="Please select journal"
style="width: 300px;">
<el-option :key="0" label="All journals" :value="0"></el-option>
<el-option v-for="item in journals" :key="item.journal_id" :label="item.title"
:value="item.journal_id"></el-option>
</el-select>
</div>
<el-table :data="dataType" border stripe class="table" ref="multipleTable" header-cell-class-name="table-header"
empty-text="New messages (0)">
<el-table-column type="index" label="No." width="55" align="center"></el-table-column>
<el-table-column width="160" label="Doi" align="center">
<div style="height: 100%">
<div class="handle-box">
<el-select v-model="queryType.journal_id" @change="getDateType" placeholder="Please select journal" style="width: 300px">
<el-option :key="0" label="All journals" :value="0"></el-option>
<el-option v-for="item in journals" :key="item.journal_id" :label="item.title" :value="item.journal_id"></el-option>
</el-select>
</div>
<div style="height: calc(100% - 100px)">
<el-table
:data="dataType"
border
stripe
class="table"
ref="multipleTable"
header-cell-class-name="table-header"
height="100%"
empty-text="New messages (0)"
>
<el-table-column type="index" label="No." width="55" align="center"></el-table-column>
<el-table-column prop="accept_sn" label="SN" width="240px">
<template slot-scope="scope">
<p>
{{ scope.row.accept_sn }}
<el-button
size="mini"
type="success"
plain
icon="el-icon-tickets"
@click="showdetaileditor(scope.row)"
style="margin-left: 10px; padding: 4px; float: right"
>Detail</el-button
>
</p>
<p v-if="scope.row.doi" style="color: #006699"><span>Doi: </span>{{ scope.row.doi }}</p>
</template>
</el-table-column>
<!-- <el-table-column width="160" label="Doi" align="center">
<template slot-scope="scope">
<p style="margin-bottom: 5px;">
<p >
{{scope.row.doi}}
</p>
<el-button size="mini" type="primary" plain icon="el-icon-tickets"
@click="showdetaileditor(scope.row)">Detail</el-button>
<el-button size="mini" type="primary" plain icon="el-icon-tickets"
@click="showdetaileditor(scope.row)">Detail</el-button>
</template>
</el-table-column>
<el-table-column prop="accept_sn" label="SN" width="180px"></el-table-column>
<el-table-column prop="" label="Title">
<template slot-scope="scope">
<p v-if="scope.row.title==''">
Article{{scope.row.p_article_id}}
</p>
<p else>
{{scope.row.title}}
</p>
</template>
</el-table-column>
<el-table-column label=" " align="center" width="200px">
<template slot-scope="scope">
<el-button @click="changeEnter(scope.row)" size="mini" type="primary" plain
icon="el-icon-paperclip">Enter</el-button>
<el-button size="mini" @click="typeDelete(scope.row)" type="danger" plain icon="el-icon-delete">
Delete</el-button>
</template>
</el-table-column>
<!-- <el-table-column label="Remarks" align="center">
</el-table-column> -->
<!-- <el-table-column prop="accept_sn" label="SN" width="180px"></el-table-column> -->
<el-table-column prop="" label="Title">
<template slot-scope="scope">
<p v-if="scope.row.title == ''">Article{{ scope.row.p_article_id }}</p>
<p else>
{{ scope.row.title }}
</p>
</template>
</el-table-column>
<el-table-column label=" " align="center" width="200px">
<template slot-scope="scope">
<el-button @click="changeEnter(scope.row)" size="mini" type="primary" plain icon="el-icon-paperclip"
>Enter</el-button
>
<el-button size="mini" @click="typeDelete(scope.row)" type="danger" plain icon="el-icon-delete"> Delete</el-button>
</template>
</el-table-column>
<!-- <el-table-column label="Remarks" align="center">
<template slot-scope="scope">
<p style="margin-bottom: 5px;text-align: left;">{{scope.row.remarks}}</p>
<el-button @click="changeRemark(scope.row)" size="mini" type="primary" plain icon="el-icon-edit">
Remark</el-button>
</template>
</el-table-column> -->
</el-table>
<div class="pagination">
<el-pagination background layout="total, prev, pager, next" :current-page="queryType.pageIndex"
:page-size="queryType.pageSize" :total="TotalType" @current-change="handPage_type"></el-pagination>
</div>
</el-table>
<div class="pagination">
<el-pagination
background
layout="total, prev, pager, next"
:current-page="queryType.pageIndex"
:page-size="queryType.pageSize"
:total="TotalType"
@current-change="handPage_type"
></el-pagination>
</div>
</div>
<!-- remark标记 -->
<el-dialog title="Remarks" :visible.sync="remarkBox" width="550px">
<el-form ref="remark" :model="remark" label-width="85px">
<el-form-item label="Title :">
<p style="line-height: 20px;margin-top: 6px;">{{remark.title}}</p>
</el-form-item>
<el-form-item label="Content :">
<el-input type="textarea" rows="5" v-model="remark.content"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="remarkBox = false">Cancel</el-button>
<el-button type="primary" @click="saveRemark">Save</el-button>
</span>
</el-dialog>
</div>
<!-- remark标记 -->
<el-dialog title="Remarks" :visible.sync="remarkBox" width="550px">
<el-form ref="remark" :model="remark" label-width="85px">
<el-form-item label="Title :">
<p style="line-height: 20px; margin-top: 6px">{{ remark.title }}</p>
</el-form-item>
<el-form-item label="Content :">
<el-input type="textarea" rows="5" v-model="remark.content"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="remarkBox = false">Cancel</el-button>
<el-button type="primary" @click="saveRemark">Save</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
import {
quillEditor
} from 'vue-quill-editor';
import Clipboard from 'clipboard';
import {
Loading
} from 'element-ui';
export default {
props: ['journals'],
data() {
return {
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
uploadUrl: '/tsfile/',
journalList: [],
queryType: {
username: localStorage.getItem('U_name'),
editor_id: localStorage.getItem('U_id'),
journal_id: 0,
ts_state: 0,
pageIndex: 1,
pageSize: 50
},
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
import { quillEditor } from 'vue-quill-editor';
import Clipboard from 'clipboard';
import { Loading } from 'element-ui';
export default {
props: ['journals'],
data() {
return {
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
uploadUrl: '/tsfile/',
journalList: [],
queryType: {
username: localStorage.getItem('U_name'),
editor_id: localStorage.getItem('U_id'),
journal_id: 0,
ts_state: 0,
pageIndex: 1,
pageSize: 50
},
queryPush: {},
dataType: [],
TotalType: 0,
remarkBox: false,
remark: {
content: ''
},
};
},
created() {
// this.initSelect();
this.getDateType();
},
methods: {
//初始化期刊
// 初始化列表
getDateType() {
const loading = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.$api
.post('api/Production/getProductionList', this.queryType)
.then(res => {
this.dataType = res.data.productions;
this.TotalType = res.data.count;
loading.close();
})
.catch(err => {
console.log(err);
loading.close();
});
},
queryPush: {},
dataType: [],
TotalType: 0,
remarkBox: false,
remark: {
content: ''
}
};
},
created() {
// this.initSelect();
this.getDateType();
},
methods: {
//初始化期刊
// 分页导航
handPage_type(val) {
this.$set(this.dataType, 'pageIndex', val);
this.getDateType();
},
// 稿件信息展示
showdetaileditor(row) {
let stat_num = 'articleDetailEditor'
this.$router.push({
path: stat_num,
query: {
id: row.article_id
}
});
},
// 标记弹出框
changeRemark(e) {
this.remarkBox = true;
this.remark.title = e.title;
this.remark.articleId = e.article_id;
this.remark.content = e.remarks;
},
// 修改标记
saveRemark() {
this.$api.post('api/Article/editArticleRemark', this.remark)
.then(res => {
if (res.code == 0) {
this.$message.success('success');
this.remarkBox = false;
this.getDateType();
} else {
this.$message.error(res.msg);
}
});
},
// 初始化列表
getDateType() {
const loading = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.$api
.post('api/Production/getProductionList', this.queryType)
.then((res) => {
this.dataType = res.data.productions;
this.TotalType = res.data.count;
loading.close();
})
.catch((err) => {
console.log(err);
loading.close();
});
},
// 稿件删除
typeDelete(e) {
// 二次确认
this.$confirm('Are you sure to delete this manuscript?', 'Tips', {
confirmButtonText: 'OK',
cancelButtonText: 'Cancel',
type: 'warning'
})
.then(() => {
this.$api
.post('api/Production/delProduction', {
'p_article_id': e.p_article_id
})
.then(res => {
this.$message.success('Delete successfully!');
this.getDateType();
})
.catch(err => {
console.log(err);
});
})
.catch(() => {});
},
// 分页导航
handPage_type(val) {
this.$set(this.dataType, 'pageIndex', val);
this.getDateType();
},
// 稿件信息展示
showdetaileditor(row) {
let stat_num = 'articleDetailEditor';
this.$router.push({
path: stat_num,
query: {
id: row.article_id
}
});
},
// 标记弹出框
changeRemark(e) {
this.remarkBox = true;
this.remark.title = e.title;
this.remark.articleId = e.article_id;
this.remark.content = e.remarks;
},
// 修改标记
saveRemark() {
this.$api.post('api/Article/editArticleRemark', this.remark).then((res) => {
if (res.code == 0) {
this.$message.success('success');
this.remarkBox = false;
this.getDateType();
} else {
this.$message.error(res.msg);
}
});
},
// 跳页录入排版
changeEnter(val) {
this.$router.push('/articleListEditor_B1?id=' + val.p_article_id);
},
// 稿件删除
typeDelete(e) {
// 二次确认
this.$confirm('Are you sure to delete this manuscript?', 'Tips', {
confirmButtonText: 'OK',
cancelButtonText: 'Cancel',
type: 'warning'
})
.then(() => {
this.$api
.post('api/Production/delProduction', {
p_article_id: e.p_article_id
})
.then((res) => {
this.$message.success('Delete successfully!');
this.getDateType();
})
.catch((err) => {
console.log(err);
});
})
.catch(() => {});
},
},
};
// 跳页录入排版
changeEnter(val) {
this.$router.push('/articleListEditor_B1?id=' + val.p_article_id);
}
}
};
</script>
<style scoped>
.handle-box {
margin-bottom: 18px;
}
.handle-box {
margin-bottom: 18px;
}
.table {
width: 100%;
font-size: 14px;
}
.table {
width: 100%;
font-size: 14px;
}
.pane_act {
background-color: #fff;
}
.pane_act {
background-color: #fff;
}
.pane_act > div {
}
.pane_act>div {}
.pane_act > div > div > h3 {
font-size: 14px;
margin: 20px 0;
}
.pane_act>div>div>h3 {
font-size: 14px;
margin: 20px 0;
}
.chanFerAll {
position: relative;
/* height: 500px;
.chanFerAll {
position: relative;
/* height: 500px;
overflow-y: scroll; */
}
}
.chanFerAll .chanFerBtn {
cursor: pointer;
}
.chanFerAll .chanFerBtn {
cursor: pointer;
}
.chanFerAll .ref_list:nth-child(2n) {}
.chanFerAll .ref_list:nth-child(2n) {
}
.chanFerAll .ref_list:nth-child(2n+1) {
background-color: #ecf5ff;
}
.chanFerAll .ref_list:nth-child(2n + 1) {
background-color: #ecf5ff;
}
.ref_list {
padding: 20px;
}
.ref_list {
padding: 20px;
}
.ref_list > div:nth-child(1) {
margin: 0 0 15px 0;
}
.ref_list > div:nth-child(1) input {
}
.ref_list>div:nth-child(1) {
margin: 0 0 15px 0;
}
.ref_list > div:nth-child(1) button {
float: right;
}
.ref_list>div:nth-child(1) input {}
.ref_list > div:nth-child(2) {
margin: 0 0 15px 0;
}
.ref_list>div:nth-child(1) button {
float: right;
}
.RefProBar {
position: absolute;
background: rgba(0, 0, 0, 0.7);
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.ref_list>div:nth-child(2) {
margin: 0 0 15px 0;
}
.RefProBar > div {
width: 76%;
position: absolute;
top: 4.5%;
left: 12%;
}
.RefProBar > div > p {
color: #fff;
margin: 20px 0 0 0;
}
.RefProBar {
position: absolute;
background: rgba(0, 0, 0, 0.7);
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.RefProBar > div > p > img {
width: 30px;
vertical-align: middle;
margin: 0 10px 0 5px;
}
.RefProBar>div {
width: 76%;
position: absolute;
top: 4.5%;
left: 12%;
}
.RefProBar > div > p > span {
font-size: 18px;
}
.RefProBar>div>p {
color: #fff;
margin: 20px 0 0 0;
}
.RefProBar>div>p>img {
width: 30px;
vertical-align: middle;
margin: 0 10px 0 5px;
}
.RefProBar>div>p>span {
font-size: 18px;
}
.Fer_btn button:hover {
text-decoration: underline;
}
.Fer_btn button:hover {
text-decoration: underline;
}
</style>

View File

@@ -1,6 +1,7 @@
<template>
<div>
<div class="tab_post">
<div v-for="(item, index) in tabsList" @click="jumpTab(index, item)" :class="tabName == item.refName ? 'P_style' : ''">
<h5>
<span>{{ index + 1 }}</span>
@@ -934,7 +935,7 @@
<img :src="baseUrl + 'public/mainimg/' + item.content" :style="'width:' + item.width + 'px'" />
<font :style="'width:' + item.width + 'px'">{{ item.note }} </font>
</p> --><comArtHtmlCreatNewProduce
:p_article_id="p_article_id"
:p_article_id="p_article_id"
:deMesYul="{ ...deMesYul, authors: authorData, articlePdfUrl: UpTyFIle ? baseUrl + 'public/' + UpTyFIle : '' }"
></comArtHtmlCreatNewProduce>
</div>
@@ -1175,7 +1176,7 @@ export default {
// value: '书评'
// }
// ],
opMedical:[],
opMedical: [],
editAuthor: false,
addAuthor: false,
editSchool: false,
@@ -1394,7 +1395,7 @@ export default {
};
},
created() {
this.opMedical=this.$commonJS.opMedicalList()
this.opMedical = this.$commonJS.opMedicalList();
this.getHight();
window.addEventListener('resize', this.getHight);
this.getData();
@@ -2843,7 +2844,9 @@ export default {
// 判断滚动条滚动距离是否大于当前滚动项可滚动距离
let judge = e.target.scrollTop >= scrollItems[i].offsetTop - scrollItems[0].offsetTop;
if (judge) {
console.log('judge at line 2846:', judge)
this.tabIndex = i.toString();
console.log('this.tabIndex at line 2848:', this.tabIndex)
// 找对应的tab-name值
this.tabName = this.tabsList[this.tabIndex].refName;
// this.tabClick = this.tabsList[this.tabIndex].refName
@@ -3144,7 +3147,10 @@ export default {
.chanFerAll {
float: left;
position: relative;
width: 61.5%;
/* width: 61.5%; */
min-width: 61.5%;
width: calc(76% - 50px) !important;
}
.chanFerAll .chanFerBtn {

View File

@@ -1,5 +1,5 @@
<template>
<div>
<div style="height: 100%;">
<div class="handle-box">
<el-select v-model="queryType.issn" @change="getJourChange" placeholder="Please select a journal" style="width: 250px">
<el-option v-for="item in journals" :key="item.issn" :label="item.title" :value="item.issn"> </el-option>
@@ -26,7 +26,8 @@
<i class="el-icon-search" style="margin-right: 5px"></i>Search
</el-button>
</div>
<el-table
<div style="height: calc(100% - 100px);">
<el-table height="100%"
:data="dataTable"
border
stripe
@@ -36,13 +37,20 @@
empty-text="New messages (0)"
>
<el-table-column width="80" label="No." prop="npp" align="center"></el-table-column>
<el-table-column width="140" label="Stage" align="center">
<el-table-column width="240" label="Stage" align="center">
<template slot-scope="scope">
{{ scope.row.stage_year }} Vol.{{ scope.row.stage_vol }} issue.{{ scope.row.stage_no }}
<br />
<el-button style="margin-top: 10px" size="mini" type="success" plain icon="el-icon-view" @click="lookView(scope.row)">
Preview</el-button
>
<el-button
size="mini"
type="success"
plain
icon="el-icon-view"
@click="lookView(scope.row)"
style="margin-left: 10px;padding:4px;float: right;"
>Preview</el-button
>
</template>
</el-table-column>
<el-table-column label="Title">
@@ -65,9 +73,9 @@
<p style="cursor: pointer; color: #006699 !important" @click="goCite(scope.row)">
{{ scope.row.cite_num ? scope.row.cite_num.length : 0 }}
<!-- <span style="margin-left: 4px; cursor: pointer; color: #006699 !important; font-weight: bold">
<span style="margin-left: 4px; cursor: pointer; color: #006699 !important; font-weight: bold">
<i class="el-icon-edit"></i>
</span> -->
</span>
</p>
</template>
</el-table-column>
@@ -130,6 +138,8 @@
@current-change="handlePageChange"
></el-pagination>
</div>
</div>
<!-- 修改信息 -->
<el-dialog title="" :visible.sync="EditVisible" width="750px" :close-on-click-modal="false">

File diff suppressed because it is too large Load Diff

View File

@@ -23,13 +23,23 @@
header-cell-class-name="table-header"
empty-text="New messages (0)"
>
<el-table-column label="Base Information">
<el-table-column width="360" label="Base Information">
<template slot-scope="scope">
<p class="tab_tie_col">
<span>Realname: </span><b style="font-size: 15px">{{ scope.row.realname }}</b>
<span>Realname: </span><b style="font-size: 14px">{{ scope.row.realname }}</b><el-button
size="mini"
type="success"
plain
icon="el-icon-tickets"
@click="openDetail(scope.row)"
style="margin-left: 10px;padding:4px;float: right;"
>Detail</el-button
>
</p>
<p class="tab_tie_col"><span>Account: </span>{{ scope.row.account }}</p>
<p class="tab_tie_col"><span>Email: </span>{{ scope.row.email }}</p>
</template>
</el-table-column>
<el-table-column label="Other Information">
@@ -39,6 +49,16 @@
<!-- <p class="tab_tie_col" v-if="scope.row.majorstr != ''"><span>Major: </span>{{ scope.row.majorstr }}</p> -->
</template>
</el-table-column>
<el-table-column label="Research areas" width="310">
<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="rs_num" label="Review Record" width="180">
<template slot-scope="scope">
Major review: {{ scope.row.major_times }} ({{ scope.row.major_rate }}%)
@@ -66,9 +86,9 @@
</template>
</el-table-column>
<!-- <el-table-column prop="rd_num" label="Fail number" width="140"></el-table-column> -->
<el-table-column label="" width="200" align="center">
<el-table-column label="" width="120" align="center">
<template slot-scope="scope">
<el-button size="mini" type="success" plain icon="el-icon-tickets" @click="openDetail(scope.row)">Detail</el-button>
<!-- <el-button size="mini" type="success" plain icon="el-icon-tickets" @click="openDetail(scope.row)">Detail</el-button> -->
<el-button size="mini" type="primary" plain icon="el-icon-check" @click="openSelect(scope.row)"> Select</el-button>
</template>
</el-table-column>
@@ -87,7 +107,12 @@
</template>
<script>
export default {
import commonMajorTableList from '../page/components/major/tableList.vue';
export default {components: {
commonMajorTableList
},
data() {
return {
messform: {

View File

@@ -1,24 +1,27 @@
<template>
<div>
<div class="crumbs">
<!-- <el-page-header @back="goBack" content="Add manuscript reviewer">
</el-page-header> -->
<el-breadcrumb separator="/">
<el-breadcrumb-item> <i class="el-icon-lx-calendar"></i> Add manuscript reviewer</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div
class="container"
class="container" style="padding: 20px;"
v-loading="loading"
element-loading-text="Loading..."
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(255, 255, 255, 0.8)"
>
>
<span
style="float: right; display: flex; align-items: center; color: #6843ff; font-weight: bold"
@click="isSelectAI = !isSelectAI"
> <el-checkbox v-model="isSelectAI"></el-checkbox><img src="@/assets/img/ai.png" style="width: 30px; height: 30px; margin-left: 10px" /> </span
>
<el-checkbox v-model="isSelectAI"></el-checkbox
><img src="@/assets/img/ai.png" style="width: 30px; height: 30px; margin-left: 10px" />
</span>
<!-- <el-select v-model="messform.major_a" placeholder="Please select major" @change="majorChange(1)"
style="width: 200px;margin: 0 10px 0 0;">
<el-option :key="0" label="All major" :value="0"></el-option>
@@ -38,33 +41,32 @@
<el-option v-for="item in majors_c" :key="item.major_id" :label="item.major_title"
:value="item.major_id"></el-option>
</el-select> -->
<div v-if="!isSelectAI"><span style="font-size: 14px; color: #606266; margin: 0 10px 0 0">Research direction :</span>
<div v-if="!isSelectAI">
<span style="font-size: 14px; color: #606266; margin: 0 10px 0 0">Research direction :</span>
<el-cascader
placeholder="Please select major"
v-model="selectFileds"
style="width: 300px; margin-right: 10px"
@change="fieldChange"
:options="allFileds"
:props="fieldsProps"
collapse-tags
clearable
></el-cascader>
<el-input
v-model="messform.email"
clearable
placeholder="Please enter email"
style="width: 190px; display: inline-block; margin: 0 10px 20px 0"
></el-input>
<el-input
v-model="messform.field"
clearable
placeholder="Please enter field"
style="width: 190px; display: inline-block; margin: 0 10px 20px 0"
></el-input>
<el-button type="primary" icon="el-icon-search" @click="handleSearch">Search</el-button>
placeholder="Please select major"
v-model="selectFileds"
style="width: 300px; margin-right: 10px"
@change="fieldChange"
:options="allFileds"
:props="fieldsProps"
collapse-tags
clearable
></el-cascader>
<el-input
v-model="messform.email"
clearable
placeholder="Please enter email"
style="width: 190px; display: inline-block; margin: 0 10px 20px 0"
></el-input>
<el-input
v-model="messform.field"
clearable
placeholder="Please enter field"
style="width: 190px; display: inline-block; margin: 0 10px 20px 0"
></el-input>
<el-button type="primary" icon="el-icon-search" @click="handleSearch">Search</el-button>
<el-table
:data="revTable"
border
@@ -74,10 +76,21 @@
header-cell-class-name="table-header"
empty-text="New messages (0)"
>
<el-table-column label="Base Information">
<el-table-column width="360" label="Base Information">
<template slot-scope="scope">
<p class="tab_tie_col">
<span>Realname: </span><b style="font-size: 15px">{{ scope.row.realname }}</b>
<span>Realname: </span><b style="font-size: 14px">{{ scope.row.realname }}</b>
<el-button
size="mini"
type="success"
plain
icon="el-icon-tickets"
@click="openDetail(scope.row)"
style="margin-left: 10px;padding:4px;float: right;"
>Detail</el-button
>
</p>
<p class="tab_tie_col"><span>Account: </span>{{ scope.row.account }}</p>
<p class="tab_tie_col"><span>Email: </span>{{ scope.row.email }}</p>
@@ -87,24 +100,41 @@
<template slot-scope="scope">
<p class="tab_tie_col" v-if="scope.row.company != ''"><span>Affiliation: </span>{{ scope.row.company }}</p>
<p class="tab_tie_col" v-if="scope.row.field != ''"><span>Field: </span>{{ scope.row.field }}</p>
<p class="tab_tie_col" v-if="scope.row.majorstr != ''"><span>Major: </span>{{ scope.row.majorstr }}</p>
<!-- <p class="tab_tie_col" v-if="scope.row.majorstr != ''"><span>Major: </span>{{ scope.row.majorstr }}</p> -->
</template>
</el-table-column>
<el-table-column prop="rs_num" label="Reviewed Times" width="140">
<el-table-column label="Research areas" width="310">
<template slot-scope="scope">
<commonMajorTableList
:user_id="scope.row.reviewer_id"
:baseInfo="scope.row"
:key="scope.row.reviewer_id"
:disabled="true"
></commonMajorTableList>
</template>
</el-table-column>
<el-table-column prop="rs_num" label="Reviewed Times" width="160">
<template slot-scope="scope">
{{ scope.row.rs_num }}
<font style="margin-left: 5px">(Reviewing:{{ scope.row.now }})</font>
</template>
</el-table-column>
<!-- <el-table-column prop="rd_num" label="Fail number" width="140"></el-table-column> -->
<el-table-column label="" width="200" align="center">
<el-table-column label="" width="120" align="center">
<template slot-scope="scope">
<el-button size="mini" type="success" plain icon="el-icon-tickets" @click="openDetail(scope.row)"
>Detail</el-button
>
<el-button size="mini" type="primary" plain icon="el-icon-check" @click="openSelect(scope.row)">
Select</el-button
>
<div style="display: flex; align-items: center; flex-wrap: wrap; flex-direction: column">
<el-button
style="margin-bottom: 10px"
size="mini"
type="primary"
plain
icon="el-icon-check"
@click="openSelect(scope.row)"
>Select</el-button
>
</div>
</template>
</el-table-column>
</el-table>
@@ -120,7 +150,7 @@
</div>
</div>
<div v-if="isSelectAI">
<commonAI @openSelect="openSelect" @openDetail="openDetail" @loading="(status)=>loading=status"></commonAI>
<commonAI @openSelect="openSelect" @openDetail="openDetail" @loading="(status) => (loading = status)"></commonAI>
</div>
</div>
<el-dialog
@@ -145,8 +175,11 @@
<el-form-item label="Affiliation :">
<span>{{ mesOpen.company }}</span>
</el-form-item>
<el-form-item label="Major :">
<span>{{ mesOpen.major_title }}</span>
<el-form-item label="Research areas :">
<p v-for="(v, i) in majorData" >
<span style="font-weight: bold">{{ i + 1 }}.</span>
{{ v.major_title.replace('Medicine >', '').trim() }}
</p>
</el-form-item>
<el-form-item label="Field :">
<span>{{ mesOpen.field }}</span>
@@ -164,9 +197,11 @@
<script>
import commonAI from './articleReviewerAIAdd.vue';
import commonMajorTableList from '../page/components/major/tableList.vue';
export default {
components: {
commonAI
commonAI,
commonMajorTableList
},
data() {
return {
@@ -208,6 +243,16 @@ export default {
},
computed: {},
methods: {
goBack() {
this.$router.push({
path: 'articleReviewer',
query: {
id: this.$route.query.id
}
});
},
fieldChange(e) {
this.messform.major_id = this.selectFileds[this.selectFileds.length - 1];
},
@@ -246,11 +291,35 @@ export default {
// console.log(this.messform)
this.getDate();
},
async fetchMajorData(userId) {
// if (!this.majorData[userId]) {
// 判断是否已经加载过该用户的数据
this.majorData = await this.getMajorData(userId);
console.log('this.majorData at line 279:', this.majorData)
this.$forceUpdate();
// }
},
// 修改标记
async getMajorData(userId) {
try {
const res = await this.$api.post('api/Reviewer/getUserField', { user_id: userId });
this.loading = false; // 开始加载数据
if (res.status === 1) {
return res.data; // 返回数据
} else {
return []; // 如果没有数据,返回空数组
}
} catch (error) {
console.error('Error fetching data:', error);
return []; // 如果发生错误,返回空数组
}
},
// 审稿人详情
openDetail(row) {
this.mesOpen={}
this.mesOpen = {};
this.mesOpenVisble = true;
this.majorData=[]
this.$api
.post('api/Article/getReviewerdetail', {
uid: row.user_id
@@ -260,7 +329,7 @@ export default {
})
.catch((err) => {
console.log(err);
});
});this.fetchMajorData(row.user_id);
},
// 保存添加操作
openSelect(row) {
@@ -381,4 +450,8 @@ export default {
margin: 0 5px 0 0;
font-size: 13px;
}
::v-deep .el-page-header__left, ::v-deep .el-page-header__content{
font-size:14px !important ;
color:#606266 !important ;
}
</style>

View File

@@ -1,27 +1,55 @@
<template>
<div class="block commonMajor" style="width: 100%;overflow: hidden;">
<el-button type="primary" plain size="mini" @click="handleAdd" style="float:right;margin-bottom: 20px;"><i class="el-icon-plus" ></i>Add Field </el-button>
<div
v-for="(field, index) in fields"
:key="index"
class="cascader-container"
style="margin-bottom: 10px; display: flex; align-items: center; justify-content: space-between"
>
<span style="margin-right: 10px; font-size: 12px; color: #006699; font-weight: bold">Field {{ Number(index+1) }} :</span>
<div class="block commonMajor" style="width: 100%; overflow: hidden">
<div v-if="!disabled">
<el-button type="primary" plain size="mini" @click="handleAdd" style="float: right; margin-bottom: 20px"
><i class="el-icon-plus"></i>Add Field
</el-button>
<div
v-for="(field, index) in fields"
:key="index"
class="cascader-container"
style="margin-bottom: 10px; display: flex; align-items: center; justify-content: space-between"
>
<span style="margin-right: 10px; font-size: 12px; color: #006699; font-weight: bold">Field {{ Number(index + 1) }} :</span>
<el-cascader
:ref="`cascader${index}`"
@change="handleChange(index)"
v-model="field.selectedValue"
:placeholder="'Please select Field '"
:options="options"
:props="getProps()"
style="width: calc(100% - 120px)"
></el-cascader>
<!-- Delete button -->
<el-button size="mini" type="danger" style="margin-left: 10px" @click="handleDelete(index)"
><i class="el-icon-delete"></i
></el-button>
</div>
</div>
<div v-else>
<div
v-for="(field, index) in fields"
:key="index"
class="cascader-container"
style="display: flex; align-items: center; justify-content: space-between"
>
<span style="margin-right: 10px; font-size: 12px; color: #006699; font-weight: bold">Field {{ Number(index + 1) }} :</span>
<div style="width: calc(100% - 60px)">
{{field.str.replace('Medicine >', '').trim() }}
</div>
</div>
</div>
<el-cascader
:ref="`cascader${index}`"
@change="handleChange(index)"
v-model="field.selectedValue"
:placeholder="'Please select Field '"
:options="options"
:props="getProps()"
style="width: calc(100% - 120px)"
></el-cascader>
<!-- Delete button -->
<el-button v-if="!disabled" size="mini" type="danger" style="margin-left: 10px;" @click="handleDelete(index)"><i class="el-icon-delete"></i></el-button>
</div>
<!-- <el-dialog title="Add Field " :visible.sync="coreVisible1" width="780px" :close-on-click-modal="false">
<el-form :model="coreForm1" :rules="rules1" ref="core_Form1" label-width="140px" >
<el-form-item prop="major">
@@ -45,7 +73,7 @@
<script>
export default {
props: {
props: {
userId: {
type: String,
default: ''
@@ -57,21 +85,19 @@ export default {
disabled: {
type: Boolean,
default: false
},
}
},
watch: {
list: {
handler(e) {
this.fields=this.list.length>0?[...this.list]:[{}]
this.fields = this.list.length > 0 ? [...this.list] : [{}];
},
immediate: true
},
}
},
data() {
return {
rules1:{},
rules1: {},
coreVisible1: false,
coreForm1: {
majorList: []
@@ -90,18 +116,18 @@ export default {
this.$nextTick(() => {
this.$refs[`cascader${i}`][0].dropDownVisible = false;
this.coreForm1.majorList = this.fields[i].selectedValue;
this.$emit('load',this.fields)
this.coreForm1.majorList = this.fields[i].selectedValue;
this.$emit('load', this.fields);
this.$forceUpdate();
});
},
onSubmit_core1(coreForm) {
console.log('coreForm at line 1963:', coreForm);
if(!this.fields[0].selectedValue||this.fields[0].selectedValue.length == 0){
if (!this.fields[0].selectedValue || this.fields[0].selectedValue.length == 0) {
this.$message.error('Please select Field !');
return false;
return false;
}
this.$refs.core_Form1.validate((valid) => {
if (valid) {
@@ -116,7 +142,7 @@ this.coreForm1.majorList = this.fields[i].selectedValue;
this.$message.success('Personal information modified successfully!');
this.coreVisible1 = false;
// this.tipVisible = false;
this.$emit('load')
this.$emit('load');
} else {
this.$message.error(res.msg);
}
@@ -133,9 +159,9 @@ this.coreForm1.majorList = this.fields[i].selectedValue;
// 动态添加一个新的 Cascader
handleAdd() {
this.$nextTick(() => {
// this.fields=[]
this.fields.push({ selectedValue: [] }); // 添加一个新的字段
this.$emit('load',this.fields)
// this.fields=[]
this.fields.push({ selectedValue: [] }); // 添加一个新的字段
this.$emit('load', this.fields);
// this.coreVisible1 = true;
});
},
@@ -143,7 +169,7 @@ this.coreForm1.majorList = this.fields[i].selectedValue;
// 删除指定的 Cascader
handleDelete(index) {
this.fields.splice(index, 1); // 删除指定索引的字段
this.$emit('load',this.fields)
this.$emit('load', this.fields);
},
// 获取 Cascader 配置

View File

@@ -0,0 +1,151 @@
<template>
<div>
<div
@click="BoxMajor()"
v-if="user_id"
style="display: flex; align-items: center; justify-content: space-between"
:style="{ cursor: disabled ? '' : 'pointer' }"
>
<!-- 使用 user_id 来获取用户的 majorData -->
<div>
<div v-if="!loading" class="majorDataBox">
<p v-for="(v, i) in majorData" style="border-top: 1px solid #b3d8ff">
<span style="font-weight: bold">{{ i + 1 }}.</span>
{{ v.major_title.replace('Medicine >', '').trim().split('>').pop().trim() }}
</p>
</div>
<div v-else>
<span>Loading...</span>
<!-- 如果数据还在加载显示 "Loading..." -->
</div>
</div>
<b style="margin-left: 10px; color: #006699" class="el-icon-edit" v-if="!disabled"></b>
</div>
<el-dialog :title="disabled?'Research areas':'Edit Research areas'" :visible.sync="majorBox" width="800px">
<el-form ref="remark" :model="majorMes" label-width="120px">
<el-form-item label="Reviewer :">
<p style="line-height: 20px; margin-top: 6px">
<span style="color: #333; font-weight: bold">{{ majorMes.realname }}</span>
( {{ majorMes.email }} )
</p>
</el-form-item>
<!-- <el-form-item label="Email :">
<p style="line-height: 20px; margin-top: 6px">{{ majorMes.email }}</p>
</el-form-item> -->
<el-form-item label="Research areas :">
<common-major-list :disabled="disabled" :list="majorValueList" @load="(e) => (this.majorValueList = e)"></common-major-list>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="majorBox = false">Cancel</el-button>
<el-button type="primary" @click="saveMajor" v-if="!disabled">Save</el-button>
</span>
</el-dialog>
<!-- 评级弹出框 -->
</div>
</template>
<script>
export default {
components: {},
props: ['user_id', 'baseInfo', 'disabled'],
data() {
return {
majorValueList: [],
majorData: [],
majorMes: {},
majorBox: false,
loading: false
};
},
created() {
this.loading = true; // 开始加载数据
// this.initMajor()
},
mounted() {
this.fetchMajorData(this.user_id); // 加载第一个用户的数据
},
methods: {
BoxMajor() {
this.majorBox = true;
this.majorMes.realname = this.baseInfo.realname;
this.majorMes.user_id = this.baseInfo.user_id;
this.majorMes.email = this.baseInfo.email;
if (this.disabled) {
this.majorValueList = [...this.majorData].map((item)=>{return {...item,str:item.major_title}});
console.log('this.majorValueList at line 79:', this.majorValueList)
} else {
this.majorValueList = [...this.majorData].map((item) => ({
selectedValue: Array.isArray(item.shu)
? item.shu
: typeof item.shu === 'string'
? item.shu.split(',').map(Number)
: [item.shu]
}));
}
},
async fetchMajorData(userId) {
// if (!this.majorData[userId]) {
// 判断是否已经加载过该用户的数据
this.majorData = await this.getMajorData(userId);
this.$forceUpdate();
// }
},
// 修改标记
async getMajorData(userId) {
try {
const res = await this.$api.post('api/Reviewer/getUserField', { user_id: userId });
this.loading = false; // 开始加载数据
if (res.status === 1) {
return res.data; // 返回数据
} else {
return []; // 如果没有数据,返回空数组
}
} catch (error) {
console.error('Error fetching data:', error);
return []; // 如果发生错误,返回空数组
}
},
saveMajor() {
this.$api
.post('api/Reviewer/updateUserField', {
user_id: this.majorMes.user_id,
user_field: this.majorValueList.map((item) => item.selectedValue[item.selectedValue.length - 1]).toString(',')
})
.then((res) => {
if (res.status == 1) {
this.$message.success('Success');
this.majorBox = false;
this.fetchMajorData(this.majorMes.user_id);
} else {
this.$message.error(res.msg);
}
});
}
}
};
</script>
<style scoped>
.deteleBtn {
color: #ce1111;
margin-left: 18px;
}
.deteleBtn i {
font-weight: bold;
}
.deteleBtn:hover {
text-decoration: underline;
cursor: pointer;
}
.majorDataBox p:nth-child(1) {
border-top: none !important;
}
</style>

View File

@@ -0,0 +1,116 @@
<template>
<div>
<!-- <oldForm></oldForm> -->
<newForm></newForm>
</div>
</template>
<script>
import oldForm from './old.vue';
import newForm from './new.vue';
export default {
components: {
oldForm,
newForm,
},
data() {
return {
loading: false,
articleId: null,
txt_mess: {},
questionform: {
rev_qu_id: '',
art_rev_id: this.$route.query.Art_id,
qu1: '',
qu2: '',
qu3: '',
qu4: '',
qu5: '',
qu6: '',
qu7: '',
qu8: '',
qu9: '',
qu9contents: '',
qu10: '',
qu10contents: '',
qu11: '',
qu11contents: '',
qu12: '',
qu12contents: '',
qu13: '',
qu13contents: '',
qu14: '',
qu14contents: '',
qu15: '',
qu15contents: '',
rated: '',
recommend: '',
other: '',
confident: '',
comment: '',
is_anonymous: ''
},
btn_submit: 0,
journal_id: null,
rules: {
qu6: [{ required: true, message: 'please select', trigger: 'blur' }],
rated: [{ required: true, message: 'please select', trigger: 'blur' }],
comment: [{ required: true, message: 'please input content', trigger: 'blur' }],
recommend: [{ required: true, message: 'please select', trigger: 'blur' }]
}
};
},
created() {
this.getData();
},
methods: {
getData() {
// Fetch article data
this.$api
.post('api/Reviewer/getartrevdate', {
revid: this.Art_id,
human: 'reviewer'
})
.then((res) => {
this.txt_mess = res;
this.journal_id = res.journal_id;
});
},
questionSubmit() {
if (this.questionform.is_anonymous === '') {
this.$message.error('Please choose disclose your name or remain anonymous.');
return false;
}
this.loading = true;
this.$refs.question.validate((valid) => {
if (valid) {
this.$api.post('api/Reviewer/questionSubmit', this.questionform).then((res) => {
this.loading = false;
if (res.code === 0) {
this.$message.success('Success!!');
this.$router.push('/per_text_success');
} else {
this.$message.error(res.msg);
}
});
} else {
this.loading = false;
}
});
}
}
};
</script>
<style scoped>
.jouLink {
color: #006699;
font-weight: bold;
}
::v-deep .el-collapse {
border-top: 0;
border-bottom: 0;
}
</style>

View File

@@ -0,0 +1,455 @@
<template>
<div>
<el-form :model="questionform" :rules="rules" ref="question" label-width="300px" label-position="top">
<!-- 评估部分 -->
<el-divider content-position="center">REFEREE'S ASSESSMENT</el-divider>
<!-- 1. Originality of the topic -->
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="1. Originality of the topic" prop="qu1">
<el-radio-group v-model="questionform.qu1">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="0.5">Good</el-radio>
<el-radio :label="0">Fair</el-radio>
<el-radio :label="-0.5">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<!-- 2. Importance in its Field -->
<el-col :span="24">
<el-form-item label="2. Importance in its Field" prop="qu2">
<el-radio-group v-model="questionform.qu2">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="0.5">Good</el-radio>
<el-radio :label="0">Fair</el-radio>
<el-radio :label="-0.5">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<!-- 3. Does the manuscript fall within the aim and scope of the journal? -->
<el-col :span="24">
<el-form-item label="3. Does the manuscript fall within the aim and scope of the journal?" prop="qu3">
<el-radio-group v-model="questionform.qu3">
<el-radio :label="0.5">Yes</el-radio>
<el-radio :label="-10">No</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<!-- 4. English language -->
<el-col :span="24">
<el-form-item label="4. English language" prop="qu4">
<el-radio-group v-model="questionform.qu4">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="0.5">Good</el-radio>
<el-radio :label="0">Fair</el-radio>
<el-radio :label="-0.5">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<!-- Collapse sections for comments -->
<el-collapse>
<!-- 5. Does the title represent manuscript's contents? -->
<el-form-item label="5. Does the title represent manuscript's contents?" prop="qu5">
<el-col :span="4">
<el-radio-group v-model="questionform.qu5">
<el-radio :label="0.5">Yes</el-radio>
<el-radio :label="0">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="1">
<template slot="title"><i class="el-icon-edit"></i> Comments/ Suggestions</template>
<el-input
type="textarea"
v-model="questionform.qu5contents"
:rows="4"
placeholder="please input content"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<!-- 6. Is the Abstract accurate and concise? -->
<el-form-item label="6. Is the Abstract accurate and concise?" prop="qu6">
<el-col :span="4">
<el-radio-group v-model="questionform.qu6">
<el-radio :label="0.5">Yes</el-radio>
<el-radio :label="0">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="2">
<template slot="title"><i class="el-icon-edit"></i> Comments/ Suggestions</template>
<el-input
type="textarea"
v-model="questionform.qu6contents"
:rows="4"
placeholder="please input content"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<!-- 7. Does the Introduction highlight the latest advancements and address existing challenges in the current research? -->
<el-form-item
label="7. Does the Introduction highlight the latest advancements and address existing challenges in the current research?"
prop="qu7"
>
<el-col :span="4">
<el-radio-group v-model="questionform.qu7">
<el-radio :label="0.5">Yes</el-radio>
<el-radio :label="0">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="3">
<template slot="title"><i class="el-icon-edit"></i> Comments/ Suggestions</template>
<el-input
type="textarea"
v-model="questionform.qu7contents"
:rows="4"
placeholder="please input content"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<!-- 8. Does the Introduction cite the most recent and pertinent reference directly related to the research? -->
<el-form-item label="8. Does it cite the most recent and pertinent reference directly related to the research?" prop="qu8">
<el-col :span="4">
<el-radio-group v-model="questionform.qu8">
<el-radio :label="0.5">Yes</el-radio>
<el-radio :label="0">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="4">
<template slot="title"><i class="el-icon-edit"></i> Comments/ Suggestions</template>
<el-input
type="textarea"
v-model="questionform.qu8contents"
:rows="4"
placeholder="please input content"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<!-- 9. Does the experimental design provide sufficient scientific support for the article? -->
<el-form-item
label="9. Materials and Methods: Does the experimental design provide sufficient scientific support for the article (e.g., by using diverse cell lines with clear origins, ensuring natural drugs are authenticated, integrating in vitro and in vivo studies, and examining the issue at multiple levels including proteins and nucleic acids)?"
prop="qu9"
>
<el-col :span="4">
<el-radio-group v-model="questionform.qu9">
<el-radio :label="0.5">Yes</el-radio>
<el-radio :label="0">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="5">
<template slot="title"><i class="el-icon-edit"></i> Comments/ Suggestions</template>
<el-input
type="textarea"
v-model="questionform.qu9contents"
:rows="4"
placeholder="please input content"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<!-- 10. Does the experimental design adopt the latest cutting-edge research methods and technologies? -->
<el-form-item
label="10. Does the experimental design adopt the latest cutting-edge research methods and technologies?"
prop="qu10"
>
<el-col :span="4">
<el-radio-group v-model="questionform.qu10">
<el-radio :label="0.5">Yes</el-radio>
<el-radio :label="0">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="6">
<template slot="title"><i class="el-icon-edit"></i> Comments/ Suggestions</template>
<el-input
type="textarea"
v-model="questionform.qu10contents"
:rows="4"
placeholder="please input content"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<!-- 11. Is the appropriate statistical analysis used? -->
<el-form-item label="11. Is the appropriate statistical analysis used?" prop="qu11">
<el-col :span="4">
<el-radio-group v-model="questionform.qu11">
<el-radio :label="1">Yes</el-radio>
<el-radio :label="0">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="7">
<template slot="title"><i class="el-icon-edit"></i> Comments/ Suggestions</template>
<el-input
type="textarea"
v-model="questionform.qu11contents"
:rows="4"
placeholder="please input content"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<!-- 12. Are the Figures or Tables clear, visually appealing, and easy to understand? -->
<el-form-item label="12. Are the Figures or Tables clear, visually appealing, and easy to understand?" prop="qu12">
<el-col :span="4">
<el-radio-group v-model="questionform.qu12">
<el-radio :label="1">Yes</el-radio>
<el-radio :label="0">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="8">
<template slot="title"><i class="el-icon-edit"></i> Comments/ Suggestions</template>
<el-input
type="textarea"
v-model="questionform.qu12contents"
:rows="4"
placeholder="please input content"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-form-item
label="13. Is the interpretation reliable (can the results adequately support the conclusions, are the conclusions overstated, and is there any selective reporting of results that could mislead readers)?"
prop="qu13"
>
<el-col :span="4">
<el-radio-group v-model="questionform.qu13">
<el-radio :label="1">Yes</el-radio>
<el-radio :label="0">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="9">
<template slot="title"><i class="el-icon-edit"></i> Comments/ Suggestions</template>
<el-input
type="textarea"
v-model="questionform.qu13contents"
:rows="4"
placeholder="please input content"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-form-item
label="14. If there are notable limitations or imperfections in the research, does the author explicitly acknowledge these shortcomings?"
prop="qu14"
>
<el-col :span="4">
<el-radio-group v-model="questionform.qu14">
<el-radio :label="0.5">Yes</el-radio>
<el-radio :label="0">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="10">
<template slot="title"><i class="el-icon-edit"></i> Comments/ Suggestions</template>
<el-input
type="textarea"
v-model="questionform.qu14contents"
:rows="4"
placeholder="please input content"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
</el-collapse>
<!-- 推荐部分 -->
<el-divider content-position="center">REFEREE'S RECOMMENDATIONS</el-divider>
<el-form-item label="Overall the Paper is Rated">
( <span style="color: #e41411">←←←←← Bad ←←← Poor</span>
<span style="width: 10px; display: inline-block"></span>
<span style="color: #369916">Accept → Superior → Excellent</span> )<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">
<el-radio-group v-model="questionform.recommend">
<el-radio :label="1">Minor revision</el-radio>
<el-radio :label="2">Major revision</el-radio>
<el-radio v-if="journal_id == 1 || journal_id == 23 || journal_id == 10" :label="3">
Reject in current form, but may be resubmitted
</el-radio>
<el-radio v-if="journal_id != 1 && journal_id != 23 && journal_id != 10" :label="4">Reject</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="OTHER SPECIFIC CRITICISMS">
<el-radio-group v-model="questionform.recommend">
<el-radio :label="1">Imperfect style</el-radio>
<el-radio :label="2">Too long</el-radio>
<el-radio :label="3"> References incorrectly presented </el-radio>
<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 v-if="this.btn_submit == 0">
<el-button type="primary" @click="questionSubmit">submit</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
articleId: null,
txt_mess: {},
questionform: {
rev_qu_id: '',
art_rev_id: this.$route.query.Art_id,
qu1: '', // Originality of the topic
qu2: '', // Importance in its Field
qu3: '', // Does the manuscript fall within the aim and scope of the journal?
qu4: '', // English language
qu5: '', // Readily Understandable
qu6: '', // Does the title represent manuscript's contents?
qu6contents: '', // Title Comments
qu7: '', // Abstract
qu7contents: '', // Abstract Comments
qu8: '', // Introduction
qu8contents: '', // Introduction Comments
qu9: '', // Materials and Methods
qu9contents: '', // Methods Comments
qu10: '', // Results
qu10contents: '', // Results Comments
qu11: '', // Discussion
qu11contents: '', // Discussion Comments
qu12: '', // Discussion
qu12contents: '', // Discussion Comments
qu13: '', // Discussion
qu13contents: '', // Discussion Comments
qu14: '', // Discussion
qu14contents: '', // Discussion Comments
rated: '', // Overall Rating
recommend: '', // Recommendations
other: '', // Specific Criticisms
confident: '', // Confidential Comments to the Editor
comment: '', // Comments for the Authors
is_anonymous: '' // Anonymous or Not
},
btn_submit: 0,
journal_id: null,
rules: {
qu1: [{ required: true, message: 'please select', trigger: 'blur' }],
qu2: [{ required: true, message: 'please select', trigger: 'blur' }],
qu3: [{ required: true, message: 'please select', trigger: 'blur' }],
qu4: [{ required: true, message: 'please select', trigger: 'blur' }],
qu5: [{ required: true, message: 'please select', trigger: 'blur' }],
rated: [{ required: true, message: 'please select', trigger: 'blur' }],
recommend: [{ required: true, message: 'please select', trigger: 'blur' }],
comment: [{ required: true, message: 'please input content', trigger: 'blur' }]
}
};
},
created() {
this.getData();
},
methods: {
getData() {
// 获取文章数据
this.$api
.post('api/Reviewer/getartrevdate', {
revid: this.Art_id,
human: 'reviewer'
})
.then((res) => {
this.txt_mess = res;
this.journal_id = res.journal_id;
});
},
questionSubmit() {
if (this.questionform.is_anonymous === '') {
this.$message.error('Please choose disclose your name or remain anonymous.');
return false;
}
this.loading = true;
this.$refs.question.validate((valid) => {
if (valid) {
this.$api.post('api/Reviewer/questionSubmit', this.questionform).then((res) => {
this.loading = false;
if (res.code === 0) {
this.$message.success('Success!!');
this.$router.push('/per_text_success');
} else {
this.$message.error(res.msg);
}
});
} else {
this.loading = false;
}
});
}
}
};
</script>
<style scoped>
.jouLink {
color: #006699;
font-weight: bold;
}
</style>

View File

@@ -0,0 +1,451 @@
<template>
<div>
<el-form :model="questionform" :rules="rules" 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="24">
<el-form-item label="1.Originality of the topic" prop="xx">
<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="24">
<el-form-item label="2.Importance in its Field" prop="xx">
<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-collapse>
<el-col :span="24">
<el-form-item label="3.Does the manuscript fall within the aim and scope of the journal?" prop="xx">
<el-col :span="4">
<el-radio-group v-model="questionform.xx">
<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-col>
</el-collapse>
<el-col :span="12">
<el-form-item label="4.English language" prop="xx">
<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-row>
<el-collapse>
<el-form-item label="5.Does the title represent manuscript's contents?" prop="xx">
<el-col :span="4">
<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="20">
<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-collapse>
<el-form-item label="6.Is the Abstract accurate and concise?" prop="xx">
<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="7.Does it highlight the latest advancements and address existing challenges in the current research?" prop="xx">
<el-col :span="4">
<el-radio-group v-model="questionform.xx">
<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="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-form-item label="8.Does it cite the most recent and pertinent reference directly related to the research?" prop="xx">
<el-col :span="4">
<el-radio-group v-model="questionform.xx">
<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="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-form-item label="9.Materials and Methods: Does the experimental design provide sufficient scientific support for the article?" prop="xx">
<p style="width: 100%;" class="titleInfo">e.g., by using diverse cell lines with clear origins, ensuring natural drugs are authenticated, integrating in vitro and in vivo studies, and examining the issue at multiple levels including proteins and nucleic acids</p>
<el-col :span="4">
<el-radio-group v-model="questionform.xx">
<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="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-form-item label="10.Does the experimental design adopt the latest cutting-edge research methods and technologies?" prop="xx">
<el-col :span="4">
<el-radio-group v-model="questionform.xx">
<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="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-form-item label="11.Is the appropriate statistical analysis used?" prop="xx">
<el-col :span="4">
<el-radio-group v-model="questionform.xx">
<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="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-form-item label="12.Are the Figures or Tables clear, visually appealing, and easy to understand?" prop="xx">
<el-col :span="4">
<el-radio-group v-model="questionform.xx">
<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="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-form-item label="13.Is the interpretation reliable (can the results adequately support the conclusions, are the conclusions overstated, and is there any selective reporting of results that could mislead readers)?" prop="xx">
<el-col :span="4">
<el-radio-group v-model="questionform.xx">
<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="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-form-item label="14.If there are notable limitations or imperfections in the research, does the author explicitly acknowledge these shortcomings?" prop="xx">
<el-col :span="4">
<el-radio-group v-model="questionform.xx">
<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="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-divider content-position="center">REFEREE'S RECOMMENDATIONS</el-divider>
<el-form-item label="Overall the Paper is Rated" prop="rated">
( <span style="color: #e41411">←←←←← Bad ←←← Poor</span>
<span style="width: 10px; display: inline-block"></span>
<span style="color: #369916">Accept → Superior → Excellent</span>)
<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">Minor revision</el-radio>
<br />
<el-radio :label="2">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</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="OTHER SPECIFIC CRITICISMS" prop="xx">
<el-radio-group v-model="questionform.xx" 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" v-if="this.txt_mess.atype == 'Comment' || this.txt_mess.atype == 'News'">
<el-input type="textarea" placeholder="please input content" v-model="questionform.comment" :rows="8"></el-input>
</el-form-item>
<el-form-item label="" v-if="articleId">
<common-word-html :articleId="articleId" style="box-sizing: border-box"></common-word-html>
</el-form-item>
<el-form-item
label="Comments for the Authors"
prop="comment"
v-if="this.txt_mess.atype != 'Comment' && this.txt_mess.atype != 'News'"
>
<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 v-if="this.btn_submit == 0">
<el-button type="primary" @click="questionSubmit">submit</el-button>
</el-form-item>
</el-collapse>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
articleId: null,
txt_mess: {},
questionform: {
rev_qu_id: '',
art_rev_id: this.$route.query.Art_id,
qu1: '',
qu2: '',
qu3: '',
qu4: '',
qu5: '',
qu6: '',
qu7: '',
qu8: '',
qu9: '',
qu9contents: '',
qu10: '',
qu10contents: '',
qu11: '',
qu11contents: '',
qu12: '',
qu12contents: '',
qu13: '',
qu13contents: '',
qu14: '',
qu14contents: '',
qu15: '',
qu15contents: '',
rated: '',
recommend: '',
other: '',
confident: '',
comment: '',
is_anonymous: ''
},
btn_submit: 0,
journal_id: null,
rules: {
qu6: [{ required: true, message: 'please select', trigger: 'blur' }],
rated: [{ required: true, message: 'please select', trigger: 'blur' }],
comment: [{ required: true, message: 'please input content', trigger: 'blur' }],
recommend: [{ required: true, message: 'please select', trigger: 'blur' }],
xx: [{ required: true, message: 'please select', trigger: 'blur' }]
}
};
},
created() {
this.getData();
},
methods: {
getData() {
// Fetch article data
this.$api
.post('api/Reviewer/getartrevdate', {
revid: this.Art_id,
human: 'reviewer'
})
.then((res) => {
this.txt_mess = res;
this.journal_id = res.journal_id;
});
},
questionSubmit() {
if (this.questionform.is_anonymous === '') {
this.$message.error('Please choose disclose your name or remain anonymous.');
return false;
}
this.loading = true;
this.$refs.question.validate((valid) => {
if (valid) {
this.$api.post('api/Reviewer/questionSubmit', this.questionform).then((res) => {
this.loading = false;
if (res.code === 0) {
this.$message.success('Success!!');
this.$router.push('/per_text_success');
} else {
this.$message.error(res.msg);
}
});
} else {
this.loading = false;
}
});
}
}
};
</script>
<style scoped>
.jouLink {
color: #006699;
font-weight: bold;
}
.titleInfo{
color: #AAA;
line-height: 18px;
margin-top: -16px;
margin-bottom: 12px;
}
</style>

View File

@@ -0,0 +1,337 @@
<template>
<div>
<el-form :model="questionform" :rules="rules" 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="24">
<el-form-item prop="qu6">
<span slot="label">
1.Does the manuscript fall within the aim and scope of the journal?
<a :href="txt_mess.aim_web" target="_blank" class="jouLink">( Aims & Scope ) </a>
</span>
<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="2.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="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-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-row>
<el-collapse>
<el-form-item label="6.Does the title represent manuscript's contents?">
<el-col :span="4">
<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="20">
<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-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" prop="rated">
( <span style="color: #e41411">←←←←← Bad ←←← Poor</span>
<span style="width: 10px; display: inline-block"></span>
<span style="color: #369916">Accept → Superior → Excellent</span>)
<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">Minor revision</el-radio>
<br />
<el-radio :label="2">Major revision</el-radio>
<br />
<div v-if="journal_id == 1 || journal_id == 23 || journal_id == 10">
<el-radio :label="3">Reject in current form, but may be resubmitted</el-radio>
<br />
<el-radio :label="4">Reject</el-radio>
</div>
<div v-else>
<el-radio :label="4">Reject</el-radio>
</div>
</el-radio-group>
</el-form-item>
<el-form-item label="Comments for the Authors" v-if="this.txt_mess.atype == 'Comment' || this.txt_mess.atype == 'News'">
<el-input type="textarea" placeholder="please input content" v-model="questionform.comment" :rows="8"></el-input>
</el-form-item>
<el-form-item label="" v-if="articleId">
<common-word-html :articleId="articleId" style="box-sizing: border-box"></common-word-html>
</el-form-item>
<el-form-item
label="Comments for the Authors"
prop="comment"
v-if="this.txt_mess.atype != 'Comment' && this.txt_mess.atype != 'News'"
>
<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 v-if="this.btn_submit == 0">
<el-button type="primary" @click="questionSubmit">submit</el-button>
</el-form-item>
</el-collapse>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
articleId: null,
txt_mess: {},
questionform: {
rev_qu_id: '',
art_rev_id: this.$route.query.Art_id,
qu1: '',
qu2: '',
qu3: '',
qu4: '',
qu5: '',
qu6: '',
qu7: '',
qu8: '',
qu9: '',
qu9contents: '',
qu10: '',
qu10contents: '',
qu11: '',
qu11contents: '',
qu12: '',
qu12contents: '',
qu13: '',
qu13contents: '',
qu14: '',
qu14contents: '',
qu15: '',
qu15contents: '',
rated: '',
recommend: '',
other: '',
confident: '',
comment: '',
is_anonymous: ''
},
btn_submit: 0,
journal_id: null,
rules: {
qu6: [{ required: true, message: 'please select', trigger: 'blur' }],
rated: [{ required: true, message: 'please select', trigger: 'blur' }],
comment: [{ required: true, message: 'please input content', trigger: 'blur' }],
recommend: [{ required: true, message: 'please select', trigger: 'blur' }]
}
};
},
created() {
this.getData();
},
methods: {
getData() {
// Fetch article data
this.$api
.post('api/Reviewer/getartrevdate', {
revid: this.Art_id,
human: 'reviewer'
})
.then((res) => {
this.txt_mess = res;
this.journal_id = res.journal_id;
});
},
questionSubmit() {
if (this.questionform.is_anonymous === '') {
this.$message.error('Please choose disclose your name or remain anonymous.');
return false;
}
this.loading = true;
this.$refs.question.validate((valid) => {
if (valid) {
this.$api.post('api/Reviewer/questionSubmit', this.questionform).then((res) => {
this.loading = false;
if (res.code === 0) {
this.$message.success('Success!!');
this.$router.push('/per_text_success');
} else {
this.$message.error(res.msg);
}
});
} else {
this.loading = false;
}
});
}
}
};
</script>
<style scoped>
.jouLink {
color: #006699;
font-weight: bold;
}
</style>

View File

@@ -92,7 +92,8 @@
</el-card>
<el-card class="box-card" v-if="this.add_apply == 0">
<el-form :model="questionform" :rules="rules" ref="question" label-width="300px" label-position="top">
<common-review-article></common-review-article>
<!-- <el-form :model="questionform" :rules="rules" 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="24">
@@ -277,29 +278,19 @@
<br />
<el-radio :label="2">Major revision</el-radio>
<br />
<!-- TMR BMEC MDM .-->
<div v-if="journal_id == 1 || journal_id == 23 || journal_id == 10">
<el-radio :label="3">Reject in current form, but may be resubmitted</el-radio>
<br />
<el-radio :label="4">Reject</el-radio>
</div>
<!-- 其他期刊 -->
<div v-else>
<el-radio :label="4">Reject</el-radio>
</div>
</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"
v-if="this.txt_mess.atype == 'Comment' || this.txt_mess.atype == 'News'"
@@ -354,7 +345,7 @@
<el-button type="primary" @click="questionSubmit">submit</el-button>
</el-form-item>
</el-collapse>
</el-form>
</el-form> -->
</el-card>
</el-col>
</el-row>

View File

@@ -206,29 +206,9 @@
></b>
</template>
</el-table-column> -->
<el-table-column label="Research areas" width="300">
<el-table-column label="Research areas" width="310">
<template slot-scope="scope">
<div
@click="BoxMajor(scope.row, majorData[scope.row.user_id])"
v-if="scope.row.user_id"
style="display: flex; align-items: center; justify-content: space-between; cursor: pointer"
>
<!-- 使用 user_id 来获取用户的 majorData -->
<div>
<div v-if="majorData[scope.row.user_id]" class="majorDataBox">
<p v-for="(v, i) in majorData[scope.row.user_id]" style="border-top: 1px solid #b3d8ff">
<span style="font-weight: bold">{{ i + 1 }}.</span>
{{ v.major_title.replace('Medicine >', '').trim() }}
</p>
</div>
<div v-else>
<span>Loading...</span>
<!-- 如果数据还在加载显示 "Loading..." -->
</div>
</div>
<b style="margin-left: 10px; color: #006699" class="el-icon-edit"></b>
</div>
<commonMajorTableList :user_id="scope.row.user_id" :baseInfo="scope.row" :key="scope.row.user_id"></commonMajorTableList>
</template>
</el-table-column>
@@ -496,9 +476,11 @@
const currentYear = new Date().getFullYear();
var ReviewTime = `(${currentYear - 2}${currentYear})`;
import commonReviewer from '../page/components/reviewerList/add.vue';
import commonMajorTableList from '../page/components/major/tableList.vue';
export default {
components: {
commonReviewer
commonReviewer,
commonMajorTableList,
},
data() {
@@ -778,7 +760,7 @@ export default {
if (res.code == 0) {
this.tableData = res.data;
for (var i = 0; i < this.tableData.length; i++) {
this.fetchMajorData(this.tableData[i].user_id); // 加载第一个用户的数据
// this.fetchMajorData(this.tableData[i].user_id); // 加载第一个用户的数据
this.getScoreData(i, this.tableData[i].score);
}
this.link_Total = res.total || 0;

View File

@@ -138,6 +138,8 @@ Vue.component("Editor", Editor);
import commonTable from '@/components/page/components/table/table.vue'
Vue.component('common-table', commonTable);
import commonReviewArticle from '@/components/page/components/reviewArticle/index.vue'
Vue.component('common-review-article', commonReviewArticle);
import commonLateX from '@/components/page/components/table/LateX.vue'
Vue.component('common-late-x', commonLateX);
import commonMajor from '@/components/page/components/major/index.vue'