This commit is contained in:
xulu
2022-03-10 17:34:35 +08:00
parent 4f5e6e1f78
commit a2a8a06ff6
44 changed files with 9609 additions and 969 deletions

BIN
dist.rar

Binary file not shown.

View File

@@ -1,10 +1,15 @@
<template> <template>
<div id="app"> <div id="app">
<router-view></router-view> <router-view></router-view>
</div> <!-- <keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view> -->
</div>
</template> </template>
<style> <style>
@import "./assets/css/main.css"; @import "./assets/css/main.css";
@import "./assets/css/color-dark.css"; /*深色主题*/ @import "./assets/css/color-dark.css";
/*@import "./assets/css/theme-green/color-green.css"; 浅绿色主题*/ /*深色主题*/
</style> /*@import "./assets/css/theme-green/color-green.css"; 浅绿色主题*/
</style>

BIN
src/assets/css/Charisb.ttf Normal file

Binary file not shown.

View File

@@ -13,8 +13,11 @@ body,
} }
body { body {
font-family: 'PingFang SC', "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif; /* font-family: 'PingFang SC', "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif;
font-family: 'Noto Sans', sans-serif; font-family: 'Noto Sans', sans-serif; */
word-wrap: break-word;
word-break: normal;
font-family: "Helvetica Neue For Number", "Elsevier Gulliver", Georgia, serif;
} }
a { a {
@@ -261,13 +264,619 @@ a {
} }
/* 欢迎句 */ /* 欢迎句 */
.mes_alert{ .mes_alert {
background-color: #e1edf3 !important; background-color: #e1edf3 !important;
padding: 12px 20px 12px 12px !important; padding: 12px 20px 12px 12px !important;
color: #006699 !important; color: #006699 !important;
font-size: 14px !important; font-size: 14px !important;
} }
.mes_alert .el-alert__description{
.mes_alert .el-alert__description {
color: #006699 !important; color: #006699 !important;
font-size: 13px !important; font-size: 13px !important;
} }
/* 编辑分步骤稿件流程 */
@font-face {
font-family: 'Helvetica Neue For Number';
src: url(Charisb.ttf);
unicode-range: U+30-39;
}
.container_state {
overflow: hidden;
padding: 0 15px 15px 15px;
color: #333;
min-width: 800px;
font-size: 14px;
/* font-family: NexusSans, Arial, Helvetica, Lucida Sans Unicode, Microsoft Sans Serif, Segoe UI Symbol, STIXGeneral, Cambria Math, Arial Unicode MS, sans-serif; */
font-family: "Helvetica Neue For Number", "Elsevier Gulliver", Georgia, serif;
}
.art_state_text {
font-family: "Helvetica Neue For Number", "Elsevier Gulliver", Georgia, serif;
border-radius: 5px;
padding: 10px 15px 25px 15px;
line-height: 19px;
font-size: 12px;
color: #888;
}
.art_state_text>p:nth-child(1) b {
color: #006699;
}
.art_state_ {
border: 1px solid #dcdfe6;
border-radius: 5px;
background-color: #fff;
padding: 20px;
}
.art_state_message>h3,
.art_file>h3,
.art_state_repet>h3,
.art_state_remark>h3,
.art_revlist>h3,
.art_reviewer>h3,
.art_state_btn>h3 {
font-size: 16px;
margin: 5px 0 30px 0;
letter-spacing: -0.8px;
}
.art_state_repet>h3,
.art_state_btn>h3,
.art_reviewer>h3 {
color: #006699;
}
.art_state_message {
margin: 0 0 0 0;
}
.art_state_message .auth_mess {
margin: 0 0 0 30px;
}
.art_state_message .auth_mess h4 {
margin: 0 0 5px 0;
}
.art_state_message .auth_mess>div {
margin: 0 0 15px 0;
}
.art_state_message .auth_mess>div p {
margin: 0 0 3px 0;
}
.art_state_message p {
margin: 0 0 15px 30px;
line-height: 22px;
overflow: hidden;
}
.art_state_message p>font {
color: #777;
}
.art_state_message p>b {
font-weight: normal;
margin: 0 0 0 5px;
word-wrap: break-word;
word-break: normal;
color: #333;
}
.art_state_message>div.art_state_message_id {
border-bottom: 1px solid #eee;
padding: 0 0 15px 5px;
margin: 0 0 30px 0;
}
.art_state_message .det_cssep {
background-color: #006699;
color: #fff;
font-size: 12px;
margin: 0 0 0 15px;
padding: 2px 5px;
border-radius: 5px;
cursor: pointer;
font-style: normal;
}
.art_state_message .det_cssep:hover {
text-decoration: underline;
}
.auth_colla {
margin: 0 0 15px 0;
}
.auth_colla .el-collapse-item__arrow {
position: absolute;
left: 45px;
color: #006699;
font-weight: bolder;
font-size: 18px;
}
.auth_colla .el-collapse-item__header {
padding-left: 30px;
line-height: 18px;
}
.auth_colla_new .el-collapse-item__arrow {
left: 25px;
}
.editor_tree {
margin: 20px 0 0 10px;
}
.editor_tree .el-timeline-item__node--large {
width: 30px;
height: 30px;
}
.editor_tree .el-timeline-item__wrapper {
padding-left: 0;
}
.editor_tree .el-timeline-item__timestamp.is-top {
padding-top: 10px;
margin: 0 0 13px 45px;
font-size: 14px;
}
.editor_tree .el-timeline-item__content {
margin: 10px 0 0 45px;
}
.editor_tree .el-timeline-item__tail {
height: auto;
bottom: 15px;
top: 45px;
border-left: 3px solid #E4E7ED;
/* border-left: 2px solid #66a3c2; */
left: 12px;
}
.editor_tree p>font>b {
margin-left: 5px;
}
.kuang_communtion,
.kuang_tracking {
border: 1px solid #dcdfe6;
padding: 20px;
background-color: #fff;
border-radius: 5px;
}
.kuang_communtion {
margin: 0 0 30px 0;
}
.kuang_tracking {}
.kuang_communtion>h2,
.kuang_tracking>h2 {
font-size: 18px;
margin: 0 0 15px 0;
letter-spacing: -0.8px;
}
.kuang_communtion>h2>a {
float: right;
background-color: rgb(0, 102, 153);
color: rgb(255, 255, 255);
font-size: 12px;
padding: 2px 5px;
font-weight: normal;
border-radius: 5px;
cursor: pointer;
}
.kuang_communtion>h2>a:hover {
text-decoration: underline;
}
.kuang_communtion .kuang_communtion_conmt {
max-height: 350px;
overflow-y: auto;
}
.kuang_communtion_input {
margin-top: 40px;
position: relative;
}
.kuang_communtion_input>p {
position: absolute;
height: 1px;
background-color: #dcdfe6;
top: -25px;
left: -12px;
right: -12px;
}
.kuang_communtion_input>div.kuang_communtion_input_text {
color: #aaa;
font-size: 12px;
position: relative;
margin: 0 65px 0 0;
padding: 8px 0 0 0;
line-height: 16px;
letter-spacing: -0.8px;
}
.kuang_communtion_input>div>button {
position: absolute;
top: 8px;
right: -65px;
}
.art_file {
border-top: 1px solid #eee;
padding: 20px 0 0 0;
margin: 25px 0 0 0;
}
.art_file>h4 {
margin: 10px 0 5px 0;
float: left;
width: 116px;
text-align: right;
}
.art_file>p {
margin: 6px 0 0 20px;
margin-bottom: 10px;
float: left;
}
.art_file>p>a {
color: #333;
display: block;
margin: 0 0 10px 0;
}
.art_file>p>a:hover {
text-decoration: underline;
}
.art_file>p>a>img {
width: 15px;
vertical-align: text-bottom;
margin: 0 10px 0 0;
}
.art_file>p>a>span>font {
color: #888;
margin: 0 5px 0 0;
font-size: 13px;
}
.art_file>p>a>span>i {
font-size: 12px;
color: #888;
margin: 0 0 0 15px;
font-style: normal;
}
.art_file>p>a>span>i>i {
margin: 0 8px 0 0;
}
.art_file .download{
font-weight: bold;
color: #75abf1;
margin: 0 0 0 18px;
}
.art_revlist {
border-top: 1px solid #eee;
padding: 20px 0 0 0;
margin: 10px 0 0 0;
}
.art_reviewer {
margin: 15px 0 20px 0;
padding: 0 0 10px 0;
border-bottom: 1px solid #cce7f3;
}
.talk_aued {
width: 85%;
margin-bottom: 10px;
}
.talk_aued>p {
margin-left: 5px;
}
.talk_aued>.el-card {
margin: 8px 0 0 0;
}
.talk_aued>b {
display: block;
font-weight: normal;
font-size: 12px;
margin: 2px 0 0 0;
text-align: right;
color: #aaa;
}
.talk_aued .el-card__body {
padding: 6px 12px;
}
.talk_edit {
margin-left: 15%;
}
.talk_edit>p {
text-align: right;
margin-right: 5px;
}
.art_caozuo_ {
border: 1px solid #cce7f3;
background-color: #eef6fb;
margin-top: 30px;
padding: 20px;
border-radius: 5px;
position: relative;
}
.art_file_btn {}
.art_file_btn .btn_remarks {
display: inline-block;
border: 1px solid #fff;
margin: 0 20px 0 0;
padding: 8px 12px;
cursor: pointer;
font-weight: bolder;
color: #fff;
}
.art_file_btn .art_file_btn_text {
line-height: 18px;
font-size: 12px;
color: #888;
margin: 20px 0 20px 0;
}
.art_state_repet {
margin: 0 0 20px 0;
padding: 0 0 25px 0;
border-bottom: 1px solid #cce7f3;
}
.art_state_repet>p {
margin: -10px 0 0 30px;
line-height: 18px;
font-size: 12px;
color: #888;
}
.art_state_repet>p>b {
margin: 0 0 0 15px;
font-size: 20px;
color: #333;
}
.art_state_repet>p>img {
width: 15px;
vertical-align: baseline;
margin: 0 0 0 20px;
cursor: pointer;
}
.art_state_btn {
border-radius: 5px;
margin: 10px 0 5px 0;
}
.art_state_btn div {
display: inline-block;
border: 1px solid #fff;
border-radius: 5px;
margin: 0 20px 0 0;
padding: 8px 12px;
cursor: pointer;
font-size: 16px;
font-weight: bolder;
color: #fff;
}
.art_state_btn div:nth-last-child(1) {
margin: 0;
}
.art_state_btn div.a_s_t1 {
background-color: #f75822;
}
.art_state_btn div.a_s_t1:hover {
background-color: #c1451b;
}
.art_state_btn div.a_s_t2 {
background-color: #0ebee1;
}
.art_state_btn div.a_s_t2:hover {
background-color: #0c92ad;
}
.art_state_btn div.a_s_t3 {
background-color: #f3170f;
}
.art_state_btn div.a_s_t3:hover {
background-color: #d31d16;
}
.art_state_btn div.a_s_t4 {
background-color: #5a90e1;
}
.art_state_btn div.a_s_t4:hover {
background-color: #4a73b1;
}
.art_state_btn div.a_s_t5 {
background-color: #91cc75;
}
.art_state_btn div.a_s_t5:hover {
background-color: #73a35c;
}
.art_state_btn div.a_s_t6 {
background-color: #27727B;
}
.art_state_btn div.a_s_t6:hover {
background-color: #1a4e54;
}
.art_state_btn div:hover {
color: #fff;
}
.art_state_btn div i {
margin: 0 8px 0 0;
font-weight: bolder;
}
.art_caozuo_ div.btn_remarks {
position: absolute;
right: -22px;
top: -2px;
font-size: 13px;
background-color: #006699;
border-radius: 0px;
border-top-right-radius: 5px;
}
.art_caozuo_ div.btn_remarks:hover {
text-decoration: underline;
background-color: #045883;
}
.art_state_remark {
margin: 30px 0 0 0;
border: 1px solid #dcdfe6;
border-radius: 5px;
padding: 20px;
}
.art_state_remark>div {
font-size: 13px;
color: #888;
margin: -10px 0 35px 30px;
}
.art_state_remark>p {
line-height: 24px;
margin: -10px 0 0 30px;
}
.art_state_remark img {
width: 15px;
vertical-align: baseline;
margin: 0 0 0 10px;
cursor: pointer;
}
.rev_list {
margin: 0 0 0 20px;
}
.rev_list>p {
margin: 0 0 15px 0;
}
.rev_list>p>a {
margin: 0 0 0 20px;
color: #006699;
cursor: pointer;
}
.rev_list>p>a:hover {
text-decoration: underline;
}
.rev_list>p>a>i {
margin: 0 5px 0 0;
}
.revi_tab_sty th {
background-color: #f5f7fa !important;
color: #006699 !important;
}
.revi_pag_sty.is-background .el-pager li:not(.disabled).active {
background-color: #e4eaf3 !important;
color: #006699 !important;
border: 1px solid #e5e6e9 !important;
}
.revi_tab_sty .rev_lise {
color: #006699;
font-weight: bold;
cursor: pointer;
}
.revi_tab_sty .rev_lise:hover {
text-decoration: underline;
}
.add_revi {
background-color: #f5f7fa !important;
border-color: #e5e6e9 !important;
color: #006699 !important;
font-weight: bold;
}
.add_revi i {
font-weight: bold;
}
.add_revi:hover {
text-decoration: underline !important;
}
.text_upload_tip {
display: inline-block;
line-height: 32px;
margin: 0 0 0 15px;
color: #888 !important;
vertical-align: text-bottom;
}

BIN
src/assets/img/liucheng.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 793 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -85,6 +85,7 @@
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<!-- <el-dropdown-item divided command="personcenter">Personal Center</el-dropdown-item> -->
<el-dropdown-item divided command="loginout">{{ $t('system.loyout') }}</el-dropdown-item> <el-dropdown-item divided command="loginout">{{ $t('system.loyout') }}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
@@ -162,6 +163,11 @@
methods: { methods: {
// 用户名下拉菜单选择事件 // 用户名下拉菜单选择事件
handleCommand(command) { handleCommand(command) {
// 个人中心
if (command == 'personcenter') {
this.$router.push('/percenter');
}
// 退出系统
if (command == 'loginout') { if (command == 'loginout') {
localStorage.removeItem('U_role'); localStorage.removeItem('U_role');
localStorage.removeItem('U_id'); localStorage.removeItem('U_id');
@@ -319,7 +325,7 @@
float: left; float: left;
height: 40px; height: 40px;
} }
.header .logo p { .header .logo p {
font-size: 12px; font-size: 12px;
text-align: center; text-align: center;

View File

@@ -99,6 +99,8 @@
</el-submenu> </el-submenu>
</template> </template>
<!-- 分角色链接 -->
<template v-if="this.userrole == 0"> <template v-if="this.userrole == 0">
<el-menu-item> <el-menu-item>
<a href="http://boss.tmrjournals.com/#/publition?Act=123" target="_blank" style="color: #bfcbd9;"> <a href="http://boss.tmrjournals.com/#/publition?Act=123" target="_blank" style="color: #bfcbd9;">

View File

@@ -81,7 +81,7 @@ const en = {
state3: 'Reject', state3: 'Reject',
state4: 'Revision', state4: 'Revision',
state5: 'Accepted ', state5: 'Accepted ',
state6: 'fininal decision', state6: 'Fininal decision',
act1: 'Dealing', act1: 'Dealing',
act2: 'Finished' act2: 'Finished'
}, },

View File

@@ -101,12 +101,14 @@
</div> </div>
<div class="join_link" v-if="this.usercap.includes('editor')"> <div class="join_link" v-if="this.usercap.includes('editor')">
<!-- 意见反馈联系我们 --> <!-- 意见反馈联系我们 -->
<p> <el-card style="width:100%;margin-top: 20px;" class="new_scard">
<font style="float: left;">Contact Us</font> <div slot="header" class="clearfix">
<b style="color: #606266;line-height: 20px;font-size: 13px;float: left;margin-left: 20px;cursor: unset;">New <span>Contact Us</span>
Zealand <br>Telephone: </div>
+64 02108293806 <br>Email: publisher@tmrjournals.com </b> <p>New Zealand</p>
</p> <p><b style="color: #666;font-size: 14px;cursor: text;">Telephone :</b> +64 02108293806</p>
<p><b style="color: #666;font-size: 14px;cursor: text;">Email:</b> publisher@tmrjournals.com</p>
</el-card>
</div> </div>
</el-col> </el-col>
<el-col :span="14"> <el-col :span="14">
@@ -128,13 +130,6 @@
</el-card> </el-card>
</el-col> </el-col>
<el-col :span="9"> <el-col :span="9">
<div v-if="!this.usercap.includes('editor')">
<el-link type="primary" href="/authorApplyReviewer" v-if="this.userrole != 0">
<div class="join_bth">
Apply to join the reviewer team
</div>
</el-link>
</div>
<div class="join_link" v-if="!this.usercap.includes('editor')"> <div class="join_link" v-if="!this.usercap.includes('editor')">
<!-- 如果你想投稿 请点击 --> <!-- 如果你想投稿 请点击 -->
<p v-if="this.usercap.includes('author')" style="white-space:nowrap">Click to <img src="../../assets/img/icon_9.png" <p v-if="this.usercap.includes('author')" style="white-space:nowrap">Click to <img src="../../assets/img/icon_9.png"
@@ -176,6 +171,13 @@
Zealand <br>Telephone: Zealand <br>Telephone:
+64 02108293806 <br>Email: publisher@tmrjournals.com </b> +64 02108293806 <br>Email: publisher@tmrjournals.com </b>
</p> --> </p> -->
<div v-if="!this.usercap.includes('editor')">
<el-link type="primary" href="/authorApplyReviewer" v-if="this.userrole != 0">
<div class="join_bth">
Apply to join the reviewer team
</div>
</el-link>
</div>
<el-card style="width:400px;margin-top: 30px;" class="new_scard"> <el-card style="width:400px;margin-top: 30px;" class="new_scard">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>Contact Us</span> <span>Contact Us</span>
@@ -186,6 +188,7 @@
</el-card> </el-card>
</div> </div>
</el-col> </el-col>
</el-col> </el-col>
<!--<el-col :span="12"> <!--<el-col :span="12">
@@ -324,7 +327,7 @@
} }
.top-content span { .top-content span {
font-family: Arial, Helvetica, sans-serif; /* font-family: Arial, Helvetica, sans-serif; */
display: block; display: block;
padding: 2px; padding: 2px;
font-size: 14px; font-size: 14px;

View File

@@ -451,6 +451,9 @@
}, { }, {
name: 'PROTOCOL', name: 'PROTOCOL',
value: 'PT' value: 'PT'
}, {
name: 'CASE SERIES',
value: 'CS',
}, { }, {
name: 'OTHERS', name: 'OTHERS',
value: 'O', value: 'O',

View File

@@ -416,6 +416,9 @@
case 'PT': case 'PT':
frag = 'PROTOCOL'; frag = 'PROTOCOL';
break; break;
case 'CS':
frag = 'CASE SERIES';
break;
default: default:
frag = 'OTHERS'; frag = 'OTHERS';
} }
@@ -670,7 +673,9 @@
}, },
quetrans() { quetrans() {
if (confirm('Your sure transfer your manuscript?')) { if (confirm('Your sure transfer your manuscript?')) {
this.$api.post('api/article/trans_manu', this.transinfo).then((res) => { this.$api
.post('api/article/trans_manu', this.transinfo)
.then((res) => {
this.$message.success('success'); this.$message.success('success');
this.$router.go(0); this.$router.go(0);
}); });
@@ -830,7 +835,7 @@
} }
.top-content span { .top-content span {
font-family: Arial, Helvetica, sans-serif; /* font-family: Arial, Helvetica, sans-serif; */
display: block; display: block;
padding: 2px; padding: 2px;
font-size: 14px; font-size: 14px;

View File

@@ -11,7 +11,7 @@
<el-row> <el-row>
<el-col :span="16"> <el-col :span="16">
<div class="form-box" v-loading="loading"> <div class="form-box" v-loading="loading">
<el-form ref="articleform" :model="form" label-width="200px"> <el-form ref="articleform" :model="form" label-width="140px">
<el-form-item label="Status"> <el-form-item label="Status">
<span>{{articleState}}</span> <span>{{articleState}}</span>
<el-button style="margin-left:10px;" type="text" @click="testvis" icon="el-icon-edit">change</el-button> <el-button style="margin-left:10px;" type="text" @click="testvis" icon="el-icon-edit">change</el-button>
@@ -24,7 +24,7 @@
<span>{{form.repetition}}%</span> <span>{{form.repetition}}%</span>
<el-button style="margin-left:10px;" type="text" @click="changeRepe" icon="el-icon-edit">change</el-button> <el-button style="margin-left:10px;" type="text" @click="changeRepe" icon="el-icon-edit">change</el-button>
</el-form-item> </el-form-item>
<el-form-item v-if="form.accept_sn != ''" label="Manusript ID"> <el-form-item v-if="form.accept_sn != ''" label="Manuscript ID">
<span>{{form.accept_sn}}</span> <span>{{form.accept_sn}}</span>
</el-form-item> </el-form-item>
<el-form-item label="Journal"> <el-form-item label="Journal">
@@ -255,7 +255,7 @@
</el-row> </el-row>
</div> </div>
<el-dialog title="edit" :visible.sync="editVisible" width="40%" v-loading="loading1"> <el-dialog title="edit" :visible.sync="editVisible" width="40%" v-loading="loading1">
<el-form ref="editform" :model="editform" label-width="80px"> <el-form ref="editform" :model="editform" label-width="90px">
<el-form-item label="state"> <el-form-item label="state">
<el-select v-model="editform.state" placeholder="Please select"> <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-option v-for="item in items" :key="item.state" :label="item.title" :value="item.state" :disabled="item.disabled"></el-option>
@@ -267,7 +267,7 @@
<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-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-select>
</el-form-item> </el-form-item>
<el-form-item label="editormsg"> <el-form-item label="editor msg">
<el-input type="textarea" rows="5" v-model="editform.editormsg" placeholder="feedback information"></el-input> <el-input type="textarea" rows="5" v-model="editform.editormsg" placeholder="feedback information"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -459,6 +459,9 @@
case 'PT': case 'PT':
frag = 'PROTOCOL'; frag = 'PROTOCOL';
break; break;
case 'CS':
frag = 'CASE SERIES';
break;
default: default:
frag = 'OTHERS'; frag = 'OTHERS';
} }
@@ -784,7 +787,6 @@
} }
.el-row { .el-row {
border-bottom: rgb(230, 211, 211) solid 1px;
margin-bottom: 5px; margin-bottom: 5px;
line-height: 3.5; line-height: 3.5;
} }

View File

@@ -0,0 +1,621 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-lx-calendar"></i> Manuscript Received
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="art_state_text">
<p style="margin-bottom: 10px;">
Dear editor, this manuscript (<b>{{form.accept_sn}}</b>) was submitted by the author (uploader: <b>{{form.username}}</b>)
at <b>1900 New Zealand time {{formatDateNewCHz(form.ctime)}}</b> to the journal <b>{{journal_me}}</b>.
Please check the content of the manuscript and start the process.
</p>
<p>
<b>On this page</b>
<br />1. You need to check whether the manuscript subject and type are within the scope of the journal.
<br />2. You need to check the plagiarism rate.
<br />3. You need to make sure the manuscript meets the ethical guidelines of the Committee on Publication
Ethics
(COPE).
</p>
</div>
<div class="container_state" v-loading="loading">
<el-row :gutter="30">
<el-col :span="24">
<div class="art_state_">
<div class="art_state_message">
<div class="art_state_message_id">
ID : <b style="margin-right: 60px;">{{form.accept_sn}}</b>
Status : <b>{{articleState}}</b>
</div>
<h3>Basic information</h3>
<p>
<font>Title :</font><b>{{form.title}}</b>
</p>
<p>
<font>Type :</font><b>{{myType}}</b>
</p>
<p v-show="form.type=='A'">
<font>Ethical Approval :</font><b>{{form.approval?'Yes':'No'}}</b>
</p>
<p>
<font>Journal :</font><b>{{journal_me}}</b>
</p>
<p v-if="form.special_num > 0">
<font>Special Issues :</font><b>{{ form.special_title }}</b>
</p>
<p>
<font>Major :</font><b>{{form.major}}</b>
</p>
<el-collapse v-model="activeNames" class="auth_colla">
<el-collapse-item :title="authorList_name" name="1">
<div v-for="(item, index) in form.authorList" class="auth_mess">
<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>
<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.address">
<font>Address : </font>{{item.address}}
</p>
<p v-if="item.company">
<font>Institution : </font>{{item.company}}
</p>
<p v-if="item.department">
<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>
<p>
<font>Abstrart :</font><b>{{form.abstrart}}</b>
</p>
<p>
<font>KeyWords :</font><b>{{form.keyWords}}</b>
</p>
<p v-if="form.fund">
<font>Fund :</font><b>{{form.fund}}</b>
</p>
</div>
<div class="art_file">
<h3 style="margin-bottom: 20px;">Files</h3>
<h4 v-if="coverLetterFileList">Cover letter : </h4>
<p v-if="coverLetterFileList">
<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" v-if="coverLetterFileList">
<h4 v-if="picturesAndTablesFileList">Figures : </h4>
<p v-if="picturesAndTablesFileList">
<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" v-if="picturesAndTablesFileList">
<h4>Title page : </h4>
<p>
<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">
<h4>Manuscirpt : </h4>
<p>
<a v-for="item in manuscirptFileList" :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">
</div>
</div>
<div class="art_caozuo_">
<div class="art_state_repet">
<h3>Repetition rate check</h3>
<p>
Dear editor
<br>According to the rules of ICMJE and COPE, you need to check the plagiarism rate of the manuscript.
<br>The manuscripts or papers in which the plagiarism is detected are handled based on the extent of the
plagiarism.
<br>&lt;30% Plagiarism: The manuscript will be given an ID and the manuscript is sent to the author for content
revision.
<br>&gt;30% Plagiarism: The manuscript will be rejected without review. The authors are advised to revise the
<br>manuscript and resubmit the manuscript.
</p>
<el-form ref="repetition" :model="repeform" label-width="150px" style="margin: 20px 0 0 15px;">
<el-form-item label="Repetition 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 text_upload_tip" slot="tip">Only pdf and word files can be uploaded(.pdf,.doc,.docx)</div>
</el-upload>
</el-form-item>
</el-form>
<el-button type="primary" @click="saveRepe" style="margin: 0 0 0 165px;">Save</el-button>
</div>
<div class="art_state_btn">
<h3>Please click the button to choose the next step following the editorial workflow.</h3>
<div class="a_s_t1" @click="testvis(1)">
With editor
</div>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
export default {
data() {
return {
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
items: '',
loading: false,
editVisible: false,
editbox: false,
reverse: false,
dialogFormVisible: false,
editortVisible: false,
questionform: {},
coverLetterFileList: [],
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
authorList_name: '',
review_Data: [],
Total_review: 0,
msgform: {
username: localStorage.getItem('U_name'),
article_id: this.$route.query.id,
ad_content: ''
},
query_review: {
articleId: this.$route.query.id,
pageIndex: 1,
pageSize: 10
},
editform: {
editname: localStorage.getItem('U_name'),
articleId: this.$route.query.id,
state: 0,
trsjournal: 0,
editormsg: ''
},
repeform: {
articleId: this.$route.query.id,
repefen: '',
zipurl: ''
},
activeNames: ['2'],
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: 5,
title: this.$t('artstate.state5')
},
{
state: 6,
title: this.$t('artstate.state6')
}
],
form: {
articleId: this.$route.query.id,
journal: '',
journalname: '',
username: '',
title: '',
accept_sn: '',
abstrart: '',
keyWords: '',
fund: '',
type: '',
major: '',
approval: false,
repetition: '',
manuscirpt: '',
remarks: '',
state: '',
ctime: '',
authorList: [],
transList: []
},
};
},
created: function() {
this.initarticle();
this.initFileList();
},
computed: {
myType: function() {
let frag = '';
switch (this.form.type) {
case "A":
frag = 'ARTICLE';
break;
case 'B':
frag = 'REVIEW';
break;
case 'C':
frag = 'CASE REPORT';
break;
case 'P':
frag = 'RESEARCH PROPOSAL';
break;
case 'N':
frag = 'NEWS';
break;
case 'T':
frag = 'COMMENT';
break;
case 'CT':
frag = 'CORRECTION';
break;
case 'HT':
frag = 'HYPOTHESIS';
break;
case 'PF':
frag = 'PREFACE';
break;
case 'ET':
frag = 'EDITORIAL';
break;
case 'RP':
frag = 'REPORT';
break;
case 'EF':
frag = 'EMPIRICAL FORMULA';
break;
case 'EM':
frag = 'EVIDENCE-BASED MEDICINE';
break;
case 'EC':
frag = 'EXPERT CONSENSUS';
break;
case 'LTE':
frag = 'LETTER TO EDITOR';
break;
case 'QI':
frag = 'QUESTIONNAIRE INVESTIGATION';
break;
case 'PT':
frag = 'PROTOCOL';
break;
default:
frag = 'OTHERS';
}
return frag;
},
manuscirptUrl: function() {
return this.baseUrl + this.form.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 = '';
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 6:
str = this.$t('artstate.state6');
break;
}
return str;
}
},
methods: {
//初始化文章信息
initarticle() {
this.$api
.post('api/Article/getArticleDetail', {
articleId: this.editform.articleId,
human: 'editor'
})
.then(res => {
this.form.username = res.article.account;
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.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.repetition = res.article.repetition;
this.form.remarks = res.article.remarks;
this.repeform.repefen = res.article.repetition;
this.editform.state = this.form.state = res.article.state;
this.form.ctime = res.article.ctime;
this.form.transList = res.transfer;
let alist = res.authors;
let alist_name = [];
for (let i in alist) {
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,
isSuper: alist[i].is_super == 1 ? true : false,
isReport: alist[i].is_report == 1 ? true : false
});
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.form.repetition = '';
this.repeform.repefen = '';
})
.catch(err => {
console.log(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;
})
.catch(err => {
console.log(err);
});
},
//弹出编辑框
testvis(e) {
if (this.form.repetition == '') {
this.$message.error('Please fill in the duplicate check rate!');
} else {
this.editform.state = e
this.editform.state_name = this.statetostr(e)
this.$confirm('Are you sure about this process ' + this.editform.state_name + ' ?', 'Tips', {
type: 'warning'
})
.then(res => {
this.loading = true;
this.$api
.post('api/Article/editArticleEditor', this.editform)
.then(res => {
if (res.code == 0) {
this.$message.success('Success!');
let stat_num = ''
stat_num = 'articleDetailEditor_b'
this.$router.push({
path: stat_num,
query: {
id: this.form.articleId
}
});
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
console.log(err);
});
}).catch(() => {});
}
},
testedit() {
this.editbox = true;
},
statetostr(mystate) {
let str = '';
switch (mystate) {
case -1:
str = 'Manuscript Submission';
break;
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;
},
//修改查重查重状态
saveRepe() {
if (this.repeform.zipurl == '') {
this.$message.error('please upload zip');
return false;
}
this.loading = true;
this.$api.post('api/Article/changeRepetition', this.repeform)
.then(res => {
this.loading = false;
this.form.repetition = this.repeform.repefen;
this.$message.success('success');
});
},
// 压缩包上传
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');
},
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;
},
formatDateNewCHz(timestamp) {
var date = new Date(timestamp * 1000); //时间戳为10位需*1000时间戳为13位的话不需乘1000
var Y = date.getFullYear();
var M = date.getMonth();
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();
var M_m = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October',
'November', 'December'
];
return '(' + h + ':' + m + ' Beijing time) on ' + D + ' ' + M_m[M];
},
},
};
</script>
<style>
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,947 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-lx-calendar"></i> Manuscript Reject
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="art_state_text">
<p>
Submitting manuscripts for publication is a critical point in the research cycle, and finding the right one can be
challenging for authors.
<br>It may be that the first choice of journal turns out not to be the right one, requiring the editor to help
authors look elsewhere to publish (Within the scope of TMR Publishing Group).
<br>The invitation letter is auto-triggered when the editor selects the suggested journal. The transfer process
begins when the author clicks on the "Accept" link in the decision letter.
<br>The need for further review is assessed on a case-by-case basis, depending on the extent of revisions required,
the new journals expectations, how well reviewerscomments are addressed, and the topic. However, the review
process tends to be quicker at this stage, it is benefits authors, reviewers, and editors alike.
</p>
</div>
<div class="container_state" v-loading="loading">
<el-row :gutter="30">
<el-col :span="15">
<div class="art_state_">
<div class="art_state_message">
<div class="art_state_message_id">
ID : <b style="margin-right: 60px;">{{form.accept_sn}}</b>
Status : <b>{{articleState}}</b>
</div>
<h3>Basic information</h3>
<p>
<font>Title :</font><b>{{form.title}}</b>
</p>
<p>
<font>Type :</font><b>{{myType}}</b>
</p>
<p v-show="form.type=='A'">
<font>Ethical Approval :</font><b>{{form.approval?'Yes':'No'}}</b>
</p>
<p>
<font>Journal :</font><b>{{journal_me}}</b>
</p>
<p v-if="form.special_num > 0">
<font>Special Issues :</font><b>{{ form.special_title }}</b>
</p>
</div>
</div>
<div class="art_caozuo_" style="margin:30px 0 0 0;" v-if="form.transList">
<div class="art_state_btn">
<div class="btn_remarks" @click="testedit" style="right: -2px;top: -3px;">Remarks</div>
</div>
<div v-if="form.transList==''&&form.transinfo==null">
<span style="margin: 0 12px 0 0;">Transfer Jouranl :</span>
<el-select v-model="editform.trsjournal" placeholder="Please select a journal">
<!-- <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-button type="primary" @click="saveEdit" style="margin: 0 0 0 15px;">OK</el-button>
</div>
<div v-if="form.transList!=''||form.transinfo!=null" style="color: #006699;">
The manuscript has been transferred to the {{form.transinfo.jourtitle}}
</div>
</div>
</el-col>
<el-col :span="9">
<timeaxis :prossMsgs="prossMsgs" :form="form"></timeaxis>
</el-col>
</el-row>
</div>
<el-dialog title="Remarks" :visible.sync="editbox" width="40%">
<el-form ref="remark" :model="remark" label-width="80px">
<el-form-item label="Content :">
<el-input type="textarea" rows="5" v-model="remark.content"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="saveRemark">Save</el-button>
</span>
</el-dialog>
<el-dialog title="Repetition" :visible.sync="repebox" width="40%">
<el-form ref="repetition" :model="repeform" label-width="80px">
<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">
<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 type="primary" @click="saveRepe">Save</el-button>
</span>
</el-dialog>
<el-dialog title="Feedback questionnaire" :visible.sync="dialogFormVisible" width="750px">
<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">
<el-col :span="12">
<el-form-item label="1.Originality of the topic">
<el-radio-group v-model="questionform.qu1">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="2.Importance in its Field">
<el-radio-group v-model="questionform.qu3">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="3.Suitability for the Journal">
<el-radio-group v-model="questionform.qu6">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="4.English language">
<el-radio-group v-model="questionform.qu8">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="5.Readily Understandable">
<el-radio-group v-model="questionform.qu5">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-collapse>
<el-form-item label="6.Does the title represent manuscript's contents?">
<el-col :span="8">
<el-radio-group v-model="questionform.qu9">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="16">
<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>
</el-collapse>
</el-col>
</el-row>
<el-collapse>
<el-form-item label="7.Is the Abstract accurate and concise?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu10">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</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>
</el-col>
</el-form-item>
<el-form-item label="8.Are the approach/ methods properly described?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu11">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</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>
</el-col>
</el-form-item>
<el-form-item label="9.Are the conclusions and interpretations sound?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu12">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</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>
</el-col>
</el-form-item>
<el-form-item label="10.Are the references properly cited?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu13">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</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>
</el-col>
</el-form-item>
<el-divider content-position="center">REFEREE'S RECOMMENDATIONS</el-divider>
<el-form-item label="Overall the Paper is Rated">
(Poor------------------------Excellent)
<br />
<el-radio-group v-model="questionform.rated" size="small">
<el-radio-button label="1"></el-radio-button>
<el-radio-button label="2"></el-radio-button>
<el-radio-button label="3"></el-radio-button>
<el-radio-button label="4"></el-radio-button>
<el-radio-button label="5"></el-radio-button>
<el-radio-button label="6"></el-radio-button>
<el-radio-button label="7"></el-radio-button>
<el-radio-button label="8"></el-radio-button>
<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>
</el-form-item>
<el-form-item label="REFEREE'S RECOMMENDATIONS" prop="recommend">
<el-radio-group v-model="questionform.recommend">
<el-radio :label="1">Accept with minor changes</el-radio>
<br />
<el-radio :label="2">Accept subject to revisions, as noted in comments</el-radio>
<br />
<el-radio :label="3">Reject in current form, but may be resubmitted</el-radio>
<br />
<el-radio :label="4">Reject, with no resubmission</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="OTHER SPECIFIC CRITICISMS">
<el-radio-group v-model="questionform.other">
<el-radio :label="1">Imperfect style</el-radio>
<br />
<el-radio :label="2">Too long</el-radio>
<br />
<el-radio :label="3">References incorrectly presented</el-radio>
<br />
<el-radio :label="4">Typographical and Grammatical errors</el-radio>
</el-radio-group>
</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-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-form-item>
<el-form-item label="Please choose disclose your name or remain anonymous.">
<el-radio-group v-model="questionform.is_anonymous">
<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 thank you in published
pdf. , we will also thank you as anonymous reviewer if you reject.
<br />e.g. {{form.title}} thanks AAAAAAAA, BBBBBBBB and other anonymous reviewers for
their contribution to the peer review of this paper.
</p>
</el-form-item>
</el-collapse>
</el-form>
</el-dialog>
</div>
</template>
<script>
import timetalk from './time_talk'
import timeaxis from './time_axis'
export default {
components: {
timetalk,
timeaxis
},
data() {
return {
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
items: '',
state_art_neir: false,
state_art_reviewer: false,
state_art_upload: false,
loading: false,
editVisible: false,
editbox: false,
repebox: false,
reverse: false,
dialogFormVisible: false,
questionform: {},
coverLetterFileList: [],
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
proposalsFileList: [],
authorList_name: '',
review_Data: [],
Total_review: 0,
msgform: {
username: localStorage.getItem('U_name'),
article_id: this.$route.query.id,
ad_content: ''
},
query_review: {
articleId: this.$route.query.id,
pageIndex: 1,
pageSize: 10
},
editform: {
editname: localStorage.getItem('U_name'),
articleId: this.$route.query.id,
state: 0,
trsjournal: '',
editormsg: ''
},
remark: {
articleId: this.$route.query.id,
content: ''
},
repeform: {
articleId: this.$route.query.id,
repefen: '',
zipurl: ''
},
activeNames: ['2'],
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: 5,
title: this.$t('artstate.state5')
},
{
state: 6,
title: this.$t('artstate.state6')
}
],
form: {
articleId: this.$route.query.id,
journal: '',
journalname: '',
username: '',
title: '',
accept_sn: '',
abstrart: '',
keyWords: '',
fund: '',
type: '',
major: '',
approval: false,
repetition: '',
manuscirpt: '',
remarks: '',
state: '',
ctime: '',
authorList: [],
transList: [],
transinfo: {}
},
prossMsgs: [],
talkMsgs: []
};
},
created: function() {
this.initarticle();
this.initselect();
this.initFileList();
this.reviewdate();
},
computed: {
myType: function() {
let frag = '';
switch (this.form.type) {
case "A":
frag = 'ARTICLE';
break;
case 'B':
frag = 'REVIEW';
break;
case 'C':
frag = 'CASE REPORT';
break;
case 'P':
frag = 'RESEARCH PROPOSAL';
break;
case 'N':
frag = 'NEWS';
break;
case 'T':
frag = 'COMMENT';
break;
case 'CT':
frag = 'CORRECTION';
break;
case 'HT':
frag = 'HYPOTHESIS';
break;
case 'PF':
frag = 'PREFACE';
break;
case 'ET':
frag = 'EDITORIAL';
break;
case 'RP':
frag = 'REPORT';
break;
case 'EF':
frag = 'EMPIRICAL FORMULA';
break;
case 'EM':
frag = 'EVIDENCE-BASED MEDICINE';
break;
case 'EC':
frag = 'EXPERT CONSENSUS';
break;
case 'LTE':
frag = 'LETTER TO EDITOR';
break;
case 'QI':
frag = 'QUESTIONNAIRE INVESTIGATION';
break;
case 'PT':
frag = 'PROTOCOL';
break;
case 'CS':
frag = 'CASE SERIES';
break;
default:
frag = 'OTHERS';
}
return frag;
},
// 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_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 = '';
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 6:
str = this.$t('artstate.state6');
break;
}
return str;
}
},
methods: {
//弹出编辑框
testedit() {
this.editbox = true;
},
changeRepe() {
this.repebox = true;
},
statetostr(mystate) {
let str = '';
switch (mystate) {
case -1:
str = 'Manuscript Submission';
break;
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;
},
//修改查重mark状态
saveRemark() {
this.loading = true;
this.$api.post('api/Article/editArticleRemark', this.remark)
.then(res => {
this.loading = false;
this.editbox = false;
this.$message.success('success');
this.initarticle();
});
},
saveRepe() {
if (this.repeform.zipurl == '') {
this.$message.error('please upload zip');
return false;
}
this.loading = true;
this.$api.post('api/Article/changeRepetition', this.repeform)
.then(res => {
this.loading = false;
this.repebox = false;
this.form.repetition = this.repeform.repefen;
this.$message.success('success');
});
},
//初始化期刊选项
initselect() {
this.$api
.post('api/Article/getJournal')
.then((res) => {
this.journals = res;
})
.catch((err) => {
console.log(err);
});
},
//初始化文章信息
initarticle() {
this.$api
.post('api/Article/getArticleDetail', {
articleId: this.editform.articleId,
human: 'editor'
})
.then(res => {
this.form.username = res.article.account;
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.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.repetition = res.article.repetition;
this.form.remarks = res.article.remarks;
this.repeform.repefen = res.article.repetition;
this.remark.content = res.article.remarks;
this.editform.state = this.form.state = res.article.state;
this.form.ctime = res.article.ctime;
this.form.transList = res.transfer;
this.form.transinfo = res.transinfo;
let back_num = 0
// 添加投递稿件条目
res.msg.unshift({
state_to: -1,
ctime: res.article.ctime,
color: '#B5C334',
icon: 'el-icon-collection-tag',
ftype: 0,
});
for (let i = res.msg.length - 1; i >= 0; i--) {
if (res.msg[i].state_to == 4 && back_num == 0) {
res.msg[i].back = 1;
back_num = 1
} else {
res.msg[i].back = 0;
}
if (res.msg[i].state_to == 1) {
res.msg[i].color = '#f75822'
res.msg[i].icon = 'el-icon-document-checked'
}
if (res.msg[i].state_to == 2) {
res.msg[i].color = '#0ebee1'
res.msg[i].icon = 'el-icon-document'
}
if (res.msg[i].state_to == 3) {
res.msg[i].color = '#f3170f'
res.msg[i].icon = 'el-icon-close'
}
if (res.msg[i].state_to == 4) {
res.msg[i].color = '#5a90e1'
res.msg[i].icon = 'el-icon-edit-outline'
}
if (res.msg[i].state_to == 5) {
res.msg[i].color = '#91cc75'
res.msg[i].icon = 'el-icon-check'
}
if (res.msg[i].state_to == 6) {
res.msg[i].color = '#27727B'
res.msg[i].icon = 'el-icon-star-off'
}
}
this.prossMsgs = res.msg;
let alist = res.authors;
let alist_name = [];
for (let i in alist) {
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,
isSuper: alist[i].is_super == 1 ? true : false,
isReport: alist[i].is_report == 1 ? true : false
});
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("");
})
.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);
});
},
// 获取编辑列表数据
reviewdate() {
this.$api
.post('api/Article/getReviewerList', this.query_review)
.then((res) => {
this.review_Data = res.data;
})
.catch((err) => {
console.log(err);
});
},
majorTitle(row, column, cellValue, index) {
return row.major_title + '(' + row.major_ctitle + ')';
},
revstate(row, column, cellValue, index) {
let frag = '';
if (row.state == 0) {
frag = 'With reviewer';
} else if (row.state == 1) {
frag = 'Revision';
} else if (row.state == 2) {
frag = 'Reject';
} else if (row.state == 3) {
frag = 'Accepted';
} else if (row.state == 4) {
frag = 'invalid';
} else if (row.state == 5) {
frag = 'invitation';
}
return frag;
},
// 留言弹出框
saveMsg() {
if (this.msgform.content == '') {
this.$message.error('Please input messages');
return false;
}
this.loading = true;
this.$api.post('api/Article/authorMessage', this.msgform)
.then((res) => {
this.loading = false;
this.editbox = false;
this.$message.success('success');
this.initarticle();
});
},
// 分页导航
showdetail(e) {
this.$api.post('api/Reviewer/getQuestion', {
artrevid: e
}).then((res) => {
if (res.code == 0) {
this.questionform = res.data;
this.questionform.rev_qu_id = res.data.rev_qu_id;
this.questionform.qu1 = res.data.qu1;
this.questionform.qu2 = res.data.qu2;
this.questionform.qu3 = res.data.qu3;
this.questionform.qu4 = res.data.qu4;
this.questionform.qu5 = res.data.qu5;
this.questionform.qu6 = res.data.qu6;
this.questionform.qu7 = res.data.qu7;
this.questionform.qu8 = res.data.qu8;
this.questionform.qu9 = res.data.qu9 == 0 ? false : true;
this.questionform.qu9contents = res.data.qu9_contents;
this.questionform.qu10 = res.data.qu10 == 0 ? false : true;
this.questionform.qu10contents = res.data.qu10_contents;
this.questionform.qu11 = res.data.qu11 == 0 ? false : true;
this.questionform.qu11contents = res.data.qu11_contents;
this.questionform.qu12 = res.data.qu12 == 0 ? false : true;
this.questionform.qu12contents = res.data.qu12_contents;
this.questionform.qu13 = res.data.qu13 == 0 ? false : true;
this.questionform.qu13contents = res.data.qu13_contents;
this.questionform.qu14 = res.data.qu14 == 0 ? false : true;
this.questionform.qu14contents = res.data.qu14_contents;
this.questionform.qu15 = res.data.qu15 == 0 ? false : true;
this.questionform.qu15contents = res.data.qu15_contents;
this.questionform.rated = res.data.rated;
this.questionform.recommend = res.data.recommend;
this.questionform.other = res.data.other;
this.questionform.confident = res.data.confidential;
this.questionform.comment = res.data.comments;
this.questionform.is_anonymous = res.data.is_anonymous;
}
});
this.dialogFormVisible = true
},
//修改文章状态-转投文件
saveEdit() {
this.loading1 = true;
this.$api
.post('api/Article/editArticleEditor', this.editform)
.then(res => {
this.loading1 = false;
if (res.code == 0) {
this.$message.success('success');
let stat_num = ''
stat_num = 'articleDetailEditor_b'
this.$router.push({
path: stat_num,
query: {
id: this.form.articleId
}
});
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
console.log(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;
})
.catch(err => {
console.log(err);
});
// 编辑上传的文件
this.$api
.post('api/Article/getArticleProposals', {
article_id: this.form.articleId
})
.then(res => {
this.proposalsFileList = res.data.proposals;
})
.catch(err => {
console.log(err);
});
},
uperr_coverLetter(err) {
this.$message.error('upload error');
},
removefilemanuscirpt(file, fileList) {
this.form.manuscirpt = '';
},
beforeupload() {},
filedateformate(row, column, cellValue, index) {
return this.formatDate(cellValue);
},
upSuccess_repezip(res, file) {
if (res.code == 0) {
this.repeform.zipurl = 'repezip/' + res.upurl;
}
},
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;
}
},
//检验上传文件的格式
beforeupload_manuscirpt(file) {
},
//超出传送文件个数限制
alertlimit() {
this.$message.error('The maximum number of uploaded files has been exceeded');
},
getlinkurl(row) {
return this.mediaUrl + row.file_url;
},
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;
},
},
};
</script>
<style>
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,961 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-lx-calendar"></i> Manuscript Accepted
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="art_state_text">
<p>
Dear editor, thank you for your hard work. Please complete the manuscript information before entering the
production process. The manuscript information will bring into correspondence with Typesetting Software.
</p>
</div>
<div class="container_state" v-loading="loading">
<el-row :gutter="30">
<el-col :span="15">
<div class="art_state_">
<div class="art_state_message">
<div class="art_state_message_id">
ID : <b style="margin-right: 60px;">{{form.accept_sn}}</b>
Status : <b>{{articleState}}</b>
</div>
<h3>Basic information</h3>
<p>
<font>Title :</font><b>{{form.title}}</b>
</p>
<p>
<font>Type :</font><b>{{myType}}</b>
</p>
<p v-show="form.type=='A'">
<font>Ethical Approval :</font><b>{{form.approval?'Yes':'No'}}</b>
</p>
<p>
<font>Journal :</font><b>{{journal_me}}</b>
</p>
<p v-if="form.special_num > 0">
<font>Special Issues :</font><b>{{ form.special_title }}</b>
</p>
<p>
<font>Major :</font><b>{{form.major}}</b>
</p>
<el-collapse v-model="activeNames" class="auth_colla">
<el-collapse-item :title="authorList_name" name="1">
<div v-for="(item, index) in form.authorList" class="auth_mess">
<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>
<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.address">
<font>Address : </font>{{item.address}}
</p>
<p v-if="item.company">
<font>Institution : </font>{{item.company}}
</p>
<p v-if="item.department">
<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>
<p>
<font>Abstrart :</font><b>{{form.abstrart}}</b>
</p>
<p>
<font>KeyWords :</font><b>{{form.keyWords}}</b>
</p>
<p v-if="form.fund">
<font>Fund :</font><b>{{form.fund}}</b>
</p>
</div>
<div class="art_file">
<h3 style="margin-bottom: 20px;">Files</h3>
<h4 v-if="coverLetterFileList">Cover letter : </h4>
<p v-if="coverLetterFileList">
<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" v-if="coverLetterFileList">
<h4 v-if="picturesAndTablesFileList">Figures : </h4>
<p v-if="picturesAndTablesFileList">
<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" v-if="picturesAndTablesFileList">
<h4>Title page : </h4>
<p>
<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">
<h4>Manuscirpt : </h4>
<p>
<a v-for="item in manuscirptFileList" :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">
</div>
<!-- 审稿人列表 -->
<div class="art_revlist">
<h3>Manuscript reviewer list</h3>
<div class="rev_list">
<p v-for="(item,index) in review_Data">
{{index+1}} . {{item.reviewer}}
<a @click="showdetail(item.art_rev_id)">
<i class="el-icon-tickets"></i>Feedback
</a>
</p>
<p v-if="review_Data==undefined" style="color: #888;">
No reviewer
</p>
</div>
</div>
<!-- 编辑上传文件列表 -->
<div class="art_file">
<h3 style="margin-bottom: 20px;">Editor Files</h3>
<p v-if="proposalsFileList">
<a v-for="(item,index) in proposalsFileList" :href="mediaUrl + item.proposal_file">
<img src="../../assets/img/icon_0.png">
<span>
File{{index+1}}
<i><i class="el-icon-time"></i>{{formatDate(item.ap_ctime)}}</i>
</span>
<i class="el-icon-download download"></i>
</a>
</p>
<p v-if="proposalsFileList==''" style="color: #888;margin-left: 3px;">
No files
</p>
<br clear="both" v-if="proposalsFileList">
</div>
</div>
</el-col>
<el-col :span="9">
<timetalk :talkMsgs="talkMsgs" :msgform="msgform"></timetalk>
<timeaxis :prossMsgs="prossMsgs" :form="form"></timeaxis>
</el-col>
</el-row>
</div>
<el-dialog title="Remarks" :visible.sync="editbox" width="500px">
<el-form ref="remark" :model="remark" label-width="80px">
<el-form-item label="Content :">
<el-input type="textarea" rows="5" v-model="remark.content"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="saveRemark">Save</el-button>
</span>
</el-dialog>
<el-dialog title="Feedback questionnaire" :visible.sync="dialogFormVisible" width="750px">
<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">
<el-col :span="12">
<el-form-item label="1.Originality of the topic">
<el-radio-group v-model="questionform.qu1">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="2.Importance in its Field">
<el-radio-group v-model="questionform.qu3">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="3.Suitability for the Journal">
<el-radio-group v-model="questionform.qu6">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="4.English language">
<el-radio-group v-model="questionform.qu8">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="5.Readily Understandable">
<el-radio-group v-model="questionform.qu5">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-collapse>
<el-form-item label="6.Does the title represent manuscript's contents?">
<el-col :span="8">
<el-radio-group v-model="questionform.qu9">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="16">
<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>
</el-collapse>
</el-col>
</el-row>
<el-collapse>
<el-form-item label="7.Is the Abstract accurate and concise?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu10">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</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>
</el-col>
</el-form-item>
<el-form-item label="8.Are the approach/ methods properly described?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu11">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</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>
</el-col>
</el-form-item>
<el-form-item label="9.Are the conclusions and interpretations sound?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu12">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</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>
</el-col>
</el-form-item>
<el-form-item label="10.Are the references properly cited?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu13">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</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>
</el-col>
</el-form-item>
<el-divider content-position="center">REFEREE'S RECOMMENDATIONS</el-divider>
<el-form-item label="Overall the Paper is Rated">
(Poor------------------------Excellent)
<br />
<el-radio-group v-model="questionform.rated" size="small">
<el-radio-button label="1"></el-radio-button>
<el-radio-button label="2"></el-radio-button>
<el-radio-button label="3"></el-radio-button>
<el-radio-button label="4"></el-radio-button>
<el-radio-button label="5"></el-radio-button>
<el-radio-button label="6"></el-radio-button>
<el-radio-button label="7"></el-radio-button>
<el-radio-button label="8"></el-radio-button>
<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>
</el-form-item>
<el-form-item label="REFEREE'S RECOMMENDATIONS" prop="recommend">
<el-radio-group v-model="questionform.recommend">
<el-radio :label="1">Accept with minor changes</el-radio>
<br />
<el-radio :label="2">Accept subject to revisions, as noted in comments</el-radio>
<br />
<el-radio :label="3">Reject in current form, but may be resubmitted</el-radio>
<br />
<el-radio :label="4">Reject, with no resubmission</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="OTHER SPECIFIC CRITICISMS">
<el-radio-group v-model="questionform.other">
<el-radio :label="1">Imperfect style</el-radio>
<br />
<el-radio :label="2">Too long</el-radio>
<br />
<el-radio :label="3">References incorrectly presented</el-radio>
<br />
<el-radio :label="4">Typographical and Grammatical errors</el-radio>
</el-radio-group>
</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-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-form-item>
<el-form-item label="Please choose disclose your name or remain anonymous.">
<el-radio-group v-model="questionform.is_anonymous">
<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 thank you in published
pdf. , we will also thank you as anonymous reviewer if you reject.
<br />e.g. {{form.title}} thanks AAAAAAAA, BBBBBBBB and other anonymous reviewers for
their contribution to the peer review of this paper.
</p>
</el-form-item>
</el-collapse>
</el-form>
</el-dialog>
</div>
</template>
<script>
import timetalk from './time_talk'
import timeaxis from './time_axis'
export default {
components: {
timetalk,
timeaxis
},
data() {
return {
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
items: '',
loading: false,
editVisible: false,
editbox: false,
reverse: false,
dialogFormVisible: false,
Detailvisible: false,
questionform: {},
coverLetterFileList: [],
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
proposalsFileList: [],
authorList_name: '',
review_Data: [],
Total_review: 0,
msgform: {
username: localStorage.getItem('U_name'),
article_id: this.$route.query.id,
ad_content: ''
},
query_review: {
articleId: this.$route.query.id,
pageIndex: 1,
pageSize: 10
},
editform: {
editname: localStorage.getItem('U_name'),
articleId: this.$route.query.id,
state: 0,
trsjournal: 0,
editormsg: ''
},
remark: {
articleId: this.$route.query.id,
content: ''
},
repeform: {
articleId: this.$route.query.id,
repefen: '',
zipurl: ''
},
activeNames: [],
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: 5,
title: this.$t('artstate.state5')
},
{
state: 6,
title: this.$t('artstate.state6')
}
],
form: {
articleId: this.$route.query.id,
journal: '',
journalname: '',
username: '',
title: '',
accept_sn: '',
abstrart: '',
keyWords: '',
fund: '',
type: '',
major: '',
approval: false,
repetition: '',
manuscirpt: '',
remarks: '',
state: '',
ctime: '',
authorList: [],
transList: []
},
prossMsgs: [],
talkMsgs: []
};
},
created: function() {
this.initarticle();
this.initselect();
this.initFileList();
this.reviewdate();
},
computed: {
myType: function() {
let frag = '';
switch (this.form.type) {
case "A":
frag = 'ARTICLE';
break;
case 'B':
frag = 'REVIEW';
break;
case 'C':
frag = 'CASE REPORT';
break;
case 'P':
frag = 'RESEARCH PROPOSAL';
break;
case 'N':
frag = 'NEWS';
break;
case 'T':
frag = 'COMMENT';
break;
case 'CT':
frag = 'CORRECTION';
break;
case 'HT':
frag = 'HYPOTHESIS';
break;
case 'PF':
frag = 'PREFACE';
break;
case 'ET':
frag = 'EDITORIAL';
break;
case 'RP':
frag = 'REPORT';
break;
case 'EF':
frag = 'EMPIRICAL FORMULA';
break;
case 'EM':
frag = 'EVIDENCE-BASED MEDICINE';
break;
case 'EC':
frag = 'EXPERT CONSENSUS';
break;
case 'LTE':
frag = 'LETTER TO EDITOR';
break;
case 'QI':
frag = 'QUESTIONNAIRE INVESTIGATION';
break;
case 'PT':
frag = 'PROTOCOL';
break;
case 'CS':
frag = 'CASE SERIES';
break;
default:
frag = 'OTHERS';
}
return frag;
},
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 = '';
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 6:
str = this.$t('artstate.state6');
break;
}
return str;
}
},
methods: {
//弹出编辑框
testedit() {
this.editbox = true;
},
statetostr(mystate) {
let str = '';
switch (mystate) {
case -1:
str = 'Manuscript Submission';
break;
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;
},
// 查看详情
man_detal() {
this.Detailvisible = true
},
//修改查重mark状态
saveRemark() {
this.loading = true;
this.$api.post('api/Article/editArticleRemark', this.remark)
.then(res => {
this.loading = false;
this.editbox = false;
this.$message.success('success');
this.initarticle();
});
},
saveRepe() {
if (this.repeform.zipurl == '') {
this.$message.error('please upload zip');
return false;
}
this.loading = true;
this.$api.post('api/Article/changeRepetition', this.repeform)
.then(res => {
this.loading = false;
this.form.repetition = this.repeform.repefen;
this.$message.success('success');
});
},
//初始化期刊选项
initselect() {
this.$api
.post('api/Article/getJournal')
.then((res) => {
this.journals = res;
})
.catch((err) => {
console.log(err);
});
},
//初始化文章信息
initarticle() {
this.$api
.post('api/Article/getArticleDetail', {
articleId: this.editform.articleId,
human: 'editor'
})
.then(res => {
this.form.username = res.article.account;
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.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.repetition = res.article.repetition;
this.form.remarks = res.article.remarks;
this.repeform.repefen = res.article.repetition;
this.remark.content = res.article.remarks;
this.editform.state = this.form.state = res.article.state;
this.form.ctime = res.article.ctime;
this.form.transList = res.transfer;
let back_num = 0
// 添加投递稿件条目
res.msg.unshift({
state_to: -1,
ctime: res.article.ctime,
color: '#B5C334',
icon: 'el-icon-collection-tag',
ftype: 0,
});
for (let i = res.msg.length - 1; i >= 0; i--) {
if (res.msg[i].state_to == 4 && back_num == 0) {
res.msg[i].back = 1;
back_num = 1
} else {
res.msg[i].back = 0;
}
if (res.msg[i].state_to == 1) {
res.msg[i].color = '#f75822'
res.msg[i].icon = 'el-icon-document-checked'
}
if (res.msg[i].state_to == 2) {
res.msg[i].color = '#0ebee1'
res.msg[i].icon = 'el-icon-document'
}
if (res.msg[i].state_to == 3) {
res.msg[i].color = '#f3170f'
res.msg[i].icon = 'el-icon-close'
}
if (res.msg[i].state_to == 4) {
res.msg[i].color = '#5a90e1'
res.msg[i].icon = 'el-icon-edit-outline'
}
if (res.msg[i].state_to == 5) {
res.msg[i].color = '#91cc75'
res.msg[i].icon = 'el-icon-check'
}
if (res.msg[i].state_to == 6) {
res.msg[i].color = '#27727B'
res.msg[i].icon = 'el-icon-star-off'
}
}
this.prossMsgs = res.msg;
let alist = res.authors;
let alist_name = [];
for (let i in alist) {
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,
isSuper: alist[i].is_super == 1 ? true : false,
isReport: alist[i].is_report == 1 ? true : false
});
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("");
})
.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);
});
},
// 获取编辑列表数据
reviewdate() {
this.$api
.post('api/Article/getReviewerList', this.query_review)
.then((res) => {
this.review_Data = res.data;
})
.catch((err) => {
console.log(err);
});
},
majorTitle(row, column, cellValue, index) {
return row.major_title + '(' + row.major_ctitle + ')';
},
revstate(row, column, cellValue, index) {
let frag = '';
if (row.state == 0) {
frag = 'With reviewer';
} else if (row.state == 1) {
frag = 'Revision';
} else if (row.state == 2) {
frag = 'Reject';
} else if (row.state == 3) {
frag = 'Accepted';
} else if (row.state == 4) {
frag = 'invalid';
} else if (row.state == 5) {
frag = 'invitation';
}
return frag;
},
// 打分问卷
showdetail(e) {
this.questionform = {}
this.$api.post('api/Reviewer/getQuestion', {
artrevid: e
}).then((res) => {
if (res.code == 0) {
this.questionform = res.data;
this.questionform.rev_qu_id = res.data.rev_qu_id;
this.questionform.qu1 = res.data.qu1;
this.questionform.qu2 = res.data.qu2;
this.questionform.qu3 = res.data.qu3;
this.questionform.qu4 = res.data.qu4;
this.questionform.qu5 = res.data.qu5;
this.questionform.qu6 = res.data.qu6;
this.questionform.qu7 = res.data.qu7;
this.questionform.qu8 = res.data.qu8;
this.questionform.qu9 = res.data.qu9 == 0 ? false : true;
this.questionform.qu9contents = res.data.qu9_contents;
this.questionform.qu10 = res.data.qu10 == 0 ? false : true;
this.questionform.qu10contents = res.data.qu10_contents;
this.questionform.qu11 = res.data.qu11 == 0 ? false : true;
this.questionform.qu11contents = res.data.qu11_contents;
this.questionform.qu12 = res.data.qu12 == 0 ? false : true;
this.questionform.qu12contents = res.data.qu12_contents;
this.questionform.qu13 = res.data.qu13 == 0 ? false : true;
this.questionform.qu13contents = res.data.qu13_contents;
this.questionform.qu14 = res.data.qu14 == 0 ? false : true;
this.questionform.qu14contents = res.data.qu14_contents;
this.questionform.qu15 = res.data.qu15 == 0 ? false : true;
this.questionform.qu15contents = res.data.qu15_contents;
this.questionform.rated = res.data.rated;
this.questionform.recommend = res.data.recommend;
this.questionform.other = res.data.other;
this.questionform.confident = res.data.confidential;
this.questionform.comment = res.data.comments;
this.questionform.is_anonymous = res.data.is_anonymous;
}
});
this.dialogFormVisible = true
},
//初始化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;
})
.catch(err => {
console.log(err);
});
// 编辑上传的文件
this.$api
.post('api/Article/getArticleProposals', {
article_id: this.form.articleId
})
.then(res => {
this.proposalsFileList = res.data.proposals;
})
.catch(err => {
console.log(err);
});
},
upSuccess_repezip(res, file) {
if (res.code == 0) {
this.repeform.zipurl = 'repezip/' + res.upurl;
}
},
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;
},
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;
},
},
};
</script>

