This commit is contained in:
2025-09-27 10:16:50 +08:00
parent 6a1fadbdc2
commit d9ed151670
8 changed files with 320 additions and 99 deletions

View File

@@ -56,8 +56,104 @@
<font
>Type : <b style="margin-right: 25px">{{ form.type | jtName }}</b></font
>
<font
>Major : <b>{{ form.major }}</b></font
<font style="float: right;"
>Initial review score :
<el-popover placement="top-start" title="" width="540" trigger="hover">
<span style="cursor: pointer;color: rgb(219, 137, 14);font-weight: bold;font-size: 18px;" slot="reference">{{ form.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="form.h_fen && form.h_fen > 0 ? `color:#db890e` : ''">{{
form.h_fen
}}</span></span
>
</div>
<div>
<span
>图表:
<span :style="form.b_fen && form.b_fen > 0 ? `color:#db890e` : ''">{{
form.b_fen
}}</span></span
>
</div>
<div>
<span
>国家:
<span :style="form.c_fen && form.c_fen > 0 ? `color:#db890e` : ''">{{
form.c_fen
}}</span></span
>
</div>
<div>
<span
>单位:
<span :style="form.dw_fen && form.dw_fen > 0 ? `color:#db890e` : ''">{{
form.dw_fen
}}</span></span
>
</div>
<div>
<span
>领域分:
<span :style="form.ly_fen && form.ly_fen > 0 ? `color:#db890e` : ''">{{
form.ly_fen
}}</span></span
>
</div>
<div>
<span
>基金分:
<span :style="form.jj_fen && form.jj_fen > 0 ? `color:#db890e` : ''">{{
form.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文章&lt;3扣0.5&lt;2扣1,&lt;1扣2review:0扣1</p>
<p>其他期刊article&lt;2扣0.5&lt;1扣1review0扣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>
</font
>
</div>
<p>
@@ -97,7 +193,41 @@
<el-collapse class="auth_colla auth_collna_ew">
<el-collapse-item :title="authorList_name" name="1">
<div v-for="(item, index) in form.authorList" class="auth_mess">
<h4 style="font-weight: bolder">
<el-popover placement="top-start" title="" trigger="hover" v-if="item.isReport">
<span style="cursor: pointer" slot="reference">
<h4 style="font-weight: bolder">
<img
src="../../assets/img/state_one.png"
v-if="item.isSuper"
style="width: 15px; margin: 0 2px 0 0; vertical-align: text-bottom"
/>
{{ item.firstname }} {{ item.lastname }} {{ item.isSuper ? '#' : ''
}}{{ item.isReport ? '*' : '' }}
</h4>
</span>
<div>
<div class="scoringRules">
<p style="font-weight: bold; margin-bottom: 6px">Scopus</p>
<div v-if="item.scopus_index && item.scopus_website != ''">
<p style="margin-bottom: 6px"> <font>Inedx: </font> <span v-html="colorIndex1(item.scopus_index)"></span></p>
<p>
<font>Website: </font>
<a
:href="item.scopus_website"
target="_blank"
style="color: rgb(0, 102, 153) !important"
>{{ item.scopus_website }}</a
>
</p>
</div>
<p v-else style="color: #888">No found <i @click="editScopus(item)" class="el-icon-edit edit" style="cursor: pointer;;vertical-align: middle; margin: 0px 20px; font-weight: bold; color: rgb(117, 171, 241);"></i></p>
</div>
</div>
</el-popover>
<h4 style="font-weight: bolder" v-else>
<img
src="../../assets/img/state_one.png"
v-if="item.isSuper"
@@ -106,6 +236,7 @@
{{ item.firstname }} {{ item.lastname }} {{ item.isSuper ? '#' : ''
}}{{ item.isReport ? '*' : '' }}
</h4>
<div>
<p v-if="item.email">
<img
@@ -358,7 +489,14 @@
<tbody>
<!-- 遍历每个评审者 -->
<tr v-for="(iken, reviewerIndex) in reviewList">
<td style="position: relative;cursor: pointer;">Reviewer {{ reviewerIndex + 1 }} <span style="color:#006699;position: absolute;right: 10px;top: 10px;" @click="handleClick(iken)" >Detail</span></td>
<td style="position: relative; cursor: pointer">
Reviewer {{ reviewerIndex + 1 }} <span style="color: rgb(219, 137, 14);font-weight: 700;margin-left: 10px;font-size: 14px">( {{ iken.score }} )</span>
<span
style="color: #006699; position: absolute; right: 10px; top: 10px"
@click="handleClick(iken)"
>Detail</span
>
</td>
<!-- 1st review原逻辑不变 -->
<td @click="handleClick(iken)" style="cursor: pointer">
<span style="display: inline-block; margin-left: 4px; margin-right: 8px">
@@ -397,8 +535,6 @@
</font>
</span>
<span>{{ mystate(iken.state) }}</span>
</td>
<!-- 关键按最大重复次数遍历而非仅遍历当前iken.repeat -->
<template v-for="(_1, index1) in maxRepeatReviewCount()">
@@ -449,7 +585,7 @@
<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>
<span v-else>
<!-- 无数据补全空内容可自定义为- -->
-
@@ -458,7 +594,10 @@
</template>
</tr>
</tbody>
</table>
</table> <p style="font-size: 18px; margin: 10px 0 5px 0;width: 100%;text-align: center">
Average score: <b style="font-size: 18px; color: #db890e">{{ avegeCount(reviewList) }}</b>
</p>
</div>
</div>
</div>
@@ -470,7 +609,11 @@
<h2>Final Decision</h2>
<div>
<common-editor-article-detail style="margin-top: 20px;" v-for="(item, index) in finalList" :detailDate="{reviewer:item.realname,article_final:item,ctime:formatDate_(item.update_time)}"></common-editor-article-detail>
<common-editor-article-detail
style="margin-top: 20px"
v-for="(item, index) in finalList"
:detailDate="{ reviewer: item.realname, article_final: item, ctime: formatDate_(item.update_time) }"
></common-editor-article-detail>
</div>
<!-- <el-collapse v-model="activeFinalComment" style="background-color: #fff;">
@@ -839,22 +982,27 @@
</template>
<div v-if="item.explanationValue">
<div >
<div>
<p
:class="{ 'short-content': !item.showFullContent }"
@click="toggleContent2(i, index)"
style="margin-top: 0; cursor: pointer;color: #888;line-height: 22px"
style="margin-top: 0; cursor: pointer; color: #888; line-height: 22px"
>
<span>{{ $t('aiReview.Explain') }} : </span> {{ currentArticleData.ai_review[item.explanationValue] }}
<span>{{ $t('aiReview.Explain') }} : </span>
{{ currentArticleData.ai_review[item.explanationValue] }}
</p>
</div>
<div style="color: #006699;" v-if="item.explanationValue == 'other_journal_explanation'&&currentArticleData.ai_review['other_journal_issn']">
<div
style="color: #006699"
v-if="
item.explanationValue == 'other_journal_explanation' &&
currentArticleData.ai_review['other_journal_issn']
"
>
ISSN : {{ currentArticleData.ai_review['other_journal_issn'] }}
</div>
</div>
</div>
</div>
</div>
@@ -867,15 +1015,13 @@
</div>
<div style="color: #888; line-height: 22px" v-if="v.explanationValue">
<p
:class="{ 'short-content': !v.showFullContent }"
@click="toggleContent1(i)"
style="margin-top: 0; cursor: pointer;color: #888;"
>
<span>{{ $t('aiReview.Explain') }} : </span> {{ currentArticleData.ai_review[v.explanationValue] }}
</p>
:class="{ 'short-content': !v.showFullContent }"
@click="toggleContent1(i)"
style="margin-top: 0; cursor: pointer; color: #888"
>
<span>{{ $t('aiReview.Explain') }} : </span> {{ currentArticleData.ai_review[v.explanationValue] }}
</p>
</div>
</div>
</el-form-item>
@@ -1066,7 +1212,7 @@ export default {
isShowSign: 1
}
]
},//6
}, //6
{
topic: this.$t('aiReview.state10'),
value: 'academic_assessment',
@@ -1079,15 +1225,15 @@ export default {
explanationValue: 'contradiction_explanation',
isShowSign: 1
},
//8
{
//8
{
topic: this.$t('aiReview.state14'),
value: 'fund_number',
explanationValue: '',
isShowSign: 0
},
//2
{
//2
{
topic: this.$t('aiReview.state2'),
value: 'attribute_assessment',
explanationValue: 'attribute_explanation',
@@ -1120,7 +1266,7 @@ export default {
explanationValue: '',
color: 'rgb(0, 112, 192)',
isShowSign: 0
},
}
// {
// topic: this.$t('aiReview.state193'),
// value: 'references_ratio_JCR1',
@@ -1136,17 +1282,16 @@ export default {
// isShowSign: 0
// }
]
},
}
// {
// topic: this.$t('aiReview.state16'),
// value: 'submit_direction',
// explanationValue: '',
// isShowSign: 0
// },
//10
//4
// {
// topic: this.$t('aiReview.state6'),
@@ -1155,9 +1300,6 @@ export default {
// isShowSign: 1
// },
//9
//11
@@ -1167,7 +1309,6 @@ export default {
// explanationValue: ''
// },
//5
//7
@@ -1178,7 +1319,7 @@ export default {
// isShowSign: 1
// },
//12
//13
// {
// topic: this.$t('aiReview.state21'),
@@ -1198,7 +1339,7 @@ export default {
};
},
async created() {
await this.initarticle();
await this.initarticle();
await this.getAi();
this.initFileList();
this.getWordimgList();
@@ -1266,6 +1407,38 @@ export default {
}
},
methods: {
avegeCount(arry) {
let str = 0;
let all = 0;
for (let i = 0; i < arry.length; i++) {
all += Number(arry[i].score);
}
str = (all / arry.length).toFixed(1);
return str;
},
editScopus(item) {
this.$router.push({
path: 'partyRole',
query: {
id: item.user_id
}
});
},
colorIndex1(num, time) {
let str = '';
if (num < 10) {
str = '<b style="color:#cb160a">' + num + '</b>';
} else if (num < 15) {
str = '<b style="color:#cbb504">' + num + '</b>';
} else {
str = '<b style="color:#0cbc15">' + num + '</b>';
}
if (time == 0) {
str = '<b style="color:#aaa;">0 </b>';
}
return str;
},
toggleContent1(i) {
this.aiReview[i].showFullContent = !this.aiReview[i].showFullContent;
this.$forceUpdate();
@@ -1370,36 +1543,36 @@ export default {
if (res.data != null) {
this.currentArticleData.ai_review = res.data;
var aiReview = {};
if (this.currentArticleData.ai_review.journal_scope_assessment == '否') {
aiReview = {
topic: this.$t('aiReview.state0'),
value: 'journal_scope_assessment1',
explanationValue: '',
isShowSign: 0,
parameter: [
{
topic: this.$t('aiReview.state0'),
value: 'journal_scope_assessment',
explanationValue: 'journal_scope_explanation',
isShowSign: 1
},
{
topic: this.$t('aiReview.state22'),
value: 'other_journal_assessment',
explanationValue: 'other_journal_explanation',
isShowSign:1
}
]
};
} else {
aiReview = {
topic: this.$t('aiReview.state0'),
value: 'journal_scope_assessment',
explanationValue: 'journal_scope_explanation',
isShowSign: 1
};
}
this.aiReview[0] = aiReview;
if (this.currentArticleData.ai_review.journal_scope_assessment == '否') {
aiReview = {
topic: this.$t('aiReview.state0'),
value: 'journal_scope_assessment1',
explanationValue: '',
isShowSign: 0,
parameter: [
{
topic: this.$t('aiReview.state0'),
value: 'journal_scope_assessment',
explanationValue: 'journal_scope_explanation',
isShowSign: 1
},
{
topic: this.$t('aiReview.state22'),
value: 'other_journal_assessment',
explanationValue: 'other_journal_explanation',
isShowSign: 1
}
]
};
} else {
aiReview = {
topic: this.$t('aiReview.state0'),
value: 'journal_scope_assessment',
explanationValue: 'journal_scope_explanation',
isShowSign: 1
};
}
this.aiReview[0] = aiReview;
}
console.log('this.currentArticleData at line 1312:', this.currentArticleData);
@@ -1477,23 +1650,42 @@ export default {
this.repebox = true;
},
mystate(mystate) {
console.log('mystate at line 1052:', mystate);
let str = '';
switch (mystate) {
case 1:
str = 'Accept';
case 0:
str = 'With reviewer';
break;
case 1:
str = 'Major';
break;
case 2:
str = 'Reject';
break;
case 3:
// str = 'Accept';
str = 'Revision';
str = 'Minor';
break;
}
return str;
},
// mystate(mystate) {
// console.log('mystate at line 1052:', mystate);
// let str = '';
// switch (mystate) {
// case 1:
// str = 'Accept';
// break;
// case 2:
// str = 'Reject';
// break;
// case 3:
// // str = 'Accept';
// str = 'Revision';
// break;
// }
// return str;
// },
statetostr(mystate) {
let str = '';
switch (mystate) {
@@ -1660,6 +1852,13 @@ export default {
this.form.journalname = res.article.journalname;
this.form.abstrart = res.article.abstrart;
this.form.accept_sn = res.article.accept_sn;
this.form.scoring = res.article.scoring;
this.form.h_fen = res.article.h_fen;
this.form.b_fen = res.article.b_fen;
this.form.c_fen = res.article.c_fen;
this.form.dw_fen = res.article.dw_fen;
this.form.ly_fen = res.article.ly_fen;
this.form.jj_fen = res.article.jj_fen;
this.form.keywords = res.article.keywords;
this.form.fund = res.article.fund;
this.form.type = res.article.type;
@@ -1696,6 +1895,8 @@ export default {
country: alist[i].country,
email: alist[i].email,
address: alist[i].address,
scopus_index: alist[i].scopus_index,
scopus_website: alist[i].scopus_website,
isSuper: alist[i].is_super == 1 ? true : false,
isReport: alist[i].is_report == 1 ? true : false
// indexs_show: index_h,
@@ -2279,7 +2480,8 @@ td {
}
.overflow-x-auto {
overflow-x: auto;
}.short-content {
}
.short-content {
max-height: 120px;
display: -webkit-box;
-webkit-line-clamp: 3; /* 设置显示的行数 */