提交 邀请审稿人列表
This commit is contained in:
@@ -132,10 +132,11 @@
|
||||
</p>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
<el-collapse class="auth_colla auth_collna_ew" style="margin-top: -15px">
|
||||
<el-collapse v-model="researchAreas" class="auth_colla auth_collna_ew" style="margin-top: -15px">
|
||||
<el-collapse-item title="Research areas" name="1">
|
||||
<div style="position: relative; height: 30px">
|
||||
<common-major
|
||||
v-if="form.state==0"
|
||||
:articleId="editform.articleId"
|
||||
@load="initMajor()"
|
||||
style="position: absolute; top: 10px; right: 10px"
|
||||
@@ -152,7 +153,7 @@
|
||||
<span style="color: #006699; font-weight: bold; margin-right: 10px"
|
||||
>Field {{ i + 1 }}:</span
|
||||
>{{ v.str
|
||||
}}<i
|
||||
}}<i v-if="form.state==0"
|
||||
class="el-icon-delete-solid"
|
||||
style="color: #f56c6c !important; margin-left: 10px"
|
||||
@click="handleDeleteMajor(v)"
|
||||
@@ -553,6 +554,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
researchAreas:['1'],
|
||||
AIcontent:'',
|
||||
previewData: {},
|
||||
baseUrl: this.Common.baseUrl,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div style="min-width: 1280px">
|
||||
<div style="min-width: 1280px" class="articleListEditorA">
|
||||
<div class="handle-box">
|
||||
<el-badge
|
||||
:value="item.num"
|
||||
@@ -52,7 +52,58 @@
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch" style="margin: 0 0 10px 0">Search </el-button>
|
||||
</div>
|
||||
<div v-if="!PreAcpVisible">
|
||||
<div v-for="(item, ikgn) in tableData" class="mangu_list" style="position: relative">
|
||||
<div v-for="(item, ikgn) in tableData">
|
||||
<p
|
||||
style="background-color: #0077b8e6; border-top-left-radius: 8px; border-top-right-radius: 8px"
|
||||
class="articleBaseInfo articleTopBaseInfo"
|
||||
>
|
||||
<font class="labelTitle">ID : </font>
|
||||
<span
|
||||
style="
|
||||
background-color: #ff0000cc;
|
||||
width: 20px;
|
||||
color: #fff;
|
||||
margin: 0 2px 0 0;
|
||||
font-weight: bold;
|
||||
padding: 2px 4px;
|
||||
"
|
||||
v-if="item.special_num > 0"
|
||||
>S
|
||||
</span>
|
||||
{{ item.accept_sn }}
|
||||
|
||||
<sapn style="margin: 0 4px">| </sapn>
|
||||
<sapn style="font-size: 12px"> {{ item.type | jtName }}</sapn>
|
||||
<sapn style="margin: 0 4px">| </sapn>
|
||||
<sapn style="font-size: 12px">
|
||||
<font v-for="(iken, index) in item.countrys">
|
||||
{{ iken }}
|
||||
<font v-if="index != item.countrys.length - 1">,</font>
|
||||
</font>
|
||||
</sapn>
|
||||
<b @click="openTracking(item)" class="btnCliArt" style="color: #f0f0f0; font-size: 12px; margin-left: 10px">
|
||||
<i class="el-icon-data-line"></i> Manuscript Tracking
|
||||
</b>
|
||||
<sapn style="float: right">
|
||||
<span class="labelTitle" style="font-weight: 500">Plagiarism Check :</span>
|
||||
<font style="margin-right: 16px; font-size: 15px; font-weight: bold"> {{ item.repetition }} % </font>
|
||||
<b @click="changeRepe(item)" class="btnCliArt" style="color: #eaf6fb"> <i class="el-icon-edit"></i> Change </b>
|
||||
</sapn>
|
||||
<sapn style="margin: 0 10px; float: right">| </sapn>
|
||||
<sapn style="float: right">
|
||||
<span class="labelTitle" style="font-weight: 500">Status :</span>
|
||||
<font style="margin-right: 15px; font-size: 16px; font-weight: bold; letter-spacing: -0.5px">
|
||||
{{ stateFormat(item.state) }}
|
||||
</font>
|
||||
<b v-if="item.state != 5" @click="testvis(item)" class="btnCliArt" style="color: #eaf6fb">
|
||||
<i class="el-icon-edit"></i> Change
|
||||
</b>
|
||||
<b v-if="item.state == 5" @click="prodBegin(item)" class="btnCliArt" style="color: #eaf6fb">
|
||||
<i class="el-icon-paperclip"></i> Begin Produce
|
||||
</b>
|
||||
</sapn>
|
||||
</p>
|
||||
<div class="mangu_list" style="position: relative">
|
||||
<img
|
||||
v-if="item.ai_review != '' && item.ai_review"
|
||||
src="@/assets/img/ai.png"
|
||||
@@ -66,28 +117,23 @@
|
||||
style="opacity: 0.5; cursor: pointer; width: 30px; height: 30px; position: absolute; right: 6px; top: 6px"
|
||||
/>
|
||||
<div>
|
||||
<font style="color: #666b7a">ID : </font>
|
||||
<!-- <font style="color: #666b7a">ID : </font>
|
||||
<span
|
||||
style="background-color: #006699; width: 20px; color: #fff; margin: 0 2px 0 0; font-weight: bold; padding: 2px 4px"
|
||||
v-if="item.special_num > 0"
|
||||
>S
|
||||
</span>
|
||||
{{ item.accept_sn }}
|
||||
<!-- <b @click="showdetaileditor(item)" class="btnCliArt" style="margin-left: 15px;">
|
||||
<i class="el-icon-collection"></i> Detail
|
||||
</b> -->
|
||||
{{ item.accept_sn }} -->
|
||||
|
||||
<span style="color: #666b7a; margin-left: 40px">Type :</span>
|
||||
<!-- <span style="color: #666b7a; margin-left: 40px">Type :</span>
|
||||
<font>
|
||||
{{ item.type | jtName }}
|
||||
</font>
|
||||
<span style="color: #666b7a; margin-left: 40px">Countries :</span>
|
||||
<!-- <span :class="item.countrys.length > 1 ? 'Countries': ''" > -->
|
||||
<font v-for="(iken, index) in item.countrys">
|
||||
{{ iken }}
|
||||
<font v-if="index != item.countrys.length - 1">,</font>
|
||||
</font>
|
||||
<!-- </span> -->
|
||||
<span style="color: #666b7a; margin-left: 40px">Status :</span>
|
||||
<font style="margin-right: 15px; font-size: 16px; font-weight: bold; letter-spacing: -0.5px">
|
||||
{{ stateFormat(item.state) }}
|
||||
@@ -98,24 +144,64 @@
|
||||
</b>
|
||||
<span style="color: #666b7a; margin-left: 40px">Plagiarism Check :</span>
|
||||
<font style="margin-right: 16px; font-size: 15px; font-weight: bold"> {{ item.repetition }} % </font>
|
||||
<b @click="changeRepe(item)" class="btnCliArt"> <i class="el-icon-edit"></i> Change </b>
|
||||
<b @click="openTracking(item)" class="btnCliArt" style="margin-left: 50px">
|
||||
<b @click="changeRepe(item)" class="btnCliArt"> <i class="el-icon-edit"></i> Change </b> -->
|
||||
<!-- <b @click="openTracking(item)" class="btnCliArt" style="margin-left: 50px">
|
||||
<i class="el-icon-data-line"></i> Manuscript Tracking
|
||||
</b>
|
||||
</b> -->
|
||||
</div>
|
||||
<div class="man_title">
|
||||
<el-badge is-dot :hidden="item.author_act == 1 ? false : true">
|
||||
<b @click="showdetaileditor(item)">
|
||||
{{ item.title }}
|
||||
</b><b @click="corrSpe(item)" class="btnCliArt" style="margin-left: 20px">
|
||||
<b @click="showdetaileditor(item)"> {{ item.title }} </b>
|
||||
|
||||
<b @click="corrSpe(item)" class="btnCliArt" style="margin-left: 20px; white-space: nowrap">
|
||||
<i class="el-icon-paperclip"></i> Author's previous articles
|
||||
</b>
|
||||
<el-button
|
||||
:type="item.state == 0 ? 'primary' : 'info'"
|
||||
plain
|
||||
size="mini"
|
||||
@click="BoxMajor(item)"
|
||||
style="margin-left: 10px"
|
||||
>
|
||||
<i class="el-icon-edit" v-if="item.state == 0"></i>
|
||||
<i class="el-icon-view" v-else></i>
|
||||
|
||||
Research areas
|
||||
</el-button>
|
||||
<!-- <b @click="BoxMajor(item)" class="btnCliArt" style="margin-left: 20px; white-space: nowrap"> Research areas </b> -->
|
||||
</el-badge>
|
||||
|
||||
</div>
|
||||
<!-- <div style="margin: 0 0 10px">
|
||||
<b>
|
||||
<font class="labelTitle">Corresponding Author </font>
|
||||
</b>
|
||||
<span style="margin-left: 10px">
|
||||
<b @click="articleCommun(item)" class="btnCliArt" style="">
|
||||
<i class="el-icon-chat-line-square"></i> Communication
|
||||
</b>
|
||||
</span>
|
||||
|
||||
<div style="display: flex; margin-left: auto">
|
||||
<div class="fixCard" :style="`width: ${query.state == 0 ? '33% !important' : '33% !important'};`">
|
||||
<span style="text-align: left;margin-left: 10px"
|
||||
><font class="labelTitle">Name : </font>
|
||||
<span v-if="item.realname != ''">
|
||||
{{ item.realname }}
|
||||
<span v-if="item.phone != ''" style="margin-left: 5px; color: #666">({{ item.phone }})</span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span v-if="item.email != ''" style="margin-left: 10px"
|
||||
><font class="labelTitle">Email : </font>
|
||||
<b @click="linkEmail(item)" class="btnCliArt" style=""> {{ item.email }} </b>
|
||||
<b @click="linkEmailist(item)" v-if="item.emailh == 1" class="btnCliArt" style="margin-left: 15px">
|
||||
<i class="el-icon-refresh-left"></i> History
|
||||
</b>
|
||||
</span>
|
||||
</div> -->
|
||||
<div style="display: flex; margin-left: auto; flex-wrap: nowrap">
|
||||
<div
|
||||
class="fixCard"
|
||||
:style="`width:${item.state == 0 ? '350px !important;flex-shrink: 0' : '320px !important;flex-shrink: 0'}`"
|
||||
>
|
||||
<b style="font-size: 16px; letter-spacing: -0.5px">Manuscript Files</b>
|
||||
<p style="height: 10px"></p>
|
||||
<div class="fi_new" v-if="item.file.coverLetter">
|
||||
@@ -133,18 +219,25 @@
|
||||
@click="changeFileUpdown(0, ikgn, 'file_cover')"
|
||||
></b>
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<div v-for="(ikrm, ikrmIndex) in item.file.coverLetter" v-if="item.file_cover == 1">
|
||||
<img src="../../assets/img/icon_0.png" />
|
||||
<span>
|
||||
<font>Uploader {{ ikrmIndex+1 }} </font>
|
||||
<span @click="openFile(mediaUrl + ikrm.file_url)" class="openFile">
|
||||
<!-- <font>Uploader {{ ikrmIndex+1 }} </font> -->
|
||||
<!-- {{ ikrm.username }} -->
|
||||
<i><i class="el-icon-time"></i>{{ formatDate(ikrm.ctime) }}</i>
|
||||
<i>
|
||||
<!-- <i class="el-icon-time"></i> -->
|
||||
|
||||
{{ formatDate(ikrm.ctime) }}</i
|
||||
>
|
||||
</span>
|
||||
<a :href="mediaUrl + ikrm.file_url">
|
||||
<i class="el-icon-download download"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fi_new" v-if="item.file.picturesAndTables">
|
||||
<p>
|
||||
Figures
|
||||
@@ -160,18 +253,21 @@
|
||||
@click="changeFileUpdown(0, ikgn, 'file_figer')"
|
||||
></b>
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<div v-for="(ikrm, ikrmIndex) in item.file.picturesAndTables" v-if="item.file_figer == 1">
|
||||
<img src="../../assets/img/icon_0.png" />
|
||||
<span>
|
||||
<font>Uploader {{ ikrmIndex+1 }} </font>
|
||||
<span @click="openFile(mediaUrl + ikrm.file_url)" class="openFile">
|
||||
<!-- <font>Uploader {{ ikrmIndex+1 }} </font> -->
|
||||
<!-- {{ ikrm.username }} -->
|
||||
<i><i class="el-icon-time"></i>{{ formatDate(ikrm.ctime) }}</i>
|
||||
<i> <!-- <i class="el-icon-time"></i> -->{{ formatDate(ikrm.ctime) }}</i>
|
||||
</span>
|
||||
<a :href="mediaUrl + ikrm.file_url">
|
||||
<i class="el-icon-download download"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fi_new" v-if="item.file.totalpage">
|
||||
<p>
|
||||
Title page
|
||||
@@ -187,18 +283,21 @@
|
||||
@click="changeFileUpdown(0, ikgn, 'file_total')"
|
||||
></b>
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<div v-for="(ikrm, ikrmIndex) in item.file.totalpage" v-if="item.file_total == 1">
|
||||
<img src="../../assets/img/icon_0.png" />
|
||||
<span>
|
||||
<font>Uploader {{ikrmIndex}} </font>
|
||||
<span @click="openFile(mediaUrl + ikrm.file_url)" class="openFile">
|
||||
<!-- <font>Uploader {{ikrmIndex}} </font> -->
|
||||
<!-- {{ ikrm.username }} -->
|
||||
<i><i class="el-icon-time"></i>{{ formatDate(ikrm.ctime) }}</i>
|
||||
<i> <!-- <i class="el-icon-time"></i> -->{{ formatDate(ikrm.ctime) }}</i>
|
||||
</span>
|
||||
<a :href="mediaUrl + ikrm.file_url">
|
||||
<i class="el-icon-download download"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fi_new" v-if="item.file.manuscirpt">
|
||||
<p>
|
||||
Manuscirpt
|
||||
@@ -214,19 +313,21 @@
|
||||
@click="changeFileUpdown(0, ikgn, 'file_maun')"
|
||||
></b>
|
||||
</p>
|
||||
<div>
|
||||
<div v-for="(ikrm, ikrmIndex) in item.file.manuscirpt" v-if="item.file_maun == 1">
|
||||
<img src="../../assets/img/icon_0.png" />
|
||||
<span>
|
||||
<font>Uploader {{ ikrmIndex+1 }} </font>
|
||||
<span @click="openFile(mediaUrl + ikrm.file_url)" class="openFile">
|
||||
<!-- <font>Uploader {{ ikrmIndex+1 }} </font> -->
|
||||
|
||||
<!-- {{ ikrm.username }} -->
|
||||
<i><i class="el-icon-time"></i>{{ formatDate(ikrm.ctime) }}</i>
|
||||
<i> <!-- <i class="el-icon-time"></i> -->{{ formatDate(ikrm.ctime) }}</i>
|
||||
</span>
|
||||
<a :href="mediaUrl + ikrm.file_url">
|
||||
<i class="el-icon-download download"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fi_new" v-if="item.file.supplementary">
|
||||
<p>
|
||||
Supplementary Material
|
||||
@@ -242,12 +343,13 @@
|
||||
@click="changeFileUpdown(0, ikgn, 'file_supper')"
|
||||
></b>
|
||||
</p>
|
||||
<div>
|
||||
<div v-for="(ikrm, ikrmIndex) in item.file.supplementary" v-if="item.file_supper == 1">
|
||||
<img src="../../assets/img/icon_0.png" />
|
||||
<span>
|
||||
<font>Uploader {{ ikrmIndex+1 }} </font>
|
||||
<span @click="openFile(mediaUrl + ikrm.file_url)" class="openFile">
|
||||
<!-- <font>Uploader {{ ikrmIndex+1 }} </font> -->
|
||||
<!-- { ikrm.username }} -->
|
||||
<i><i class="el-icon-time"></i>{{ formatDate(ikrm.ctime) }}</i>
|
||||
<i> <!-- <i class="el-icon-time"></i> -->{{ formatDate(ikrm.ctime) }}</i>
|
||||
</span>
|
||||
<a :href="mediaUrl + ikrm.file_url">
|
||||
<i class="el-icon-download download"></i>
|
||||
@@ -255,10 +357,19 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 1%"></div>
|
||||
<div class="fixCard" style="width: 36%">
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="fixCard"
|
||||
:style="`width: ${
|
||||
item.state == 0 ? 'calc(100% - 350px - 230px - 18px)' : 'calc(100% - 350px - 230px - 18px)'
|
||||
}`"
|
||||
>
|
||||
<b style="font-size: 16px; letter-spacing: -0.5px">AI scoring</b>
|
||||
<p style="font-size: 18px; font-weight: bold; margin-bottom: 5px; color: #db890e" v-if="item.reportList.length > 0">
|
||||
<p
|
||||
style="font-size: 18px; font-weight: bold; margin-bottom: 5px; color: #db890e"
|
||||
v-if="item.reportList.length > 0"
|
||||
>
|
||||
<font style="font-size: 14px; font-weight: normal; color: #333">Initial review score :</font>
|
||||
{{ item.scoring }}
|
||||
<i class="el-icon-refresh refreshBtn" @click="refreshScore(item)"></i>
|
||||
@@ -353,18 +464,21 @@
|
||||
</p>
|
||||
</div>
|
||||
<template v-if="query.state != 0">
|
||||
<div style="width: 1%"></div>
|
||||
<div class="fixCard" style="width: 17%">
|
||||
<div class="fixCard" style="width: 230px; flex-shrink: 0">
|
||||
<b style="font-size: 16px; letter-spacing: -0.5px">Reviewer Decision</b>
|
||||
<p style="height: 5px"></p>
|
||||
<p v-for="(iken, index) in item.reviewScore" style="line-height: 28px" :key="index">
|
||||
Reviewer{{ index + 1 }} score : <b style="color: #db890e; font-size: 18px">{{ iken.rated }}</b
|
||||
><el-button style="margin-left: 10px" type="text" @click="crateRevision(iken)" v-if="iken.can_repeat == 1"
|
||||
<p v-for="(iken, index) in item.reviewScore" style="line-height: 24px" :key="index">
|
||||
Reviewer{{ index + 1 }} : <b style="color: #db890e; font-size: 18px">{{ iken.rated }}</b
|
||||
><el-button
|
||||
style="margin-left: 10px"
|
||||
type="text"
|
||||
@click="crateRevision(iken)"
|
||||
v-if="iken.can_repeat == 1"
|
||||
>Re-review</el-button
|
||||
>
|
||||
</p>
|
||||
<p v-if="item.reviewScore.length > 0" style="font-size: 15px; margin: 0 0 5px 0">
|
||||
Average : <b style="font-size: 18px; color: #db890e">{{ avegeCount(item.reviewScore) }}</b>
|
||||
Average score: <b style="font-size: 18px; color: #db890e">{{ avegeCount(item.reviewScore) }}</b>
|
||||
</p>
|
||||
<p>
|
||||
<span v-for="(iken, index) in item.review" style="display: inline-block; padding: 5px">
|
||||
@@ -375,12 +489,24 @@
|
||||
</font>
|
||||
<font
|
||||
v-if="iken.state == 1 || iken.state == 3"
|
||||
style="width: 12px; height: 12px; display: block; border-radius: 10px; background-color: #67c23a"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
display: block;
|
||||
border-radius: 10px;
|
||||
background-color: #67c23a;
|
||||
"
|
||||
>
|
||||
</font>
|
||||
<font
|
||||
v-if="iken.state == 2"
|
||||
style="width: 12px; height: 12px; display: block; border-radius: 10px; background-color: #f56c6c"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
display: block;
|
||||
border-radius: 10px;
|
||||
background-color: #f56c6c;
|
||||
"
|
||||
>
|
||||
</font>
|
||||
</span>
|
||||
@@ -393,8 +519,37 @@
|
||||
</div></template
|
||||
>
|
||||
|
||||
<div style="width: 1%"></div>
|
||||
<div class="fixCard" style="width: 26%">
|
||||
<!-- <div class="fixCard" style="width: 320px; flex-shrink: 0" v-if="query.state == 0">
|
||||
<b style="font-size: 16px; letter-spacing: -0.5px">Research areas</b>
|
||||
<p style="height: 10px"></p>
|
||||
<div style="text-align: left">
|
||||
<div
|
||||
@click="BoxMajor(item, majorData[item.article_id])"
|
||||
v-if="item.article_id"
|
||||
style="display: flex; align-items: center; justify-content: space-between; cursor: pointer"
|
||||
>
|
||||
|
||||
<div>
|
||||
<div v-if="majorData[item.article_id]" class="majorDataBox">
|
||||
<p v-for="(v, i) in majorData[item.article_id]" style="border-top: 1px solid #b3d8ff">
|
||||
<span style="font-weight: bold">{{ i + 1 }}.</span>
|
||||
<span style="color:#666"> {{ v.str.replace('Medicine >', '').trim() }}</span>
|
||||
|
||||
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<div v-else>
|
||||
<span>Loading...</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<b style="margin-left: 10px; color: #006699" class="el-icon-edit"></b>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="fixCard" style="width: 320px; flex-shrink: 0">
|
||||
<b style="font-size: 16px; letter-spacing: -0.5px">Corresponding Author</b>
|
||||
<p style="height: 10px"></p>
|
||||
<div style="text-align: left">
|
||||
@@ -404,10 +559,9 @@
|
||||
<span v-if="item.phone != ''" style="margin-left: 5px; color: #666">({{ item.phone }})</span>
|
||||
</p>
|
||||
<p v-if="item.email != ''" style="margin: 8px 0 5px 0; line-height: 22px">
|
||||
<b @click="linkEmail(item)" class="btnCliArt" style="">
|
||||
<font style="color: #999">Email :</font>
|
||||
{{ item.email }}
|
||||
<b @click="linkEmail(item)" class="btnCliArt" style="margin-left: 15px">
|
||||
<i class="el-icon-message"></i> Email
|
||||
</b>
|
||||
<b @click="linkEmailist(item)" v-if="item.emailh == 1" class="btnCliArt" style="margin-left: 15px">
|
||||
<i class="el-icon-refresh-left"></i> History
|
||||
@@ -415,7 +569,9 @@
|
||||
</p>
|
||||
</div>
|
||||
<p style="margin-top: 20px">
|
||||
<b @click="articleCommun(item)" class="btnCliArt"> <i class="el-icon-chat-line-square"></i> Communication </b>
|
||||
<b @click="articleCommun(item)" class="btnCliArt">
|
||||
<i class="el-icon-chat-line-square"></i> Communication
|
||||
</b>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -427,6 +583,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 预接收表 -->
|
||||
<el-table
|
||||
v-if="PreAcpVisible"
|
||||
@@ -795,8 +952,8 @@
|
||||
<p style="line-height: 20px; margin-top: 6px">{{ remark.title }}</p>
|
||||
</el-form-item>
|
||||
<el-form-item label="Content :">
|
||||
<commonRemarkList :list="remark.contentList" @load="(e) => (this.remark.contentList = e)"></commonRemarkList>
|
||||
<!-- <el-input type="textarea" rows="5" v-model="remark.content" ></el-input> -->
|
||||
<!-- <commonRemarkList :list="remark.contentList" @load="(e) => (this.remark.contentList = e)"></commonRemarkList> -->
|
||||
<el-input type="textarea" rows="5" v-model="remark.content" ></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
@@ -1200,6 +1357,29 @@
|
||||
<el-button type="primary" @click="isShowAI = false">Close</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
<el-dialog :title="majorMes.disabled ? 'Research areas' : 'Edit Research areas'" :visible.sync="majorBox" width="800px">
|
||||
<el-form ref="remark" :model="majorMes" label-width="120px">
|
||||
<el-form-item label="Title :">
|
||||
<p style="line-height: 20px">
|
||||
<span style="color: #333; font-weight: bold">{{ majorMes.title }}</span>
|
||||
</p>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="Email :">
|
||||
<p style="line-height: 20px; margin-top: 6px">{{ majorMes.email }}</p>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="Research areas :">
|
||||
<common-major-list
|
||||
:disabled="majorMes.disabled"
|
||||
:list="majorValueList"
|
||||
@load="(e) => (this.majorValueList = e)"
|
||||
></common-major-list>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="majorBox = false">Cancel</el-button>
|
||||
<el-button type="primary" @click="saveMajor" v-if="!majorMes.disabled">Save</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1215,6 +1395,9 @@ export default {
|
||||
props: ['journals'],
|
||||
data() {
|
||||
return {
|
||||
majorValueList: [],
|
||||
majorBox: false,
|
||||
majorMes: {},
|
||||
isShowAI: false,
|
||||
currentArticleData: {},
|
||||
rules: {},
|
||||
@@ -1363,6 +1546,7 @@ export default {
|
||||
}
|
||||
],
|
||||
bankVisible: false,
|
||||
majorData: {},
|
||||
googleSearchInfo: ''
|
||||
};
|
||||
},
|
||||
@@ -1375,6 +1559,58 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async fetchMajorData(article_id) {
|
||||
// if (!this.majorData[userId]) {
|
||||
// 判断是否已经加载过该用户的数据
|
||||
const data = await this.getMajorData(article_id); // 获取数据
|
||||
|
||||
this.$set(this.majorData, article_id, data); // 使用 Vue.set 确保数据是响应式的
|
||||
// }
|
||||
},
|
||||
// 修改标记
|
||||
async getMajorData(article_id) {
|
||||
try {
|
||||
const res = await this.$api.post('api/Article/getArticleDetail', { articleId: article_id, human: 'editor' });
|
||||
if (res.article&&res.article.majors.length>0) {
|
||||
return res.article.majors; // 返回数据
|
||||
} else {
|
||||
return []; // 如果没有数据,返回空数组
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error fetching data:', error);
|
||||
return []; // 如果发生错误,返回空数组
|
||||
}
|
||||
},
|
||||
BoxMajor(e, data) {
|
||||
this.majorMes.disabled = e.state == 0 ? false : true;
|
||||
// this.majorMes.realname = e.realname;
|
||||
// this.majorMes.user_id = e.user_id;
|
||||
this.majorMes.title = e.title;
|
||||
|
||||
this.$api
|
||||
.post('api/Article/getArticleDetail', {
|
||||
articleId: e.article_id,
|
||||
human: 'editor'
|
||||
})
|
||||
.then((res) => {
|
||||
if (this.majorMes.disabled) {
|
||||
this.majorValueList = [...res.article.majors];
|
||||
} else {
|
||||
this.majorValueList = [...res.article.majors].map((item) => ({
|
||||
selectedValue: Array.isArray(item.major)
|
||||
? item.major
|
||||
: typeof item.major === 'string'
|
||||
? item.major.split(',').map(Number)
|
||||
: [item.major]
|
||||
}));
|
||||
}
|
||||
|
||||
this.majorBox = true;
|
||||
});
|
||||
},
|
||||
openFile(url) {
|
||||
window.open(url, '_blank');
|
||||
},
|
||||
openAI(data) {
|
||||
this.isShowAI = true;
|
||||
this.currentArticleData = { ...data };
|
||||
@@ -1579,6 +1815,10 @@ export default {
|
||||
this.Total = res.total;
|
||||
this.tableData = res.data;
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
// if (this.query.state == 0) {
|
||||
// this.fetchMajorData(this.tableData[i].article_id); // 加载第一个用户的数据
|
||||
// }
|
||||
|
||||
this.tableData[i].file_cover = 1;
|
||||
this.tableData[i].file_figer = 1;
|
||||
this.tableData[i].file_total = 1;
|
||||
@@ -1948,13 +2188,14 @@ export default {
|
||||
this.editbox = true;
|
||||
this.remark.title = e.title;
|
||||
this.remark.articleId = e.article_id;
|
||||
this.remark.content = e.remarks;
|
||||
// var remarksList = e.remarks.split(/。|\n|\r\n/);
|
||||
var remarksList = e.remarks.split('。');
|
||||
this.remark.contentList = remarksList
|
||||
.filter((item) => item.trim() !== '') // 过滤空内容
|
||||
.map((item) => {
|
||||
return { text: item + '' }; // 补回句号,或根据需要自定义
|
||||
});
|
||||
// var remarksList = e.remarks.split('。');
|
||||
// this.remark.contentList = remarksList
|
||||
// .filter((item) => item.trim() !== '') // 过滤空内容
|
||||
// .map((item) => {
|
||||
// return { text: item + '' }; // 补回句号,或根据需要自定义
|
||||
// });
|
||||
},
|
||||
// 查重弹出框
|
||||
changeRepe(e) {
|
||||
@@ -2530,14 +2771,22 @@ export default {
|
||||
|
||||
.mangu_list {
|
||||
color: #333;
|
||||
margin: 0 0 20px 0;
|
||||
margin: 0 0 35px 0;
|
||||
font-size: 14px;
|
||||
padding: 10px 20px;
|
||||
border-radius: 5px;
|
||||
border-bottom-right-radius: 8px;
|
||||
border-bottom-left-radius: 8px;
|
||||
/* border-radius: 5px; */
|
||||
border: 1px solid #ebeef5;
|
||||
/* border: 1px solid #0077b8e6; */
|
||||
background-color: #fff;
|
||||
position: relative;
|
||||
}
|
||||
.mangu_list:hover {
|
||||
|
||||
border: 1px solid #0077b8e6;
|
||||
|
||||
}
|
||||
|
||||
.mangu_list:nth-child(2n + 1) {
|
||||
background-color: #fafafa;
|
||||
@@ -2553,7 +2802,7 @@ export default {
|
||||
}
|
||||
|
||||
.mangu_list .man_title {
|
||||
margin: 2px 100px 20px 0;
|
||||
margin: 2px 40px 10px 0;
|
||||
font-weight: bolder;
|
||||
letter-spacing: -0.5px;
|
||||
font-size: 16px;
|
||||
@@ -2567,8 +2816,10 @@ export default {
|
||||
}
|
||||
|
||||
.mangu_list div.fi_new {
|
||||
margin: 0 0 0 10px;
|
||||
margin-bottom: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 0 0 0 00px;
|
||||
margin-bottom: 1px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@@ -2576,48 +2827,48 @@ export default {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.mangu_list div.fi_new > div {
|
||||
.mangu_list div.fi_new div > div {
|
||||
color: #333;
|
||||
display: block;
|
||||
margin: 0 0 5px 0;
|
||||
margin: 5px 0 0px 5px;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.mangu_list div.fi_new > div > img {
|
||||
.mangu_list div.fi_new div > div > img {
|
||||
width: 15px;
|
||||
vertical-align: text-bottom;
|
||||
margin: 0 5px 0 0;
|
||||
}
|
||||
|
||||
.mangu_list div.fi_new > div > span > font {
|
||||
.mangu_list div.fi_new div > div > span > font {
|
||||
color: #888;
|
||||
margin: 0 5px 0 0;
|
||||
font-size: 13px;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
|
||||
.mangu_list div.fi_new > div > span > i {
|
||||
.mangu_list div.fi_new div > div > span > i {
|
||||
font-size: 12px;
|
||||
color: #888;
|
||||
margin: 0 0 0 3px;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.mangu_list div.fi_new > div > span > i > i {
|
||||
.mangu_list div.fi_new div > div > span > i > i {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.mangu_list div.fi_new > div > a {
|
||||
.mangu_list div.fi_new div > div > a {
|
||||
margin: 0 5px 0 0;
|
||||
}
|
||||
|
||||
.mangu_list div.fi_new .download {
|
||||
font-weight: bold;
|
||||
color: #75abf1;
|
||||
margin: 0 0 0 10px;
|
||||
margin: 0 0 0 4px;
|
||||
}
|
||||
|
||||
.mangu_list div.fi_new > div > a:hover .download {
|
||||
.mangu_list div.fi_new div > div > a:hover .download {
|
||||
color: #006699;
|
||||
}
|
||||
|
||||
@@ -2636,7 +2887,12 @@ export default {
|
||||
.mangu_list .fixCard {
|
||||
text-align: center;
|
||||
background: #0066990d;
|
||||
padding: 14px 20px;
|
||||
padding: 14px 10px;
|
||||
margin-left: 6px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.mangu_list .fixCard:nth-child(1) {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.gugeList {
|
||||
@@ -2808,4 +3064,38 @@ export default {
|
||||
transform: translateY(-4px);
|
||||
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
.openFile {
|
||||
cursor: pointer;
|
||||
}
|
||||
.openFile :hover i {
|
||||
color: #333 !important;
|
||||
}
|
||||
.articleBaseInfo {
|
||||
text-align: left !important;
|
||||
line-height: 28px;
|
||||
color: #333;
|
||||
}
|
||||
.articleTopBaseInfo {
|
||||
color: #fff;
|
||||
padding: 0 10px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.articleBaseInfo .labelTitle {
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
}
|
||||
.articleTopBaseInfo .labelTitle {
|
||||
color: #fff !important;
|
||||
font-size: 16px;
|
||||
}
|
||||
.articleListEditorA .el-button--mini,
|
||||
.el-button--mini.is-round {
|
||||
padding: 6px 10px;
|
||||
}
|
||||
.majorDataBox p:nth-child(1) {
|
||||
border-top: none !important;
|
||||
}
|
||||
.mangu_list div.fi_new div > div:nth-child(1) {
|
||||
margin-top: 0px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -3,61 +3,136 @@
|
||||
<div class="crumbs">
|
||||
<el-breadcrumb separator="/">
|
||||
<el-breadcrumb-item> <i class="el-icon-lx-calendar"></i> Manuscript reviewer list </el-breadcrumb-item>
|
||||
<el-breadcrumb-item>
|
||||
<div>
|
||||
<span>ID:{{ articleBaseInfo.accept_sn }} </span>
|
||||
</div>
|
||||
</el-breadcrumb-item>
|
||||
</el-breadcrumb>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="handle-box">
|
||||
<div>
|
||||
<el-button type="primary" icon="el-icon-plus" @click="openAddRev">Reviewer Bank</el-button>
|
||||
|
||||
<el-button type="primary" icon="el-icon-plus" @click="openSuggRev">Reviewers Suggested By Author
|
||||
({{tableSuggest.length}})</el-button>
|
||||
<el-button
|
||||
:type="tableSuggest.length > 0 ? 'primary' : 'info'"
|
||||
:plain="tableSuggest.length == 0"
|
||||
:disabled="tableSuggest.length == 0"
|
||||
icon="el-icon-plus"
|
||||
@click="tableSuggest.length > 0 ? openSuggRev() : ''"
|
||||
>Reviewers Suggested By Author ({{ tableSuggest.length }})</el-button
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- <el-button type="primary" icon="el-icon-circle-plus-outline" @click="editVisible1 = true">Supplement</el-button> -->
|
||||
</div>
|
||||
<el-table :data="tableData" border stripe class="table" ref="multipleTable"
|
||||
header-cell-class-name="table-header" empty-text="New messages (0)">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
stripe
|
||||
size="mini"
|
||||
class="table"
|
||||
ref="multipleTable"
|
||||
header-cell-class-name="table-header"
|
||||
empty-text="New messages (0)"
|
||||
>
|
||||
<el-table-column type="index" label="No." align="center" width="50"></el-table-column>
|
||||
<el-table-column label="Base Information" width="280px">
|
||||
<template slot-scope="scope">
|
||||
<p class="tab_tie_col">
|
||||
<span>Name: </span>
|
||||
<el-badge is-dot :hidden="scope.row.reviewer_act == 1 ? false : true" class="item">
|
||||
<b style="font-size: 15px; letter-spacing: -0.5px">{{ scope.row.reviewer }}</b>
|
||||
</el-badge>
|
||||
</p>
|
||||
<p class="tab_tie_col">
|
||||
<span>Realname: </span>
|
||||
{{ scope.row.realname }}
|
||||
</p>
|
||||
|
||||
<p class="tab_tie_col"><span>Country: </span>{{ scope.row.country }}</p>
|
||||
<p class="tab_tie_col"><span>Email: </span>{{ scope.row.email }}</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="Other Information">
|
||||
<template slot-scope="scope">
|
||||
<p class="tab_tie_col">
|
||||
<span>Field: </span>
|
||||
{{ scope.row.field }}
|
||||
</p>
|
||||
|
||||
<p class="tab_tie_col">
|
||||
<span>Company: </span>
|
||||
{{ scope.row.company }}
|
||||
</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column prop="art_rev_id" label="ID" align="center" width="60"></el-table-column> -->
|
||||
<el-table-column label="Reviewer" align="center" width="130">
|
||||
<!-- <el-table-column label="Reviewer" align="center" width="130">
|
||||
<template slot-scope="scope">
|
||||
<el-badge is-dot :hidden="scope.row.reviewer_act == 1 ? false : true" class="item">
|
||||
{{ scope.row.reviewer }}
|
||||
</el-badge>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="country" label="Country" align="center" width="100"></el-table-column>
|
||||
<el-table-column prop="email" label="Email" align="center"></el-table-column>
|
||||
<el-table-column prop="company" label="Company" align="center"></el-table-column>
|
||||
<el-table-column prop="major_str" label="Major"></el-table-column>
|
||||
<el-table-column prop="field" label="Field"></el-table-column>
|
||||
<el-table-column label="state" align="center" width="95">
|
||||
</el-table-column> -->
|
||||
<!-- <el-table-column prop="country" label="Country" align="center" width="100"></el-table-column> -->
|
||||
<!-- <el-table-column prop="email" label="Email" align="center"></el-table-column> -->
|
||||
<!-- <el-table-column prop="company" label="Company" align="center"></el-table-column> -->
|
||||
<!-- <el-table-column prop="major_str" label="Major"></el-table-column> -->
|
||||
<el-table-column label="Research areas" width="300">
|
||||
<template slot-scope="scope">
|
||||
{{revstate(scope.row)}}
|
||||
<font style="color: #aaa;display: block;line-height: 18px;font-size: 13px;margin: 5px 0 0 0;">
|
||||
{{formatDate(scope.row.ctime)}}</font>
|
||||
<commonMajorTableList
|
||||
:user_id="scope.row.reviewer_id"
|
||||
:baseInfo="scope.row"
|
||||
:key="scope.row.reviewer_id"
|
||||
:disabled="true"
|
||||
></commonMajorTableList>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="" width="110" align="center">
|
||||
<!-- <el-table-column prop="field" label="Field"></el-table-column> -->
|
||||
<el-table-column label="State" align="center" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="primary" plain icon="el-icon-tickets"
|
||||
@click="showdetail(scope.row)">Detail</el-button>
|
||||
{{ revstate(scope.row) }}
|
||||
<font
|
||||
style="color: #aaa; display: block; line-height: 18px; font-size: 13px; margin: 5px 0 0 0"
|
||||
v-html="formatDate(scope.row.ctime)"
|
||||
>
|
||||
</font>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="" width="100" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="primary" plain icon="el-icon-tickets" @click="showdetail(scope.row)">Detail</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="pagination">
|
||||
<el-pagination background layout="total, prev, pager, next" :current-page="query.pageIndex"
|
||||
:page-size="query.pageSize" :total="Total" @current-change="handlePageChange"></el-pagination>
|
||||
<el-pagination
|
||||
background
|
||||
layout="total, prev, pager, next"
|
||||
:current-page="query.pageIndex"
|
||||
:page-size="query.pageSize"
|
||||
:total="Total"
|
||||
@current-change="handlePageChange"
|
||||
></el-pagination>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog title="Add Suggest Reviewer" :visible.sync="AddSuggest" width="800px">
|
||||
<el-table :data="tableSuggest" border stripe class="table" ref="multipleTable"
|
||||
header-cell-class-name="table-header" empty-text="New messages (0)">
|
||||
<el-table
|
||||
:data="tableSuggest"
|
||||
border
|
||||
stripe
|
||||
class="table"
|
||||
ref="multipleTable"
|
||||
header-cell-class-name="table-header"
|
||||
empty-text="New messages (0)"
|
||||
>
|
||||
<el-table-column prop="account" label="Email"></el-table-column>
|
||||
<el-table-column prop="realname" label="Realname"></el-table-column>
|
||||
<el-table-column prop="cmajor" label="Major"></el-table-column>
|
||||
<el-table-column label="" width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="primary" plain icon="el-icon-check" @click="selSuggest(scope.row)">
|
||||
Select</el-button>
|
||||
<el-button size="mini" type="primary" plain icon="el-icon-check" @click="selSuggest(scope.row)"> Select</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -65,15 +140,21 @@
|
||||
<el-button type="primary" @click="AddSuggest = false">Cancel</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
<el-dialog title="add reviewer" :closeOnClickModal="false" :visible.sync="editVisible" width="80%"
|
||||
v-loading="loading" element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
|
||||
element-loading-background="rgba(0, 0, 0, 0.8)">
|
||||
<el-dialog
|
||||
title="add reviewer"
|
||||
:closeOnClickModal="false"
|
||||
:visible.sync="editVisible"
|
||||
width="80%"
|
||||
v-loading="loading"
|
||||
element-loading-text="Loading..."
|
||||
element-loading-spinner="el-icon-loading"
|
||||
element-loading-background="rgba(0, 0, 0, 0.8)"
|
||||
>
|
||||
<el-form ref="editform" :model="editform" label-width="100px">
|
||||
<el-form-item label="state">
|
||||
<el-select v-model="editform.uid" filterable @change="changereviewer()" placeholder="Please select">
|
||||
<el-option :key="0" label="please select" :value="0"></el-option>
|
||||
<el-option v-for="item in reviewerList" :key="item.user_id" :label="item.account"
|
||||
:value="item.user_id"></el-option>
|
||||
<el-option v-for="item in reviewerList" :key="item.user_id" :label="item.account" :value="item.user_id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="Country" v-if="editform.uid != 0">
|
||||
@@ -97,9 +178,15 @@
|
||||
<el-button type="primary" @click="saveEdit">save</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
<el-dialog title="Supplement" :visible.sync="editVisible1" width="40%" v-loading="loading"
|
||||
element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
|
||||
element-loading-background="rgba(0, 0, 0, 0.8)">
|
||||
<el-dialog
|
||||
title="Supplement"
|
||||
:visible.sync="editVisible1"
|
||||
width="40%"
|
||||
v-loading="loading"
|
||||
element-loading-text="Loading..."
|
||||
element-loading-spinner="el-icon-loading"
|
||||
element-loading-background="rgba(0, 0, 0, 0.8)"
|
||||
>
|
||||
<el-form :model="questionform" ref="question" label-width="300px" label-position="top">
|
||||
<el-divider content-position="center">REFEREE'S ASSESSMENT</el-divider>
|
||||
<el-row :gutter="24">
|
||||
@@ -163,12 +250,14 @@
|
||||
</el-radio-group>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-collapse-item name="1" style="margin-top: -10px;">
|
||||
<template slot="title">
|
||||
<i class="el-icon-edit"></i>Comments/ Suggestions
|
||||
</template>
|
||||
<el-input type="textarea" placeholder="please input content"
|
||||
v-model="questionform.qu9contents" :rows="4"></el-input>
|
||||
<el-collapse-item name="1" style="margin-top: -10px">
|
||||
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
|
||||
<el-input
|
||||
type="textarea"
|
||||
placeholder="please input content"
|
||||
v-model="questionform.qu9contents"
|
||||
:rows="4"
|
||||
></el-input>
|
||||
</el-collapse-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
@@ -176,7 +265,6 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-collapse>
|
||||
<el-form-item label="7.Is the Abstract accurate and concise?">
|
||||
<el-col :span="4">
|
||||
@@ -186,12 +274,14 @@
|
||||
</el-radio-group>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-collapse-item name="2" style="margin-top: -10px;">
|
||||
<template slot="title">
|
||||
<i class="el-icon-edit"></i>Comments/ Suggestions
|
||||
</template>
|
||||
<el-input type="textarea" placeholder="please input content"
|
||||
v-model="questionform.qu10contents" :rows="4"></el-input>
|
||||
<el-collapse-item name="2" style="margin-top: -10px">
|
||||
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
|
||||
<el-input
|
||||
type="textarea"
|
||||
placeholder="please input content"
|
||||
v-model="questionform.qu10contents"
|
||||
:rows="4"
|
||||
></el-input>
|
||||
</el-collapse-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
@@ -203,12 +293,14 @@
|
||||
</el-radio-group>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-collapse-item name="3" style="margin-top: -10px;">
|
||||
<template slot="title">
|
||||
<i class="el-icon-edit"></i>Comments/ Suggestions
|
||||
</template>
|
||||
<el-input type="textarea" placeholder="please input content"
|
||||
v-model="questionform.qu11contents" :rows="4"></el-input>
|
||||
<el-collapse-item name="3" style="margin-top: -10px">
|
||||
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
|
||||
<el-input
|
||||
type="textarea"
|
||||
placeholder="please input content"
|
||||
v-model="questionform.qu11contents"
|
||||
:rows="4"
|
||||
></el-input>
|
||||
</el-collapse-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
@@ -220,12 +312,14 @@
|
||||
</el-radio-group>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-collapse-item name="4" style="margin-top: -10px;">
|
||||
<template slot="title">
|
||||
<i class="el-icon-edit"></i>Comments/ Suggestions
|
||||
</template>
|
||||
<el-input type="textarea" placeholder="please input content"
|
||||
v-model="questionform.qu12contents" :rows="4"></el-input>
|
||||
<el-collapse-item name="4" style="margin-top: -10px">
|
||||
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
|
||||
<el-input
|
||||
type="textarea"
|
||||
placeholder="please input content"
|
||||
v-model="questionform.qu12contents"
|
||||
:rows="4"
|
||||
></el-input>
|
||||
</el-collapse-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
@@ -237,12 +331,14 @@
|
||||
</el-radio-group>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-collapse-item name="5" style="margin-top: -10px;">
|
||||
<template slot="title">
|
||||
<i class="el-icon-edit"></i>Comments/ Suggestions
|
||||
</template>
|
||||
<el-input type="textarea" placeholder="please input content"
|
||||
v-model="questionform.qu13contents" :rows="4"></el-input>
|
||||
<el-collapse-item name="5" style="margin-top: -10px">
|
||||
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
|
||||
<el-input
|
||||
type="textarea"
|
||||
placeholder="please input content"
|
||||
v-model="questionform.qu13contents"
|
||||
:rows="4"
|
||||
></el-input>
|
||||
</el-collapse-item>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
@@ -263,10 +359,10 @@
|
||||
<el-radio-button label="9"></el-radio-button>
|
||||
<el-radio-button label="10"></el-radio-button>
|
||||
</el-radio-group>
|
||||
<span style="margin-left: 20px;">>Your score:{{questionform.rated}}</span>
|
||||
<span style="margin-left: 20px">>Your score:{{ questionform.rated }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="REFEREE'S RECOMMENDATIONS" prop="recommend">
|
||||
<el-radio-group v-model="questionform.recommend" style="line-height: 30px;">
|
||||
<el-radio-group v-model="questionform.recommend" style="line-height: 30px">
|
||||
<el-radio :label="1">Accept with minor revision</el-radio>
|
||||
<br />
|
||||
<el-radio :label="2">Accept with major revision</el-radio>
|
||||
@@ -277,7 +373,7 @@
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="OTHER SPECIFIC CRITICISMS">
|
||||
<el-radio-group v-model="questionform.other" style="line-height: 30px;">
|
||||
<el-radio-group v-model="questionform.other" style="line-height: 30px">
|
||||
<el-radio :label="1">Imperfect style</el-radio>
|
||||
<br />
|
||||
<el-radio :label="2">Too long</el-radio>
|
||||
@@ -288,25 +384,22 @@
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="Comments for the Authors">
|
||||
<el-input type="textarea" placeholder="please input content" v-model="questionform.comment"
|
||||
:rows="8"></el-input>
|
||||
<el-input type="textarea" placeholder="please input content" v-model="questionform.comment" :rows="8"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Confidential Comments to the Editor">
|
||||
<el-input type="textarea" placeholder="please input content" v-model="questionform.confident"
|
||||
:rows="8"></el-input>
|
||||
<el-input type="textarea" placeholder="please input content" v-model="questionform.confident" :rows="8"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Please choose disclose your name or remain anonymous.">
|
||||
<el-radio-group v-model="questionform.is_anonymous" style="line-height: 30px;">
|
||||
<el-radio-group v-model="questionform.is_anonymous" style="line-height: 30px">
|
||||
<el-radio :label="0">Disclose name</el-radio>
|
||||
<br />
|
||||
<el-radio :label="1">Remain anonymous</el-radio>
|
||||
</el-radio-group>
|
||||
<p style="line-height: 20px;color: #aaa;font-size: 13px;margin: 12px 0 0 0;">
|
||||
If you agree to disclose your name, we will acknowledge you by name in the published
|
||||
PDF. However, if you prefer to remain anonymous, we will still express our gratitude
|
||||
by thanking you as an anonymous reviewer.
|
||||
<br />For example, {{txt_mess.title}} would like to thank AAAAAAAA, BBBBBBBB, and other anonymous reviewers for their
|
||||
invaluable contributions to the peer review process of this paper.
|
||||
<p style="line-height: 20px; color: #aaa; font-size: 13px; margin: 12px 0 0 0">
|
||||
If you agree to disclose your name, we will acknowledge you by name in the published PDF. However, if you prefer
|
||||
to remain anonymous, we will still express our gratitude by thanking you as an anonymous reviewer.
|
||||
<br />For example, {{ txt_mess.title }} would like to thank AAAAAAAA, BBBBBBBB, and other anonymous reviewers
|
||||
for their invaluable contributions to the peer review process of this paper.
|
||||
</p>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@@ -319,10 +412,16 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import commonMajorTableList from '../page/components/major/tableList.vue';
|
||||
export default {
|
||||
components: {
|
||||
commonMajorTableList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
majorData: [],
|
||||
baseUrl: this.Common.baseUrl,
|
||||
articleBaseInfo: {},
|
||||
questionform: {
|
||||
uid: 0,
|
||||
articleId: this.$route.query.id,
|
||||
@@ -390,6 +489,7 @@
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.initArticle();
|
||||
this.getdate();
|
||||
this.initreviewerList();
|
||||
},
|
||||
@@ -399,6 +499,17 @@
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
initArticle() {
|
||||
this.$api
|
||||
.post('api/Article/getArticleDetail', {
|
||||
articleId: this.query.article_id,
|
||||
human: 'editor'
|
||||
})
|
||||
.then((res) => {
|
||||
this.articleBaseInfo = res.article;
|
||||
});
|
||||
},
|
||||
|
||||
// 获取编辑列表数据
|
||||
getdate() {
|
||||
this.$api
|
||||
@@ -475,11 +586,12 @@
|
||||
addArtRev() {
|
||||
if (this.questionform.uid == 0) {
|
||||
this.$message.error('Please select a reviewer');
|
||||
} else if (this.questionform.is_anonymous == "" && this.questionform.is_anonymous != "0") {
|
||||
} else if (this.questionform.is_anonymous == '' && this.questionform.is_anonymous != '0') {
|
||||
this.$message.error('Please choose disclose your name or remain anonymous.');
|
||||
} else {
|
||||
this.loading = true;
|
||||
this.$api.post('api/Article/addArtRev', this.questionform)
|
||||
this.$api
|
||||
.post('api/Article/addArtRev', this.questionform)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
if (res.code == 0) {
|
||||
@@ -496,7 +608,7 @@
|
||||
},
|
||||
// 添加推荐审稿人
|
||||
openSuggRev() {
|
||||
this.AddSuggest = true
|
||||
this.AddSuggest = true;
|
||||
},
|
||||
selSuggest(e) {
|
||||
this.loading = true;
|
||||
@@ -509,7 +621,7 @@
|
||||
this.loading = false;
|
||||
if (res.code == 0) {
|
||||
this.$message.success('Add Success');
|
||||
this.AddSuggest = false
|
||||
this.AddSuggest = false;
|
||||
this.getdate();
|
||||
} else {
|
||||
this.$message.error('Add Error');
|
||||
@@ -596,14 +708,29 @@
|
||||
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;
|
||||
},
|
||||
return Y + M + D + '<br/>' + h + ':' + m + ':' + s;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.container {
|
||||
padding: 10px;
|
||||
}
|
||||
.reviewerListBox {
|
||||
color: rgba(0, 119, 184, 1);
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
}
|
||||
.reviewerListBox .labelTitle {
|
||||
color: rgba(0, 119, 184, 1);
|
||||
}
|
||||
.handle-box {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
@@ -651,4 +778,16 @@
|
||||
.el-table .red-row {
|
||||
background: #f05555;
|
||||
}
|
||||
.tab_tie_col {
|
||||
margin-bottom: 5px;
|
||||
color: #333;
|
||||
word-wrap: break-word;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
.tab_tie_col > span {
|
||||
color: #888;
|
||||
margin: 0 5px 0 0;
|
||||
font-size: 13px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div class="block commonMajor" style="width: 100%;overflow: hidden;">
|
||||
<el-button type="primary" plain size="mini" @click="handleAdd" style="float:right;margin-bottom: 20px;"><i class="el-icon-plus" ></i>Add Field </el-button>
|
||||
<div class="block commonMajor" style="width: 100%; overflow: hidden">
|
||||
<div v-if="!disabled">
|
||||
<el-button type="primary" plain size="mini" @click="handleAdd" style="float: right; margin-bottom: 20px"
|
||||
><i class="el-icon-plus"></i>Add Field
|
||||
</el-button>
|
||||
<div
|
||||
v-for="(field, index) in fields"
|
||||
:key="index"
|
||||
@@ -20,8 +23,32 @@
|
||||
></el-cascader>
|
||||
|
||||
<!-- Delete button -->
|
||||
<el-button size="mini" type="danger" style="margin-left: 10px;" @click="handleDelete(index)"><i class="el-icon-delete"></i></el-button>
|
||||
<el-button size="mini" type="danger" style="margin-left: 10px" @click="handleDelete(index)"
|
||||
><i class="el-icon-delete"></i
|
||||
></el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
|
||||
<div
|
||||
v-for="(field, index) in fields"
|
||||
:key="index"
|
||||
class="cascader-container"
|
||||
style="display: flex; align-items: center; justify-content: space-between"
|
||||
>
|
||||
<span style="margin-right: 10px; font-size: 12px; color: #006699; font-weight: bold">Field {{ Number(index + 1) }} :</span>
|
||||
|
||||
|
||||
|
||||
<div style="width: calc(100% - 60px)">
|
||||
{{field.str.replace('Medicine >', '').trim() }}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- <el-dialog title="Add Field " :visible.sync="coreVisible1" width="780px" :close-on-click-modal="false">
|
||||
<el-form :model="coreForm1" :rules="rules1" ref="core_Form1" label-width="140px" >
|
||||
<el-form-item prop="major">
|
||||
@@ -53,17 +80,19 @@ export default {
|
||||
list: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
list: {
|
||||
handler(e) {
|
||||
|
||||
this.fields=this.list.length>0?[...this.list]:[{}]
|
||||
this.fields = this.list.length > 0 ? [...this.list] : [{}];
|
||||
},
|
||||
immediate: true
|
||||
},
|
||||
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -88,7 +117,7 @@ export default {
|
||||
this.$refs[`cascader${i}`][0].dropDownVisible = false;
|
||||
this.coreForm1.majorList = this.fields[i].selectedValue;
|
||||
|
||||
this.$emit('load',this.fields)
|
||||
this.$emit('load', this.fields);
|
||||
|
||||
this.$forceUpdate();
|
||||
});
|
||||
@@ -112,7 +141,7 @@ this.coreForm1.majorList = this.fields[i].selectedValue;
|
||||
this.$message.success('Personal information modified successfully!');
|
||||
this.coreVisible1 = false;
|
||||
// this.tipVisible = false;
|
||||
this.$emit('load')
|
||||
this.$emit('load');
|
||||
} else {
|
||||
this.$message.error(res.msg);
|
||||
}
|
||||
@@ -131,7 +160,7 @@ this.coreForm1.majorList = this.fields[i].selectedValue;
|
||||
this.$nextTick(() => {
|
||||
// this.fields=[]
|
||||
this.fields.push({ selectedValue: [] }); // 添加一个新的字段
|
||||
this.$emit('load',this.fields)
|
||||
this.$emit('load', this.fields);
|
||||
// this.coreVisible1 = true;
|
||||
});
|
||||
},
|
||||
@@ -139,7 +168,7 @@ this.coreForm1.majorList = this.fields[i].selectedValue;
|
||||
// 删除指定的 Cascader
|
||||
handleDelete(index) {
|
||||
this.fields.splice(index, 1); // 删除指定索引的字段
|
||||
this.$emit('load',this.fields)
|
||||
this.$emit('load', this.fields);
|
||||
},
|
||||
|
||||
// 获取 Cascader 配置
|
||||
|
||||
147
src/components/page/components/major/tableList.vue
Normal file
147
src/components/page/components/major/tableList.vue
Normal file
@@ -0,0 +1,147 @@
|
||||
<template>
|
||||
<div>
|
||||
<div
|
||||
@click="disabled?'':BoxMajor()"
|
||||
v-if="user_id"
|
||||
style="display: flex; align-items: center; justify-content: space-between;"
|
||||
:style="{ cursor: disabled ? '' : 'pointer' }"
|
||||
>
|
||||
<!-- 使用 user_id 来获取用户的 majorData -->
|
||||
<div>
|
||||
<div v-if="!loading" class="majorDataBox">
|
||||
<p v-for="(v, i) in majorData" style="border-top: 1px solid #b3d8ff">
|
||||
<span style="font-weight: bold">{{ i + 1 }}.</span>
|
||||
{{ v.major_title.replace('Medicine >', '').trim() }}
|
||||
</p>
|
||||
</div>
|
||||
<div v-else>
|
||||
<span>Loading...</span>
|
||||
<!-- 如果数据还在加载,显示 "Loading..." -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<b style="margin-left: 10px; color: #006699" class="el-icon-edit" v-if="!disabled"></b>
|
||||
</div>
|
||||
|
||||
<el-dialog title="Edit Research areas" :visible.sync="majorBox" width="800px">
|
||||
<el-form ref="remark" :model="majorMes" label-width="120px">
|
||||
<el-form-item label="Reviewer :">
|
||||
<p style="line-height: 20px; margin-top: 6px">
|
||||
<span style="color: #333; font-weight: bold">{{ majorMes.realname }}</span>
|
||||
( {{ majorMes.email }} )
|
||||
</p>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="Email :">
|
||||
<p style="line-height: 20px; margin-top: 6px">{{ majorMes.email }}</p>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="Research areas :">
|
||||
<common-major-list :list="majorValueList" @load="(e) => (this.majorValueList = e)"></common-major-list>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="majorBox = false">Cancel</el-button>
|
||||
<el-button type="primary" @click="saveMajor">Save</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 评级弹出框 -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
components: {},
|
||||
props: ['user_id','baseInfo','disabled'],
|
||||
data() {
|
||||
return {
|
||||
majorValueList: [],
|
||||
majorData: [],
|
||||
majorMes: {},
|
||||
majorBox: false,
|
||||
loading: false,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.loading = true; // 开始加载数据
|
||||
// this.initMajor()
|
||||
},
|
||||
mounted() {
|
||||
this.fetchMajorData(this.user_id); // 加载第一个用户的数据
|
||||
},
|
||||
methods: {
|
||||
BoxMajor() {
|
||||
this.majorBox = true;
|
||||
this.majorMes.realname = this.baseInfo.realname;
|
||||
this.majorMes.user_id = this.baseInfo.user_id;
|
||||
this.majorMes.email = this.baseInfo.email;
|
||||
this.majorValueList = [...this.majorData].map((item) => ({
|
||||
selectedValue: Array.isArray(item.shu)
|
||||
? item.shu
|
||||
: typeof item.shu === 'string'
|
||||
? item.shu.split(',').map(Number)
|
||||
: [item.shu]
|
||||
}));
|
||||
},
|
||||
async fetchMajorData(userId) {
|
||||
|
||||
// if (!this.majorData[userId]) {
|
||||
// 判断是否已经加载过该用户的数据
|
||||
this.majorData = await this.getMajorData(userId);
|
||||
this.$forceUpdate()
|
||||
// }
|
||||
},
|
||||
// 修改标记
|
||||
async getMajorData(userId) {
|
||||
try {
|
||||
const res = await this.$api.post('api/Reviewer/getUserField', { user_id: userId });
|
||||
this.loading = false; // 开始加载数据
|
||||
if (res.status === 1) {
|
||||
return res.data; // 返回数据
|
||||
} else {
|
||||
return []; // 如果没有数据,返回空数组
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error fetching data:', error);
|
||||
return []; // 如果发生错误,返回空数组
|
||||
}
|
||||
|
||||
},
|
||||
saveMajor() {
|
||||
this.$api
|
||||
.post('api/Reviewer/updateUserField', {
|
||||
user_id: this.majorMes.user_id,
|
||||
user_field: this.majorValueList.map((item) => item.selectedValue[item.selectedValue.length - 1]).toString(',')
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.status == 1) {
|
||||
this.$message.success('Success');
|
||||
this.majorBox = false;
|
||||
this.fetchMajorData(this.majorMes.user_id);
|
||||
} else {
|
||||
this.$message.error(res.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.deteleBtn {
|
||||
color: #ce1111;
|
||||
margin-left: 18px;
|
||||
}
|
||||
|
||||
.deteleBtn i {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.deteleBtn:hover {
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
.majorDataBox p:nth-child(1) {
|
||||
border-top: none !important;
|
||||
}
|
||||
</style>
|
||||
@@ -208,27 +208,7 @@
|
||||
</el-table-column> -->
|
||||
<el-table-column label="Research areas" width="300">
|
||||
<template slot-scope="scope">
|
||||
<div
|
||||
@click="BoxMajor(scope.row, majorData[scope.row.user_id])"
|
||||
v-if="scope.row.user_id"
|
||||
style="display: flex; align-items: center; justify-content: space-between; cursor: pointer"
|
||||
>
|
||||
<!-- 使用 user_id 来获取用户的 majorData -->
|
||||
<div>
|
||||
<div v-if="majorData[scope.row.user_id]" class="majorDataBox">
|
||||
<p v-for="(v, i) in majorData[scope.row.user_id]" style="border-top: 1px solid #b3d8ff">
|
||||
<span style="font-weight: bold">{{ i + 1 }}.</span>
|
||||
{{ v.major_title.replace('Medicine >', '').trim() }}
|
||||
</p>
|
||||
</div>
|
||||
<div v-else>
|
||||
<span>Loading...</span>
|
||||
<!-- 如果数据还在加载,显示 "Loading..." -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<b style="margin-left: 10px; color: #006699" class="el-icon-edit"></b>
|
||||
</div>
|
||||
<commonMajorTableList :user_id="scope.row.user_id" :baseInfo="scope.row" :key="scope.row.user_id"></commonMajorTableList>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
@@ -496,9 +476,11 @@
|
||||
const currentYear = new Date().getFullYear();
|
||||
var ReviewTime = `(${currentYear - 2}–${currentYear})`;
|
||||
import commonReviewer from '../page/components/reviewerList/add.vue';
|
||||
import commonMajorTableList from '../page/components/major/tableList.vue';
|
||||
export default {
|
||||
components: {
|
||||
commonReviewer
|
||||
commonReviewer,
|
||||
commonMajorTableList,
|
||||
},
|
||||
|
||||
data() {
|
||||
@@ -778,7 +760,7 @@ export default {
|
||||
if (res.code == 0) {
|
||||
this.tableData = res.data;
|
||||
for (var i = 0; i < this.tableData.length; i++) {
|
||||
this.fetchMajorData(this.tableData[i].user_id); // 加载第一个用户的数据
|
||||
// this.fetchMajorData(this.tableData[i].user_id); // 加载第一个用户的数据
|
||||
this.getScoreData(i, this.tableData[i].score);
|
||||
}
|
||||
this.link_Total = res.total || 0;
|
||||
|
||||
Reference in New Issue
Block a user