File diff suppressed because it is too large Load Diff

View File

@@ -13,7 +13,7 @@
<el-option :key="0" label="All journals" :value="0"></el-option> <el-option :key="0" label="All journals" :value="0"></el-option>
<el-option v-for="item in items" :key="item.journal_id" :label="item.title" :value="item.journal_id"></el-option> <el-option v-for="item in items" :key="item.journal_id" :label="item.title" :value="item.journal_id"></el-option>
</el-select> </el-select>
<el-select v-model="query.state" @change="getdate" placeholder="Please select status" style="margin-left:10px;width: 130px;"> <el-select v-model="query.state" @change="getdate" placeholder="Please select status" style="margin-left:10px;width: 130px;">
<el-option :key="0" label="All status" :value="0"></el-option> <el-option :key="0" label="All status" :value="0"></el-option>
<el-option :key="1" :label="$t('artstate.state1')" :value="1"></el-option> <el-option :key="1" :label="$t('artstate.state1')" :value="1"></el-option>
<el-option :key="2" :label="$t('artstate.state2')" :value="2"></el-option> <el-option :key="2" :label="$t('artstate.state2')" :value="2"></el-option>
@@ -23,10 +23,10 @@
</el-select> </el-select>
<el-input v-model="query.name" placeholder="Title" style="margin:0 10px;width: 200px;"></el-input> <el-input v-model="query.name" placeholder="Title" style="margin:0 10px;width: 200px;"></el-input>
<el-button type="primary" icon="el-icon-search" @click="handleSearch">Search</el-button> <el-button type="primary" icon="el-icon-search" @click="handleSearch">Search</el-button>
<el-button type="primary" icon="el-icon-edit-outline" @click="addArticle" style="float: right;width: 200px;">New Submission</el-button> <el-button type="primary" icon="el-icon-edit-outline" @click="addArticle" style="float: right;width: 200px;">New
Submission</el-button>
</div> </div>
<el-table :data="tableData" border ref="multipleTable"> <el-table :data="tableData" border ref="multipleTable">
>
<el-table-column type="index" label="No." width="55" align="center"></el-table-column> <el-table-column type="index" label="No." width="55" align="center"></el-table-column>
<!-- <el-table-column prop="article_id" label="ID" width="55" align="center"></el-table-column> --> <!-- <el-table-column prop="article_id" label="ID" width="55" align="center"></el-table-column> -->
<el-table-column label="Title" align="center"> <el-table-column label="Title" align="center">
@@ -45,11 +45,187 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div shadow="never" v-for="item in tableData" class="mangu_list">
<div style="padding: 20px;">
<p style="color: #006699;">
<font style="color: #666b7a;">ID : </font>
{{item.accept_sn}}
</p>
<p class="man_title">{{item.title}}</p>
<p class="man_con">
<font style="color: #666b7a;">Type : </font>
<span style="font-weight: normal;">{{item.type | ellipsis}}</span>
<font style="color: #666b7a;">Journal : </font>
<b style="color: #006699;font-weight: normal;">{{item.journalname}}</b>
</p>
<p>
<font style="color: #666b7a;">Update Time : </font>
<b style="font-weight: normal;">{{item.ctime}}</b>
</p>
<div class="man_state" :style="item.state | stateColor">
{{item.state | stateChange}}
</div>
</div>
<div class="man_btn">
<span @click="esy_mtps(item.article_id)"><i class="el-icon-document"></i>Manuscript process</span>
<font> | </font>
<span @click="esy_deta(item.article_id)"><i class="el-icon-document-copy"></i>Detail</span>
<font> | </font>
<span @click="esy_file(item.article_id)"><i class="el-icon-folder-opened"></i>Files</span>
</div>
<div class="man_progess">
<font style="color: #666b7a;">
<i class="el-icon-time"></i>Latest Progress :
</font>
<b style="margin: 0 0 0 5px;">{{item.state | stateChange}} </b>
<router-link :to="{path:'/articleList',query:{art_id:item.article_id}}" v-if="item.state==4" style="color: #333;">
: <span style="margin: 0 0 0 5px;">click to</span>
<img src="../../assets/img/right_band.png" style="width: 14px;margin: 0 3px 0 10px;">
<b style="margin-left: 5px;color: #006699;text-decoration: underline;">Major revision</b>
</router-link>
</div>
</div>
<div class="pagination"> <div class="pagination">
<el-pagination background layout="total, prev, pager, next" :current-page="query.pageIndex" :page-size="query.pageSize" <el-pagination background layout="total, prev, pager, next" :current-page="query.pageIndex" :page-size="query.pageSize"
:total="Total" @current-change="handlePageChange"></el-pagination> :total="Total" @current-change="handlePageChange"></el-pagination>
</div> </div>
</div> </div>
<!-- 文章内容 -->
<el-dialog title="Basic information" :visible.sync="artextVisible" width="600px">
<div class="art_state_message">
<p>
<font>Title :</font><b>{{artextForm.title}}</b>
</p>
<p>
<font>Type :</font><b>{{artextForm.type | ellipsis}}</b>
</p>
<p v-show="artextForm.type=='A'">
<font>Ethical Approval :</font><b>{{artextForm.approval?'Yes':'No'}}</b>
</p>
<p v-if="artextForm.special_num > 0">
<font>Special Issues :</font><b>{{ artextForm.special_title }}</b>
</p>
<p>
<font>Journal :</font><b>{{artextForm | journal_me}}</b>
</p>
<p>
<font>Major :</font><b>{{artextForm.major}}</b>
</p>
<el-collapse v-model="activeNames" class="auth_colla auth_colla_new">
<el-collapse-item :title="authorList_name" name="1">
<div v-for="(item, index) in artextForm.authors" class="auth_mess">
<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>
<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.address">
<font>Address : </font>{{item.address}}
</p>
<p v-if="item.company">
<font>Institution : </font>{{item.company}}
</p>
<p v-if="item.department">
<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>
<p style="margin-top: 15px;">
<font>Abstrart :</font><b>{{artextForm.abstrart}}</b>
</p>
<p v-if="artextForm.keyWords">
<font>KeyWords :</font><b>{{artextForm.keyWords}}</b>
</p>
<p v-if="artextForm.fund">
<font>Fund :</font><b>{{artextForm.fund}}</b>
</p>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="artextVisible=false">OK</el-button>
</span>
</el-dialog>
<!-- 文章文件 -->
<el-dialog title="Basic information files" :visible.sync="artfileVisible" width="600px">
<div class="art_file" style="margin-top: 0;border-top-color:#fff;padding-top: 0;">
<h4 v-if="coverLetterFileList">Cover letter : </h4>
<p v-if="coverLetterFileList">
<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>
</a>
</p>
<br clear="both" v-if="coverLetterFileList">
<h4 v-if="picturesAndTablesFileList">Figures : </h4>
<p v-if="picturesAndTablesFileList">
<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>
</a>
</p>
<br clear="both" v-if="picturesAndTablesFileList">
<h4>Title page : </h4>
<p>
<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>
</a>
</p>
<br clear="both">
<h4>Manuscirpt : </h4>
<p>
<a v-for="item in manuscirptFileList" :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>
</a>
</p>
<br clear="both">
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="artfileVisible=false">OK</el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
@@ -58,10 +234,13 @@
name: 'articleList', name: 'articleList',
data() { data() {
return { return {
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
items: '', items: '',
query: { query: {
username: localStorage.getItem('U_name'), username: localStorage.getItem('U_name'),
journal: localStorage.getItem('ms_journal_alias') ? parseInt(localStorage.getItem('ms_journal_alias')) : 0, // journal: localStorage.getItem('ms_journal_alias') ? parseInt(localStorage.getItem('ms_journal_alias')) : 0,
journal: 0,
name: '', name: '',
state: 0, state: 0,
pageIndex: 1, pageIndex: 1,
@@ -70,11 +249,17 @@
tableData: [], tableData: [],
multipleSelection: [], multipleSelection: [],
delList: [], delList: [],
activeNames: [],
artextForm: {},
coverLetterFileList: [],
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
authorList_name: '',
editVisible: false, editVisible: false,
artextVisible: false,
artfileVisible: false,
Total: 0 Total: 0
// form: {},
// idx: -1,
// id: -1
}; };
}, },
created() { created() {
@@ -93,13 +278,20 @@
console.log(err); console.log(err);
}); });
}, },
// 获取数据 // 获取文章列表数据
getdate() { getdate() {
this.$api this.$api
.post('api/Article/getArticle', this.query) .post('api/Article/getArticle', this.query)
.then(res => { .then(res => {
console.log(res); console.log(res);
this.Total = res.total; this.Total = res.total;
for (let i = 0; i < res.data.length; i++) {
let date = new Date(parseInt(res.data[i].ctime) * 1000);
let Y = date.getFullYear() + '-';
let M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) + '-' : date.getMonth() + 1 + '-';
let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
res.data[i].ctime = Y + M + D;
}
this.tableData = res.data; this.tableData = res.data;
}) })
.catch(err => { .catch(err => {
@@ -170,12 +362,238 @@
if (row.editor_act == 1) { if (row.editor_act == 1) {
return 'hasChange-row'; return 'hasChange-row';
} }
} },
// 点击稿件进程
esy_mtps(e) {
this.$router.push({
path: 'articleProcess',
query: {
id: e
}
});
},
// 点击稿件内容
esy_deta(e) {
this.$api
.post('api/Article/getArticleDetail', {
articleId: e,
human: 'author'
})
.then(res => {
this.artextForm = res.article
this.artextForm.major = res.major;
this.artextForm.authors = []
let alist = res.authors;
let alist_name = [];
for (let i in alist) {
this.artextForm.authors.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,
isSuper: alist[i].is_super == 1 ? true : false,
isReport: alist[i].is_report == 1 ? true : false
});
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.artextVisible = true
})
.catch(err => {
console.log(err);
});
},
// 点击稿件文件
esy_file(e) {
this.$api
.post('api/Article/getFilelistByArticleID', {
articleId: e
})
.then(res => {
this.coverLetterFileList = res.coverLetter;
this.picturesAndTablesFileList = res.picturesAndTables;
this.manuscirptFileList = res.manuscirpt;
this.totalpageFileList = res.totalpage;
this.artfileVisible = true
})
.catch(err => {
console.log(err);
});
},
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;
},
},
filters: {
// 文章类型
ellipsis(value) {
let frag = '';
switch (value) {
case "A":
frag = 'ARTICLE';
break;
case 'B':
frag = 'REVIEW';
break;
case 'C':
frag = 'CASE REPORT';
break;
case 'P':
frag = 'RESEARCH PROPOSAL';
break;
case 'N':
frag = 'NEWS';
break;
case 'T':
frag = 'COMMENT';
break;
case 'CT':
frag = 'CORRECTION';
break;
case 'HT':
frag = 'HYPOTHESIS';
break;
case 'PF':
frag = 'PREFACE';
break;
case 'ET':
frag = 'EDITORIAL';
break;
case 'RP':
frag = 'REPORT';
break;
case 'EF':
frag = 'EMPIRICAL FORMULA';
break;
case 'EM':
frag = 'EVIDENCE-BASED MEDICINE';
break;
case 'EC':
frag = 'EXPERT CONSENSUS';
break;
case 'LTE':
frag = 'LETTER TO EDITOR';
break;
case 'QI':
frag = 'QUESTIONNAIRE INVESTIGATION';
break;
case 'PT':
frag = 'PROTOCOL';
break;
case 'CS':
frag = 'CASE SERIES';
break;
default:
frag = 'OTHERS';
}
return frag;
},
// 稿件状态
stateChange(value) {
let str = '';
switch (value) {
case 0:
str = 'Received';
break;
case 1:
str = 'With editor';
break;
case 2:
str = 'Under review';
break;
case 3:
str = 'Reject';
break;
case 4:
str = 'Revision';
break;
case 5:
str = 'Accepted';
break;
case 6:
str = 'Fininal decision';
break;
default:
str = 'error!!';
}
return str;
},
// 稿件状态颜色
stateColor(value) {
let str = '';
switch (value) {
case 0:
str = 'background-color: #B5C334;';
break;
case 1:
str = 'background-color: #f75822;';
break;
case 2:
str = 'background-color: #0ebee1;';
break;
case 3:
str = 'background-color: #f3170f;';
break;
case 4:
str = 'background-color: #5a90e1;';
break;
case 5:
str = 'background-color: #91cc75;';
break;
case 6:
str = 'background-color: #27727B;';
break;
default:
str = 'background-color: #888;';
}
return str;
},
journal_me(e) {
var frag = e.journalname;
if (e.special_num > 0) {
frag += "(Special Issues)";
}
return frag;
},
},
computed: {
} }
}; };
</script> </script>
<style scoped> <style scoped>
.container {
color: #333;
}
.handle-box { .handle-box {
margin-bottom: 20px; margin-bottom: 20px;
} }
@@ -212,9 +630,78 @@
.item { .item {
margin-top: 5px; margin-top: 5px;
} }
</style>
<style>
.el-table .hasChange-row { .el-table .hasChange-row {
background-color: #ffebe8; background-color: #ffebe8;
} }
.mangu_list {
color: #333;
margin: 0 0 20px 0;
font-size: 14px;
position: relative;
border-radius: 5px;
border: 1px solid #EBEEF5;
}
.mangu_list .man_title {
margin: 15px 0 20px 0;
font-weight: bolder;
font-size: 16px;
}
.mangu_list .man_con {
margin: 0 0 10px 0;
}
.mangu_list .man_con>span {
color: #555;
font-weight: bolder;
border-radius: 5px;
margin: 0 50px 0 0;
/* background-color: #b9bcbd; */
/* padding: 2px 5px; */
/* font-size: 12px; */
}
.mangu_list .man_state {
position: absolute;
right: 0;
top: 0;
color: #fff;
padding: 5px 15px;
border-top-right-radius: 3px;
}
.mangu_list .man_progess {
padding: 15px 20px;
border-top: 1px solid #EBEEF5;
}
.mangu_list .man_progess i {
margin: 0 5px 0 0;
}
.mangu_list .man_btn {
color: #006699;
position: absolute;
bottom: 70px;
right: 20px;
}
.mangu_list .man_btn>span:hover {
text-decoration: underline;
cursor: pointer;
color: #06374e;
}
.mangu_list .man_btn i {
margin: 0 8px 0 0;
}
.mangu_list .man_btn font {
margin: 0 18px;
}
</style> </style>

