tijiao
This commit is contained in:
@@ -153,16 +153,16 @@
|
|||||||
trigger: 'blur'
|
trigger: 'blur'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: [{
|
// name: [{
|
||||||
required: true,
|
// required: true,
|
||||||
message: 'Please enter your real name.',
|
// message: 'Please enter your real name.',
|
||||||
trigger: 'blur'
|
// trigger: 'blur'
|
||||||
}],
|
// }],
|
||||||
phone: [{
|
// phone: [{
|
||||||
required: true,
|
// required: true,
|
||||||
message: 'Please enter the correct mobile phone number.',
|
// message: 'Please enter the correct mobile phone number.',
|
||||||
trigger: 'blur'
|
// trigger: 'blur'
|
||||||
}],
|
// }],
|
||||||
email: [{
|
email: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: 'Please enter your email address.',
|
message: 'Please enter your email address.',
|
||||||
|
|||||||
@@ -401,7 +401,73 @@
|
|||||||
v-if="item.reportList.length > 0"
|
v-if="item.reportList.length > 0"
|
||||||
>
|
>
|
||||||
<font style="font-size: 14px; font-weight: normal; color: #333">Initial review score :</font>
|
<font style="font-size: 14px; font-weight: normal; color: #333">Initial review score :</font>
|
||||||
{{ item.scoring }}
|
<el-popover placement="top-start" title="" width="540" trigger="hover">
|
||||||
|
<span style="cursor: pointer" slot="reference">{{ item.scoring }}</span>
|
||||||
|
<div>
|
||||||
|
<div class="scoringRules">
|
||||||
|
<div style="display: flex; justify-content: space-between;font-size:16px;margin-bottom: 15px;">
|
||||||
|
<div>
|
||||||
|
<span>H指数: <span :style="item.h_fen&&item.h_fen>0?`color:#db890e`:''">{{ item.h_fen }}</span></span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>图表: <span :style="item.b_fen&&item.b_fen>0?`color:#db890e`:''">{{ item.b_fen }}</span></span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>国家: <span :style="item.c_fen&&item.c_fen>0?`color:#db890e`:''">{{ item.c_fen }}</span></span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>单位: <span :style="item.dw_fen&&item.dw_fen>0?`color:#db890e`:''">{{ item.dw_fen }}</span></span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>领域分: <span :style="item.ly_fen&&item.ly_fen>0?`color:#db890e`:''">{{ item.ly_fen }}</span></span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>基金分: <span :style="item.jj_fen&&item.jj_fen>0?`color:#db890e`:''">{{ item.jj_fen }}</span></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<p style="font-size: 14px; font-weight: bold; margin-bottom:0px; color: #888">评分规则</p>
|
||||||
|
<div class="scoringRulesItem" style="margin-top: 6px;">
|
||||||
|
<li><span class="scoringRulesTitle">h指数</span> 0-1=0,2-5=1,6-11=2,12-19=3,20-~=4</li>
|
||||||
|
</div>
|
||||||
|
<div class="scoringRulesItem">
|
||||||
|
<div class="scoringRulesEcharts">
|
||||||
|
<span class="scoringRulesTitle">图表</span>
|
||||||
|
<div>
|
||||||
|
<li><span>Article:</span> 0=1,1=0.5,2-3=1,4=1.5,5-~=2</li>
|
||||||
|
<li><span>Review:</span> 0=1,1=0.5,2=1,3=1.5,4-~=2</li>
|
||||||
|
<li><span>其他类型:</span> 0=0,1=1,2=2</li>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="scoringRulesItem">
|
||||||
|
<div class="scoringRulesEcharts">
|
||||||
|
<span class="scoringRulesTitle">图表扣分</span>
|
||||||
|
<div>
|
||||||
|
<p>tmr这本刊article文章:<3扣0.5,<2扣1,<1扣2;review:0扣1</p>
|
||||||
|
<p>其他期刊article:<2扣0.5,<1扣1;review:0扣0.5</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="scoringRulesItem">
|
||||||
|
<li><span class="scoringRulesTitle">国家</span> 发达国家1,非中国印度国家0.5</li>
|
||||||
|
</div>
|
||||||
|
<div class="scoringRulesItem">
|
||||||
|
<li>
|
||||||
|
<span class="scoringRulesTitle">作者单位</span>
|
||||||
|
任意作者,来自热门机构+1.5,非热门机构+1, 热门领域+1, 带基金+1
|
||||||
|
</li>
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-popover>
|
||||||
|
|
||||||
<i class="el-icon-refresh refreshBtn" @click="refreshScore(item)"></i>
|
<i class="el-icon-refresh refreshBtn" @click="refreshScore(item)"></i>
|
||||||
</p>
|
</p>
|
||||||
<p style="font-size: 18px; font-weight: bold; fmargin-bottom: 5px" v-if="item.reportList.length == 0">
|
<p style="font-size: 18px; font-weight: bold; fmargin-bottom: 5px" v-if="item.reportList.length == 0">
|
||||||
@@ -559,119 +625,119 @@
|
|||||||
<b style="font-size: 16px; letter-spacing: -0.5px">Reviewer Decision</b>
|
<b style="font-size: 16px; letter-spacing: -0.5px">Reviewer Decision</b>
|
||||||
<p style="height: 5px"></p>
|
<p style="height: 5px"></p>
|
||||||
<div class="overflow-x-auto">
|
<div class="overflow-x-auto">
|
||||||
<!-- 上面的表格代码放在这里 -->
|
<!-- 上面的表格代码放在这里 -->
|
||||||
|
|
||||||
<table class="review_table" >
|
<table class="review_table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th></th>
|
<th></th>
|
||||||
<!-- 补充表头文本,原代码是空,建议加上 -->
|
<!-- 补充表头文本,原代码是空,建议加上 -->
|
||||||
<th>1<sup>st</sup> review</th>
|
<th>1<sup>st</sup> review</th>
|
||||||
<!-- 表头:按最大重复次数遍历,生成2nd、3rd...列 -->
|
<!-- 表头:按最大重复次数遍历,生成2nd、3rd...列 -->
|
||||||
<template v-for="(_, index1) in maxRepeatReviewCount(item)">
|
<template v-for="(_, index1) in maxRepeatReviewCount(item)">
|
||||||
<th>{{ index1 + 2 }}<sup>nd</sup> review</th>
|
<th>{{ index1 + 2 }}<sup>nd</sup> review</th>
|
||||||
</template>
|
</template>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<!-- 遍历每个评审者 -->
|
<!-- 遍历每个评审者 -->
|
||||||
<tr v-for="(iken, reviewerIndex) in item.reviewScore">
|
<tr v-for="(iken, reviewerIndex) in item.reviewScore">
|
||||||
<td>Reviewer {{ reviewerIndex + 1 }}</td>
|
<td>Reviewer {{ reviewerIndex + 1 }}</td>
|
||||||
<!-- 1st review:原逻辑不变 -->
|
<!-- 1st review:原逻辑不变 -->
|
||||||
<td >
|
|
||||||
<span style="display: inline-block; margin-left: 4px; margin-right: 8px">
|
|
||||||
<font
|
|
||||||
v-if="iken.state == 0"
|
|
||||||
style="
|
|
||||||
width: 12px;
|
|
||||||
height: 12px;
|
|
||||||
display: block;
|
|
||||||
border-radius: 10px;
|
|
||||||
background-color: #ccc;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
</font>
|
|
||||||
<font
|
|
||||||
v-if="iken.state == 1 || iken.state == 3"
|
|
||||||
style="
|
|
||||||
width: 12px;
|
|
||||||
height: 12px;
|
|
||||||
display: block;
|
|
||||||
border-radius: 10px;
|
|
||||||
background-color: #67c23a;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
</font>
|
|
||||||
<font
|
|
||||||
v-if="iken.state == 2"
|
|
||||||
style="
|
|
||||||
width: 12px;
|
|
||||||
height: 12px;
|
|
||||||
display: block;
|
|
||||||
border-radius: 10px;
|
|
||||||
background-color: #f56c6c;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
</font>
|
|
||||||
</span>
|
|
||||||
<span>{{ mystate(iken.state) }}</span>
|
|
||||||
</td>
|
|
||||||
<!-- 关键:按最大重复次数遍历,而非仅遍历当前iken.repeat -->
|
|
||||||
<template v-for="(_1,index1) in maxRepeatReviewCount(item)">
|
|
||||||
<td>
|
<td>
|
||||||
<!-- 补全逻辑:判断当前评审者的repeat中是否有第index1条数据 -->
|
<span style="display: inline-block; margin-left: 4px; margin-right: 8px">
|
||||||
<span v-if="Array.isArray(iken.repeat) && iken.repeat[index1]">
|
<font
|
||||||
<span style="display: inline-block; margin-left: 4px; margin-right: 8px">
|
v-if="iken.state == 0"
|
||||||
<font
|
style="
|
||||||
v-if="iken.repeat[index1].recommend == 1"
|
width: 12px;
|
||||||
style="
|
height: 12px;
|
||||||
width: 12px;
|
display: block;
|
||||||
height: 12px;
|
border-radius: 10px;
|
||||||
display: block;
|
background-color: #ccc;
|
||||||
border-radius: 10px;
|
"
|
||||||
background-color: #67c23a;
|
>
|
||||||
"
|
</font>
|
||||||
>
|
<font
|
||||||
</font>
|
v-if="iken.state == 1 || iken.state == 3"
|
||||||
<font
|
style="
|
||||||
v-if="iken.repeat[index1].recommend == 2"
|
width: 12px;
|
||||||
style="
|
height: 12px;
|
||||||
width: 12px;
|
display: block;
|
||||||
height: 12px;
|
border-radius: 10px;
|
||||||
display: block;
|
background-color: #67c23a;
|
||||||
border-radius: 10px;
|
"
|
||||||
background-color: #f56c6c;
|
>
|
||||||
"
|
</font>
|
||||||
>
|
<font
|
||||||
</font>
|
v-if="iken.state == 2"
|
||||||
<font
|
style="
|
||||||
v-if="iken.repeat[index1].recommend == 3"
|
width: 12px;
|
||||||
style="
|
height: 12px;
|
||||||
width: 12px;
|
display: block;
|
||||||
height: 12px;
|
border-radius: 10px;
|
||||||
display: block;
|
background-color: #f56c6c;
|
||||||
border-radius: 10px;
|
"
|
||||||
background-color: #006699;
|
>
|
||||||
"
|
</font>
|
||||||
>
|
|
||||||
</font>
|
|
||||||
</span>
|
|
||||||
<!-- 有数据:按原逻辑显示Accept/Reject等 -->
|
|
||||||
<span v-if="iken.repeat[index1].recommend == 1">Accept</span>
|
|
||||||
<span v-else-if="iken.repeat[index1].recommend == 2">Reject</span>
|
|
||||||
<span v-else-if="iken.repeat[index1].recommend == 3">Revision</span>
|
|
||||||
<span v-else>No reply</span>
|
|
||||||
</span>
|
|
||||||
<span v-else>
|
|
||||||
<!-- 无数据:补全空内容(可自定义为“-”“无”等) -->
|
|
||||||
-
|
|
||||||
</span>
|
</span>
|
||||||
|
<span>{{ mystate(iken.state) }}</span>
|
||||||
</td>
|
</td>
|
||||||
</template>
|
<!-- 关键:按最大重复次数遍历,而非仅遍历当前iken.repeat -->
|
||||||
</tr>
|
<template v-for="(_1, index1) in maxRepeatReviewCount(item)">
|
||||||
</tbody>
|
<td>
|
||||||
</table>
|
<!-- 补全逻辑:判断当前评审者的repeat中是否有第index1条数据 -->
|
||||||
</div>
|
<span v-if="Array.isArray(iken.repeat) && iken.repeat[index1]">
|
||||||
|
<span style="display: inline-block; margin-left: 4px; margin-right: 8px">
|
||||||
|
<font
|
||||||
|
v-if="iken.repeat[index1].recommend == 1"
|
||||||
|
style="
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
display: block;
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: #67c23a;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
</font>
|
||||||
|
<font
|
||||||
|
v-if="iken.repeat[index1].recommend == 2"
|
||||||
|
style="
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
display: block;
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: #f56c6c;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
</font>
|
||||||
|
<font
|
||||||
|
v-if="iken.repeat[index1].recommend == 3"
|
||||||
|
style="
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
display: block;
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: #006699;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
</font>
|
||||||
|
</span>
|
||||||
|
<!-- 有数据:按原逻辑显示Accept/Reject等 -->
|
||||||
|
<span v-if="iken.repeat[index1].recommend == 1">Accept</span>
|
||||||
|
<span v-else-if="iken.repeat[index1].recommend == 2">Reject</span>
|
||||||
|
<span v-else-if="iken.repeat[index1].recommend == 3">Revision</span>
|
||||||
|
<span v-else>No reply</span>
|
||||||
|
</span>
|
||||||
|
<span v-else>
|
||||||
|
<!-- 无数据:补全空内容(可自定义为“-”“无”等) -->
|
||||||
|
-
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</template>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- <div
|
<!-- <div
|
||||||
v-for="(iken, index) in item.reviewScore"
|
v-for="(iken, index) in item.reviewScore"
|
||||||
@@ -768,15 +834,13 @@
|
|||||||
|
|
||||||
|
|
||||||
</div> -->
|
</div> -->
|
||||||
|
|
||||||
<p style="margin-top: 10px">
|
<p style="margin-top: 10px">
|
||||||
<b @click="articleReviewer(item)" class="btnCliArt">
|
<b @click="articleReviewer(item)" class="btnCliArt">
|
||||||
<i :class="item.state == 8 ? 'el-icon-view' : 'el-icon-edit'"></i> Inviting Reviewer
|
<i :class="item.state == 8 ? 'el-icon-view' : 'el-icon-edit'"></i> Inviting Reviewer
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="query.state == 8">
|
<template v-if="query.state == 8">
|
||||||
<div class="fixCard" style="width: calc((100% - 320px - 18px) / 2); flex-shrink: 0; position: relative">
|
<div class="fixCard" style="width: calc((100% - 320px - 18px) / 2); flex-shrink: 0; position: relative">
|
||||||
@@ -2175,23 +2239,21 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
maxRepeatReviewCount(item) {
|
maxRepeatReviewCount(item) {
|
||||||
if (!item || !Array.isArray(item.reviewScore)) return null; // 边界处理:无数据返回null
|
if (!item || !Array.isArray(item.reviewScore)) return null; // 边界处理:无数据返回null
|
||||||
|
|
||||||
// 遍历所有评审者,找到repeat数组长度最大的那条数据
|
// 遍历所有评审者,找到repeat数组长度最大的那条数据
|
||||||
const maxItem = item.reviewScore.reduce((maxItem, currentItem) => {
|
const maxItem = item.reviewScore.reduce((maxItem, currentItem) => {
|
||||||
// 计算当前项的repeat长度,非数组则视为0
|
// 计算当前项的repeat长度,非数组则视为0
|
||||||
const currentLen = Array.isArray(currentItem.repeat) ? currentItem.repeat.length : 0;
|
const currentLen = Array.isArray(currentItem.repeat) ? currentItem.repeat.length : 0;
|
||||||
// 计算当前最大项的repeat长度,非数组则视为0
|
// 计算当前最大项的repeat长度,非数组则视为0
|
||||||
const maxLen = Array.isArray(maxItem.repeat) ? maxItem.repeat.length : 0;
|
const maxLen = Array.isArray(maxItem.repeat) ? maxItem.repeat.length : 0;
|
||||||
|
|
||||||
// 如果当前项长度更大,则更新最大项
|
// 如果当前项长度更大,则更新最大项
|
||||||
return currentLen > maxLen ? currentItem : maxItem;
|
return currentLen > maxLen ? currentItem : maxItem;
|
||||||
}, {}); // 初始值设为一个空对象
|
}, {}); // 初始值设为一个空对象
|
||||||
// console.log('maxItem at line 2142:', maxItem.repeat.length)
|
// console.log('maxItem at line 2142:', maxItem.repeat.length)
|
||||||
return maxItem&&maxItem.repeat?maxItem.repeat.length:0;
|
return maxItem && maxItem.repeat ? maxItem.repeat.length : 0;
|
||||||
|
},
|
||||||
|
|
||||||
},
|
|
||||||
mystate(mystate) {
|
mystate(mystate) {
|
||||||
let str = '';
|
let str = '';
|
||||||
switch (mystate) {
|
switch (mystate) {
|
||||||
@@ -4055,7 +4117,7 @@ td {
|
|||||||
padding: 6px;
|
padding: 6px;
|
||||||
min-width: 70px;
|
min-width: 70px;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
|
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4066,15 +4128,29 @@ td {
|
|||||||
.review_table td {
|
.review_table td {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
/* background-color: #f0f0f0; */
|
/* background-color: #f0f0f0; */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.review_table tr:hover {
|
.review_table tr:hover {
|
||||||
/* background-color: #fff; */
|
/* background-color: #fff; */
|
||||||
}
|
}
|
||||||
.overflow-x-auto{
|
.overflow-x-auto {
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
}
|
}
|
||||||
|
.scoringRules ul li {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
.scoringRules ul .scoringRulesEcharts {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
.scoringRulesTitle {
|
||||||
|
display: inline-block;
|
||||||
|
width: 60px;
|
||||||
|
color: #0077b8e6;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
.scoringRulesItem {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user