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

BIN
dist.zip

Binary file not shown.

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; /* 设置显示的行数 */

View File

@@ -164,7 +164,7 @@
</el-table-column>
</el-table>
<!-- 添加作者弹出框 -->
<el-dialog title="Add author" :visible.sync="addAuthor" width="650px">
<el-dialog title="Add author" :visible.sync="addAuthor" width="650px" destroy-on-close>
<el-form ref="add_Author" :model="addFomauthor" :rules="rules" label-width="165px">
<el-form-item label="Author first name :" prop="first_name">
<el-input v-model="addFomauthor.first_name"></el-input>
@@ -1773,9 +1773,16 @@ export default {
// 2----添加作者操作
add_Authorclick(index, row) {
this.aid = index;
this. addFomauthor={
is_first: '0',
is_report: '0',
organs: []
}
this.addFomauthor.p_article_id = this.p_article_id;
this.addAuthor = true;
},
authorAdd(addFomauthor) {
console.log(this.addFomauthor);
this.$refs.add_Author.validate((valid) => {
if (valid) {
this.$api
@@ -1860,6 +1867,8 @@ export default {
// 2----添加机构操作
add_Schoolclick(index, row) {
this.aid = index;
this.addFomschool={}
this.addFomschool.p_article_id = this.p_article_id;
this.addSchool = true;
},
schoolAdd(addFomschool) {

View File

@@ -1,37 +1,43 @@
<template>
<div class="container" style="min-width: auto;padding:20px 20px 0;">
<div class="container" style="min-width: auto;padding:15px 15px 0;">
<el-row :gutter="24">
<el-col :span="24">
<div class="form-box" style="width: 100%">
<el-form ref="articleform" :model="detailDate" label-width="160px">
<el-form ref="articleform" :model="detailDate" label-width="200px">
<!-- <el-form-item label="Article : ">
<span>{{ detailDate.article }}</span>
</el-form-item> -->
<el-form-item label="Final Decision : ">
<el-form-item label="Editorial Board Member : ">
<span>{{ detailDate.reviewer }}</span>
</el-form-item>
<el-form-item label="Final Decision Time : ">
<el-form-item label="Final decision time : ">
<span>{{ detailDate.ctime }}</span>
</el-form-item>
<el-form-item label="Feedback : ">
<span v-if="detailDate.article_final">{{ mystate(detailDate.article_final.state) }}</span>
</el-form-item>
<el-form-item label="" v-if="detailDate.article_final">
<common-editor-article
showType="detail"
type="questionform"
ref="commonEditor"
pagetype="Editor"
:form="detailDate.article_final"
:txt_mess="txt_mess"
:btn_submit="1"
:articleId="articleId"
:journal_id="journal_id"
></common-editor-article>
<el-form-item label="Final decision : ">
<span style="font-size: 16px;font-weight: bold">
<span v-if="detailDate.article_final.state==1" style="color: #67c23a;">Accept</span>
<span v-else-if="detailDate.article_final.state==2" style="color: #ff4949;">Reject</span>
<span v-else-if="detailDate.article_final.state==3" style="color: #ffc500;">Revision</span>
</span>
</el-form-item>
<template v-if="detailDate.article_final">
<el-form-item label="comment for authors : " prop="suggest_for_author">
<div style="color: #888;">
{{ detailDate.article_final.suggest_for_author? detailDate.article_final.suggest_for_author : 'No comment' }}
</div>
</el-form-item>
<el-form-item label="comment for authors : " prop="suggest_for_editor">
<div style="color: #888;">
{{ detailDate.article_final.suggest_for_editor? detailDate.article_final.suggest_for_editor : 'No comment' }}
</div>
</el-form-item>
</template>
</el-form>

View File

@@ -1,7 +1,7 @@
<template>
<div>
<el-form :model="questionform" :rules="isEdit ? rules : {}" ref="question" label-width="300px" label-position="top">
<el-divider content-position="center">REFEREE'S ASSESSMENT</el-divider>
<el-divider content-position="center">REFEREE'S ASSESSMENT</el-divider>
<el-form-item label="Final Decision" prop="state">
<!-- Accept(录用)、Revision(退修)、Reject(退稿) -->
@@ -220,7 +220,7 @@ export default {
// 提交接口
// this.loading = true;
this.$message.warning('Please note that your name and decision may be publicly disclosed after finalization.');
this.$refs.question.validate((valid) => {
if (valid) {

View File

@@ -2,7 +2,7 @@
<div class="block commonMajor" style="width: 100%">
<el-button type="primary" plain size="mini" @click="handleAdd" style="float:right"><i class="el-icon-plus" ></i>Add Field </el-button>
<el-dialog title="Add Field " :visible.sync="coreVisible1" width="780px" :close-on-click-modal="false">
<el-dialog title="Add Field " :visible.sync="coreVisible1" width="780px" :close-on-click-modal="false" append-to-body>
<el-form :model="coreForm1" :rules="rules1" ref="core_Form1" label-width="140px" >
<el-form-item prop="major">
<span slot="label">

View File

@@ -26,7 +26,7 @@
</div>
</div>
<el-dialog :title="disabled ? 'Research areas' : 'Edit Research areas'" :visible.sync="majorBox" width="800px">
<el-dialog :title="disabled ? 'Research areas' : 'Edit Research areas'" :visible.sync="majorBox" width="800px" append-to-body>
<el-form ref="remark" :model="majorMes" label-width="120px">
<el-form-item label="Reviewer :">
<p style="line-height: 20px; margin-top: 6px">

View File

@@ -23,6 +23,10 @@
<iframe ref="mainiframe" :src="pdfUrl" class="lookpdf" frameborder="0"></iframe>
</el-col>
<el-col :span="14" style="height: 760px; overflow-y: scroll">
<p style="background-color: #fdf6ec;padding: 10px;margin-bottom: 10px;font-weight: 600;
color: #e6a23c;border-radius: 4px;">
<i class="el-icon-warning" style="margin-right: 10px;"></i>
Please note that your name and decision may be publicly disclosed after finalization.</p>
<!-- <el-col :span="24"> -->
<el-card class="box-card">
<div class="tet_list" :model="txt_mess">