View File

@@ -167,8 +167,24 @@
this.getdate(); this.getdate();
}, },
showdetaileditor(row) { showdetaileditor(row) {
let stat_num='articleDetailEditor'
if(row.state==0){//Received
stat_num = 'articleDetailEditor_a'
}else if(row.state==1){//With editor
stat_num = 'articleDetailEditor_b'
}else if(row.state==2){//Under review
stat_num = 'articleDetailEditor_c'
}else if(row.state==3){//Reject
stat_num = 'articleDetailEditor_d'
}else if(row.state==4){//Revision
stat_num = 'articleDetailEditor_e'
}else if(row.state==5){//Accepted
stat_num = 'articleDetailEditor_f'
}else if(row.state==6){//Fininal decision
stat_num = 'articleDetailEditor_g'
}
this.$router.push({ this.$router.push({
path: 'articleDetailEditor', path: stat_num,
query: { query: {
id: row.article_id id: row.article_id
} }

View File

@@ -0,0 +1,388 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-lx-calendar"></i>
<router-link :to="{path:'/articleList'}">
<span class="top_dao"> Manuscript list</span>
</router-link>
>> Manuscript process
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container process_new">
<p style="font-size: 16px;font-weight: bolder;">
<span class="art_type">{{ellType(artMes.type)}}</span>
{{artMes.title}}
</p>
<p style="color: #7f8790;margin: 10px 0 0 0;font-size: 14px;">Follow the progress of your submission.</p>
<div class="tit_head">
This submission is <b>{{statetostr(artMes.laststate)}}</b>
at <b>{{artMes.journalname}}.</b>
</div>
<p style="width: 100%;height: 1px;background-color: #eee;margin: 35px 0 30px 0;"></p>
<el-row :gutter="80">
<el-col :span="24">
<h2 style="font-size: 18px;margin: 0 0 30px 0;float: left;">Manuscript process</h2>
<div class="radio" style="float: right;">
<el-radio-group v-model="reverse">
<el-radio-button :label="false">Ascending</el-radio-button>
<el-radio-button :label="true">Descending</el-radio-button>
</el-radio-group>
</div>
<br clear="both">
<el-timeline :reverse="reverse" class="author_tree">
<el-timeline-item v-for="(item, index) in prossMsgs" :icon="item.icon" :color="item.color" size="large" :key="index"
:timestamp="formatDate(item.ctime)" placement="top" v-if="item.ftype == 0">
<el-card>
<p>
<font>{{ statetostr(item.state_to) }}</font>
<!-- 提交 -->
<font v-if="item.state_to==-1">
: <b style="margin-left: 5px;">First submitted to {{artMes.journalname}}</b>
</font>
<!-- 给编辑 -->
<font v-if="item.state_to==1">
: <b style="margin-left: 5px;"> Submission checks complete</b>
</font>
<!-- 审查中 -->
<font v-if="item.state_to==2">
: <b style="margin-left: 5px;"> Editor assigned</b>
</font>
<!-- 修改 -->
<font v-if="item.state_to==4">
:
<router-link :to="{path:'/articleList',query:{art_id:artMes.article_id}}" v-if="item.back==1">
<b style="margin-left: 5px;color: #006699;text-decoration: underline;">Major revision</b>
</router-link>
<b style="margin-left: 5px;color: #888;text-decoration: underline;" v-if="item.back==0">
Major revision (Completed)
</b>
</font>
<!-- 接收 -->
<font v-if="item.state_to==5">
: <b style="margin-left: 5px;"> Successfully received manuscript</b>
</font>
</p>
</el-card>
</el-timeline-item>
</el-timeline>
</el-col>
<!-- <el-col :span="9">
<h2 style="font-size: 18px;margin: 0 0 30px 0;">Talking</h2>
<el-button type="primary" icon="el-icon-edit" round style="margin-left: 28px" @click="authormsg">Edit message</el-button>
</el-col> -->
</el-row>
</div>
<el-dialog title="Message" :visible.sync="editVisible" width="40%">
<el-form ref="msgform" :model="msgform" label-width="80px">
<el-form-item label="Message">
<el-input type="textarea" rows="5" v-model="msgform.content" placeholder="Author messages"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="saveMsg" :loading="saveloading">save</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
articleId: this.$route.query.id,
userName: localStorage.getItem('U_name'),
loading: false,
reverse: false,
artMes: {
articleId: this.$route.query.id
},
msgform: {
username: localStorage.getItem('U_name'),
article_id: this.$route.query.id,
ad_content: ''
},
prossMsgs: [],
editVisible: false,
saveloading: false
};
},
created: function() {
this.initarticle();
},
computed: {
},
methods: {
//初始化文章信息
initarticle() {
this.$api
.post('api/Article/getArticleDetail', {
articleId: this.articleId,
human: 'author'
})
.then((res) => {
let back_num = 0
// 添加投递稿件条目
res.msg.unshift({
state_to: -1,
ctime: res.article.ctime,
color: '#B5C334',
icon: 'el-icon-collection-tag',
ftype: 0,
});
for (let i = res.msg.length - 1; i >= 0; i--) {
if (res.msg[i].state_to == 4 && back_num == 0) {
res.msg[i].back = 1;
back_num = 1
} else {
res.msg[i].back = 0;
}
if (res.msg[i].state_to == 1) {
res.msg[i].color = '#f75822'
res.msg[i].icon = 'el-icon-document-checked'
}
if (res.msg[i].state_to == 2) {
res.msg[i].color = '#0ebee1'
res.msg[i].icon = 'el-icon-document'
}
if (res.msg[i].state_to == 3) {
res.msg[i].color = '#f3170f'
res.msg[i].icon = 'el-icon-close'
}
if (res.msg[i].state_to == 4) {
res.msg[i].color = '#5a90e1'
res.msg[i].icon = 'el-icon-edit-outline'
}
if (res.msg[i].state_to == 5) {
res.msg[i].color = '#91cc75'
res.msg[i].icon = 'el-icon-check'
}
if (res.msg[i].state_to == 6) {
res.msg[i].color = '#27727B'
res.msg[i].icon = 'el-icon-star-off'
}
}
this.artMes = res.article;
this.artMes.laststate = res.msg[res.msg.length - 1].state_to;
this.prossMsgs = res.msg;
console.log(this.prossMsgs)
})
.catch((err) => {
console.log(err);
});
},
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;
},
// 对话框
authormsg() {
this.editVisible = true;
},
saveMsg() {
if (this.msgform.content == '') {
this.$message.error('Please input messages');
return false;
}
this.saveloading = true;
this.$api.post('api/Article/authorMessage', this.msgform)
.then((res) => {
this.saveloading = false;
this.$message.success('Sent successfully');
this.$router.go(0);
});
},
statetostr(mystate) {
let str = '';
switch (mystate) {
case -1:
str = 'Manuscript Submission';
break;
case 0:
str = 'Received';
break;
case 1:
str = 'With editor';
break;
case 2:
str = 'Under review';
break;
case 3:
str = 'Reject';
break;
case 4:
str = 'Revision';
break;
case 5:
str = 'Accepted';
break;
case 6:
str = 'Fininal decision';
break;
default:
str = 'error!!';
}
return str;
},
ellType(e) {
let frag = '';
switch (e) {
case "A":
frag = 'ARTICLE';
break;
case 'B':
frag = 'REVIEW';
break;
case 'C':
frag = 'CASE REPORT';
break;
case 'P':
frag = 'RESEARCH PROPOSAL';
break;
case 'N':
frag = 'NEWS';
break;
case 'T':
frag = 'COMMENT';
break;
case 'CT':
frag = 'CORRECTION';
break;
case 'HT':
frag = 'HYPOTHESIS';
break;
case 'PF':
frag = 'PREFACE';
break;
case 'ET':
frag = 'EDITORIAL';
break;
case 'RP':
frag = 'REPORT';
break;
case 'EF':
frag = 'EMPIRICAL FORMULA';
break;
case 'EM':
frag = 'EVIDENCE-BASED MEDICINE';
break;
case 'EC':
frag = 'EXPERT CONSENSUS';
break;
case 'LTE':
frag = 'LETTER TO EDITOR';
break;
case 'QI':
frag = 'QUESTIONNAIRE INVESTIGATION';
break;
case 'PT':
frag = 'PROTOCOL';
break;
case 'CS':
frag = 'CASE SERIES';
break;
default:
frag = 'OTHERS';
}
return frag;
},
},
filters: {
}
};
</script>
<style>
.top_dao:hover {
text-decoration: underline;
cursor: pointer;
}
.process_new {
color: #333;
}
.art_type {
color: #fff;
background-color: #006699;
padding: 2px 5px;
border-radius: 5px;
font-size: 12px;
margin: 0 10px 0 0;
}
.tit_head {
border-radius: 5px;
border: 1px solid #EBEEF5;
padding: 20px;
font-size: 15px;
margin: 30px 0;
background-color: #fcfcfc;
}
.tit_head b:nth-child(1) {
color: #006699;
/* text-decoration: underline; */
}
.el-radio-button__orig-radio:checked+.el-radio-button__inner {
background-color: #006699;
border-color: #006699;
}
.author_tree {
margin: 40px 0 0 10px;
}
.author_tree .el-timeline-item__node--large {
left: 155px;
width: 30px;
height: 30px;
}
.author_tree .el-timeline-item__wrapper {
padding-left: 0;
margin: 0 0 50px 0;
}
.author_tree .el-timeline-item__timestamp.is-top {
padding-top: 10px;
margin-bottom: 13px;
font-size: 14px;
}
.author_tree .el-timeline-item__content {
margin: -50px 0 0 210px;
}
.author_tree .el-timeline-item__tail {
height: auto;
bottom: 15px;
top: 45px;
border-left: 3px solid #E4E7ED;
/* border-left: 2px solid #66a3c2; */
left: 168px;
}
</style>

View File

@@ -185,7 +185,7 @@
</el-row> </el-row>
</div> </div>
<el-dialog title="Feedback questionnaire" :visible.sync="dialogFormVisible"> <el-dialog title="Feedback questionnaire" :visible.sync="dialogFormVisible">
<el-form :model="questionform" :rules="rules" ref="question" label-width="300px" label-position="top"> <el-form :model="questionform" ref="question" label-width="300px" label-position="top">
<el-divider content-position="center">REFEREE'S ASSESSMENT</el-divider> <el-divider content-position="center">REFEREE'S ASSESSMENT</el-divider>
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="12"> <el-col :span="12">

View File

@@ -16,7 +16,7 @@
</p> </p>
<el-form ref="reviewerform" :model="reviewerForm" :rules="rules" label-width="90px"> <el-form ref="reviewerform" :model="reviewerForm" :rules="rules" label-width="90px">
<el-form-item label="Journal :" prop="journal_id"> <el-form-item label="Journal :" prop="journal_id">
<el-select v-model="reviewerForm.journal_id" placeholder="Please select" style="width: 320px;"> <el-select v-model="reviewerForm.journal_id" placeholder="Please select a journal" style="width: 320px;">
<el-option v-for="item in items" :key="item.journal_id" :label="item.title" :value="item.journal_id"></el-option> <el-option v-for="item in items" :key="item.journal_id" :label="item.title" :value="item.journal_id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>

View File

@@ -0,0 +1,420 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-user"></i> <span class="top_dao"> Personal Center</span>
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container">
<!-- 基本信息 -->
<h2 class="infor_title" style="margin: 0 0 25px 0;">Essential Information</h2>
<el-form :model="coreForm" :rules="rules" ref="core_Form" label-width="140px">
<el-form-item label="Account :" prop="account">
<span>{{coreForm.account}}</span>
</el-form-item>
<el-form-item label="Realname :" prop="realname">
<el-input type="text" placeholder="Please enter..." v-model="coreForm.realname" style="width: 320px;"></el-input>
</el-form-item>
<el-form-item label="Gender :" prop="gender">
<el-radio-group v-model="coreForm.gender">
<el-radio :label="1">Male</el-radio>
<el-radio :label="2">Female</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="Change Password :">
<el-button type="warning" @click="psw_word" plain>Change Password</el-button>
</el-form-item>
<el-form-item label="Phone :" prop="phone">
<el-input type="text" placeholder="Please enter..." v-model="coreForm.phone" style="width: 320px;"></el-input>
</el-form-item>
<el-form-item label="Email :" prop="email">
<el-input type="text" placeholder="Please enter..." v-model="coreForm.email" style="width: 320px;"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit_core(coreForm)">Modify and save</el-button>
</el-form-item>
</el-form>
<!-- 审稿人信息 -->
<div style="margin-top: 50px;" v-if="this.usercap.includes('reviewer')">
<el-divider></el-divider>
<h2 class="infor_title" style=" margin: 35px 0 25px 0;">As Reviewer Information</h2>
<p style="margin: 0 0 30px 0;line-height:22px;font-size: 14px;">
You are already the reviewer of the Journal of
<b v-for="index in items_journal"> {{index.title}} ,</b><br>
You can modify the following information.
</p>
<el-form :model="reviewForm" :rules="rules" ref="review_Form" label-width="140px">
<el-form-item label="Title :" prop="title">
<el-select v-model="reviewForm.title" filterable placeholder="Please select a title" value-key="groupID" style="width: 320px;">
<el-option v-for="item in df_technical" :key="item.label" :label="item.label" :value="item.label"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Country :" prop="country">
<el-select v-model="reviewForm.country" filterable placeholder="Please select a country" value-key="groupID"
style="width: 320px;">
<el-option v-for="item in df_country" :label="item.en_name" :key="item.en_name" :value="item.en_name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Major :" prop="maj_cn">
<el-cascader v-model="reviewForm.maj_cn" :options="jl_major" :props="defaultParams" placeholder="Please select major"
@change="ched_id" style="width: 440px;"></el-cascader>
</el-form-item>
<el-form-item label="Field :" prop="field">
<el-input v-model="reviewForm.field" type="textarea" style="width: 600px;"></el-input>
</el-form-item>
<el-form-item label="Orcid :">
<el-input v-model="reviewForm.orcid" style="width: 600px;"></el-input>
</el-form-item>
<el-form-item label="Introduction :">
<el-input v-model="reviewForm.introduction" type="textarea" style="width: 600px;"></el-input>
</el-form-item>
<el-form-item label="Institution :">
<el-input v-model="reviewForm.company" style="width: 600px;"></el-input>
</el-form-item>
<!-- 简历 -->
<el-form-item label="CV. :" prop="Qualifications">
<el-upload class="upload-demo" :action="baseUrl+'api/Reviewer/up_cv_file'" :on-success="handleFileSuccess1" name="reviewerCV"
type="reviewerCV" :on-error="handleFileError" :on-preview="handlePreview" :on-remove="handleRemove"
:before-remove="beforeRemove" :on-change="handleChange1" accept=".pdf" :on-exceed="handleExceed" :file-list="fileL_pdf1"
ref="upload">
<el-button type="text" style="font-weight: bolder;"><b class="el-icon-lx-top" style="font-weight: bolder;"></b>upload</el-button>
</el-upload>
<span style="font-size: 12px; color: #aaa;">Only compressed files can be uploaded(.pdf)</span>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit_review(reviewForm)">Modify and save</el-button>
</el-form-item>
</el-form>
</div>
</div>
<!-- 修改密码弹出框 -->
<el-dialog title="Change Password" :visible.sync="pass_word" width="500px">
<el-form :model="pwdform" :rules="rules" ref="pwd_form" label-width="160px">
<el-form-item label="Old password :" prop="password">
<el-input type="password" placeholder="Please enter..." v-model="pwdform.password"></el-input>
</el-form-item>
<el-form-item label="New password :" prop="new_password">
<el-input type="password" placeholder="Please enter..." v-model="pwdform.new_password"></el-input>
</el-form-item>
<el-form-item label="Confirm password :" prop="re_password">
<el-input type="password" placeholder="Please enter..." v-model="pwdform.re_password"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="pass_word = false">Cancel</el-button>
<el-button type="primary" @click="save_pwd(pwdform)">OK</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
user_id: localStorage.getItem('U_id'),
username: localStorage.getItem('U_name'),
userrole: localStorage.getItem('U_status'),
usercap: localStorage.getItem('U_role'),
coreForm: {
account: localStorage.getItem("U_name"),
gender: 1
},
pwdform: {
account: localStorage.getItem("U_name"),
password: '',
new_password: '',
re_password: ''
},
reviewForm: {
},
items_journal: [],
jl_major: [],
df_country: [],
df_technical: [{
label: 'Prof',
}, {
label: 'Associate Prof.',
}, {
label: 'Assistant Prof.',
}, {
label: 'Ph.D.',
}, {
label: 'Others',
}],
fileL_pdf1: [],
defaultParams: {
label: 'title',
value: 'major_id',
children: 'children'
},
pass_word: false,
rules: {
email: [{
required: true,
message: 'Please enter email',
trigger: 'blur'
}, {
validator: function(rule, value, callback) {
if (/^[-.-_A-Za-z0-9]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(value) == false) {
callback(new Error("Please enter the correct email format"));
} else {
callback();
}
},
trigger: "blur"
}],
phone: [{
required: true,
message: 'Please enter phone',
trigger: 'blur'
}, {
validator: function(rule, value, callback) {
if (/^1[34578]\d{9}$/.test(value) == false) {
callback(new Error("Please enter the correct phone format"));
} else {
callback();
}
},
trigger: "blur"
}],
password: [{
required: true,
message: 'Please enter old password',
trigger: 'blur'
}],
new_password: [{
required: true,
message: 'Please enter new password ',
trigger: 'blur'
}],
re_password: [{
required: true,
message: 'Please enter the new password again',
trigger: 'blur'
}],
gender: [{
required: true,
message: 'Please select gender',
trigger: 'blur'
}],
maj_cn: [{
required: true,
message: 'Please select major',
trigger: 'blur'
}],
title: [{
required: true,
message: 'Please select title',
trigger: 'blur'
}],
country: [{
required: true,
message: 'Please select country',
trigger: 'blur'
}],
field: [{
required: true,
message: 'Please input field',
trigger: 'blur'
}],
realname: [{
required: true,
message: 'Please input realname',
trigger: 'blur'
}]
}
};
},
created() {
this.getData();
},
methods: {
// 获取个人信息,数据列表
getData() {
this.$api
.post('api/Reviewer/getAllMajor')
.then(res => {
this.jl_major = res.data.majors;
})
.catch(err => {
this.$message.error(err);
});
this.$api
.post('api/Reviewer/getCountrys')
.then(res => {
this.df_country = res.countrys;
})
.catch(err => {
this.$message.error(err);
});
if (this.usercap.includes('reviewer')) {
this.$api
.post('api/Journal/getJournalInReviewer', {
username: this.username
})
.then((res) => {
this.items_journal = res.data.journals;
})
.catch((err) => {
console.log(err);
});
}
},
// 点击修改密码
psw_word() {
this.pass_word = true;
},
// 点击提交密码
save_pwd(pwdform) {
this.$refs.pwd_form.validate((valid) => {
if (valid) {
if (pwdform.new_password == pwdform.re_password) {
this.$api
.post('master/Admin/changepasswd', this.pwdform)
.then(res => {
if (res.code == 0) {
this.$message.success('Password modified successfully!');
this.pass_word = false;
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
this.$message.error("The two new password entries are inconsistent!");
}
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 点击提交个人基本信息
onSubmit_core(coreForm) {
this.$refs.core_Form.validate((valid) => {
if (valid) {
// 二次确认删除
this.$confirm('Are you sure you want to modify your basic personal information', 'Tips', {
type: 'warning'
})
.then(() => {
// this.$api
// .post('master/Admin/editAdminBase', this.coreForm)
// .then(res => {
// if (res.code == 0) {
// this.$message.success('Personal information modified successfully');
// this.getData();
// } else {
// this.$message.error(res.msg);
// }
// })
// .catch(err => {
// this.$message.error(err);
// });
})
.catch(() => {});
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 点击提交审稿人信息
onSubmit_review(reviewForm) {
this.$refs.review_Form.validate((valid) => {
if (valid) {
// 二次确认删除
this.$confirm('Are you sure you want to modify reviewer information', 'Tips', {
type: 'warning'
})
.then(() => {
})
.catch(() => {});
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 下拉级联添加
ched_id(event) {
this.reviewForm.major = event[0];
this.reviewForm.cmajor = event[1];
},
ched_id_old(event) {
this.reviewForm.major = event[0];
this.reviewForm.cmajor = event[1];
},
ched_id_edit(event) {
this.reviewForm.major = event[0];
this.reviewForm.cmajor = event[1];
},
// 上传文件
handleChange1(file, fileList) {
if (fileList.length > 0) {
this.fileL_pdf1 = [fileList[fileList.length - 1]]
}
},
handleFileSuccess1(res, file) {
if (res.code == 0) {
this.reviewForm.cv = res.upurl;
this.reviewForm.qualifications = res.upurl;
} else {
this.$message.error(res.msg);
}
},
beforeRemove(file, fileList) {
return this.$confirm(`Remove ${ file.name }`)
},
handleFileError(res, file) {
},
handleRemove(file, fileList) {
},
handlePreview(file) {
window.open(file.url);
},
handleExceed(files, fileList) {
this.$message.warning("The current limit is 1 file. Please delete the current file first");
},
}
};
</script>
<style scoped>
.infor_title {
font-size: 18px;
}
.join_bth {
color: #fff;
text-align: center;
border-radius: 4px;
width: 320px;
height: 50px;
line-height: 50px;
background-color: #006699;
font-size: 20px;
}
</style>

View File

@@ -229,6 +229,9 @@
case 'PT': case 'PT':
frag = 'PROTOCOL'; frag = 'PROTOCOL';
break; break;
case 'CS':
frag = 'CASE SERIES';
break;
default: default:
frag = 'OTHERS'; frag = 'OTHERS';
} }

View File

@@ -15,7 +15,7 @@
<el-form-item label="Status"> <el-form-item label="Status">
<span>{{articleState}}</span> <span>{{articleState}}</span>
</el-form-item> </el-form-item>
<el-form-item v-if="form.accept_sn != ''" label="Manusript ID"> <el-form-item v-if="form.accept_sn != ''" label="Manuscript ID">
<span>{{form.accept_sn}}</span> <span>{{form.accept_sn}}</span>
</el-form-item> </el-form-item>
<el-form-item label="Journal"> <el-form-item label="Journal">
@@ -307,6 +307,9 @@
case 'PT': case 'PT':
frag = 'PROTOCOL'; frag = 'PROTOCOL';
break; break;
case 'CS':
frag = 'CASE SERIES';
break;
default: default:
frag = 'OTHERS'; frag = 'OTHERS';
} }

View File

@@ -8,15 +8,12 @@
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<div class="container_l"> <div class="container_l">
<el-tag :key="tag" type="success" v-for="tag in dynamicTags" closable :disable-transitions="false" @close="handleClose(tag)" <div v-for="item in dynamicTags" style="background-color: #f0f9eb;border-radius: 5px;border:1px solid #e1f3d8;color: #67c23a;font-size: 14px;padding: 8px 15px;margin: 0 0 20px 0;">
style="font-size: 14px;margin:0 0 15px 0;line-height: 30px;height: 30px;"> <el-button type="success" icon="el-icon-close" circle @click='handleClose' style="float: right;margin: 17px 5px 0 0;"></el-button>
{{tag}} <p><b>{{item.label}}</b></p>
</el-tag> <p style="margin: 5px 0;">{{item.title}}</p>
<!-- <p style="font-size: 14px;margin:0 0 15px 18px;line-height: 22px;"> <p>{{item.content}}</p>
Submission System Update Notifications 2.1 </div>
<br>
The reviewers can look through all reviewers' comments when the manuscripts get final decision.
</p> -->
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="24"> <el-col :span="24">
<el-card class="box-card" v-loading="loading" element-loading-text="Loading..." element-loading-spinner="el-icon-loading" <el-card class="box-card" v-loading="loading" element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
@@ -95,9 +92,11 @@
IMG_Url: '', IMG_Url: '',
cerVisible: false, cerVisible: false,
feilVisible: false, feilVisible: false,
dynamicTags: [ dynamicTags: [{
'Submission System Update Notifications 2.1 The reviewers can look through all reviewers comments when the manuscripts get final decision.' label: 'Submission System 2.0',
], title: 'Update Notifications',
content: "The reviewers can check all reviewers ' comments when the manuscripts get final decision."
}],
}; };
}, },
mounted() { mounted() {
@@ -180,7 +179,8 @@
// 关闭标签 // 关闭标签
handleClose(tag) { handleClose(tag) {
this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1); // this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
this.dynamicTags = []
}, },
}, },
filters: { filters: {

View File

@@ -242,11 +242,11 @@
<el-form-item label="Confidential Comments to the Editor"> <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>
<el-form-item label="Comments for the Authors" prop="comment"> <el-form-item label="Comments for the Authors" v-if="this.txt_mess.atype == 'Comment' || this.txt_mess.atype == 'News'">
<el-input type="textarea" placeholder="please input content" v-model="questionform.comment" :rows="8"></el-input>
</el-form-item>
<el-form-item label="Comments for the Authors" prop="comment" v-if="this.txt_mess.atype != 'Comment' && this.txt_mess.atype != 'News'">
<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>
<p style="color: #e6a23c;font-size: 13px;" v-if="this.txt_mess.atype!='Comment'||this.txt_mess.atype!='News'">
Dear reviewer, we recommend the available comment should be more than 40 words.
</p>
</el-form-item> </el-form-item>
<el-form-item label="Please choose disclose your name or remain anonymous"> <el-form-item label="Please choose disclose your name or remain anonymous">
<el-radio-group v-model="questionform.is_anonymous" style="line-height: 24px;"> <el-radio-group v-model="questionform.is_anonymous" style="line-height: 24px;">
@@ -328,36 +328,6 @@
required: true, required: true,
message: "please input content", message: "please input content",
trigger: "blur" trigger: "blur"
}, {
validator: function(rule, value, callback) {
if (new RegExp("[\\u4E00-\\u9FFF]+", "g").test(value)) {
//中文
let blankCount = 0;
for (let i in value.match(/ /g)) {
blankCount++
}
let wenziCount = 0;
for (let j = 0; j < value.length; j++) {
if ((value.charCodeAt(j) < 0) || (value.charCodeAt(j) > 255)) {
wenziCount++
}
}
if (blankCount + wenziCount <= 60) {
callback(new Error(
"Dear reviewer, we recommend the available comment should be more than 60 Chinese words."));
}
} else {
//英文
let blankCount = 0;
for (let i in value.match(/ /g)) {
blankCount++
}
if (blankCount <= 40) {
callback(new Error("Dear reviewer, we recommend the available comment should be more than 40 words."));
}
}
},
trigger: "blur"
}], }],
} }
} }
@@ -392,7 +362,6 @@
this.$message.error(err); this.$message.error(err);
}); });
} else { } else {
this.$message.error(res.msg); this.$message.error(res.msg);
} }
@@ -513,23 +482,64 @@
if (this.questionform.is_anonymous == "" && this.questionform.is_anonymous != "0") { if (this.questionform.is_anonymous == "" && this.questionform.is_anonymous != "0") {
this.$message.error('Please choose disclose your name or remain anonymous.'); this.$message.error('Please choose disclose your name or remain anonymous.');
} else { } else {
// 验证相加的字数
let Char_Cter = this.questionform.qu9contents + ' ' + this.questionform.qu10contents + ' ' +
this.questionform.qu11contents + ' ' + this.questionform.qu12contents + ' ' +
this.questionform.qu13contents + ' ' + this.questionform.comment
if (new RegExp("[\\u4E00-\\u9FFF]+", "g").test(Char_Cter)) {
//中文
let blankCount = 0;
for (let i in Char_Cter.match(/ /g)) {
blankCount++
}
let wenziCount = 0;
for (let j = 0; j < Char_Cter.length; j++) {
if ((Char_Cter.charCodeAt(j) < 0) || (Char_Cter.charCodeAt(j) > 255)) {
wenziCount++
}
}
if (blankCount + wenziCount <= 60) {
this.$message({
offset: '380',
type: 'error',
message: "We encourage you to enrich your comment further to help improve the peer paper."
})
return false
}
} else {
//英文
let blankCount = 0;
for (let i in Char_Cter.match(/ /g)) {
blankCount++
}
if (blankCount <= 40) {
this.$message({
offset: '380',
type: 'error',
message: "We encourage you to enrich your comment further to help improve the peer paper."
})
return false
}
}
// 提交接口
this.loading = true this.loading = true
this.$refs.question.validate((valid) => { this.$refs.question.validate((valid) => {
if (valid) { if (valid) {
// this.$api.post('api/Reviewer/questionSubmit', this.questionform) this.$api.post('api/Reviewer/questionSubmit', this.questionform)
// .then((res) => { .then((res) => {
// if (res.code == 0) { if (res.code == 0) {
// this.loading = false; this.loading = false;
// this.$message.success('Success!!'); this.$message.success('Success!!');
// this.getData(); this.getData();
// } else { this.$router.push('/per_text_success');
// this.loading = false; } else {
// this.$message.error('question submit error'); this.loading = false;
// } this.$message.error('question submit error');
// }); }
});
} else { } else {
this.loading = false this.loading = false;
this.$message.error('Please complete the information!');
} }
}); });
} }

