2、nbsp 转换 3、H3标记为myh3 4、文章详情审稿和编委邮箱机构显示 5、稿号开头为Draft 状态为Reject->Awaiting Submission 6、作者端稿件重复(标题) 7、produce 增加 通讯作者详细地址 8、produce 增加 是否显示图文摘要1
3349 lines
155 KiB
Vue
3349 lines
155 KiB
Vue
<template>
|
||
<div>
|
||
<div class="crumbs">
|
||
<div class="art_state_message_id" style="padding-left: 18px">
|
||
<font
|
||
>ID : <b style="margin-right: 25px">{{ form.accept_sn }}</b></font
|
||
>
|
||
<font
|
||
>Journal : <b style="margin-right: 25px">{{ journal_me }}</b></font
|
||
>
|
||
|
||
<font
|
||
>Type : <b style="margin-right: 25px">{{ form.type | jtName }}</b></font
|
||
>
|
||
<font style=""
|
||
>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文章:<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>
|
||
<!-- <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文章:<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>
|
||
</font>
|
||
</div>
|
||
<div style="position: relative" v-if="currentArticleData.ai_review == ''">
|
||
<el-tooltip
|
||
class="item"
|
||
effect="dark"
|
||
content="AI analysis takes 1 minute. Please click and refresh the page"
|
||
placement="top-start"
|
||
>
|
||
<img
|
||
src="@/assets/img/ai.png"
|
||
class="beautiful-gradient"
|
||
style="
|
||
opacity: 0.5;
|
||
width: 30px;
|
||
height: 30px;
|
||
margin-right: 4px;
|
||
position: absolute;
|
||
left: -15px;
|
||
top: -30px;
|
||
cursor: pointer;
|
||
"
|
||
@click="creatAI()"
|
||
/>
|
||
</el-tooltip>
|
||
</div>
|
||
<div style="position: relative" v-else>
|
||
<img
|
||
src="@/assets/img/ai.png"
|
||
class="beautiful-gradient"
|
||
style="width: 30px; height: 30px; margin-right: 4px; position: absolute; left: -15px; top: -30px; cursor: pointer"
|
||
@click="openAI()"
|
||
/>
|
||
</div>
|
||
</div>
|
||
<div class="container_state" v-loading="loading">
|
||
<div style="margin-bottom: 10px; margin-top: 0px; overflow: hidden">
|
||
<!-- <p class="beautiful-gradient"style="float: right;width: calc(100% - 40px);font-size: 13px;line-height: 16px;color: #1d45f2;" >{{ AIcontent }}</p> -->
|
||
</div>
|
||
<el-row :gutter="24">
|
||
<el-col :span="14">
|
||
<div class="art_state_">
|
||
<div class="art_state_message">
|
||
<p>
|
||
<font>Title :</font>
|
||
<b style="color: #333; font-weight: bold"> {{ form.title }}</b>
|
||
<b
|
||
v-if="form.articleId"
|
||
@click="corrSpe(form)"
|
||
class="btnCliArt"
|
||
style="cursor: pointer; margin-left: 20px; white-space: nowrap"
|
||
>
|
||
<i class="el-icon-paperclip"></i> Author's previous articles
|
||
</b>
|
||
</p>
|
||
|
||
<!-- <p v-show="form.type=='A'">
|
||
<font>Ethical Approval :</font><b>{{form.approval?'Yes':'No'}}</b>
|
||
</p> -->
|
||
<p>
|
||
<font>Ethical Approval :</font><b>{{ form.approval ? 'Yes' : 'No' }}</b>
|
||
<a
|
||
target="_blank"
|
||
:href="mediaUrl + form.approval_file"
|
||
v-if="form.approval == 1 && form.approval_file != ''"
|
||
style="color: #777"
|
||
>
|
||
<img
|
||
src="../../assets/img/icon_0.png"
|
||
style="vertical-align: text-bottom; margin: 0 10px 0 30px; width: 15px"
|
||
/>
|
||
<font>Ethical approval file</font>
|
||
<i
|
||
class="el-icon-download download"
|
||
style="vertical-align: middle; margin: 0 20px; font-weight: bold; color: #75abf1"
|
||
></i>
|
||
</a>
|
||
</p>
|
||
<p v-if="form.approval == 0 && form.approval_content != ''">
|
||
<font>Explain the reason clearly :</font><b>{{ form.approval_content }}</b>
|
||
</p>
|
||
<p v-if="form.special_num > 0">
|
||
<font>Special Issues :</font><b>{{ form.special_title }}</b>
|
||
</p>
|
||
|
||
<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">
|
||
<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"
|
||
style="width: 15px; margin: 0 2px 0 0; vertical-align: text-bottom"
|
||
/>
|
||
{{ item.firstname }} {{ item.lastname }} {{ item.isSuper ? '#' : ''
|
||
}}{{ item.isReport ? '*' : '' }}
|
||
</h4>
|
||
|
||
<div>
|
||
<p v-if="item.email">
|
||
<img
|
||
src="../../assets/img/state_email.png"
|
||
v-if="item.isReport"
|
||
style="width: 14px; margin: 0 8px 0 0; vertical-align: text-bottom"
|
||
/>
|
||
<font>Email : </font>{{ item.email }}
|
||
</p>
|
||
<p v-if="item.orcid"><font>ORCID iD : </font>{{ item.orcid }}</p>
|
||
<p>
|
||
<font>First author : </font>
|
||
<b v-if="item.isSuper">Yes</b>
|
||
<b v-if="!item.isSuper">No</b>
|
||
</p>
|
||
<p>
|
||
<font>Corresponding Author :</font>
|
||
<b v-if="item.isReport">Yes</b>
|
||
<b v-if="!item.isReport">No</b>
|
||
</p>
|
||
<!-- <p v-if="item.isReport">
|
||
<font>WOS H index :</font>
|
||
<b v-if="item.indexs_show!=0" style="font-size: 18px;">
|
||
<b :style="{color:item.indexs_color}">{{item.indexs_show}}</b>
|
||
<font style="font-size: 14px;color: #aaa;margin-left: 5px;">({{now_year}})</font>
|
||
</b>
|
||
<b v-if="item.indexs_show==0" style="color: #aaa;">Null</b>
|
||
<i class="el-icon-edit" @click="HIndexEdit(item)" v-if="form.state==1" style="margin-left: 10px;color: #006699;cursor: pointer;"></i>
|
||
</p> -->
|
||
<p v-if="item.address && isShowAuthorInfo"><font>Address : </font>{{ item.address }}</p>
|
||
<div v-if="item.company" style="display: flex; align-items: flex-start">
|
||
<font style="display: inline-block; width: 70px; color: #777">Affiliation : </font>
|
||
<p v-html="getAllCompany(item.company)" style="width: calc(100% - 70px)"></p>
|
||
</div>
|
||
<p v-if="item.department && isShowAuthorInfo">
|
||
<font>Department : </font>{{ item.department }}
|
||
</p>
|
||
<p v-if="item.title"><font>Title : </font>{{ item.title }}</p>
|
||
<p v-if="item.country"><font>Country : </font>{{ item.country }}</p>
|
||
</div>
|
||
</div>
|
||
</el-collapse-item>
|
||
</el-collapse>
|
||
|
||
<el-collapse class="auth_colla auth_collna_ew" style="margin-top: -15px">
|
||
<el-collapse-item name="2">
|
||
<template slot="title">
|
||
Abstract
|
||
<font v-if="form.keywords" style="margin-left: 3px">, Keywords</font>
|
||
<font v-if="form.fund" style="margin-left: 3px">, Fund</font>
|
||
</template>
|
||
<p>
|
||
<font>Abstract :</font><b>{{ form.abstrart }}</b>
|
||
</p>
|
||
<p v-if="form.keywords">
|
||
<font>Keywords :</font><b>{{ form.keywords }}</b>
|
||
</p>
|
||
<p v-if="form.fund">
|
||
<font>Fund :</font><b>{{ form.fund }}</b>
|
||
</p>
|
||
</el-collapse-item>
|
||
</el-collapse>
|
||
<el-collapse
|
||
v-model="AIcontent"
|
||
class="auth_colla auth_collna_ew"
|
||
style="margin-top: -15px"
|
||
v-if="form.is_use_ai == 1"
|
||
>
|
||
<el-collapse-item
|
||
title="Artificial intelligence was utilized in the research or manuscript of the article"
|
||
name="1"
|
||
>
|
||
{{ form.use_ai_explain }}
|
||
</el-collapse-item>
|
||
</el-collapse>
|
||
<el-collapse class="auth_colla auth_collna_ew" style="margin-top: -15px" v-if="form.is_use_ai == 2">
|
||
<el-collapse-item
|
||
title="No artificial intelligence was utilized in the research or manuscript writing process of this article"
|
||
name="1"
|
||
>
|
||
</el-collapse-item>
|
||
</el-collapse>
|
||
<el-collapse v-model="researchAreas" class="auth_colla auth_collna_ew research_area" style="margin-top: -15px">
|
||
<el-collapse-item title="Research areas" name="1">
|
||
<div style="position: relative; height: 30px" v-if="form.state == 0">
|
||
<common-major
|
||
v-if="form.state == 0"
|
||
:articleId="editform.articleId"
|
||
@load="initMajor()"
|
||
style="position: absolute; top: 10px; right: 10px"
|
||
></common-major>
|
||
</div>
|
||
|
||
<div style="margin: 12px 20px 30px 0px; line-height: 24px; font-size: 14px; position: relative">
|
||
<div>
|
||
<!-- 统计数据 -->
|
||
|
||
<div class="join_link">
|
||
<!-- 如果你想投稿 请点击 -->
|
||
<p style="" v-for="(v, i) in majorsList">
|
||
<span style="color: #006699; font-weight: bold; margin-right: 10px"
|
||
>Field {{ i + 1 }}:</span
|
||
>{{ v.str
|
||
}}<i
|
||
v-if="form.state == 0"
|
||
class="el-icon-delete-solid"
|
||
style="color: #f56c6c !important; margin-left: 10px"
|
||
@click="handleDeleteMajor(v)"
|
||
></i>
|
||
</p>
|
||
<!-- 查看已投稿件列表 -->
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-collapse-item>
|
||
</el-collapse>
|
||
</div>
|
||
<el-collapse
|
||
v-model="FileList"
|
||
class="auth_colla auth_collna_ew research_area"
|
||
style="margin-top: -15px; margin-bottom: 0"
|
||
>
|
||
<el-collapse-item title="File" name="1">
|
||
<div class="art_file_">
|
||
<el-row :gutter="24">
|
||
<el-col :span="12" v-if="coverLetterFileList">
|
||
<h4>Cover letter :</h4>
|
||
<p class="fi_new">
|
||
<a v-for="item in coverLetterFileList" :href="mediaUrl + item.file_url">
|
||
<img src="../../assets/img/icon_0.png" />
|
||
<span>
|
||
<font>Uploader : </font>{{ item.username }}
|
||
<i><i class="el-icon-time"></i>{{ formatDate(item.ctime) }}</i>
|
||
</span>
|
||
<i class="el-icon-download download"></i>
|
||
</a>
|
||
</p>
|
||
<br clear="both" />
|
||
</el-col>
|
||
<el-col :span="12" v-if="picturesAndTablesFileList">
|
||
<h4>Figures :</h4>
|
||
<p class="fi_new">
|
||
<a v-for="item in picturesAndTablesFileList" :href="mediaUrl + item.file_url">
|
||
<img src="../../assets/img/icon_0.png" />
|
||
<span>
|
||
<font>Uploader : </font>{{ item.username }}
|
||
<i><i class="el-icon-time"></i>{{ formatDate(item.ctime) }}</i>
|
||
</span>
|
||
<i class="el-icon-download download"></i>
|
||
</a>
|
||
</p>
|
||
<br clear="both" />
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="24">
|
||
<el-col :span="12" v-if="totalpageFileList">
|
||
<h4>Title page :</h4>
|
||
<p class="fi_new">
|
||
<a v-for="item in totalpageFileList" :href="mediaUrl + item.file_url">
|
||
<img src="../../assets/img/icon_0.png" />
|
||
<span>
|
||
<font>Uploader : </font>{{ item.username }}
|
||
<i><i class="el-icon-time"></i>{{ formatDate(item.ctime) }}</i>
|
||
</span>
|
||
<i class="el-icon-download download"></i>
|
||
</a>
|
||
</p>
|
||
<br clear="both" />
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<h4>Manuscript :</h4>
|
||
<p class="fi_new">
|
||
<!-- <template v-for="item in manuscirptFileList"> -->
|
||
<!-- <a href="#">
|
||
<img
|
||
src="../../assets/img/icon_0.png"
|
||
@click="openDrawer(item, mediaUrl + item.file_url)"
|
||
/>
|
||
|
||
<span @click="openDrawer(item, mediaUrl + item.file_url)">
|
||
<font>Uploader : </font>{{ item.username }}
|
||
<i><i class="el-icon-time"></i>{{ formatDate(item.ctime) }}</i>
|
||
<i class="el-icon-view" style="font-weight: bold; color: #888; margin: 0 0 0 10px"></i>
|
||
</span>
|
||
<a :href="mediaUrl + item.file_url">
|
||
<i class="el-icon-download download"></i>
|
||
</a>
|
||
</a> -->
|
||
<a v-for="item in manuscirptFileList" :href="mediaUrl + item.file_url">
|
||
<img src="../../assets/img/icon_0.png" />
|
||
<span>
|
||
<font>Uploader : </font>{{ form.username }}
|
||
<i><i class="el-icon-time"></i>{{ formatDate(item.ctime) }}</i>
|
||
</span>
|
||
<i class="el-icon-download download"></i>
|
||
</a>
|
||
<!-- </template> -->
|
||
</p>
|
||
<br clear="both" />
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="24" v-if="supplementaryFileList">
|
||
<el-col :span="24">
|
||
<h4>Supplementary Material :</h4>
|
||
<p class="fi_new">
|
||
<a v-for="item in supplementaryFileList" :href="mediaUrl + item.file_url">
|
||
<img src="../../assets/img/icon_0.png" />
|
||
<span>
|
||
<font>Uploader : </font>{{ item.username }}
|
||
<i><i class="el-icon-time"></i>{{ formatDate(item.ctime) }}</i>
|
||
</span>
|
||
<i class="el-icon-download download"></i>
|
||
</a>
|
||
</p>
|
||
<br clear="both" />
|
||
</el-col>
|
||
</el-row>
|
||
|
||
<el-row :gutter="24">
|
||
<el-col :span="24">
|
||
<el-button type="text" style="position: absolute; top: -2px; right: 14px" @click="reOpenDialog">
|
||
<i class="el-icon-edit"></i> Upload
|
||
</el-button>
|
||
<h4>Figure Copyright Declaration :</h4>
|
||
<div style="line-height: 22px;padding-left: 10px;margin-top: 2px;color: #333;">
|
||
<p v-if="form.is_figure_copyright == 2"> I confirm that all figures in this manuscript are original.</p>
|
||
<p v-if="form.is_figure_copyright == 1"> I confirm that all figures in this manuscript used with proper permission.</p>
|
||
|
||
</div>
|
||
|
||
<p class="fi_new" v-if="fileL_articleCopyright.length > 0" style="margin-top: 10px;">
|
||
<a v-for="item in fileL_articleCopyright" :href="mediaUrl + item.file_url">
|
||
<img src="../../assets/img/icon_0.png" />
|
||
<span>
|
||
<font>Uploader : </font>{{ item.username }}
|
||
<i><i class="el-icon-time"></i>{{ formatDate(item.ctime) }}</i>
|
||
</span>
|
||
<i class="el-icon-download download"></i>
|
||
</a>
|
||
</p>
|
||
|
||
<FigureCopyright
|
||
:article_id="form.articleId"
|
||
:visible.sync="copyrightDialogVisible"
|
||
v-model="is_figure_copyright"
|
||
:upload-action="upload_articleCopyright"
|
||
:file-list="newfilearticleCopyrightList"
|
||
@on-success="upSuccess_articleCopyright"
|
||
@on-remove="removefilearticleCopyright"
|
||
@on-preview="dowloadFile"
|
||
/>
|
||
<br clear="both" />
|
||
</el-col>
|
||
</el-row>
|
||
|
||
<el-row v-if="responseFileList != ''">
|
||
<div style="height: 1px; width: 98%; background-color: #ebeef5; margin: 5px auto 20px auto"></div>
|
||
|
||
<el-col :span="24">
|
||
<h4>Response to reviewers :</h4>
|
||
<p class="fi_new">
|
||
<a v-for="item in responseFileList" :href="mediaUrl + item.file_url">
|
||
<img src="../../assets/img/icon_0.png" />
|
||
<span>
|
||
<font>Uploader : </font>{{ form.username }}
|
||
<i><i class="el-icon-time"></i>{{ formatDate(item.artr_ctime) }}</i>
|
||
</span>
|
||
<i class="el-icon-download download"></i>
|
||
</a>
|
||
</p>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
</el-collapse-item>
|
||
</el-collapse>
|
||
|
||
<common-word-html :articleId="$route.query.id" style="box-sizing: border-box"></common-word-html>
|
||
</div>
|
||
<div style="margin-top: 40px">
|
||
<div v-if="![0].includes(form.state)">
|
||
<!-- under review -->
|
||
<el-collapse v-model="underReview" class="auth_colla auth_collna_ew under_review" style="margin-top: -15px">
|
||
<el-collapse-item title="" name="1">
|
||
<template slot="title">
|
||
<div class="under_review_title">
|
||
<span style="font-weight: bold; color: #333 !important; font-size: 18px">Under review</span>
|
||
<span
|
||
style="font-size: 16px; margin-left: 20px; text-align: right; font-weight: 400"
|
||
v-if="reviewList.length > 0"
|
||
>
|
||
Average score : <b style="font-size: 16px; color: #db890e">{{ avegeCount(reviewList) }}</b>
|
||
</span>
|
||
<b @click.stop="articleReviewer()" class="btnCliArt" style="" v-if="form.state != 0">
|
||
<i
|
||
:class="[1, 2, 4, 8].includes(form.state) ? 'el-icon-edit' : 'el-icon-view'"
|
||
style="margin-right: 5px"
|
||
></i
|
||
>Inviting Reviewer {{ [1, 2, 4, 8].includes(form.state) ? '' : 'History' }}
|
||
</b>
|
||
</div>
|
||
</template>
|
||
<div class="art_author_" style="padding: 20px" v-if="reviewList.length > 0">
|
||
<div class="fixCard reviewer_decision" style="position: relative">
|
||
<div class="overflow-x-auto">
|
||
<!-- 上面的表格代码放在这里 -->
|
||
|
||
<table class="review_table">
|
||
<thead>
|
||
<tr>
|
||
<th class="review_table_index">No.</th>
|
||
<th>Name <span style="color: #888">( score )</span></th>
|
||
<!-- 补充表头文本,原代码是空,建议加上 -->
|
||
<th>1<sup>st</sup> review</th>
|
||
<!-- 表头:按最大重复次数遍历,生成2nd、3rd...列 -->
|
||
<template v-for="(_, index1) in maxRepeatReviewCount()">
|
||
<th>{{ index1 + 2 }}<sup>nd</sup> review</th>
|
||
</template>
|
||
<!-- <th>final state</th> -->
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<!-- 遍历每个评审者 -->
|
||
<tr v-for="(iken, reviewerIndex) in reviewList">
|
||
<td class="review_table_index">
|
||
Reviewer {{ reviewerIndex + 1 }}
|
||
|
||
<el-button
|
||
style="margin-left: 10px"
|
||
type="text"
|
||
@click="crateRevision(iken)"
|
||
v-if="iken.can_repeat == 1"
|
||
>Re-review</el-button
|
||
>
|
||
</td>
|
||
<td style="position: relative; cursor: pointer">
|
||
<span style="">{{ iken.realname }}</span>
|
||
<span
|
||
v-if="iken.state != 0"
|
||
style="
|
||
color: rgb(219, 137, 14);
|
||
font-weight: 700;
|
||
margin-left: 10px;
|
||
font-size: 14px;
|
||
"
|
||
>( {{ iken.rated }} )</span
|
||
>
|
||
<span
|
||
style="color: #888; float: right; margin-right: 20px"
|
||
@click="handleClick(iken, 'detail')"
|
||
>Detail</span
|
||
>
|
||
</td>
|
||
<!-- 1st review:原逻辑不变 -->
|
||
<td style="cursor: pointer">
|
||
<span>
|
||
<span
|
||
style="display: inline-block; margin-left: 4px; margin-right: 8px"
|
||
>
|
||
<font
|
||
v-if="iken.recommend == 1 || iken.recommend == 2"
|
||
style="
|
||
width: 12px;
|
||
height: 12px;
|
||
display: block;
|
||
border-radius: 10px;
|
||
background-color: #67c23a;
|
||
"
|
||
>
|
||
</font>
|
||
<font
|
||
v-if="iken.recommend == 3 || iken.recommend == 4"
|
||
style="
|
||
width: 12px;
|
||
height: 12px;
|
||
display: block;
|
||
border-radius: 10px;
|
||
background-color: #f56c6c;
|
||
"
|
||
>
|
||
</font>
|
||
<font
|
||
v-if="iken.state == 0"
|
||
style="
|
||
width: 12px;
|
||
height: 12px;
|
||
display: block;
|
||
border-radius: 10px;
|
||
background-color: #ccc;
|
||
"
|
||
>
|
||
</font>
|
||
</span>
|
||
<span v-if="iken.recommend == 1">Minor</span>
|
||
<span v-else-if="iken.recommend == 2">Major</span>
|
||
<span v-else-if="iken.recommend == 3">reject and resubmission</span>
|
||
<span v-else-if="iken.recommend == 4">Reject</span>
|
||
</span>
|
||
|
||
<span
|
||
v-if="iken.state != 0"
|
||
style="color: #888; float: right; margin-right: 20px"
|
||
@click="handleClick(iken, 'question')"
|
||
>Detail</span
|
||
>
|
||
</td>
|
||
<!-- 关键:按最大重复次数遍历,而非仅遍历当前iken.repeat -->
|
||
<template v-for="(_1, index1) in maxRepeatReviewCount()">
|
||
<td>
|
||
<!-- 补全逻辑:判断当前评审者的repeat中是否有第index1条数据 -->
|
||
<span
|
||
v-if="Array.isArray(iken.repeat) && iken.repeat[index1]"
|
||
style="cursor: pointer"
|
||
>
|
||
<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
|
||
v-if="[1, 2, 3].includes(iken.repeat[index1].recommend)"
|
||
style="color: #888; float: right; margin-right: 20px"
|
||
@click="handleClick(iken, 're-review', iken.repeat[index1])"
|
||
>Detail</span
|
||
>
|
||
</span>
|
||
<span v-else>
|
||
<!-- 无数据:补全空内容(可自定义为“-”“无”等) -->
|
||
|
||
<span>-</span>
|
||
</span>
|
||
</td>
|
||
</template>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-collapse-item>
|
||
</el-collapse>
|
||
|
||
<!-- 初审 -->
|
||
</div>
|
||
<div v-if="(![0].includes(form.state) && finalList.length > 0) || form.state == 8" style="margin-top: 40px">
|
||
<!-- under review -->
|
||
<el-collapse v-model="finalDecision" class="auth_colla auth_collna_ew under_review" style="margin-top: -15px">
|
||
<el-collapse-item title="" name="1">
|
||
<template slot="title">
|
||
<div class="under_review_title">
|
||
<span style="font-weight: bold; color: #333 !important; font-size: 18px">Final Decision</span>
|
||
<span
|
||
v-if="finalList.length > 0"
|
||
style="font-size: 16px; margin-left: 20px; text-align: right; font-weight: 400"
|
||
>
|
||
Comprehensive Score :
|
||
<b style="font-size: 16px; color: #db890e">{{ finalCount(reviewList) }}</b>
|
||
</span>
|
||
<b v-if="form.state != 0" @click.stop="articleEditorialBoard()" class="btnCliArt" style="">
|
||
<i :class="form.state == 8 ? 'el-icon-edit' : 'el-icon-view'" style="margin-right: 5px"></i>
|
||
Inviting Editorial Board {{ form.state == 8 ? '' : 'History' }}
|
||
</b>
|
||
</div>
|
||
</template>
|
||
<div class="art_author_" style="padding: 20px" v-if="finalList.length > 0">
|
||
<div class="fixCard reviewer_decision" style="position: relative">
|
||
<div class="overflow-x-auto">
|
||
<!-- 上面的表格代码放在这里 -->
|
||
|
||
<table class="review_table">
|
||
<thead>
|
||
<tr>
|
||
<th class="review_table_index">No.</th>
|
||
<th>Name</th>
|
||
<!-- 补充表头文本,原代码是空,建议加上 -->
|
||
<th>Final Decision</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<!-- 遍历每个评审者 -->
|
||
<tr v-for="(iken, reviewerIndex) in finalList">
|
||
<td style="position: relative; cursor: pointer">
|
||
Editorial Board {{ reviewerIndex + 1 }}
|
||
</td>
|
||
<td style="position: relative; cursor: pointer">
|
||
<span style="">{{ iken.realname }}</span>
|
||
<span
|
||
v-if="[1, 2, 3].includes(iken.state)"
|
||
style="color: #888; float: right"
|
||
@click="handleClickFinal(iken)"
|
||
>Detail</span
|
||
>
|
||
</td>
|
||
<!-- 1st review:原逻辑不变 -->
|
||
<td style="cursor: pointer; font-weight: 700">
|
||
<span v-if="iken.state == 1" style="color: #67c23a">Accept</span>
|
||
<span v-else-if="iken.state == 2" style="color: #ff4949">Reject</span>
|
||
<span v-else-if="iken.state == 3" style="color: #ffc500">Revision</span>
|
||
|
||
<font v-if="iken.state == 5" style="color: #ccc; display: inline-block">
|
||
invitation
|
||
</font>
|
||
<font v-if="iken.state == 0" style="color: #67c23a; display: inline-block">
|
||
Agree to review
|
||
</font>
|
||
<font v-if="iken.state == 4" style="color: #ccc; display: inline-block">
|
||
invalid
|
||
</font>
|
||
<span style="color: #888; font-weight: 500; float: right">{{
|
||
formatDate_(iken.update_time)
|
||
}}</span>
|
||
</td>
|
||
|
||
<!-- 关键:按最大重复次数遍历,而非仅遍历当前iken.repeat -->
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-collapse-item>
|
||
</el-collapse>
|
||
|
||
<!-- 初审 -->
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="10" style="padding: 0">
|
||
<!-- 被拒稿件操作 --->
|
||
<div style="margin-bottom: 20px">
|
||
<div class="art_caozuo_" v-if="opname == 'rejectArticles'">
|
||
<div>
|
||
<span>Status : </span>
|
||
<b>{{ articleState }}</b>
|
||
</div>
|
||
<div style="display: flex; width: 100%; align-items: flex-start">
|
||
<span style="display: inline-block; width: 65px !important">Remarks :</span>
|
||
<b :class="{ collapsed: !expanded }" class="remarkContent" style="" @click="handleClickRemark(form)">{{
|
||
form.remarks
|
||
}}</b>
|
||
<!-- <el-button type="text" @click="testedit" icon="el-icon-edit">Change</el-button> -->
|
||
</div>
|
||
<div>
|
||
<span>Repetition : </span>
|
||
<b>{{ form.repetition }}%</b>
|
||
</div>
|
||
<!--<br clear="both">
|
||
<el-button type="primary" @click="showResubmit" style="margin: 15px 0 0 0;">Resubmit the manuscript
|
||
</el-button> -->
|
||
</div>
|
||
<!-- 常规稿件操作 -->
|
||
<div class="art_caozuo_" v-else>
|
||
<div>
|
||
<span>Status : </span>
|
||
<b>{{ articleState }}</b>
|
||
<el-button type="text" @click="testvis" icon="el-icon-edit" v-if="!(form.is_draft==1&&form.state==3)">Change</el-button>
|
||
</div>
|
||
<div style="display: flex; width: 100%">
|
||
<span>Remarks :</span>
|
||
<b :class="{ collapsed: !expanded }" class="remarkContent" style="" @click="handleClickRemark(form)">{{
|
||
form.remarks
|
||
}}</b>
|
||
<el-button style="padding: 0" type="text" @click="testedit" icon="el-icon-edit">Change</el-button>
|
||
</div>
|
||
<div>
|
||
<span>Repetition : </span>
|
||
<b>{{ form.repetition }}%</b>
|
||
<a :href="mediaUrl + form.repeurl" v-if="form.repeurl" class="zip_load" target="_blank">
|
||
<img src="../../assets/img/icon_0.png" />
|
||
<span>Duplicate check file</span>
|
||
<i class="el-icon-download download"></i>
|
||
</a>
|
||
<el-button type="text" @click="changeRepe" icon="el-icon-edit">Change</el-button>
|
||
</div>
|
||
<div>
|
||
<span style="display: inline-block; vertical-align: top; margin-top: 7px">Manuscript : </span>
|
||
<el-upload
|
||
style="display: inline-block"
|
||
class="upload-demo"
|
||
:action="upload_manuscirpt"
|
||
accept=".docx,"
|
||
name="manuscirpt"
|
||
:before-upload="beforeupload_manuscirpt"
|
||
:on-error="uperr_coverLetter"
|
||
:on-success="upSuccess_manuscirpt"
|
||
:limit="1"
|
||
:on-exceed="alertlimit"
|
||
:on-remove="removefilemanuscirpt"
|
||
>
|
||
<div class="el-upload__text" style="padding: 8px 5px">
|
||
<em>Click Upload</em>
|
||
</div>
|
||
<div class="el-upload__tip" slot="tip">Only word and compressed files can be uploaded(.docx)</div>
|
||
</el-upload>
|
||
<br clear="both" />
|
||
<el-button type="primary" @click="onsubmit" style="margin: 15px 0 0 0">Upload Submit </el-button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<timetalk :talkMsgs="talkMsgs" :msgform="msgform" @talksave="talksave" :height="300"></timetalk>
|
||
<div class="tree_box">
|
||
<h2 style="margin: 0 0 20px 0">Manuscript Tracking</h2>
|
||
<div class="block">
|
||
<el-timeline>
|
||
<el-timeline-item :timestamp="formatDate_(form.ctime)" placement="top">
|
||
<el-card>
|
||
<p style="line-height: 20px">
|
||
Manuscript submission :
|
||
<b>{{ form.username }}</b>
|
||
<span style="margin: 0 5px; color: #409eff">({{ form.user_email }})</span>
|
||
submitted to
|
||
<b>{{ journal_me }}</b>
|
||
</p>
|
||
</el-card>
|
||
</el-timeline-item>
|
||
<el-timeline-item
|
||
v-for="(activity, index) in msgs"
|
||
:key="index"
|
||
:timestamp="formatDate_(activity.ctime)"
|
||
placement="top"
|
||
>
|
||
<el-card v-if="activity.ftype == 0">
|
||
<p>Status change : {{ statetostr(activity.state_to) }}</p>
|
||
<p v-if="activity.content != ''">{{ activity.content }}</p>
|
||
</el-card>
|
||
<el-card v-else>
|
||
<p style="margin-bottom: 5px; font-weight: bold">Author message :</p>
|
||
<p style="line-height: 18px">{{ activity.content }}</p>
|
||
</el-card>
|
||
<!-- <el-card>
|
||
<p>state change :{{statetostr(activity.state_from)}} => {{statetostr(activity.state_to)}}</p>
|
||
<p>{{activity.content}}</p>
|
||
</el-card> -->
|
||
</el-timeline-item>
|
||
</el-timeline>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
|
||
<el-dialog title="Final decision detail" :visible.sync="FinalDecisionVisible" width="1200px" :close-on-click-modal="false">
|
||
<common-editor-article-detail
|
||
style="margin-top: 20px"
|
||
:detailDate="{
|
||
reviewer: finalDecisionData.realname,
|
||
article_final: finalDecisionData,
|
||
ctime: formatDate_(finalDecisionData.update_time)
|
||
}"
|
||
></common-editor-article-detail>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button type="" @click="FinalDecisionVisible = false">Cancel</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
<!-- 审稿详情 start-->
|
||
<reviewerDetail ref="reviewerDetail" v-if="reviewerVisible" :reviewerDetail="reviewerDetail" destroy-on-close></reviewerDetail>
|
||
<!-- 审稿详情 end-->
|
||
<el-dialog title="Edit H Index" :visible.sync="HEditVisible" width="400px" :close-on-click-modal="false">
|
||
<div style="margin: 0 0 20px 10px; font-weight: bold">{{ HIxForm.realname }}</div>
|
||
<div style="margin: 0 0 20px 10px">Email :{{ HIxForm.email }}</div>
|
||
<el-form ref="old_Form" :model="HIxForm" label-width="150px">
|
||
<el-form-item>
|
||
<span slot="label"> WOS H index ({{ this.now_year }}) </span>
|
||
<el-input v-model="HIxForm.index"></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button type="primary" @click="saveHIx(HIxForm)">OK</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
|
||
<el-dialog title="Change Status" :visible.sync="editVisible" width="750px" v-loading="loading1" :close-on-click-modal="false">
|
||
<el-form ref="editform" :model="editform" label-width="220px">
|
||
<el-form-item label="">
|
||
<span slot="label">
|
||
<i style="color: #f56c6c">*</i>
|
||
Status :
|
||
</span>
|
||
<el-select v-model="editform.state" placeholder="Please select">
|
||
<el-option
|
||
v-for="item in items"
|
||
:key="item.state"
|
||
:label="item.title"
|
||
:value="item.state"
|
||
:disabled="item.disabled"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
|
||
<el-form-item label="Comments for authors :" v-show="editform.state == 4">
|
||
<el-input type="textarea" rows="3" v-model="editform.proposal_content" placeholder="" resize="4"> </el-input>
|
||
</el-form-item>
|
||
<!-- <el-form-item label="Figure Copyright Declaration:" v-show="editform.state == 4">
|
||
<div class="copyright-declaration-wrapper">
|
||
<el-radio-group v-model="editform.is_figure_copyright">
|
||
<el-radio label="2"> I confirm that all figures in this manuscript are original. </el-radio>
|
||
<el-radio label="1"> I confirm that all figures are used with proper permission. </el-radio>
|
||
<el-input
|
||
v-if="editform.is_figure_copyright == '1'"
|
||
type="textarea"
|
||
rows="3"
|
||
v-model="editform.is_figure_copyright_content"
|
||
placeholder=""
|
||
resize="4"
|
||
>
|
||
</el-input>
|
||
</el-radio-group>
|
||
</div>
|
||
</el-form-item> -->
|
||
<el-form-item label="Transfer :" v-show="editform.state == 3 && form.transList.length == 0">
|
||
<el-select v-model="editform.trsjournal" placeholder="Please select">
|
||
<el-option :key="0" label="No Transfer" :value="0"></el-option>
|
||
<el-option
|
||
v-for="item in journals"
|
||
:key="item.journal_id"
|
||
:label="item.title"
|
||
:value="item.journal_id"
|
||
:disabled="item.journal_id == form.journal"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="editVisible = false">Cancel</el-button>
|
||
<el-button type="primary" @click="saveEdit">Save</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
<el-dialog title="Remarks" :visible.sync="editbox" width="1000px" v-loading="loading2" :close-on-click-modal="false">
|
||
<el-form ref="remark" :model="remark" label-width="85px">
|
||
<el-form-item label="Content :">
|
||
<el-input type="textarea" rows="20" v-model="remark.content"></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="editbox = false">Cancel</el-button>
|
||
<el-button type="primary" @click="saveRemark">Save</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
<el-dialog title="Repetition" :visible.sync="repebox" width="550px" v-loading="loading3" :close-on-click-modal="false">
|
||
<el-form ref="repetition" :model="repeform" label-width="90px">
|
||
<el-form-item label="Content :">
|
||
<el-input maxlength="3" style="width: 100px" v-model="repeform.repefen">
|
||
<template slot="append">%</template>
|
||
</el-input>
|
||
</el-form-item>
|
||
<el-form-item label="Zip :">
|
||
<el-upload
|
||
class="upload-demo"
|
||
:action="upload_zip"
|
||
accept=".rar, .zip"
|
||
name="repezip"
|
||
:on-success="upSuccess_repezip"
|
||
:limit="1"
|
||
:on-exceed="alertlimit"
|
||
:on-remove="removefilerepezip"
|
||
>
|
||
<div class="el-upload__text" style="padding: 0 5px">
|
||
<em>Click Upload</em>
|
||
</div>
|
||
<div class="el-upload__tip" slot="tip">Only pdf and word files can be uploaded(.pdf,.doc,.docx)</div>
|
||
</el-upload>
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="repebox = false">Cancel</el-button>
|
||
<el-button type="primary" @click="saveRepe">Save</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
<el-dialog
|
||
title="Resubmit the manuscript"
|
||
:visible.sync="resubmitVisible"
|
||
width="550px"
|
||
v-loading="loading4"
|
||
:close-on-click-modal="false"
|
||
>
|
||
<el-form ref="resubmitJournal" :model="resubmitJournal" label-width="120" :rules="Resubmitrules">
|
||
<el-form-item label="journal" prop="journalId">
|
||
<el-select
|
||
v-if="editorJournalList.length > 0"
|
||
v-model="resubmitJournal.journalId"
|
||
filterable
|
||
placeholder="Please select a manuscript"
|
||
>
|
||
<el-option v-for="item in editorJournalList" :key="item.journal_id" :label="item.title" :value="item.journal_id">
|
||
</el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="closeResubmit">Cancel</el-button>
|
||
<el-button type="primary" @click="saveResubmit">Save</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
<el-drawer
|
||
append-to-body
|
||
destroy-on-close
|
||
:title="previewData.drawerTitle"
|
||
:wrapperClosable="false"
|
||
:visible.sync="drawer"
|
||
direction="rtl"
|
||
:before-close="handleClose"
|
||
size="1000px"
|
||
>
|
||
<template #title>
|
||
<div style="display: inline-block; vertical-align: top">
|
||
Manuscript :
|
||
<img
|
||
src="../../assets/img/icon_0.png"
|
||
style="
|
||
width: 15px;
|
||
|
||
margin: 0 5px 0 0;
|
||
margin-left: 10px;
|
||
"
|
||
/>
|
||
|
||
<span>
|
||
<font>Uploader : </font>{{ previewData.username }}
|
||
<i style="color: #888; margin: 0 20px; font-style: normal"
|
||
><i class="el-icon-time" style="margin-right: 10px"></i>{{ formatDate(previewData.ctime) }}</i
|
||
>
|
||
<a :href="mediaUrl + previewData.file_url">
|
||
<i class="el-icon-download download" style="color: #75abf1; font-weight: bold"></i>
|
||
</a>
|
||
</span>
|
||
</div>
|
||
</template>
|
||
<iframe
|
||
:src="`https://view.officeapps.live.com/op/view.aspx?src=${previewData.previewUrl}&ui=en-US`"
|
||
width="100%"
|
||
height="98%"
|
||
frameborder="0"
|
||
></iframe>
|
||
</el-drawer>
|
||
<el-dialog title="" :visible.sync="corresVisible" width="800px" :close-on-click-modal="false">
|
||
<div class="corrPeo">
|
||
<div
|
||
v-if="corresList.article"
|
||
style="line-height: 30px; line-height: 22px; font-size: 16px; font-weight: bold; letter-spacing: -0.5px"
|
||
>
|
||
{{ corresList.article.title }}
|
||
</div>
|
||
<div v-for="(item, index) in corresList.author_articles">
|
||
<div class="corrPUser">
|
||
{{ item.firstname }} {{ item.lastname }}
|
||
<font v-if="item.is_super == 1">#</font>
|
||
<font v-if="item.is_report == 1">*</font>
|
||
</div>
|
||
<div
|
||
class="corrPTim"
|
||
v-for="(pku, iken) in item.articles"
|
||
@click="
|
||
corresVisible = false;
|
||
showdetaileditor(pku);
|
||
"
|
||
>
|
||
<span>{{ stateFormat(pku.state) }}</span>
|
||
{{ pku.title }}
|
||
<font> - {{ pku.journal_title }}</font>
|
||
</div>
|
||
<div v-if="item.articles.length == 0">No article</div>
|
||
</div>
|
||
<div class="corrPUser">User articles</div>
|
||
<div v-for="(item, index) in corresList.user_articles">
|
||
<div
|
||
class="corrPTim"
|
||
@click="
|
||
corresVisible = false;
|
||
showdetaileditor(item);
|
||
"
|
||
>
|
||
<span>{{ stateFormat(item.state) }}</span>
|
||
{{ item.title }}
|
||
<font> - {{ item.journal_title }}</font>
|
||
</div>
|
||
<div v-if="item.length == 0">No article</div>
|
||
</div>
|
||
</div>
|
||
</el-dialog>
|
||
<el-dialog
|
||
:title="$t('AI.AISummaryAnalysis')"
|
||
:visible.sync="isShowAI"
|
||
width="1100px"
|
||
class="AIDialog"
|
||
:close-on-click-modal="false"
|
||
>
|
||
<div class="AISummaryAnalysis">
|
||
<el-collapse class="auth_colla auth_collna_ew" style="margin-bottom: 10px; margin-top: -20px">
|
||
<el-collapse-item name="1">
|
||
<template slot="title">
|
||
Abstract
|
||
<font v-if="currentArticleData.keywords" style="margin-left: 3px">, Keywords</font>
|
||
</template>
|
||
<p>
|
||
<font>Abstract :</font><b>{{ currentArticleData.abstrart }}</b>
|
||
</p>
|
||
<p v-if="currentArticleData.keywords">
|
||
<font>Keywords :</font><b>{{ currentArticleData.keywords }}</b>
|
||
</p>
|
||
</el-collapse-item>
|
||
</el-collapse>
|
||
|
||
<div style="line-height: 20px" v-if="isShowAI">
|
||
<p style="overflow: hidden; margin-bottom: 8px">
|
||
<span style="float: left">{{
|
||
currentArticleData.ai_review.is_finish == 2
|
||
? 'AI is currently analyzing'
|
||
: currentArticleData.ai_review.is_finish == 1
|
||
? 'AI analysis has been completed'
|
||
: ''
|
||
}}</span>
|
||
|
||
<span style="float: right; color: #3830b9; margin-right: 8px"
|
||
>{{ this.$t('aiReview.state18') }} : {{ currentArticleData.ai_review['create_time'] }}</span
|
||
>
|
||
</p>
|
||
<p class="titleBox">
|
||
<span class="title" style="color: #fff; font-size: 16px">{{ $t('AI.AIAbstractInfo') }}</span>
|
||
</p>
|
||
<el-form label-width="240">
|
||
<el-form-item label="``" v-for="(v, i) in aiReview">
|
||
<span slot="label" class="title" :style="v.color ? `color:${v.color}` : ''">
|
||
{{ `${i + 1}. ${v.topic} : ` }}
|
||
</span>
|
||
<div style="" v-if="v.value!='hotspot'">
|
||
<div
|
||
style="color: #333; width: calc(100% - 180px); margin-left: 180px"
|
||
v-if="v.parameter && v.parameter.length > 0"
|
||
>
|
||
<div label="``" v-for="(item, index) in v.parameter">
|
||
<span class="title" style="" :style="item.color ? `color:${item.color}` : ''">
|
||
{{ `(${index + 1}) ${item.topic} : ` }}
|
||
</span>
|
||
<div style="">
|
||
<div style="color: #333">
|
||
<template v-if="item.isShowSign == 1">
|
||
【{{ currentArticleData.ai_review[item.value] }}】
|
||
</template>
|
||
<template v-else>
|
||
{{ currentArticleData.ai_review[item.value] }}
|
||
</template>
|
||
|
||
<div v-if="item.explanationValue">
|
||
<div>
|
||
<p
|
||
:class="{ 'short-content': !item.showFullContent }"
|
||
@click="toggleContent2(i, index)"
|
||
style="margin-top: 0; cursor: pointer; color: #888; line-height: 22px"
|
||
>
|
||
<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']
|
||
"
|
||
>
|
||
ISSN : {{ currentArticleData.ai_review['other_journal_issn'] }}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div style="color: #333" v-else>
|
||
<template v-if="v.isShowSign == 1"> 【{{ currentArticleData.ai_review[v.value] }}】 </template>
|
||
<template v-else>
|
||
{{ currentArticleData.ai_review[v.value] }}
|
||
</template>
|
||
</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>
|
||
</div>
|
||
</div>
|
||
<div style="" v-else>
|
||
<div
|
||
style="color: #333; width: calc(100% - 180px); margin-left: 180px"
|
||
v-if=" currentArticleData.ai_review[v.value] && currentArticleData.ai_review[v.value].length > 0"
|
||
>
|
||
<div label="``" v-for="(item, index) in currentArticleData.ai_review[v.value]">
|
||
<span class="title" style="" :style="item.color ? `color:${item.color}` : ''">
|
||
|
||
{{ `(${index + 1}) 领域 : ${item['领域']} ` }}
|
||
</span>
|
||
<div style="">
|
||
<div style="color: #333">
|
||
|
||
是否热点 : 【{{item['是否热点'] }}】
|
||
|
||
|
||
|
||
<div v-if="item['解释说明']">
|
||
<div>
|
||
<p
|
||
:class="{ 'short-content': !item.showFullContent }"
|
||
@click="toggleContent2(i, index)"
|
||
style="margin-top: 0; cursor: pointer; color: #888; line-height: 22px"
|
||
>
|
||
<span>{{ $t('aiReview.Explain') }} : </span>
|
||
{{ item['解释说明'] }}
|
||
</p>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div style="color: #333" v-else>
|
||
<template v-if="v.isShowSign == 1"> 【{{ currentArticleData.ai_review[v.value] }}】 </template>
|
||
<template v-else>
|
||
{{ currentArticleData.ai_review[v.value] }}
|
||
</template>
|
||
</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>
|
||
</div>
|
||
</div>
|
||
</el-form-item>
|
||
</el-form>
|
||
</div>
|
||
</div>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button type="" @click="isShowAI = false">Close</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import timetalk from './time_talk';
|
||
import reviewerDetail from '../../components/page/components/articleDetail/reviewerdetail.vue';
|
||
import FigureCopyright from '../../components/page/components/articleDetail/FigureCopyright.vue';
|
||
export default {
|
||
components: {
|
||
timetalk,
|
||
reviewerDetail,
|
||
FigureCopyright
|
||
},
|
||
data() {
|
||
return {
|
||
copyrightDialogVisible: false, // 控制弹窗开关
|
||
reviewerDetail: {},
|
||
corresList: [],
|
||
finalDecisionData: {},
|
||
FinalDecisionVisible: false,
|
||
reviewerVisible: false,
|
||
expanded: false,
|
||
corresVisible: false,
|
||
isShowAuthorInfo: false,
|
||
activeFinalComment: [],
|
||
isShowAI: false,
|
||
currentArticleData: {},
|
||
researchAreas: ['1'],
|
||
FileList: ['1'],
|
||
AIcontent: ['1'],
|
||
// AIcontent: '',
|
||
previewData: {},
|
||
baseUrl: this.Common.baseUrl,
|
||
mediaUrl: this.Common.mediaUrl,
|
||
now_year: 0,
|
||
items: '',
|
||
drawer: false,
|
||
loading: false,
|
||
loading1: false,
|
||
loading2: false,
|
||
loading3: false,
|
||
loading4: false,
|
||
editVisible: false,
|
||
editbox: false,
|
||
resubmitVisible: false,
|
||
repebox: false,
|
||
HEditVisible: false,
|
||
HIxForm: {
|
||
index: ''
|
||
},
|
||
coverLetterFileList: [],
|
||
picturesAndTablesFileList: [],
|
||
totalpageFileList: [],
|
||
supplementaryFileList: [],
|
||
fileL_articleCopyright: [],
|
||
newfilearticleCopyrightList: [],
|
||
manuscirptFileList: [],
|
||
responseFileList: [],
|
||
authorList_name: '',
|
||
activeNames: ['2'],
|
||
editform: {
|
||
editname: localStorage.getItem('U_name'),
|
||
articleId: this.$route.query.id,
|
||
state: 0,
|
||
trsjournal: 0,
|
||
editormsg: '',
|
||
proposal_content: ''
|
||
},
|
||
remark: {
|
||
articleId: this.$route.query.id,
|
||
content: ''
|
||
},
|
||
repeform: {
|
||
articleId: this.$route.query.id,
|
||
repefen: '',
|
||
zipurl: ''
|
||
},
|
||
journals: [],
|
||
items: [
|
||
{
|
||
state: 0,
|
||
title: this.$t('artstate.state0'),
|
||
disabled: true
|
||
},
|
||
{
|
||
state: 1,
|
||
title: this.$t('artstate.state1')
|
||
},
|
||
{
|
||
state: 2,
|
||
title: this.$t('artstate.state2')
|
||
},
|
||
{
|
||
state: 3,
|
||
title: this.$t('artstate.state3')
|
||
},
|
||
{
|
||
state: 4,
|
||
title: this.$t('artstate.state4')
|
||
},
|
||
{
|
||
state: 8,
|
||
title: this.$t('artstate.state8')
|
||
},
|
||
{
|
||
state: 6,
|
||
title: this.$t('artstate.state6')
|
||
}
|
||
// {
|
||
// state: 5,
|
||
// title: this.$t('artstate.state5')
|
||
// }
|
||
],
|
||
form: {
|
||
articleId: this.$route.query.id,
|
||
journal: '',
|
||
journalname: '',
|
||
username: '',
|
||
title: '',
|
||
accept_sn: '',
|
||
abstrart: '',
|
||
keyWords: '',
|
||
fund: '',
|
||
type: '',
|
||
major: '',
|
||
approval: false,
|
||
approval_file: '',
|
||
approval_content: '',
|
||
is_figure_copyright: '',
|
||
repetition: '',
|
||
manuscirpt: '',
|
||
remarks: '',
|
||
state: '',
|
||
ctime: '',
|
||
is_draft: '',
|
||
authorList: [],
|
||
transList: []
|
||
},
|
||
msgs: [],
|
||
msgform: {
|
||
username: localStorage.getItem('U_name'),
|
||
article_id: this.$route.query.id,
|
||
user_id: '',
|
||
ad_content: ''
|
||
},
|
||
talkMsgs: [],
|
||
majorsList: [],
|
||
opname: '', // 稿件详细类型
|
||
editorJournalList: [], // 编辑期刊列表
|
||
resubmitJournal: {
|
||
journalId: null, // 转投期刊的id
|
||
manuscriptId: null // article id
|
||
},
|
||
Resubmitrules: {
|
||
journalId: [{ required: true, message: 'Please select the name of the journal to be forwarded to' }]
|
||
},
|
||
aiReview: [
|
||
//1
|
||
{
|
||
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
|
||
}
|
||
]
|
||
},
|
||
{
|
||
topic: this.$t('aiReview.state8'),
|
||
value: 'ethics_assessment',
|
||
explanationValue: '',
|
||
isShowSign: 0,
|
||
parameter: [
|
||
{
|
||
topic: this.$t('aiReview.state8'),
|
||
value: 'ethics_assessment',
|
||
explanationValue: 'ethics_explanation',
|
||
isShowSign: 1
|
||
},
|
||
{
|
||
topic: this.$t('aiReview.state20'),
|
||
value: 'registration_assessment',
|
||
explanationValue: '',
|
||
isShowSign: 1
|
||
}
|
||
]
|
||
}, //6
|
||
{
|
||
topic: this.$t('aiReview.state10'),
|
||
value: 'academic_assessment',
|
||
explanationValue: 'academic_explanation',
|
||
isShowSign: 1
|
||
}, //3
|
||
{
|
||
topic: this.$t('aiReview.state4'),
|
||
value: 'contradiction_assessment',
|
||
explanationValue: 'contradiction_explanation',
|
||
isShowSign: 1
|
||
},
|
||
//8
|
||
{
|
||
topic: this.$t('aiReview.state14'),
|
||
value: 'fund_number',
|
||
explanationValue: '',
|
||
isShowSign: 0
|
||
},
|
||
//2
|
||
{
|
||
topic: this.$t('aiReview.state2'),
|
||
value: 'attribute_assessment',
|
||
explanationValue: 'attribute_explanation',
|
||
isShowSign: 1
|
||
},
|
||
{
|
||
topic: this.$t('aiReview.state15'),
|
||
value: 'hotspot',
|
||
explanationValue: '',
|
||
isShowSign: 0
|
||
},
|
||
//12
|
||
{
|
||
topic: this.$t('aiReview.state19'),
|
||
value: 'create_time',
|
||
explanationValue: '',
|
||
color: 'rgb(0, 112, 192)',
|
||
isShowSign: 0,
|
||
parameter: [
|
||
{
|
||
topic: this.$t('aiReview.state191'),
|
||
value: 'references_past_three',
|
||
explanationValue: '',
|
||
color: 'rgb(0, 112, 192)',
|
||
isShowSign: 0
|
||
},
|
||
{
|
||
topic: this.$t('aiReview.state192'),
|
||
value: 'references_past_five',
|
||
explanationValue: '',
|
||
color: 'rgb(0, 112, 192)',
|
||
isShowSign: 0
|
||
}
|
||
// {
|
||
// topic: this.$t('aiReview.state193'),
|
||
// value: 'references_ratio_JCR1',
|
||
// explanationValue: '',
|
||
// color: 'rgb(0, 112, 192)',
|
||
// isShowSign: 0
|
||
// },
|
||
// {
|
||
// topic: this.$t('aiReview.state194'),
|
||
// value: 'references_ratio_JCR2',
|
||
// explanationValue: '',
|
||
// color: 'rgb(0, 112, 192)',
|
||
// isShowSign: 0
|
||
// }
|
||
]
|
||
}
|
||
// {
|
||
// topic: this.$t('aiReview.state16'),
|
||
// value: 'submit_direction',
|
||
// explanationValue: '',
|
||
// isShowSign: 0
|
||
// },
|
||
|
||
//10
|
||
|
||
//4
|
||
// {
|
||
// topic: this.$t('aiReview.state6'),
|
||
// value: 'unreasonable_assessment',
|
||
// explanationValue: 'unreasonable_explanation',
|
||
// isShowSign: 1
|
||
// },
|
||
|
||
//9
|
||
|
||
//11
|
||
// {
|
||
// topic: this.$t('aiReview.state17'),
|
||
// value: 'overall_evaluation',
|
||
// explanationValue: ''
|
||
// },
|
||
|
||
//5
|
||
|
||
//7
|
||
// {
|
||
// topic: this.$t('aiReview.state12'),
|
||
// value: 'conclusion_assessment',
|
||
// explanationValue: 'conclusion_explanation',
|
||
// isShowSign: 1
|
||
// },
|
||
//12
|
||
|
||
//13
|
||
// {
|
||
// topic: this.$t('aiReview.state21'),
|
||
// value: 'cite_rate',
|
||
// explanationValue: '',
|
||
// isShowSign: 0
|
||
// }
|
||
|
||
// {
|
||
// topic: this.$t('aiReview.state18'),
|
||
// value: 'create_time',
|
||
// explanationValue: ''
|
||
// }
|
||
],
|
||
finalList: [],
|
||
reviewList: [],
|
||
underReview: ['1'],
|
||
finalDecision: ['1'],
|
||
is_figure_copyright: '',
|
||
figurecopyright_file: ''
|
||
};
|
||
},
|
||
async created() {
|
||
await this.initarticle();
|
||
await this.getAi();
|
||
this.initFileList();
|
||
this.getWordimgList();
|
||
this.getWordTablesList();
|
||
this.getFinalList();
|
||
},
|
||
computed: {
|
||
// coverLetterUrl: function() {
|
||
// return this.baseUrl + this.form.coverLetter;
|
||
// },
|
||
// picturesAndTablesUrl: function() {
|
||
// return this.baseUrl + this.form.picturesAndTables;
|
||
// },
|
||
manuscirptUrl: function () {
|
||
return this.baseUrl + this.form.manuscirpt;
|
||
},
|
||
//图片版权
|
||
upload_articleCopyright: function () {
|
||
return this.baseUrl + 'api/Article/up_file/type/figurecopyright';
|
||
},
|
||
upload_coverLetter: function () {
|
||
return this.baseUrl + 'api/Article/up_file/type/coverLetter';
|
||
},
|
||
upload_picturesAndTables: function () {
|
||
return this.baseUrl + 'api/Article/up_file/type/picturesAndTables';
|
||
},
|
||
upload_manuscirpt: function () {
|
||
return this.baseUrl + 'api/Article/up_file/type/manuscirpt';
|
||
},
|
||
upload_zip: function () {
|
||
return this.baseUrl + 'api/Article/up_file/type/repezip';
|
||
},
|
||
journal_me: function () {
|
||
var frag = this.form.journalname;
|
||
if (this.form.special_num > 0) {
|
||
frag += '(Special Issues)';
|
||
}
|
||
return frag;
|
||
},
|
||
articleState: function () {
|
||
let str = '';
|
||
|
||
|
||
if(this.form.is_draft==1&&this.form.state==3){
|
||
str = this.$t('artstate.stateDraft');
|
||
return str;
|
||
}else{
|
||
switch (this.form.state) {
|
||
case 0:
|
||
str = this.$t('artstate.state0');
|
||
break;
|
||
|
||
case 1:
|
||
str = this.$t('artstate.state1');
|
||
break;
|
||
case 2:
|
||
str = this.$t('artstate.state2');
|
||
break;
|
||
case 3:
|
||
str = this.$t('artstate.state3');
|
||
break;
|
||
case 4:
|
||
str = this.$t('artstate.state4');
|
||
break;
|
||
case 5:
|
||
str = this.$t('artstate.state5');
|
||
break;
|
||
case 8:
|
||
str = this.$t('artstate.state8');
|
||
break;
|
||
case 6:
|
||
str = this.$t('artstate.state6');
|
||
break;
|
||
}
|
||
return str;
|
||
}
|
||
|
||
}
|
||
},
|
||
methods: {
|
||
reOpenDialog() {
|
||
// 强制先关闭,确保状态发生位移
|
||
this.copyrightDialogVisible = false;
|
||
this.$nextTick(() => {
|
||
this.copyrightDialogVisible = true;
|
||
});
|
||
},
|
||
// 下载文件
|
||
dowloadFile(file) {
|
||
let filePath = '/public/' + file.url;
|
||
let fileName = file.name;
|
||
|
||
// 获取heads中的filename文件名
|
||
let downloadElement = document.createElement('a');
|
||
// 创建下载的链接
|
||
downloadElement.href = filePath; // 下载后文件名
|
||
downloadElement.download = fileName;
|
||
downloadElement.target = '_blank';
|
||
document.body.appendChild(downloadElement);
|
||
// 点击下载
|
||
downloadElement.click();
|
||
// 下载完成移除元素
|
||
document.body.removeChild(downloadElement);
|
||
},
|
||
removefilearticleCopyright(file, fileList) {
|
||
this.figurecopyright_file = '';
|
||
this.newfilearticleCopyrightList = [];
|
||
},
|
||
//图片版权
|
||
upSuccess_articleCopyright(res, file) {
|
||
this.initFileList();
|
||
console.log(this.form);
|
||
},
|
||
crateRevision(item) {
|
||
// 二次询问
|
||
this.$confirm('Do you want to send a review invitation?', 'Tip', {
|
||
type: 'warning'
|
||
})
|
||
.then(() => {
|
||
this.$api
|
||
.post('api/Reviewer/startRepeatReviewer', {
|
||
art_rev_id: item.art_rev_id
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.$message.success('A review invitation was successfully sent!');
|
||
this.$nextTick(() => {
|
||
setTimeout(() => {
|
||
this.getFinalList();
|
||
this.$forceUpdate();
|
||
}, 1000);
|
||
});
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
console.log(err);
|
||
});
|
||
})
|
||
.catch(() => {});
|
||
},
|
||
handleClickFinal(data) {
|
||
console.log("🚀 ~ handleClickFinal ~ data:", data);
|
||
|
||
const loading = this.$loading({
|
||
lock: true,
|
||
text: 'Loading',
|
||
spinner: 'el-icon-loading',
|
||
background: 'rgba(0, 0, 0, 0.7)',
|
||
zIndex: 9999 // 设置一个足够高的层级
|
||
});
|
||
this.$api
|
||
.post('api/Finalreview/getById', {
|
||
record_id: data.id,
|
||
reviewer_id:data.reviewer_id,
|
||
})
|
||
.then((res) => {
|
||
if (res.status == 1) {
|
||
loading.close()
|
||
this.finalDecisionData = { ...res.data,reviewer_company : res.data.company,reviewer_email:res.data.email}
|
||
|
||
this.FinalDecisionVisible = true;
|
||
|
||
} else {
|
||
loading.close()
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
loading.close()
|
||
console.log(err);
|
||
});
|
||
|
||
},
|
||
handleClickRemark() {
|
||
this.expanded = !this.expanded;
|
||
this.$forceUpdate();
|
||
},
|
||
articleReviewer(row) {
|
||
this.$router.push({
|
||
path: 'articleReviewer',
|
||
query: {
|
||
id: this.form.articleId
|
||
}
|
||
});
|
||
},
|
||
articleEditorialBoard(row) {
|
||
this.$router.push({
|
||
path: 'articleEditorialBoard',
|
||
query: {
|
||
id: this.form.articleId
|
||
}
|
||
});
|
||
},
|
||
//格式化状态输出
|
||
stateFormat(e) {
|
||
let str = '';
|
||
switch (e) {
|
||
case 0:
|
||
str = this.$t('artstate.state0');
|
||
break;
|
||
case 1:
|
||
str = this.$t('artstate.state1');
|
||
break;
|
||
case 2:
|
||
str = this.$t('artstate.state2');
|
||
break;
|
||
case 3:
|
||
str = this.$t('artstate.state3');
|
||
break;
|
||
case 4:
|
||
str = this.$t('artstate.state4');
|
||
break;
|
||
case 5:
|
||
str = this.$t('artstate.state5');
|
||
break;
|
||
case 6:
|
||
str = this.$t('artstate.state6');
|
||
break;
|
||
case 8:
|
||
str = this.$t('artstate.state8');
|
||
break;
|
||
default:
|
||
str = 'error!!';
|
||
}
|
||
return str;
|
||
},
|
||
// 稿件信息展示
|
||
showdetaileditor(row) {
|
||
let stat_num = 'articleDetailEditor';
|
||
// 生成目标路由的完整信息(包含 URL)
|
||
const routeData = this.$router.resolve({
|
||
path: stat_num,
|
||
query: { id: row.article_id } // 携带的参数不变
|
||
});
|
||
// 新窗口打开路由页面
|
||
window.open(routeData.href, '_blank');
|
||
},
|
||
// 相关文章
|
||
corrSpe(value) {
|
||
console.log('value at line 1545:', value);
|
||
this.$api
|
||
.post('api/Article/getArticlesByArticle', {
|
||
article_id: value.articleId
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.corresList = res.data;
|
||
this.corresList.article = value;
|
||
|
||
this.corresVisible = true;
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
});
|
||
},
|
||
getAllCompany(company) {
|
||
let str = '';
|
||
var list = company.split('/');
|
||
|
||
for (let i = 0; i < list.length; i++) {
|
||
str += `${i + 1}. ` + list[i] + '<br/>';
|
||
}
|
||
return str;
|
||
},
|
||
// 算平均分
|
||
avegeCount(arry) {
|
||
// 1. 计算有有效评分的数量
|
||
var ratedLength = arry.map((item) => item.rated).filter((rated) => rated && rated > 0).length;
|
||
|
||
let all = 0;
|
||
// 2. 累加总分
|
||
for (let i = 0; i < arry.length; i++) {
|
||
all += Number(arry[i].rated || 0); // 加上 || 0 防止出现 undefined 导致计算失败
|
||
}
|
||
|
||
// 3. 核心判断逻辑
|
||
// 如果没有评分的人(ratedLength 为 0),或者总分就是 0,直接返回 "-"
|
||
// 否则计算平均分并保留一位小数
|
||
let str = ratedLength > 0 && all > 0 ? (all / ratedLength).toFixed(1) : '-';
|
||
|
||
return str;
|
||
},
|
||
|
||
// 算终审分
|
||
finalCount(arry) {
|
||
var ratedLength = arry.map((item) => item.rated).filter((rated) => rated && rated > 0).length;
|
||
let str = 0;
|
||
let all = 0;
|
||
let sgr = 0;
|
||
for (let i = 0; i < arry.length; i++) {
|
||
all += Number(arry[i].rated);
|
||
}
|
||
str = (all / ratedLength).toFixed(1);
|
||
sgr = ((Number(str) + Number(this.form.scoring)) / 2).toFixed(1);
|
||
return sgr;
|
||
},
|
||
editScopus(item) {
|
||
console.log('item at line 1442:', 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();
|
||
},
|
||
toggleContent2(i, index) {
|
||
this.aiReview[i].parameter[index].showFullContent = !this.aiReview[i].parameter[index].showFullContent;
|
||
this.$forceUpdate();
|
||
},
|
||
maxRepeatReviewCount() {
|
||
if (!this.reviewList || !Array.isArray(this.reviewList)) return null; // 边界处理:无数据返回null
|
||
|
||
// 遍历所有评审者,找到repeat数组长度最大的那条数据
|
||
const maxItem = this.reviewList.reduce((maxItem, currentItem) => {
|
||
// 计算当前项的repeat长度,非数组则视为0
|
||
const currentLen = Array.isArray(currentItem.repeat) ? currentItem.repeat.length : 0;
|
||
// 计算当前最大项的repeat长度,非数组则视为0
|
||
const maxLen = Array.isArray(maxItem.repeat) ? maxItem.repeat.length : 0;
|
||
|
||
// 如果当前项长度更大,则更新最大项
|
||
return currentLen > maxLen ? currentItem : maxItem;
|
||
}, {}); // 初始值设为一个空对象
|
||
// console.log('maxItem at line 2142:', maxItem.repeat.length)
|
||
return maxItem && maxItem.repeat ? maxItem.repeat.length : 0;
|
||
},
|
||
handleClick(item, type, repeatItem) {
|
||
this.reviewerDetail = item;
|
||
this.reviewerVisible = true;
|
||
this.$nextTick(() => {
|
||
this.$refs.reviewerDetail.init(item.art_rev_id, type, repeatItem);
|
||
});
|
||
},
|
||
|
||
goReviewerDetail(id) {
|
||
console.log('id at line 1112:', id);
|
||
this.$router.push({
|
||
path: 'articleReviewerDetail',
|
||
query: {
|
||
id: id
|
||
}
|
||
});
|
||
},
|
||
getFinalList() {
|
||
this.$api
|
||
|
||
.post('api/Finalreview/getArticleFinalReview', {
|
||
article_id: this.editform.articleId
|
||
})
|
||
.then(async (res) => {
|
||
if (res.status == 1) {
|
||
this.finalList = [...res.data.final_review];
|
||
this.reviewList = res.data.review;
|
||
}
|
||
})
|
||
.catch((err) => {});
|
||
},
|
||
|
||
async creatAI() {
|
||
const loading = this.$loading({
|
||
lock: true,
|
||
text: 'loading...',
|
||
spinner: 'el-icon-loading',
|
||
background: 'rgba(0, 0, 0, 0.7)'
|
||
});
|
||
await this.$api
|
||
// api/Article/addArticle
|
||
.post('api/Aireview/review', {
|
||
article_id: this.editform.articleId
|
||
})
|
||
.then(async (res) => {
|
||
if (res.status == 1) {
|
||
loading.close();
|
||
this.$message.success(res.msg);
|
||
// await this.getAi();
|
||
// await this.openAI();
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
loading.close();
|
||
this.$message.error('Please click to view again in 1 minute in AI analysis');
|
||
});
|
||
},
|
||
openAI(data) {
|
||
this.isShowAI = true;
|
||
},
|
||
async getAi() {
|
||
await this.$api
|
||
// api/Article/addArticle
|
||
.post('api/Aireview/get', {
|
||
article_id: this.editform.articleId
|
||
// article_id: 6332
|
||
})
|
||
.then((res) => {
|
||
this.currentArticleData = {
|
||
abstrart: this.form.abstrart,
|
||
keywords: this.form.keywords,
|
||
ai_review: ''
|
||
};
|
||
if (res.data) {
|
||
this.currentArticleData.ai_review = {...res.data, hotspot: res.data.hotspot?JSON.parse(res.data.hotspot):''};
|
||
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;
|
||
|
||
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
// this.$message.error('AI analysis failed');
|
||
});
|
||
},
|
||
async getWordimgList() {
|
||
var that = this;
|
||
await this.$api
|
||
.post('api/Article/getArticleImages', {
|
||
article_id: this.$route.query.id
|
||
})
|
||
.then(async (res) => {
|
||
this.wordimgList = res.data.list;
|
||
if (this.wordimgList.length > 0) {
|
||
await this.$commonJS.getWordImagesThumbnails(this.wordimgList, function (html) {
|
||
that.imagesHtml = html;
|
||
});
|
||
}
|
||
});
|
||
},
|
||
getWordTablesList() {
|
||
this.$api
|
||
.post('api/Article/getArticleTable', {
|
||
article_id: this.$route.query.id
|
||
})
|
||
.then((res) => {
|
||
var that = this;
|
||
that.tables = res.data.list && res.data.list.length > 0 ? JSON.parse(res.data.list[0].table) : [];
|
||
if (that.tables.length > 0) {
|
||
that.$commonJS.getWordTablesThumbnails(that.tables, function (html) {
|
||
that.tablesHtml = html;
|
||
});
|
||
}
|
||
});
|
||
},
|
||
openDrawer(data, url) {
|
||
console.log('url at line 799:', data, url);
|
||
this.previewData = {
|
||
...data,
|
||
previewUrl: url,
|
||
drawerTitle: 'Uploader : ' + data.username + ' ' + this.formatDate(data.ctime)
|
||
};
|
||
this.drawer = true;
|
||
},
|
||
handleClose() {
|
||
this.drawer = false;
|
||
},
|
||
talksave(val) {
|
||
this.msgform.ad_content = '';
|
||
this.getTalkList();
|
||
},
|
||
formatDate(timestamp) {
|
||
var date = new Date(timestamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
|
||
var Y = date.getFullYear() + '-';
|
||
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
|
||
var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
|
||
var h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
|
||
var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
|
||
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
|
||
return Y + M + D;
|
||
},
|
||
//弹出编辑框
|
||
testvis() {
|
||
this.editform.state = this.form.state;
|
||
this.editVisible = true;
|
||
},
|
||
testedit() {
|
||
this.editbox = true;
|
||
},
|
||
changeRepe() {
|
||
this.repebox = true;
|
||
},
|
||
mystate(mystate) {
|
||
let str = '';
|
||
switch (mystate) {
|
||
case 0:
|
||
str = 'With reviewer';
|
||
break;
|
||
case 1:
|
||
str = 'Major';
|
||
break;
|
||
case 2:
|
||
str = 'Reject';
|
||
break;
|
||
case 3:
|
||
// str = 'Accept';
|
||
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) {
|
||
case 0:
|
||
str = this.$t('artstate.state0');
|
||
break;
|
||
case 1:
|
||
str = this.$t('artstate.state1');
|
||
break;
|
||
case 2:
|
||
str = this.$t('artstate.state2');
|
||
break;
|
||
case 3:
|
||
str = this.$t('artstate.state3');
|
||
break;
|
||
case 4:
|
||
str = this.$t('artstate.state4');
|
||
break;
|
||
case 5:
|
||
str = this.$t('artstate.state5');
|
||
break;
|
||
case 6:
|
||
str = this.$t('artstate.state6');
|
||
break;
|
||
}
|
||
return str;
|
||
},
|
||
async editArticleStatus() {
|
||
this.loading1 = true;
|
||
|
||
await this.$api
|
||
.post('api/Article/editArticleEditor', this.editform)
|
||
.then((res) => {
|
||
this.loading1 = false;
|
||
if (res.code == 1) {
|
||
this.$message.error(res.msg);
|
||
} else {
|
||
this.$message.success('success');
|
||
this.editVisible = false;
|
||
this.initarticle();
|
||
|
||
this.initFileList();
|
||
this.getWordimgList();
|
||
this.getWordTablesList();
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
console.log(err);
|
||
});
|
||
},
|
||
async checkArticleStatus() {
|
||
var status;
|
||
var msg = '';
|
||
await this.$api
|
||
.post('api/Article/checkArticleStart', { article_id: this.editform.articleId })
|
||
.then((res) => {
|
||
if (res.code == 1) {
|
||
status = 1;
|
||
|
||
msg = res.msg;
|
||
} else {
|
||
status = 0;
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
status = 'err';
|
||
// this.$message.err()
|
||
console.log(err);
|
||
});
|
||
|
||
return { status: status, msg: msg };
|
||
},
|
||
handleDeleteMajor(v) {
|
||
console.log('v at line 925:', v);
|
||
this.$confirm('Are you sure you want to delete this Field ?', 'Tip', {
|
||
type: 'warning'
|
||
})
|
||
.then(() => {
|
||
this.$api
|
||
.post('api/Major/delMajorByArticleIdForEditor', {
|
||
mta_id: v.mta_id
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.initMajor();
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
})
|
||
.catch(() => {});
|
||
},
|
||
//修改文章状态
|
||
async saveEdit() {
|
||
if (this.form.state == 0) {
|
||
if (this.form.state != this.editform.state) {
|
||
var data = await this.checkArticleStatus();
|
||
if (data.status == 1) {
|
||
await this.$confirm(data.msg, this.$t('journalStatus.Prompt'), {
|
||
confirmButtonText: this.$t('journalStatus.Continue'),
|
||
cancelButtonText: this.$t('journalStatus.Cancel'),
|
||
type: 'warning'
|
||
})
|
||
.then(async () => {
|
||
this.editVisible = false;
|
||
await this.editArticleStatus();
|
||
})
|
||
.catch(() => {
|
||
this.editVisible = false;
|
||
});
|
||
} else if (data.status == 0) {
|
||
this.editArticleStatus();
|
||
}
|
||
} else {
|
||
this.editVisible = false;
|
||
}
|
||
} else {
|
||
this.editArticleStatus();
|
||
}
|
||
},
|
||
saveRemark() {
|
||
const load = this.$loading({
|
||
lock: true,
|
||
text: 'Loading...',
|
||
spinner: 'el-icon-loading',
|
||
background: 'rgba(0, 0, 0, 0.7)'
|
||
});
|
||
this.$api.post('api/Article/editArticleRemark', this.remark).then((res) => {
|
||
load.close();
|
||
|
||
this.editbox = false;
|
||
this.$message.success('success');
|
||
this.initarticle();
|
||
// this.$router.go(0);
|
||
});
|
||
},
|
||
saveRepe() {
|
||
if (this.repeform.zipurl == '') {
|
||
this.$message.error('please upload zip');
|
||
return false;
|
||
}
|
||
const load = this.$loading({
|
||
lock: true,
|
||
text: 'Loading...',
|
||
spinner: 'el-icon-loading',
|
||
background: 'rgba(0, 0, 0, 0.7)'
|
||
});
|
||
this.$api.post('api/Article/changeRepetition', this.repeform).then((res) => {
|
||
load.close();
|
||
this.$message.success('success');
|
||
this.initarticle();
|
||
|
||
this.initFileList();
|
||
this.getWordimgList();
|
||
this.getWordTablesList();
|
||
});
|
||
},
|
||
initMajor() {
|
||
this.$api
|
||
.post('api/Major/getMajorByArticleId', {
|
||
article_id: this.editform.articleId
|
||
})
|
||
.then((res) => {
|
||
this.majorsList = res.data.majors;
|
||
});
|
||
},
|
||
//初始化期刊信息
|
||
initarticle() {
|
||
this.now_year = new Date().getFullYear();
|
||
this.$api
|
||
.post('api/Article/getArticleDetail', {
|
||
articleId: this.editform.articleId,
|
||
human: 'editor'
|
||
})
|
||
|
||
.then((res) => {
|
||
this.$api.post('api/Workbench/updateArticleState', {
|
||
article_id: this.editform.articleId,
|
||
type: '4,5,6',
|
||
account: localStorage.getItem('U_name')
|
||
});
|
||
|
||
const dynamicTimestamp = res.article.ctime;
|
||
const dynamicDate = new Date(dynamicTimestamp * 1000);
|
||
const targetDate = new Date(2025, 10, 3);
|
||
dynamicDate.setHours(0, 0, 0, 0);
|
||
targetDate.setHours(0, 0, 0, 0);
|
||
// 2025-11-03 ---上线了自动解析word 识别作者功能 去掉了 address和department字段
|
||
const isDynamicDateAfterTarget = dynamicDate > targetDate;
|
||
if (!isDynamicDateAfterTarget) {
|
||
// 判断日期是否小于等于 2025-11-03
|
||
this.isShowAuthorInfo = true;
|
||
} else {
|
||
this.isShowAuthorInfo = false;
|
||
}
|
||
|
||
this.initMajor();
|
||
this.form.username = res.article.account;
|
||
this.form.user_email = res.article.user_email;
|
||
this.form.is_figure_copyright = res.article.is_figure_copyright;
|
||
|
||
this.is_figure_copyright =
|
||
res.article.is_figure_copyright == 1 || res.article.is_figure_copyright == 2
|
||
? res.article.is_figure_copyright.toString()
|
||
: '';
|
||
this.form.title = res.article.title;
|
||
this.form.journal = res.article.journal_id;
|
||
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;
|
||
this.form.special_num = res.article.special_num;
|
||
this.form.special_title = res.article.special_title;
|
||
this.form.major = res.major;
|
||
this.form.approval = res.article.approval == 1 ? true : false;
|
||
this.form.approval_file = res.article.approval_file;
|
||
this.form.approval_content = res.article.approval_content;
|
||
this.form.repetition = res.article.repetition;
|
||
this.form.remarks = res.article.remarks;
|
||
this.form.repeurl = res.article.repeurl;
|
||
this.repeform.repefen = res.article.repetition;
|
||
this.remark.content = res.article.remarks;
|
||
this.form.state = res.article.state;
|
||
this.form.ctime = res.article.ctime;
|
||
this.form.is_use_ai = res.article.is_use_ai;
|
||
this.form.use_ai_explain = res.article.use_ai_explain;
|
||
this.form.transList = res.transfer;
|
||
this.form.is_draft = res.article.is_draft;
|
||
this.msgs = res.msg;
|
||
var alist = res.authors;
|
||
let alist_name = [];
|
||
for (var i in alist) {
|
||
let index_h = 0;
|
||
let index_c = '#000';
|
||
this.form.authorList.push({
|
||
art_aut_id: alist[i].art_aut_id,
|
||
firstname: alist[i].firstname,
|
||
lastname: alist[i].lastname,
|
||
orcid: alist[i].orcid,
|
||
company: alist[i].company,
|
||
department: alist[i].department,
|
||
title: alist[i].author_title,
|
||
country: alist[i].country,
|
||
email: alist[i].email,
|
||
address: alist[i].address,
|
||
scopus_index: alist[i].scopus_index,
|
||
user_id: alist[i].user_id,
|
||
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,
|
||
// indexs_color: index_c,
|
||
});
|
||
// if (alist[i].is_report) {
|
||
// this.$api
|
||
// .post('api/User/getIndexByEmail', {
|
||
// email: alist[i].email
|
||
// })
|
||
// .then(res => {
|
||
// if (res.data.indexs.length != 0) {
|
||
// if (res.data.indexs[0].year == this.now_year) {
|
||
// index_h = res.data.indexs[0].h_index
|
||
// if (index_h < 5) {
|
||
// index_c = "#cb160a"
|
||
// } else if (index_h < 10) {
|
||
// index_c = "#cbb504"
|
||
// } else {
|
||
// index_c = "#0cbc15"
|
||
// }
|
||
// this.form.authorList[i].indexs_show = index_h
|
||
// this.form.authorList[i].indexs_color = index_c
|
||
// }
|
||
// }
|
||
// })
|
||
// .catch(err => {
|
||
// console.log(err);
|
||
// });
|
||
// }
|
||
if (i == alist.length - 1) {
|
||
alist_name.push(alist[i].firstname + ' ' + alist[i].lastname);
|
||
} else {
|
||
alist_name.push(alist[i].firstname + ' ' + alist[i].lastname + ' , ');
|
||
}
|
||
}
|
||
this.authorList_name = 'Author : ' + alist_name.join('');
|
||
this.msgform.user_id = res.article.user_id;
|
||
|
||
this.$api
|
||
.post('api/Article/getJournalsByMajor', {
|
||
major_id: res.article.major_id
|
||
})
|
||
.then((res) => {
|
||
this.journals = res.data.journals;
|
||
});
|
||
})
|
||
.catch((err) => {
|
||
console.log(err);
|
||
});
|
||
|
||
// 获取作者发给审稿人邮件列表
|
||
this.$api
|
||
.post('api/Article/getArticleResponseFiles', {
|
||
article_id: this.editform.articleId
|
||
})
|
||
.then((res) => {
|
||
this.responseFileList = res.data.files;
|
||
})
|
||
.catch((err) => {
|
||
console.log(err);
|
||
});
|
||
|
||
// 留言板列表
|
||
this.$api
|
||
.post('api/Article/getArticleDialogs', {
|
||
article_id: this.$route.query.id
|
||
})
|
||
.then((res) => {
|
||
this.talkMsgs = res.data.dialogs;
|
||
})
|
||
.catch((err) => {
|
||
console.log(err);
|
||
});
|
||
},
|
||
|
||
// 获取留言列表
|
||
getTalkList() {
|
||
this.$api
|
||
.post('api/Article/getArticleDialogs', {
|
||
article_id: this.$route.query.id
|
||
})
|
||
.then((res) => {
|
||
this.talkMsgs = res.data.dialogs;
|
||
})
|
||
.catch((err) => {
|
||
console.log(err);
|
||
});
|
||
},
|
||
|
||
// H指数修改
|
||
HIndexEdit(row) {
|
||
this.HEditVisible = true;
|
||
this.HIxForm.email = row.email;
|
||
this.HIxForm.realname = row.firstname + row.lastname;
|
||
this.HIxForm.year = this.now_year;
|
||
if (row.indexs_show != 0) {
|
||
this.HIxForm.index = row.indexs_show;
|
||
} else {
|
||
this.HIxForm.index = '';
|
||
}
|
||
},
|
||
// 保存index
|
||
saveHIx() {
|
||
this.$api
|
||
.post('api/User/editIndexByEmail', this.HIxForm)
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.$message.success('Edit H Index succeeded');
|
||
this.HEditVisible = false;
|
||
this.form.authorList = [];
|
||
this.initarticle();
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
},
|
||
|
||
//初始化filelist
|
||
initFileList() {
|
||
this.$api
|
||
.post('api/Article/getFilelistByArticleID', {
|
||
articleId: this.form.articleId
|
||
})
|
||
.then((res) => {
|
||
this.coverLetterFileList = res.coverLetter;
|
||
this.picturesAndTablesFileList = res.picturesAndTables;
|
||
this.manuscirptFileList = res.manuscirpt;
|
||
this.totalpageFileList = res.totalpage;
|
||
this.supplementaryFileList = res.supplementary;
|
||
this.fileL_articleCopyright = res.figurecopyright ? res.figurecopyright : [];
|
||
if (this.fileL_articleCopyright.length > 0) {
|
||
var figurecopyright_file = fileL_articleCopyright[this.fileL_articleCopyright.length - 1];
|
||
this.figurecopyright_file = figurecopyright_file.file_url;
|
||
this.newfilearticleCopyrightList = [
|
||
{
|
||
name: 'Figure Copyright Declaration File',
|
||
url: this.figurecopyright_file
|
||
}
|
||
];
|
||
this.$forceUpdate();
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
console.log(err);
|
||
});
|
||
},
|
||
uperr_coverLetter(err) {
|
||
this.$message.error('upload error');
|
||
},
|
||
beforeupload() {},
|
||
filedateformate(row, column, cellValue, index) {
|
||
return this.formatDate(cellValue);
|
||
},
|
||
// upSuccess_coverLetter(res, file) {
|
||
// if (res.code == 0) {
|
||
// this.form.coverLetter = 'coverLetter/' + res.upurl;
|
||
// } else {
|
||
// this.$message.error('service error:' + res.msg);
|
||
// }
|
||
// },
|
||
// upSuccess_picturesAndTables(res, file) {
|
||
// if (res.code == 0) {
|
||
// this.form.picturesAndTables = 'picturesAndTables/' + res.upurl;
|
||
// } else {
|
||
// this.$message.error('service error:' + res.msg);
|
||
// }
|
||
// },
|
||
upSuccess_manuscirpt(res, file) {
|
||
if (res.code == 0) {
|
||
this.form.manuscirpt = 'manuscirpt/' + res.upurl;
|
||
} else {
|
||
this.$message.error('service error:' + res.msg);
|
||
}
|
||
},
|
||
upSuccess_repezip(res, file) {
|
||
if (res.code == 0) {
|
||
this.repeform.zipurl = 'repezip/' + res.upurl;
|
||
}
|
||
},
|
||
//超出传送文件个数限制
|
||
alertlimit() {
|
||
this.$message.error('The maximum number of uploaded files has been exceeded');
|
||
},
|
||
getlinkurl(row) {
|
||
return this.mediaUrl + row.file_url;
|
||
},
|
||
//检验上传文件的格式
|
||
beforeupload_manuscirpt(file) {
|
||
let flieArr = file.name.split('.');
|
||
let fileSuffix = flieArr[flieArr.length - 1];
|
||
if (fileSuffix != 'docx') {
|
||
this.$message.error('Only word and compressed files can be uploaded(.docx)');
|
||
return false;
|
||
}
|
||
// const ismau =
|
||
// file.type === 'application/msword' ||
|
||
// file.type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'||
|
||
// file.type === 'application/x-zip-compressed' ||
|
||
// file.name.split(".")[1] === 'rar';
|
||
// if (!ismau) {
|
||
// this.$message.error('Only word and compressed files(.doc,.docx,.rar,.zip)');
|
||
// }
|
||
// return ismau;
|
||
},
|
||
//清除文件时的事件
|
||
removefilemanuscirpt(file, fileList) {
|
||
this.form.manuscirpt = '';
|
||
},
|
||
removefilerepezip(file, fileList) {
|
||
this.repeform.zipurl = '';
|
||
},
|
||
|
||
formatDate_(timestamp) {
|
||
var date = new Date(timestamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
|
||
var Y = date.getFullYear() + '-';
|
||
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
|
||
var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
|
||
var h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
|
||
var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
|
||
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
|
||
return Y + M + D + ' ' + h + ':' + m + ':' + s;
|
||
},
|
||
onsubmit() {
|
||
if (this.form.manuscirpt == '') {
|
||
this.$message.error('Manuscript is required!');
|
||
return false;
|
||
}
|
||
const load = this.$loading({
|
||
lock: true,
|
||
text: 'Loading...',
|
||
spinner: 'el-icon-loading',
|
||
background: 'rgba(0, 0, 0, 0.7)'
|
||
});
|
||
this.$api
|
||
.post('api/Article/changeArticleFileEditor', this.form)
|
||
.then((res) => {
|
||
load.close();
|
||
this.$message.success('success');
|
||
this.initarticle();
|
||
|
||
this.initFileList();
|
||
this.getWordimgList();
|
||
this.getWordTablesList();
|
||
})
|
||
.catch((err) => {
|
||
load.close();
|
||
console.log(err);
|
||
});
|
||
},
|
||
// 显示转投稿件弹窗
|
||
showResubmit() {
|
||
this.loading4 = true;
|
||
|
||
this.$api
|
||
.post('api/Journal/getJournalByeditor', { user_id: localStorage.getItem('U_id') })
|
||
.then((res) => {
|
||
this.loading4 = false;
|
||
this.editorJournalList = res.data.journals;
|
||
console.log(res);
|
||
this.resubmitVisible = true;
|
||
})
|
||
.catch((err) => {
|
||
console.log(err);
|
||
});
|
||
},
|
||
// 提交转投稿件
|
||
saveResubmit() {
|
||
// 验证表单
|
||
this.$refs['resubmitJournal'].validate((valid) => {
|
||
if (valid) {
|
||
alert('submit!');
|
||
console.log(this.resubmitJournal);
|
||
} else {
|
||
console.log('error submit!!');
|
||
return false;
|
||
}
|
||
});
|
||
},
|
||
// 关闭弹窗
|
||
closeResubmit() {
|
||
(this.resubmitVisible = false), this.$refs['resubmitJournal'].resetFields();
|
||
}
|
||
},
|
||
mounted() {
|
||
this.opname = this.$route.query.mark;
|
||
this.resubmitJournal.manuscriptId = this.$route.query.id;
|
||
}
|
||
};
|
||
</script>
|
||
|
||
<style scoped>
|
||
.art_state_ {
|
||
padding: 20px 20px 1px 20px;
|
||
}
|
||
|
||
.art_state_ .art_state_message_id {
|
||
margin-bottom: 15px;
|
||
color: #777;
|
||
line-height: 22px;
|
||
padding: 0 0 15px 5px;
|
||
}
|
||
|
||
.art_state_message_id > font {
|
||
display: inline-block;
|
||
}
|
||
|
||
.art_state_message_id b {
|
||
letter-spacing: -1px;
|
||
color: #333;
|
||
}
|
||
|
||
.tree_box {
|
||
border: 1px solid #dcdfe6;
|
||
border-radius: 5px;
|
||
background-color: #fff;
|
||
padding: 15px;
|
||
}
|
||
.art_caozuo_ {
|
||
margin-top: 0;
|
||
padding: 5px 15px;
|
||
}
|
||
.art_caozuo_ > div {
|
||
margin: 0 0 10px 0px;
|
||
}
|
||
|
||
.art_caozuo_ > p:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.art_caozuo_ > div > span {
|
||
color: #777;
|
||
margin: 0 15px 0 0;
|
||
display: inline-block;
|
||
min-width: 65px !important;
|
||
}
|
||
|
||
.art_caozuo_ > div > button {
|
||
margin-left: 25px;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.art_caozuo_ > div > button:hover {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.el-upload__tip {
|
||
display: inline-block;
|
||
line-height: 32px;
|
||
margin: 0 0 0 15px;
|
||
color: #888 !important;
|
||
vertical-align: text-bottom;
|
||
}
|
||
|
||
.art_file {
|
||
}
|
||
|
||
.art_file_ h4 {
|
||
margin: 1px 0 5px 15px;
|
||
float: left;
|
||
color: #777;
|
||
font-weight: normal;
|
||
}
|
||
|
||
.art_file_ p.fi_new {
|
||
margin: 0 0 0 10px;
|
||
margin-bottom: 10px;
|
||
float: left;
|
||
}
|
||
|
||
.art_file_ p.fi_new > a {
|
||
color: #333;
|
||
display: block;
|
||
margin: 0 0 10px 0;
|
||
}
|
||
|
||
.art_file_ p.fi_new > a:hover {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.art_file_ p.fi_new > a > img {
|
||
width: 15px;
|
||
vertical-align: text-bottom;
|
||
margin: 0 5px 0 0;
|
||
}
|
||
|
||
.art_file_ p.fi_new > a > span > font {
|
||
color: #888;
|
||
margin: 0 5px 0 0;
|
||
font-size: 13px;
|
||
letter-spacing: -1px;
|
||
}
|
||
|
||
.art_file_ p.fi_new > a > span > i {
|
||
font-size: 12px;
|
||
color: #888;
|
||
margin: 0 0 0 3px;
|
||
font-style: normal;
|
||
}
|
||
|
||
.art_file_ p.fi_new > a > span > i > i {
|
||
margin: 0 5px 0 0;
|
||
}
|
||
|
||
.art_file_ .download {
|
||
font-weight: bold;
|
||
color: #75abf1;
|
||
margin: 0 0 0 10px;
|
||
}
|
||
|
||
.art_state_message p {
|
||
margin-left: 15px;
|
||
}
|
||
::v-deep .el-drawer__header {
|
||
margin-bottom: 0;
|
||
padding: 15px;
|
||
}
|
||
::v-deep #wacframe #AppHeaderPanel {
|
||
width: 98% !important;
|
||
}
|
||
::v-deep .el-drawer__wrapper .WACContainer {
|
||
z-index: 10000 !important;
|
||
}
|
||
|
||
.beautiful-gradient {
|
||
/* background: linear-gradient(135deg, #f0f9fe, #dce6ff, #d7e9fd); */
|
||
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.01);
|
||
/* border-radius: 16px;
|
||
padding: 10px;
|
||
box-sizing: border-box;
|
||
color: #333;
|
||
font-family: "Segoe UI", sans-serif; */
|
||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||
border-radius: 30px;
|
||
}
|
||
|
||
.beautiful-gradient:hover {
|
||
transform: translateY(-4px);
|
||
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15);
|
||
}
|
||
.AISummaryAnalysis .titleBox {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
background-color: #6157fd;
|
||
padding: 4px;
|
||
border-radius: 4px;
|
||
margin-bottom: 20px;
|
||
}
|
||
.AISummaryAnalysis div .title {
|
||
display: inline-block;
|
||
width: auto;
|
||
color: #6157fd;
|
||
/* font-weight: bold; */
|
||
}
|
||
::v-deep .AISummaryAnalysis .auth_collna_ew .el-collapse-item__header {
|
||
padding-left: 30px;
|
||
}
|
||
::v-deep .AISummaryAnalysis .el-form-item--mini.el-form-item,
|
||
.el-form-item--small.el-form-item {
|
||
margin-bottom: 10px;
|
||
}
|
||
.beautiful-gradient1 {
|
||
background: linear-gradient(135deg, #f0f9fe, #dce6ff, #d7e9fd);
|
||
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.01);
|
||
border-radius: 10px;
|
||
padding: 10px 20px 10px 20px !important;
|
||
box-sizing: border-box;
|
||
color: #333;
|
||
font-family: 'Segoe UI', sans-serif;
|
||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||
border-radius: 30px;
|
||
}
|
||
/deep/.research_area .el-collapse-item__content {
|
||
padding-bottom: 0 !important;
|
||
}
|
||
|
||
.art_author_ {
|
||
padding: 15px 20px !important;
|
||
}
|
||
|
||
.art_author_ > h2 {
|
||
font-size: 18px;
|
||
margin: 0 0 15px 0;
|
||
letter-spacing: -0.8px;
|
||
}
|
||
|
||
.art_author_list {
|
||
margin: 0 0 0 5px;
|
||
}
|
||
|
||
.art_author_list .com_shu {
|
||
background-color: #006699;
|
||
color: #fff;
|
||
display: inline-block;
|
||
width: 18px;
|
||
height: 18px;
|
||
line-height: 18px;
|
||
text-align: center;
|
||
margin: 0 10px 0 0;
|
||
}
|
||
|
||
.art_author_peng {
|
||
margin: 10px 0 0px 10px;
|
||
line-height: 24px;
|
||
}
|
||
|
||
.art_author_peng > a {
|
||
color: #333;
|
||
}
|
||
|
||
.art_author_peng > a:hover {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.art_author_peng > a > img {
|
||
width: 15px;
|
||
vertical-align: text-bottom;
|
||
margin: 0 15px 0 0;
|
||
}
|
||
|
||
.art_author_peng > a > span {
|
||
color: #888;
|
||
margin: 0 0 0 30px;
|
||
}
|
||
|
||
.art_author_peng > a > i {
|
||
font-weight: bold;
|
||
color: #75abf1;
|
||
margin: 0 0 0 18px;
|
||
}
|
||
|
||
.art_author_btn > div {
|
||
margin-bottom: 30px;
|
||
color: #006699;
|
||
}
|
||
|
||
.art_author_btn > h4 {
|
||
float: left;
|
||
width: 180px;
|
||
padding: 8px 20px 0 0;
|
||
letter-spacing: -0.5px;
|
||
text-align: right;
|
||
}
|
||
|
||
.art_author_btn > p {
|
||
float: left;
|
||
margin: 0 0 30px 0;
|
||
}
|
||
|
||
.el-upload__tip {
|
||
margin-left: 6px;
|
||
}
|
||
|
||
.el-collapse {
|
||
border-bottom: 0;
|
||
}
|
||
|
||
.art_author_coment {
|
||
}
|
||
|
||
.art_author_coment > p {
|
||
line-height: 20px;
|
||
}
|
||
|
||
.art_author_coment > p:first-child {
|
||
margin-top: 0;
|
||
}
|
||
|
||
.art_author_coment > p > font,
|
||
.commentfs > font {
|
||
display: block;
|
||
margin: 15px 0 5px 0;
|
||
color: #333;
|
||
font-weight: bold;
|
||
letter-spacing: -0.5px;
|
||
}
|
||
.review_table {
|
||
width: 100%;
|
||
background-color: #fff;
|
||
/* margin-top: 10px; */
|
||
border-collapse: collapse; /* 合并表格边框 */
|
||
}
|
||
|
||
.review_table th,
|
||
td {
|
||
padding: 6px;
|
||
min-width: 70px;
|
||
border: 1px solid #ddd;
|
||
border-left: 0;
|
||
border-right: 0;
|
||
text-align: left;
|
||
}
|
||
|
||
.review_table th {
|
||
font-size: 14px;
|
||
background-color: #f0f0f0;
|
||
}
|
||
.review_table td {
|
||
font-size: 14px;
|
||
/* background-color: #f0f0f0; */
|
||
}
|
||
/* ::v-deep .review_table th:first-child, .review_table td:first-child {
|
||
width: 30px !important;
|
||
|
||
} */
|
||
.review_table tr:hover {
|
||
/* background-color: #fff; */
|
||
}
|
||
.overflow-x-auto {
|
||
overflow-x: auto;
|
||
}
|
||
.short-content {
|
||
max-height: 120px;
|
||
display: -webkit-box;
|
||
-webkit-line-clamp: 3; /* 设置显示的行数 */
|
||
-webkit-box-orient: vertical;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.show-more-btn {
|
||
background-color: #4caf50;
|
||
color: white;
|
||
padding: 10px;
|
||
border: none;
|
||
cursor: pointer;
|
||
margin-top: 10px;
|
||
}
|
||
|
||
.show-more-btn:hover {
|
||
background-color: #45a049;
|
||
}
|
||
.corrPeo {
|
||
word-break: normal;
|
||
}
|
||
|
||
.corrPeo .corrPUser {
|
||
border-bottom: 1px solid #00669936;
|
||
color: #006699;
|
||
font-size: 16px;
|
||
padding: 0 0 10px 0;
|
||
margin: 25px 0 10px 0;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.corrPeo .corrPTim {
|
||
line-height: 22px;
|
||
margin-bottom: 20px;
|
||
}
|
||
|
||
.corrPeo .corrPTim:hover {
|
||
text-decoration: underline;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.corrPeo .corrPTim span {
|
||
background: #db890e21;
|
||
color: #db890e;
|
||
display: inline-block;
|
||
padding: 1px 5px;
|
||
border-radius: 5px;
|
||
font-size: 12px;
|
||
margin-right: 10px;
|
||
letter-spacing: 0.5px;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.corrPeo .corrPTim font {
|
||
font-weight: bold;
|
||
margin-left: 10px;
|
||
letter-spacing: -0.5px;
|
||
}
|
||
.btnCliArt {
|
||
color: #006699;
|
||
font-weight: normal;
|
||
margin-left: 40px;
|
||
}
|
||
|
||
.under_review .btnCliArt {
|
||
border: 1px solid #b3d8ff;
|
||
color: #409eff;
|
||
padding: 5px 10px;
|
||
border-radius: 5px;
|
||
background-color: #ecf5ff;
|
||
float: right;
|
||
margin-right: 20px;
|
||
}
|
||
.remarkContent {
|
||
margin-right: 10px;
|
||
line-height: 20px;
|
||
color: #888;
|
||
cursor: pointer;
|
||
max-width: calc(100% - 160px);
|
||
}
|
||
.collapsed {
|
||
display: -webkit-box;
|
||
-webkit-line-clamp: 2; /* 限制显示两行 */
|
||
-webkit-box-orient: vertical;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
white-space: normal;
|
||
}
|
||
.kuang_communtion {
|
||
margin-bottom: 15px;
|
||
}
|
||
::v-deep .under_review .el-icon-arrow-right {
|
||
right: 0px !important;
|
||
left: 0px !important;
|
||
position: relative !important;
|
||
}
|
||
.under_review_title {
|
||
width: 100%;
|
||
}
|
||
.under_review_title span {
|
||
line-height: 30px;
|
||
}
|
||
.scoringRules ul li {
|
||
list-style: none;
|
||
}
|
||
.scoringRules ul .scoringRulesEcharts {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
justify-content: flex-start;
|
||
}
|
||
.scoringRulesTitle {
|
||
display: inline-block;
|
||
width: 70px;
|
||
color: #0077b8e6;
|
||
font-weight: 700;
|
||
}
|
||
.scoringRulesItem {
|
||
margin-top: 10px;
|
||
}
|
||
|
||
.copyright-declaration-wrapper {
|
||
background-color: #f8f9fb;
|
||
padding: 6px 6px;
|
||
border-radius: 8px;
|
||
border: 1px solid #e4e7ed;
|
||
margin-top: 10px;
|
||
}
|
||
|
||
.copyright-declaration-wrapper :deep(.el-radio-group) {
|
||
display: flex !important;
|
||
flex-direction: column !important;
|
||
align-items: flex-start !important;
|
||
gap: 10px;
|
||
}
|
||
|
||
|
||
.copyright-declaration-wrapper :deep(.el-radio) {
|
||
height: auto;
|
||
white-space: normal;
|
||
line-height: 1.2;
|
||
display: flex;
|
||
align-items: flex-start;
|
||
}
|
||
|
||
.copyright-declaration-wrapper :deep(.el-radio__input) {
|
||
margin-top: 3px;
|
||
}
|
||
|
||
.copyright-declaration-wrapper :deep(.el-radio:hover) {
|
||
color: #333;
|
||
}
|
||
|
||
.copyright-declaration-wrapper :deep(.el-radio.is-checked .el-radio__label) {
|
||
font-weight: 500;
|
||
}
|
||
</style>
|