View File

@@ -0,0 +1,135 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-collection"></i>
<router-link :to="{path:'/peerewer'}">
<span class="top_dao"> Reviewer Article</span>
</router-link>
>> Cancel review
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container_l">
<el-card class="box-card fail_page">
<div class="fail_page_1">
<svg t="1646277316849" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="20680"
width="32" height="32">
<path d="M1023.036803 512.0016A511.518402 511.518402 0 1 1 511.465068 0.0032a504.382424 504.382424 0 0 1 214.719329 47.157186c8.213308 3.743988 15.679951 8.234641 23.146595 11.978629a31.647901 31.647901 0 0 1-29.226576 56.138491c-6.719979-3.733322-14.186622-6.730646-20.159937-9.727969a443.123949 443.123949 0 0 0-188.479411-41.173205 449.502595 449.502595 0 1 0 449.491929 449.875928c0-8.234641-0.746664-14.933287-0.746664-23.199928a31.423902 31.423902 0 0 1 29.866573-33.695895 32.351899 32.351899 0 0 1 33.706561 29.951907A134.634246 134.634246 0 0 1 1023.036803 512.0016zM970.663633 399.724618a34.431892 34.431892 0 0 1 0-68.863785 34.431892 34.431892 0 1 1 0 68.863785z m-50.879841-110.03699a34.431892 34.431892 0 1 1 34.453226-34.431892 33.855894 33.855894 0 0 1-34.453226 34.431892z m-81.493078-95.061036a34.303893 34.303893 0 0 1-34.34656-34.431893 33.834561 33.834561 0 0 1 34.34656-34.431892 34.431892 34.431892 0 1 1 0 68.863785z m-36.586553 182.644762L458.451901 720.854281a32.554565 32.554565 0 0 1-44.906527 0 0.735998 0.735998 0 0 1-0.746664-0.757331L253.545874 560.662781a30.186572 30.186572 0 0 1 0-44.159862 31.039903 31.039903 0 0 1 44.79986 0l137.59957 137.72757 320.852331-321.865661a31.754567 31.754567 0 1 1 44.906526 44.906526z"
fill="#fa6400" p-id="20681"></path>
</svg>
<p>Rejection Successful !</p>
<br clear="both">
</div>
<div class="fail_page_2">
We still sincerely appreciate your support to our journal.
</div>
<div class="fail_page_3">
<a href="/peerewer">Return to Peer Review page</a>
</div>
</el-card>
</div>
</div>
</template>
<script>
export default {
data() {
return {
Direct_log: this.$route.query.act,
Art_id: this.$route.query.Art_id,
}
},
created() {
if (this.Direct_log == null) {
this.getData();
} else {
this.$api
.post('api/Chief/autoLoginForChief', {
'code': this.Direct_log
})
.then(res => {
if (res.code == 0) {
localStorage.setItem('U_role', res.data.roles);
localStorage.setItem('U_name', res.data.user.account);
localStorage.setItem('U_id', res.data.user.user_id);
localStorage.setItem('U_relname', res.data.user.realname);
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
},
methods: {
getData() {
this.$api
.post('api/Reviewer/refuseReviewerArticle', {
art_rev_id: this.Art_id
})
.then(res => {
if (res.code == 0) {
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
}
}
</script>
<style scoped>
.fail_page {
padding: 25px 0;
text-align: center;
}
.fail_page .fail_page_1 {
display: inline-block;
font-size: 26px;
margin: 0 0 50px 0;
}
.fail_page .fail_page_1 svg {
float: left;
width: 35px;
height: 35px;
margin: 6px;
}
.fail_page .fail_page_1 p {
float: left;
margin: 5px 0 0 10px;
}
.fail_page .fail_page_2 {
margin: 0 0 60px 0;
text-align: center;
line-height: 30px;
}
.fail_page .fail_page_3 {
margin: 0 0 20px 0;
}
.fail_page .fail_page_3 a {
color: #fff;
background-color: #006699;
border-radius: 5px;
padding: 10px 20px;
}
.fail_page .fail_page_3 a:hover {
text-decoration: underline;
}
</style>

View File

@@ -256,11 +256,11 @@
<el-form-item label="Confidential Comments to the Editor"> <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>
<el-form-item label="Comments for the Authors" prop="comment"> <el-form-item label="Comments for the Authors" v-if="this.txt_mess.atype == 'Comment' || this.txt_mess.atype == 'News'">
<el-input type="textarea" placeholder="please input content" v-model="questionform.comment" :rows="8"></el-input>
</el-form-item>
<el-form-item label="Comments for the Authors" prop="comment" v-if="this.txt_mess.atype != 'Comment' && this.txt_mess.atype != 'News'">
<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>
<p style="color: #e6a23c;font-size: 13px;" v-if="this.txt_mess.atype!='Comment'||this.txt_mess.atype!='News'">
Dear reviewer, we recommend the available comment should be more than 40 words.
</p>
</el-form-item> </el-form-item>
<el-form-item label="Please choose disclose your name or remain anonymous."> <el-form-item label="Please choose disclose your name or remain anonymous.">
<el-radio-group v-model="questionform.is_anonymous"> <el-radio-group v-model="questionform.is_anonymous">
@@ -343,37 +343,7 @@
required: true, required: true,
message: "please input content", message: "please input content",
trigger: "blur" trigger: "blur"
}, { }]
validator: function(rule, value, callback) {
if (new RegExp("[\\u4E00-\\u9FFF]+", "g").test(value)) {
//中文
let blankCount = 0;
for (let i in value.match(/ /g)) {
blankCount++
}
let wenziCount = 0;
for (let j = 0; j < value.length; j++) {
if ((value.charCodeAt(j) < 0) || (value.charCodeAt(j) > 255)) {
wenziCount++
}
}
if (blankCount + wenziCount <= 60) {
callback(new Error(
"Dear reviewer, we recommend the available comment should be more than 60 Chinese words."));
}
} else {
//英文
let blankCount = 0;
for (let i in value.match(/ /g)) {
blankCount++
}
if (blankCount <= 40) {
callback(new Error("Dear reviewer, we recommend the available comment should be more than 40 words."));
}
}
},
trigger: "blur"
}],
} }
} }
}, },
@@ -509,6 +479,47 @@
if (this.questionform.is_anonymous == "" && this.questionform.is_anonymous != "0") { if (this.questionform.is_anonymous == "" && this.questionform.is_anonymous != "0") {
this.$message.error('Please choose disclose your name or remain anonymous.'); this.$message.error('Please choose disclose your name or remain anonymous.');
} else { } else {
// 验证相加的字数
let Char_Cter = this.questionform.qu9contents + ' ' + this.questionform.qu10contents + ' ' +
this.questionform.qu11contents + ' ' + this.questionform.qu12contents + ' ' +
this.questionform.qu13contents + ' ' + this.questionform.comment
if (new RegExp("[\\u4E00-\\u9FFF]+", "g").test(Char_Cter)) {
//中文
let blankCount = 0;
for (let i in Char_Cter.match(/ /g)) {
blankCount++
}
let wenziCount = 0;
for (let j = 0; j < Char_Cter.length; j++) {
if ((Char_Cter.charCodeAt(j) < 0) || (Char_Cter.charCodeAt(j) > 255)) {
wenziCount++
}
}
if (blankCount + wenziCount <= 60) {
this.$message({
offset: '380',
type: 'error',
message: "We encourage you to enrich your comment further to help improve the peer paper."
})
return false
}
} else {
//英文
let blankCount = 0;
for (let i in Char_Cter.match(/ /g)) {
blankCount++
}
if (blankCount <= 40) {
this.$message({
offset: '380',
type: 'error',
message: "We encourage you to enrich your comment further to help improve the peer paper."
})
return false
}
}
// 提交接口
this.loading = true; this.loading = true;
this.$refs.question.validate((valid) => { this.$refs.question.validate((valid) => {
if (valid) { if (valid) {
@@ -518,6 +529,7 @@
this.loading = false; this.loading = false;
this.$message.success('Success!!'); this.$message.success('Success!!');
this.getData(); this.getData();
this.$router.push('/per_text_success');
} else { } else {
this.loading = false; this.loading = false;
this.$message.error('question submit error'); this.$message.error('question submit error');

View File

@@ -0,0 +1,104 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-collection"></i>
<router-link :to="{path:'/peerewer'}">
<span class="top_dao"> Reviewer Article</span>
</router-link>
>> Review completed
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container_l">
<el-card class="box-card suss_page">
<div class="suss_page_1">
<svg t="1646625129770" class="icon" viewBox="0 0 1477 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29677"
width="32" height="32">
<path d="M1394.036364 459.636364a41.890909 41.890909 0 1 0 83.781818 0 41.890909 41.890909 0 1 0-83.781818 0Z"
fill="#3DBD7D" p-id="29678"></path>
<path d="M1079.854545 793.6a20.945455 20.945455 0 1 0 41.89091 0 20.945455 20.945455 0 1 0-41.89091 0Z" fill="#3DBD7D"
p-id="29679"></path>
<path d="M1027.490909 793.6zM1257.890909 417.745455H904.145455c-19.781818 0-36.072727-16.290909-36.072728-36.072728s16.290909-36.072727 36.072728-36.072727h190.836363c19.781818 0 36.072727-16.290909 36.072727-36.072727 0-19.781818-16.290909-36.072727-36.072727-36.072728H964.654545C878.545455 110.545455 707.490909 0 512 0 229.236364 0 0 229.236364 0 512s229.236364 512 512 512c168.727273 0 318.836364-82.618182 411.927273-209.454545h81.454545c11.636364 0 20.945455-9.309091 20.945455-20.945455s-9.309091-20.945455-20.945455-20.945455h-102.4c-19.781818 0-36.072727-16.290909-36.072727-36.072727 0-19.781818 16.290909-36.072727 36.072727-36.072727h222.254546c19.781818 0 36.072727-16.290909 36.072727-36.072727 0-19.781818-16.290909-36.072727-36.072727-36.072728h-116.363637c8.145455-37.236364 12.8-75.636364 12.8-115.2v-10.472727h233.890909c23.272727 0 41.890909-18.618182 41.890909-41.890909s-16.290909-43.054545-39.563636-43.054545z"
fill="#3DBD7D" p-id="29680"></path>
<path d="M820.363636 293.236364c-18.618182-18.618182-47.709091-18.618182-66.327272 0L402.618182 644.654545 267.636364 488.727273c-16.290909-19.781818-46.545455-20.945455-65.163637-4.654546-19.781818 16.290909-20.945455 46.545455-4.654545 65.163637l167.563636 193.163636 1.163637 1.163636s0 1.163636 1.163636 1.163637c1.163636 1.163636 1.163636 1.163636 2.327273 1.163636 1.163636 1.163636 2.327273 2.327273 4.654545 3.490909 1.163636 0 1.163636 1.163636 2.327273 1.163637 2.327273 1.163636 3.490909 2.327273 5.818182 3.490909 1.163636 0 1.163636 0 2.327272 1.163636 2.327273 1.163636 4.654545 1.163636 6.981819 2.327273h1.163636c2.327273 0 4.654545 1.163636 8.145454 1.163636h1.163637c2.327273 0 5.818182 0 8.145454-1.163636 2.327273 0 5.818182-1.163636 8.145455-2.327273 2.327273-1.163636 5.818182-2.327273 8.145454-4.654545 1.163636-1.163636 3.490909-2.327273 4.654546-3.49091l2.327273-2.327272 386.327272-386.327273c18.618182-17.454545 18.618182-47.709091 0-65.163636z"
fill="#FFFFFF" p-id="29681"></path>
</svg>
<p>Review completed !</p>
<br clear="both">
</div>
<div class="suss_page_2">
Dear reviewer, we have received your comment.
<br>
The editorial team would like to extend our thanks to you as peer reviewer for our journal.
</div>
<div class="suss_page_3">
<a href="/peerewer">Return to Peer Review page</a>
</div>
</el-card>
</div>
</div>
</template>
<script>
export default {
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style scoped>
.suss_page {
padding: 25px 0;
text-align: center;
}
.suss_page .suss_page_1 {
display: inline-block;
font-size: 26px;
margin: 0 0 50px 0;
}
.suss_page .suss_page_1 svg {
float: left;
width: 50px;
height: 50px;
}
.suss_page .suss_page_1 p {
float: left;
margin: 5px 0 0 10px;
}
.suss_page .suss_page_2 {
margin: 0 0 60px 0;
text-align: center;
line-height: 30px;
}
.suss_page .suss_page_3 {
margin: 0 0 20px 0;
}
.suss_page .suss_page_3 a {
color: #fff;
background-color: #006699;
border-radius: 5px;
padding: 10px 20px;
}
.suss_page .suss_page_3 a:hover {
text-decoration: underline;
}
</style>

View File

@@ -1,734 +0,0 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-lx-calendar"></i> Reviewer Add
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container">
<div class="handle-box">
<el-button type="primary" icon="el-icon-plus" class="handle-del" @click="add_Selection">Add</el-button>
</div>
<div class="handle-box" :rules="rules">
<el-select v-model="query.journalId" placeholder="Please select a journal" @change="chan_id">
<el-option label="All" :key="0" :value="0"></el-option>
<el-option v-for="item in df_jour" :label="item.title" :key="item.journal_id" :value="item.journal_id"></el-option>
</el-select>
</div>
<el-table :data="tableData" border class="table" ref="multipleTable" header-cell-class-name="table-header">
<el-table-column prop="account" label="account"></el-table-column>
<el-table-column prop="journal_title" label="journal"></el-table-column>
<el-table-column prop="realname" label="realname"></el-table-column>
<el-table-column prop="email" label="email"></el-table-column>
<el-table-column prop="technical" label="technical"></el-table-column>
<el-table-column prop="company" label="institution"></el-table-column>
<el-table-column label=" " width="80" align="center">
<template slot-scope="scope">
<!-- <el-button type="text" icon="el-icon-edit" @click="handleEdit(scope.$index, scope.row)">Detail</el-button> -->
<el-button type="text" icon="el-icon-edit" @click="handleEdit(scope.$index, scope.row)">Edit</el-button>
<!-- <el-button type="text" icon="el-icon-delete" class="red" @click="handleDelete(scope.$index, scope.row)">Delete</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="link_Total" @current-change="handlePageChange"></el-pagination>
</div>
</div>
<!-- 添加弹出框 -->
<el-dialog title="Add" :visible.sync="addVisible" width="40%">
<el-form ref="add_Form" :model="addForm" :rules="rules" label-width="110px">
<el-form-item label="account" prop="account">
<el-input v-model="addForm.account" @blur='saerNa_U()'></el-input>
</el-form-item>
<el-form-item label="email" prop="email">
<el-input v-model="addForm.email" @blur='saerEm_U()'></el-input>
</el-form-item>
<el-form-item label="password" prop="password">
<span style="color: #666;">123456qwe</span>
</el-form-item>
<el-form-item label="gender" prop="gender">
<el-radio-group v-model="addForm.gender">
<el-radio :label="1">male</el-radio>
<el-radio :label="2">female</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="journal" prop="journal_id">
<el-select v-model="addForm.journal_id" placeholder="Please select a journal" @change="chan_id">
<el-option v-for="item in df_jour" :label="item.title" :key="item.journal_id" :value="item.journal_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="title" prop="title">
<el-select v-model="addForm.title" filterable placeholder="Please select a title" value-key="groupID" style="width: 300px;">
<el-option key="Prof." label="Prof." value="Prof."></el-option>
<el-option key="Associate Prof." label="Associate Prof." value="Associate Prof."></el-option>
<el-option key="Assistant Prof." label="Assistant Prof." value="Assistant Prof."></el-option>
<el-option key="Ph.D." label="Ph.D." value="Ph.D."></el-option>
<el-option key="Others" label="Others" value="Others"></el-option>
</el-select>
</el-form-item>
<el-form-item label="country" prop="country">
<el-select v-model="addForm.country" filterable placeholder="Please select a country" value-key="groupID" style="width: 300px;">
<el-option v-for="item in df_country" :label="item.en_name" :key="item.en_name" :value="item.en_name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="realname" prop="realname">
<el-input v-model="addForm.realname"></el-input>
</el-form-item>
<el-form-item label="orcid">
<el-input v-model="addForm.orcid"></el-input>
</el-form-item>
<el-form-item label="introduction">
<el-input v-model="addForm.introduction" type="textarea"></el-input>
</el-form-item>
<el-form-item label="institution">
<el-input v-model="addForm.company"></el-input>
</el-form-item>
<el-form-item label="major" prop="maj_cn">
<el-cascader v-model="addForm.maj_cn" :options="jl_major" :props="defaultParams" placeholder="Please select major"
@change="ched_id" style="width: 300px;"></el-cascader>
</el-form-item>
<el-form-item label="field" prop="field">
<el-input v-model="addForm.field" type="textarea"></el-input>
</el-form-item>
<!-- 简历 -->
<el-form-item prop="qualifications" label="CV.">
<el-upload class="upload-demo" :action="baseUrl+'api/Reviewer/up_cv_file'" :on-success="handleFileSuccess1" name="reviewerCV"
type="reviewerCV" :on-error="handleFileError" :on-preview="handlePreview" :on-remove="handleRemove"
:before-remove="beforeRemove" :on-change="handleChange1" accept=".pdf" :on-exceed="handleExceed" :file-list="fileL_pdf1"
ref="upload">
<el-button type="text" style="font-weight: bolder;"><b class="el-icon-lx-top" style="font-weight: bolder;"></b>upload</el-button>
</el-upload>
<span style="font-size: 12px; color: #aaa;">Only compressed files can be uploaded(.pdf)</span>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addVisible = false">Cancel</el-button>
<el-button type="primary" @click="saveAdd(addForm)" :disabled="this.btn_alert">OK</el-button>
</span>
</el-dialog>
<!-- 添加重复弹出框 -->
<el-dialog title="Add old" :visible.sync="oldVisible" width="40%">
<el-form ref="old_Form" :model="oldForm" :rules="rules" label-width="110px">
<el-form-item label="account" prop="account">
<el-input v-model="oldForm.account"></el-input>
</el-form-item>
<el-form-item label="email" prop="email">
<el-input v-model="oldForm.email"></el-input>
</el-form-item>
<el-form-item label="gender" prop="gender">
<el-radio-group v-model="oldForm.gender">
<el-radio :label="1">male</el-radio>
<el-radio :label="2">female</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="journal" prop="journal_id">
<el-select v-model="oldForm.journal_id" placeholder="Please select a journal" @change="chan_id">
<el-option v-for="item in df_jour" :label="item.title" :key="item.journal_id" :value="item.journal_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="title" prop="title">
<el-select v-model="oldForm.title" filterable placeholder="Please select a title" value-key="groupID" style="width: 300px;">
<el-option key="Prof." label="Prof." value="Prof."></el-option>
<el-option key="Associate Prof." label="Associate Prof." value="Associate Prof."></el-option>
<el-option key="Assistant Prof." label="Assistant Prof." value="Assistant Prof."></el-option>
<el-option key="Ph.D." label="Ph.D." value="Ph.D."></el-option>
<el-option key="Others" label="Others" value="Others"></el-option>
</el-select>
</el-form-item>
<el-form-item label="country" prop="country">
<el-select v-model="oldForm.country" filterable placeholder="Please select a country" value-key="groupID" style="width: 300px;">
<el-option v-for="item in df_country" :label="item.en_name" :key="item.en_name" :value="item.en_name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="realname" prop="realname">
<el-input v-model="oldForm.realname"></el-input>
</el-form-item>
<el-form-item label="orcid">
<el-input v-model="oldForm.orcid"></el-input>
</el-form-item>
<el-form-item label="introduction">
<el-input v-model="oldForm.introduction" type="textarea" :autosize="{minRows: 2}"></el-input>
</el-form-item>
<el-form-item label="institution">
<el-input v-model="oldForm.company"></el-input>
</el-form-item>
<el-form-item label="major" prop="maj_cn">
<el-cascader v-model="oldForm.maj_cn" :options="jl_major" :props="defaultParams" placeholder="Please select major"
@change="ched_id_old" style="width: 300px;"></el-cascader>
</el-form-item>
<el-form-item label="field" prop="field">
<el-input v-model="oldForm.field" type="textarea"></el-input>
</el-form-item>
<!-- 简历 -->
<el-form-item prop="qualifications" label="CV.">
<el-upload class="upload-demo" :action="baseUrl+'api/Reviewer/up_cv_file'" :on-success="handleFileSuccess2" name="reviewerCV"
type="reviewerCV" :on-error="handleFileError" :on-preview="handlePreview" :on-remove="handleRemove"
:before-remove="beforeRemove" :on-change="handleChange2" accept=".pdf" :on-exceed="handleExceed" :file-list="fileL_pdf2"
ref="upload">
<el-button type="text" style="font-weight: bolder;"><b class="el-icon-lx-top" style="font-weight: bolder;"></b>upload</el-button>
</el-upload>
<span style="font-size: 12px; color: #aaa;">Only compressed files can be uploaded(.pdf)</span>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="oldVisible = false">Cancel</el-button>
<el-button type="primary" @click="saveOld(oldForm)">OK</el-button>
</span>
</el-dialog>
<!-- 编辑弹出框 -->
<el-dialog title="Message" :visible.sync="editVisible" width="40%">
<el-form ref="edit_Form" :model="editForm" :rules="rules" label-width="110px">
<el-form-item label="account" prop="account">
{{editForm.account}}
</el-form-item>
<el-form-item label="email" prop="email">
{{editForm.email}}
<!-- <el-input v-model="editForm.email" @blur='saerEm_U()'></el-input> -->
</el-form-item>
<el-form-item label="gender" prop="gender">
<span v-if="editForm.gender==1">male</span>
<span v-if="editForm.gender==2">female</span>
</el-form-item>
<el-form-item label="journal" prop="journal_title">
{{editForm.journal_title}}
</el-form-item>
<el-form-item label="title" prop="title">
<el-select v-model="editForm.title" filterable placeholder="Please select a title" value-key="groupID" style="width: 300px;">
<el-option key="Prof." label="Prof." value="Prof."></el-option>
<el-option key="Associate Prof." label="Associate Prof." value="Associate Prof."></el-option>
<el-option key="Assistant Prof." label="Assistant Prof." value="Assistant Prof."></el-option>
<el-option key="Ph.D." label="Ph.D." value="Ph.D."></el-option>
<el-option key="Others" label="Others" value="Others"></el-option>
</el-select>
</el-form-item>
<el-form-item label="country" prop="country">
{{editForm.country}}
</el-form-item>
<el-form-item label="realname" prop="realname">
{{editForm.realname}}
</el-form-item>
<el-form-item label="orcid">
{{editForm.orcid}}
</el-form-item>
<el-form-item label="introduction">
<el-input v-model="editForm.introduction" type="textarea" :autosize="{minRows: 2}"></el-input>
</el-form-item>
<el-form-item label="institution">
<el-input v-model="editForm.company"></el-input>
</el-form-item>
<el-form-item label="major" prop="maj_cn">
<el-cascader :options="jl_major" v-model="editForm.maj_cn" :props="defaultParams" placeholder="Please select major"
@change="ched_id_edit" style="width: 300px;"></el-cascader>
</el-form-item>
<el-form-item label="field">
<el-input v-model="editForm.field" type="textarea"></el-input>
</el-form-item>
<!-- 简历 -->
<el-form-item prop="qualifications" label="CV.">
<el-upload class="upload-demo" :action="baseUrl+'api/Reviewer/up_cv_file'" :on-success="handleFileSuccess3" name="reviewerCV"
type="reviewerCV" :on-error="handleFileError" :on-preview="handlePreview" :on-remove="handleRemove"
:before-remove="beforeRemove" :on-change="handleChange3" accept=".pdf" :on-exceed="handleExceed" :file-list="fileL_pdf3"
ref="upload">
<el-button type="text" style="font-weight: bolder;"><b class="el-icon-lx-top" style="font-weight: bolder;"></b>upload</el-button>
</el-upload>
<span style="font-size: 12px; color: #aaa;">Only compressed files can be uploaded(.pdf)</span>
</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(editForm)">OK</el-button>
<!-- <el-button type="primary" @click="editVisible = false">OK</el-button> -->
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [],
addForm: {
gender: 1,
major: [],
qualifications: ''
},
editForm: {},
oldForm: {},
editVisible: false,
addVisible: false,
oldVisible: false,
btn_alert: false,
df_jour: [],
df_country: [],
jl_major: [],
defaultParams: {
label: 'title',
value: 'major_id',
children: 'children'
},
edit_id: localStorage.getItem('U_id'),
query: {
username: localStorage.getItem('U_name'),
journalId: 0,
pageIndex: 1,
pageSize: 15
},
link_Total: 0,
aid: -1,
idx: -1,
baseUrl: this.Common.baseUrl,
mediaUrl:this.Common.mediaUrl,
fileL_pdf1: [],
fileL_pdf2: [],
fileL_pdf3: [],
rules: {
account: [{
required: true,
message: 'Please input account',
trigger: 'blur'
}],
email: [{
required: true,
message: 'Please input email',
trigger: 'blur'
}, {
validator: function(rule, value, callback) {
if (/^[-.-_A-Za-z0-9]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(value) == false) {
callback(new Error("Please enter the correct email format"));
} else {
callback();
}
},
trigger: "blur"
}],
genger: [{
required: true,
message: 'Please select genger',
trigger: 'blur'
}],
journal_id: [{
required: true,
message: 'Please select journal_id',
trigger: 'blur'
}],
journal_title: [{
required: true,
message: 'Please select journal_title',
trigger: 'blur'
}],
maj_cn: [{
required: true,
message: 'Please select maj_cn',
trigger: 'blur'
}],
title: [{
required: true,
message: 'Please select title',
trigger: 'blur'
}],
technical: [{
required: true,
message: 'Please select title',
trigger: 'blur'
}],
country: [{
required: true,
message: 'Please select country',
trigger: 'blur'
}],
field: [{
required: true,
message: 'Please input field',
trigger: 'blur'
}],
realname: [{
required: true,
message: 'Please input realname',
trigger: 'blur'
}],
qualifications: [{
required: true,
message: 'Please upload your resume',
trigger: 'blur'
}]
}
};
},
created() {
this.getData();
},
methods: {
// 获取数据
getData() {
this.$api
.post('api/Chief/getJournalsByEditor', {
'user_id': this.edit_id
})
.then(res => {
if (res.code == 0) {
this.df_jour = res.data.journals;
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
this.$api
.post('api/Reviewer/getReviewerListByJournal', this.query)
.then(res => {
if (res.code == 0) {
this.tableData = res.data;
this.link_Total = res.total || 0;
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
this.$api
.post('api/Reviewer/getAllMajor')
.then(res => {
this.jl_major = res.data.majors;
})
.catch(err => {
this.$message.error(err);
});
this.$api
.post('api/Reviewer/getCountrys')
.then(res => {
this.df_country = res.countrys;
})
.catch(err => {
this.$message.error(err);
});
},
// 分页导航
handlePageChange(val) {
this.$set(this.query, 'pageIndex', val);
this.getData();
},
// 下拉分类搜索
chan_id(event) {
this.getData();
},
// 添加操作
add_Selection(index, row) {
this.aid = index;
this.addVisible = true;
this.fileL_pdf1 = [];
},
// 下拉级联添加
ched_id(event) {
this.addForm.major = event[0];
this.addForm.cmajor = event[1];
},
ched_id_old(event) {
this.oldForm.major = event[0];
this.oldForm.cmajor = event[1];
},
ched_id_edit(event) {
this.editForm.major = event[0];
this.editForm.cmajor = event[1];
},
// 保存添加
saveAdd(addForm) {
this.$refs.add_Form.validate((valid) => {
if (this.addForm.qualifications == '') {
this.$message.error('Please make sure that the qualifications document is uploaded successfully');
return false;
}
if (valid) {
this.$api
.post('api/Reviewer/addReviewer', this.addForm)
.then(res => {
if (res.code == 0) {
this.addVisible = false;
this.btn_alert = false;
this.$refs.add_Form.resetFields();
this.$message.success(`Added successfully!`);
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
this.$message.error('error submit!!');
return false;
}
});
},
saveOld(oldForm) {
this.$refs.old_Form.validate((valid) => {
if (this.oldForm.qualifications == '') {
this.$message.error('Please make sure that the qualifications document is uploaded successfully');
return false;
}
if (valid) {
this.$api
.post('api/Reviewer/addReviewerBee', this.oldForm)
.then(res => {
if (res.code == 0) {
this.addVisible = false;
this.oldVisible = false;
this.btn_alert = false;
this.$refs.add_Form.resetFields();
this.$refs.old_Form.resetFields();
this.$message.success(`Added successfully!`);
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 编辑操作
handleEdit(index, row) {
this.idx = index;
this.editForm = Object.assign({}, row);
this.editForm.title = this.editForm.technical;
this.editForm.cv = this.editForm.qualifications;
this.fileL_pdf3 = [];
if (this.editForm.qualifications != "") {
this.fileL_pdf3 = [{}];
this.fileL_pdf3[0].name = 'reviewerCV';
this.fileL_pdf3[0].url = this.mediaUrl + 'reviewer/' + this.editForm.qualifications;
}
this.editForm.maj_cn = [this.editForm.major, this.editForm.cmajor];
this.editVisible = true;
},
// 保存编辑
saveEdit(editForm) {
this.$refs.edit_Form.validate((valid) => {
if (this.editForm.qualifications == '') {
this.$message.error('Please make sure that the qualifications document is uploaded successfully');
return false;
}
if (valid) {
this.$api
.post('api/Reviewer/editReviewerForEditor', this.editForm)
.then(res => {
if (res.code == 0) {
this.editVisible = false;
this.btn_alert = false;
this.$message.success(`Successfully changed line ${this.idx + 1} `);
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 删除操作
handleDelete(index, row) {
// 二次确认删除
this.$confirm('Are you sure you want to delete', 'Tips', {
type: 'warning'
})
.then(() => {
this.$api
.post('master/Journal/delJournalAbs', row)
.then(res => {
if (res.code == 0) {
this.$message.success('Delete succeeded!');
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 查找与他相同的账号
saerNa_U() {
if (this.addForm.account != undefined) {
this.$api
.post('api/Reviewer/checkUser', {
'account': this.addForm.account
})
.then(res => {
if (res.code == 0) {
if (res.data.has == 'no') {
this.btn_alert = false
} else {
this.$confirm('Repeat of user account!', 'Tips', {})
.then(res => {
this.$api
.post('api/Reviewer/getReviewerByNameEmail', {
'account': this.addForm.account
})
.then(res => {
this.oldForm = res.data.reviewer;
this.oldForm.title = res.data.reviewer.technical;
this.oldForm.cv = res.data.reviewer.qualifications;
this.fileL_pdf2 = [];
if (res.data.reviewer.qualifications != "") {
this.fileL_pdf2 = [{}];
this.fileL_pdf2[0].name = 'reviewerCV';
this.fileL_pdf2[0].url = this.mediaUrl + 'reviewer/' + res.data.reviewer.qualifications;
}
this.oldForm.maj_cn = [this.oldForm.major, this.oldForm.cmajor];
this.oldVisible = true
})
.catch(err => {
this.$message.error(err);
});
}).catch(() => {});
this.btn_alert = true
}
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
},
// 查找与他相同的邮箱
saerEm_U() {
if (this.addForm.email != undefined) {
this.$api
.post('api/Reviewer/checkUser', {
'account': this.addForm.email
})
.then(res => {
if (res.code == 0) {
if (res.data.has == 'no') {
this.btn_alert = false
} else {
this.$confirm('Repeat of user account!', 'Tips', {})
.then(res => {
this.$api
.post('api/Reviewer/getReviewerByNameEmail', {
'account': this.addForm.email
})
.then(res => {
this.oldForm = res.data.reviewer;
this.oldForm.maj_cn = [this.oldForm.major, this.oldForm.cmajor];
this.oldVisible = true
})
.catch(err => {
this.$message.error(err);
});
}).catch(() => {});
this.btn_alert = true
}
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
},
// 上传文件
handleChange1(file, fileList) {
if (fileList.length > 0) {
this.fileL_pdf1 = [fileList[fileList.length - 1]]
}
},
handleChange2(file, fileList) {
if (fileList.length > 0) {
this.fileL_pdf2 = [fileList[fileList.length - 1]]
}
},
handleChange3(file, fileList) {
if (fileList.length > 0) {
this.fileL_pdf3 = [fileList[fileList.length - 1]]
}
},
handleFileSuccess1(res, file) {
if (res.code == 0) {
this.addForm.cv = res.upurl;
this.addForm.qualifications = res.upurl;
} else {
this.$message.error(res.msg);
}
},
handleFileSuccess2(res, file) {
if (res.code == 0) {
this.oldForm.cv = res.upurl;
this.oldForm.qualifications = res.upurl;
} else {
this.$message.error(res.msg);
}
},
handleFileSuccess3(res, file) {
if (res.code == 0) {
this.editForm.cv = res.upurl;
this.editForm.qualifications = res.upurl;
} else {
this.$message.error(res.msg);
}
},
beforeRemove(file, fileList) {
return this.$confirm(`Remove ${ file.name }`)
},
handleFileError(res, file) {
},
handleRemove(file, fileList) {
},
handlePreview(file) {
window.open(file.url);
},
handleExceed(files, fileList) {
this.$message.warning("当前限制选择 1 个文件,请先删除当前文件!");
},
}
};
</script>
<style scoped>
.table {
width: 100%;
font-size: 14px;
}
.handle-box {
margin-bottom: 20px;
}
.red {
color: #ff0000;
}
</style>

View File

@@ -343,7 +343,7 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="OTHER SPECIFIC CRITICISMS"> <el-form-item label="OTHER SPECIFIC CRITICISMS">
<el-radio-group v-model="item.question.other" style="line-height: 24px;"> <el-radio-group v-model="questionform.other" style="line-height: 24px;">
<el-radio :label="1">Imperfect style</el-radio> <el-radio :label="1">Imperfect style</el-radio>
<br /> <br />
<el-radio :label="2">Too long</el-radio> <el-radio :label="2">Too long</el-radio>
@@ -354,16 +354,16 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="Confidential Comments to the Editor"> <el-form-item label="Confidential Comments to the Editor">
<el-input type="textarea" placeholder="please input content" v-model="item.question.confidential" :rows="8"></el-input> <el-input type="textarea" placeholder="please input content" v-model="questionform.confidential" :rows="8"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="Comments for the Authors" prop="comment"> <el-form-item label="Comments for the Authors" v-if="this.txt_mess.atype == 'Comment' || this.txt_mess.atype == 'News'">
<el-input type="textarea" placeholder="please input content" v-model="item.question.comments" :rows="8"></el-input> <el-input type="textarea" placeholder="please input content" v-model="questionform.comment" :rows="8"></el-input>
<p style="color: #e6a23c;font-size: 13px;" v-if="this.txt_mess.atype!='Comment'||this.txt_mess.atype!='News'"> </el-form-item>
Dear reviewer, we recommend the available comment should be more than 40 words. <el-form-item label="Comments for the Authors" prop="comment" v-if="this.txt_mess.atype != 'Comment' && this.txt_mess.atype != 'News'">
</p> <el-input type="textarea" placeholder="please input content" v-model="questionform.comment" :rows="8"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="Please choose disclose your name or remain anonymous."> <el-form-item label="Please choose disclose your name or remain anonymous.">
<el-radio-group v-model="item.question.is_anonymous"> <el-radio-group v-model="questionform.is_anonymous">
<el-radio :label="0">Disclose name</el-radio> <el-radio :label="0">Disclose name</el-radio>
<br /> <br />
<el-radio :label="1">Remain anonymous</el-radio> <el-radio :label="1">Remain anonymous</el-radio>
@@ -466,8 +466,10 @@
} }
} }
if (blankCount + wenziCount <= 60) { if (blankCount + wenziCount <= 60) {
callback(new Error( return callback(new Error(
"Dear reviewer, we recommend the available comment should be more than 60 Chinese words.")); "Dear reviewer, we recommend the available comment should be more than 60 Chinese words."));
} else {
return callback();
} }
} else { } else {
//英文 //英文
@@ -476,7 +478,9 @@
blankCount++ blankCount++
} }
if (blankCount <= 40) { if (blankCount <= 40) {
callback(new Error("Dear reviewer, we recommend the available comment should be more than 40 words.")); return callback(new Error("Dear reviewer, we recommend the available comment should be more than 40 words."));
} else {
return callback();
} }
} }
}, },

View File

@@ -89,8 +89,8 @@
return 'Accepted'; return 'Accepted';
} else if (cellValue == 4) { } else if (cellValue == 4) {
return 'invalid'; return 'invalid';
} else if (row.state == 5) { } else if (cellValue == 5) {
frag = 'invitation'; return 'invitation';
} }
} }

View File

@@ -77,11 +77,7 @@
</el-form-item> </el-form-item>
<el-form-item label="title" prop="title"> <el-form-item label="title" prop="title">
<el-select v-model="addForm.title" filterable placeholder="Please select a title" value-key="groupID" style="width: 300px;"> <el-select v-model="addForm.title" filterable placeholder="Please select a title" value-key="groupID" style="width: 300px;">
<el-option key="Prof." label="Prof." value="Prof."></el-option> <el-option v-for="item in df_technical" :key="item.label" :label="item.label" :value="item.label"></el-option>
<el-option key="Associate Prof." label="Associate Prof." value="Associate Prof."></el-option>
<el-option key="Assistant Prof." label="Assistant Prof." value="Assistant Prof."></el-option>
<el-option key="Ph.D." label="Ph.D." value="Ph.D."></el-option>
<el-option key="Others" label="Others" value="Others"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="country" prop="country"> <el-form-item label="country" prop="country">
@@ -147,11 +143,7 @@
</el-form-item> </el-form-item>
<el-form-item label="title" prop="title"> <el-form-item label="title" prop="title">
<el-select v-model="oldForm.title" filterable placeholder="Please select a title" value-key="groupID" style="width: 300px;"> <el-select v-model="oldForm.title" filterable placeholder="Please select a title" value-key="groupID" style="width: 300px;">
<el-option key="Prof." label="Prof." value="Prof."></el-option> <el-option v-for="item in df_technical" :key="item.label" :label="item.label" :value="item.label"></el-option>
<el-option key="Associate Prof." label="Associate Prof." value="Associate Prof."></el-option>
<el-option key="Assistant Prof." label="Assistant Prof." value="Assistant Prof."></el-option>
<el-option key="Ph.D." label="Ph.D." value="Ph.D."></el-option>
<el-option key="Others" label="Others" value="Others"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="country" prop="country"> <el-form-item label="country" prop="country">
@@ -213,7 +205,7 @@
</el-form-item> </el-form-item>
<el-form-item label="title" prop="title"> <el-form-item label="title" prop="title">
<el-select v-model="editForm.title" filterable placeholder="Please select a title" value-key="groupID" style="width: 300px;"> <el-select v-model="editForm.title" filterable placeholder="Please select a title" value-key="groupID" style="width: 300px;">
<el-option v-for="item in df_technical" :key="item.label" :label="item.label" :value="item.label"></el-option> <el-option v-for="item in df_technical" :key="item.label" :label="item.label" :value="item.label"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="country" prop="country"> <el-form-item label="country" prop="country">
@@ -254,7 +246,6 @@
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="editVisible = false">Cancel</el-button> <el-button @click="editVisible = false">Cancel</el-button>
<el-button type="primary" @click="saveEdit(editForm)">OK</el-button> <el-button type="primary" @click="saveEdit(editForm)">OK</el-button>
<!-- <el-button type="primary" @click="editVisible = false">OK</el-button> -->
</span> </span>
</el-dialog> </el-dialog>
@@ -284,7 +275,7 @@
}, },
mess_age: {}, mess_age: {},
editForm: { editForm: {
title:'', title: '',
}, },
oldForm: {}, oldForm: {},
delOpen: false, delOpen: false,
@@ -308,15 +299,15 @@
pageIndex: 1, pageIndex: 1,
pageSize: 15 pageSize: 15
}, },
df_technical:[{ df_technical: [{
label: 'Prof', label: 'Prof',
},{ }, {
label: 'Associate Prof.', label: 'Associate Prof.',
},{ }, {
label: 'Assistant Prof.', label: 'Assistant Prof.',
},{ }, {
label: 'Ph.D.', label: 'Ph.D.',
},{ }, {
label: 'Others', label: 'Others',
}], }],
link_Total: 0, link_Total: 0,
@@ -679,8 +670,8 @@
// 编辑操作 // 编辑操作
handleEdit(index, row) { handleEdit(index, row) {
this.idx = index; this.idx = index;
row.title = row.technical;
this.editForm = Object.assign({}, row); this.editForm = Object.assign({}, row);
this.editForm.title = this.editForm.technical;
this.editForm.cv = this.editForm.qualifications; this.editForm.cv = this.editForm.qualifications;
this.fileL_pdf3 = []; this.fileL_pdf3 = [];
if (this.editForm.qualifications != "") { if (this.editForm.qualifications != "") {
@@ -690,32 +681,31 @@
} }
this.editForm.maj_cn = [this.editForm.major, this.editForm.cmajor]; this.editForm.maj_cn = [this.editForm.major, this.editForm.cmajor];
this.editVisible = true; this.editVisible = true;
}, },
// 保存编辑 // 保存编辑
saveEdit(editForm) { saveEdit(editForm) {
console.log(this.editForm)
this.$refs.edit_Form.validate((valid) => { this.$refs.edit_Form.validate((valid) => {
if (this.editForm.qualifications == '') { if (this.editForm.qualifications == '') {
this.$message.error('Please make sure that the qualifications document is uploaded successfully'); this.$message.error('Please make sure that the qualifications document is uploaded successfully');
return false; return false;
} }
if (valid) { if (valid) {
// this.$api this.$api
// .post('api/Reviewer/editReviewerForEditor', this.editForm) .post('api/Reviewer/editReviewerForEditor', this.editForm)
// .then(res => { .then(res => {
// if (res.code == 0) { if (res.code == 0) {
// this.editVisible = false; this.editVisible = false;
// this.btn_alert = false; this.btn_alert = false;
// this.$message.success(`Successfully changed line ${this.idx + 1} `); this.$message.success(`Successfully changed line ${this.idx + 1} `);
// this.getContent(); this.getContent();
// } else { } else {
// this.$message.error(res.msg); this.$message.error(res.msg);
// } }
// }) })
// .catch(err => { .catch(err => {
// this.$message.error(err); this.$message.error(err);
// }); });
} else { } else {
this.$message.error('error submit!!'); this.$message.error('error submit!!');
return false; return false;

View File

@@ -0,0 +1,111 @@
<!--时间轴模块-->
<template>
<div class="kuang_tracking">
<h2>Manuscript Tracking</h2>
<el-timeline :reverse="reverse" class="editor_tree">
<el-timeline-item v-for="(item, index) in prossMsgs" :icon="item.icon" :color="item.color" size="large" :key="index"
:timestamp="formatDate(item.ctime)" placement="top" v-if="item.ftype == 0">
<el-card>
<p>
<font>{{ statetostr(item.state_to) }}</font>
<!-- 提交 -->
<font v-if="item.state_to==-1">
: <b>{{form.username}} first submitted to {{form.journalname}}</b>
</font>
<!-- 给编辑 -->
<font v-if="item.state_to==1">
<!-- : <b> Submission checks complete</b> -->
</font>
<!-- 审查中 -->
<font v-if="item.state_to==2">
<!-- : <b> Editor assigned</b> -->
</font>
<!-- 修改 -->
<font v-if="item.state_to==4">
<!-- : <b v-if="item.back==1"> Major revision</b>
<b v-if="item.back==0"> Major revision (Completed)</b> -->
</font>
<!-- 接收 -->
<font v-if="item.state_to==5">
<!-- : <b> Successfully received manuscript</b> -->
</font>
<!-- 拒绝 -->
<font v-if="item.state_to==3">
<!-- : <b> Reject manuscript</b> -->
</font>
</p>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
</template>
<script>
import Vue from 'vue'
export default {
props: {
prossMsgs: {
type: Array,
required: true
},
form: {
type: Object,
required: true
}
},
components: {},
data() {
return {
reverse: false
}
},
computed: {},
methods: {
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;
},
statetostr(mystate) {
let str = '';
switch (mystate) {
case -1:
str = 'Manuscript Submission';
break;
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;
},
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,97 @@
<!--对话模块-->
<template>
<div class="kuang_communtion">
<h2>
Communication
</h2>
<div v-for="(item, index) in talkMsgs" class="kuang_communtion_conmt">
<div v-if="item.username != username" class="talk_aued">
<p>
Author :
</p>
<el-card>
<p>{{ item.ad_content }}</p>
</el-card>
<b>{{formatDate(item.ad_ctime)}}</b>
</div>
<div v-if="item.username == username" class="talk_aued talk_edit">
<p>
Editor :
</p>
<el-card>
<p>{{ item.ad_content }}</p>
</el-card>
<b>{{formatDate(item.ad_ctime)}}</b>
</div>
</div>
<div class="kuang_communtion_input">
<p v-if="talkMsgs"></p>
<el-input type="textarea" rows="3" v-model="msgform.ad_content" placeholder="Editor messages" resize="none"></el-input>
<div class="kuang_communtion_input_text">
Dear Editor, through this window, you can have informal communication with the author. Please be aware of the
prompt reply, standard use of English, and no offensive, insulting, discriminatory language.
<el-button type="primary" @click="saveMsg">Send</el-button>
</div>
</div>
</div>
</template>
<script>
import Vue from 'vue'
export default {
props: {
talkMsgs: {
type: Array,
required: true
},
msgform: {
type: Object,
required: true
},
// loading: {
// type: Boolean,
// required: true
// }
},
components: {},
data() {
return {
username: localStorage.getItem('U_name'),
}
},
computed: {},
methods: {
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;
},
// 留言弹出框
saveMsg() {
console.log(this.msgform)
if (this.msgform.ad_content == '') {
this.$message.error('Please input messages');
return false;
}
this.loading = true;
this.$api.post('api/Article/pushArticleDialog', this.msgform)
.then((res) => {
this.loading = false;
this.$message.success('Sent successfully');
this.$router.go(0);
});
},
}
}
</script>
<style scoped>
</style>

View File

@@ -220,11 +220,11 @@
<el-form-item label="Confidential Comments to the Editor"> <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>
<el-form-item label="Comments for the Authors" prop="comment"> <el-form-item label="Comments for the Authors" v-if="this.txt_mess.atype == 'Comment' || this.txt_mess.atype == 'News'">
<el-input type="textarea" placeholder="please input content" v-model="questionform.comment" :rows="8"></el-input>
</el-form-item>
<el-form-item label="Comments for the Authors" prop="comment" v-if="this.txt_mess.atype != 'Comment' && this.txt_mess.atype != 'News'">
<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>
<p style="color: #e6a23c;font-size: 13px;" v-if="this.txt_mess.atype!='Comment'||this.txt_mess.atype!='News'">
Dear reviewer, we recommend the available comment should be more than 40 words.
</p>
</el-form-item> </el-form-item>
<el-form-item label="Please choose disclose your name or remain anonymous."> <el-form-item label="Please choose disclose your name or remain anonymous.">
<el-radio-group v-model="item.question.is_anonymous"> <el-radio-group v-model="item.question.is_anonymous">
@@ -321,8 +321,10 @@
} }
} }
if (blankCount + wenziCount <= 60) { if (blankCount + wenziCount <= 60) {
callback(new Error( return callback(new Error(
"Dear reviewer, we recommend the available comment should be more than 60 Chinese words.")); "Dear reviewer, we recommend the available comment should be more than 60 Chinese words."));
} else {
return callback();
} }
} else { } else {
//英文 //英文
@@ -331,7 +333,9 @@
blankCount++ blankCount++
} }
if (blankCount <= 40) { if (blankCount <= 40) {
callback(new Error("Dear reviewer, we recommend the available comment should be more than 40 words.")); return callback(new Error("Dear reviewer, we recommend the available comment should be more than 40 words."));
} else {
return callback();
} }
} }
}, },
@@ -479,6 +483,7 @@
this.loading = false; this.loading = false;
this.$message.success('success!!'); this.$message.success('success!!');
this.getData(); this.getData();
this.$router.push('/per_text_success');
} else { } else {
this.loading = false; this.loading = false;
this.$message.error('question submit error'); this.$message.error('question submit error');

View File

@@ -43,7 +43,6 @@ export default new Router({
component: () => import( /* webpackChunkName: "table" */ '../components/page/articleListEditor.vue'), component: () => import( /* webpackChunkName: "table" */ '../components/page/articleListEditor.vue'),
meta: { meta: {
title: 'Manuscript to be examined', title: 'Manuscript to be examined',
permission: 2
} }
}, },
{ {
@@ -51,7 +50,62 @@ export default new Router({
component: () => import('../components/page/articleDetailEditor.vue'), component: () => import('../components/page/articleDetailEditor.vue'),
meta: { meta: {
title: 'Manuscript detail', title: 'Manuscript detail',
permission: 2 },
hidden: true
},
{
path: '/articleDetailEditor_a',
component: () => import('../components/page/articleDetailEditor_a.vue'),
meta: {
title: 'Manuscript Received',
},
hidden: true
},
{
path: '/articleDetailEditor_b',
component: () => import('../components/page/articleDetailEditor_b.vue'),
meta: {
title: 'Manuscript With editor',
},
hidden: true
},
{
path: '/articleDetailEditor_c',
component: () => import('../components/page/articleDetailEditor_c.vue'),
meta: {
title: 'Manuscript Under review',
},
hidden: true
},
{
path: '/articleDetailEditor_d',
component: () => import('../components/page/articleDetailEditor_d.vue'),
meta: {
title: 'Manuscript Reject',
},
hidden: true
},
{
path: '/articleDetailEditor_e',
component: () => import('../components/page/articleDetailEditor_e.vue'),
meta: {
title: 'Manuscript Revision',
},
hidden: true
},
{
path: '/articleDetailEditor_f',
component: () => import('../components/page/articleDetailEditor_f.vue'),
meta: {
title: 'Manuscript Accepted',
},
hidden: true
},
{
path: '/articleDetailEditor_g',
component: () => import('../components/page/articleDetailEditor_g.vue'),
meta: {
title: 'Manuscript Fininal decision',
}, },
hidden: true hidden: true
}, },
@@ -63,6 +117,14 @@ export default new Router({
}, },
hidden: true hidden: true
}, },
{
path: '/articleProcess',
component: () => import('../components/page/articleProcess.vue'),
meta: {
title: 'Manuscript process',
},
hidden: true
},
{ {
path: 'articleRevise', path: 'articleRevise',
component: () => import('../components/page/articleRevise.vue'), component: () => import('../components/page/articleRevise.vue'),
@@ -123,6 +185,22 @@ export default new Router({
title: 'Journal list' title: 'Journal list'
} }
}, },
{
path: 'reviewerArticleDetail',
component: () => import('../components/page/reviewerArticleDetail.vue'),
meta: {
title: 'Reviewer Article Detail'
},
hidden: true
},
{
path: 'reviewerArticleList',
component: () => import('../components/page/reviewerArticleList.vue'),
meta: {
title: 'Reviewer Article List'
},
hidden: true
},
{ {
path: 'authorApplyReviewer', path: 'authorApplyReviewer',
component: () => import('../components/page/authorApplyReviewer.vue'), component: () => import('../components/page/authorApplyReviewer.vue'),
@@ -160,21 +238,6 @@ export default new Router({
title: 'Author transferred to reviewer list' title: 'Author transferred to reviewer list'
} }
}, },
{
path: '/reviewerArticleList',
component: () => import('../components/page/reviewerArticleList.vue'),
meta: ({
title: 'Reviewer article list'
})
},
{
path: '/reviewerArticleDetail',
component: () => import('../components/page/reviewerArticleDetail.vue'),
meta: ({
title: 'Reviewer article detail'
}),
hidden: true
},
{ {
path: '/reviewerList', path: '/reviewerList',
component: () => import('../components/page/reviewerList.vue'), component: () => import('../components/page/reviewerList.vue'),
@@ -218,6 +281,7 @@ export default new Router({
title: 'Apply success' title: 'Apply success'
} }
}, },
{ {
path: '/reviewerImportError', path: '/reviewerImportError',
component: () => import('../components/page/reviewerImportError.vue'), component: () => import('../components/page/reviewerImportError.vue'),
@@ -225,13 +289,6 @@ export default new Router({
title: 'Import error' title: 'Import error'
} }
}, },
{
path: '/reviewerAdd',
component: () => import('../components/page/reviewerAdd.vue'),
meta: {
title: 'Reviewer Add'
}
},
{ {
path: '/monitorManuscript', path: '/monitorManuscript',
component: () => import('../components/page/monitorManuscript.vue'), component: () => import('../components/page/monitorManuscript.vue'),
@@ -280,7 +337,7 @@ export default new Router({
hidden: true hidden: true
}, },
{ {
path: '/citationanalysis',//引用情况分析 path: '/citationanalysis', //引用情况分析
component: () => import('../components/page/analysis_report.vue'), component: () => import('../components/page/analysis_report.vue'),
meta: { meta: {
title: 'Citation Analysis Report' title: 'Citation Analysis Report'
@@ -307,32 +364,33 @@ export default new Router({
meta: { meta: {
title: 'Editor-in-Chief article details' title: 'Editor-in-Chief article details'
} }
}, },
{ {
path: '/man_text_ls', //主编文章详情-历史 path: '/man_text_ls', //主编文章详情-历史
component: () => import('../components/page/man_text_ls'), component: () => import('../components/page/man_text_ls'),
meta: { meta: {
title: 'Editor-in-Chief article details' title: 'Editor-in-Chief article details'
} }
}, },
{ {
path: '/man_report', //-统计-图表 path: '/man_report', //-统计-图表
component: () => import( /* webpackChunkName: "" */ '../components/page/man_report'), component: () => import( /* webpackChunkName: "" */ '../components/page/man_report'),
meta: { meta: {
title: 'Editor-in-Chief Statistical Analysis' title: 'Editor-in-Chief Statistical Analysis'
} }
}, },
{ {
path: '/peerewer', //审稿人进行中列表 path: '/peerewer', //审稿人进行中列表
component: () => import('../components/page/per_ewer'), component: () => import('../components/page/per_ewer'),
meta: { meta: {
title: 'Reviewer' title: 'Reviewer'
} }
},{ }, {
path: '/perhistory', //审稿人历史列表 path: '/perhistory', //审稿人历史列表
component: () => import('../components/page/per_history'), component: () => import('../components/page/per_history'),
meta: { meta: {
title: 'Reviewer historical manuscripts' title: 'Reviewer historical manuscripts',
// keepAlive: true,
} }
}, { }, {
path: '/perhistory_commen', //审稿人历史列表 path: '/perhistory_commen', //审稿人历史列表
@@ -340,28 +398,42 @@ export default new Router({
meta: { meta: {
title: 'Reviewer historical comment' title: 'Reviewer historical comment'
} }
}, },
{ {
path: '/per_text', //审稿人文章详情 path: '/per_text', //审稿人文章详情
component: () => import('../components/page/per_text'), component: () => import('../components/page/per_text'),
meta: { meta: {
title: 'Reviewer article details' title: 'Reviewer article details'
} }
}, },
{ {
path: '/per_text_yq', //审稿人文章详情-邀请 path: '/per_text_yq', //审稿人文章详情-邀请
component: () => import('../components/page/per_text_yq'), component: () => import('../components/page/per_text_yq'),
meta: { meta: {
title: 'Reviewer article details' title: 'Reviewer article details'
} }
}, },
{
path: '/per_text_success', //审稿人文章-审稿成功页
component: () => import('../components/page/per_text_success'),
meta: {
title: 'Review completed'
}
},
{
path: '/per_text_fail',
component: () => import('../components/page/per_text_fail.vue'),
meta: {
title: 'Review fail'
}
},
{ {
path: '/editorial', //编委进行中列表 path: '/editorial', //编委进行中列表
component: () => import('../components/page/edit_ial'), component: () => import('../components/page/edit_ial'),
meta: { meta: {
title: 'Editorial board member' title: 'Editorial board member'
} }
},{ }, {
path: '/edithistory', //编委历史列表 path: '/edithistory', //编委历史列表
component: () => import('../components/page/edit_history'), component: () => import('../components/page/edit_history'),
meta: { meta: {
@@ -379,7 +451,7 @@ export default new Router({
meta: { meta: {
title: 'Editorial board member article details' title: 'Editorial board member article details'
} }
}, },
{ {
path: '/youthed', //青年编委进行中列表 path: '/youthed', //青年编委进行中列表
component: () => import('../components/page/you_thed'), component: () => import('../components/page/you_thed'),
@@ -388,7 +460,14 @@ export default new Router({
} }
}, },
{ {
path: '/you_text', //青年编委-审稿详情 path: '/percenter', //青年编委-审稿详情
component: () => import('../components/page/cenper_ter'),
meta: {
title: 'Personal Center'
}
},
{
path: '/you_text', //个人中心
component: () => import('../components/page/you_text'), component: () => import('../components/page/you_text'),
meta: { meta: {
title: 'Young scientist member article details' title: 'Young scientist member article details'