This commit is contained in:
xulu
2021-08-18 17:45:45 +08:00
parent e6b2a06061
commit a17aebd38c
34 changed files with 2449 additions and 1268 deletions

View File

@@ -7,8 +7,8 @@ import qs from 'qs'
// axios全局配置 // axios全局配置
axios.defaults.timeout = 10000 // 超时时间 axios.defaults.timeout = 10000 // 超时时间
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' // 配置请求头 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' // 配置请求头
// axios.defaults.baseURL = 'http://www.tougao.com/' axios.defaults.baseURL = 'http://www.tougao.com/'
axios.defaults.baseURL = '/' // axios.defaults.baseURL = '/'
// 添加响应拦截器,统一处理服务器响应和异常 // 添加响应拦截器,统一处理服务器响应和异常
axios.interceptors.response.use( axios.interceptors.response.use(

View File

@@ -1,182 +1,187 @@
* { * {
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
html, html,
body, body,
#app, #app,
.wrapper { .wrapper {
width: 100%; width: 100%;
height: 100%; height: 100%;
/* overflow: hidden; */ /* overflow: hidden; */
} }
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;
} }
a { a {
text-decoration: none text-decoration: none
} }
.content-box { .content-box {
position: absolute; position: absolute;
left: 250px; left: 250px;
right: 0; right: 0;
top: 70px; top: 70px;
bottom: 0; bottom: 0;
padding-bottom: 30px; padding-bottom: 30px;
-webkit-transition: left .3s ease-in-out; -webkit-transition: left .3s ease-in-out;
transition: left .3s ease-in-out; transition: left .3s ease-in-out;
background: #f0f0f0; background: #f0f0f0;
} }
.content { .content {
width: auto; width: auto;
height: 100%; height: 100%;
padding: 10px; padding: 10px;
overflow-y: scroll; overflow-y: scroll;
box-sizing: border-box; box-sizing: border-box;
} }
.content-collapse { .content-collapse {
left: 65px; left: 65px;
} }
.container { .container {
padding: 30px; padding: 30px;
background: #fff; background: #fff;
border: 1px solid #ddd; border: 1px solid #ddd;
border-radius: 5px; border-radius: 5px;
}
.container_l {
border: 0 !important;
padding: 30px 0 !important;
} }
.crumbs { .crumbs {
margin: 10px 0; margin: 10px 0;
} }
.el-table th { .el-table th {
background-color: #f5f7fa !important; background-color: #f5f7fa !important;
} }
.pagination { .pagination {
margin: 20px 0; margin: 20px 0;
text-align: right; text-align: right;
} }
.plugins-tips { .plugins-tips {
padding: 20px 10px; padding: 20px 10px;
margin-bottom: 20px; margin-bottom: 20px;
} }
.el-button+.el-tooltip { .el-button+.el-tooltip {
margin-left: 10px; margin-left: 10px;
} }
.el-table tr:hover { .el-table tr:hover {
background: #f6faff; background: #f6faff;
} }
.mgb20 { .mgb20 {
margin-bottom: 20px; margin-bottom: 20px;
} }
.move-enter-active, .move-enter-active,
.move-leave-active { .move-leave-active {
transition: opacity .5s; transition: opacity .5s;
} }
.move-enter, .move-enter,
.move-leave { .move-leave {
opacity: 0; opacity: 0;
} }
/*BaseForm*/ /*BaseForm*/
.form-box { .form-box {
width: 600px; width: 600px;
} }
.addarticle-box{ .addarticle-box {
width: 800px; width: 800px;
} }
.form-box .line { .form-box .line {
text-align: center; text-align: center;
} }
.el-time-panel__content::after, .el-time-panel__content::after,
.el-time-panel__content::before { .el-time-panel__content::before {
margin-top: -7px; margin-top: -7px;
} }
.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) { .el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) {
padding-bottom: 0; padding-bottom: 0;
} }
/*Upload*/ /*Upload*/
.pure-button { .pure-button {
width: 150px; width: 150px;
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
text-align: center; text-align: center;
color: #fff; color: #fff;
border-radius: 3px; border-radius: 3px;
} }
.g-core-image-corp-container .info-aside { .g-core-image-corp-container .info-aside {
height: 45px; height: 45px;
} }
.el-upload--text { .el-upload--text {
background-color: #fff; background-color: #fff;
border: 1px dashed #d9d9d9; border: 1px dashed #d9d9d9;
border-radius: 6px; border-radius: 6px;
box-sizing: border-box; box-sizing: border-box;
/* width: 360px; /* width: 360px;
height: 180px; */ height: 180px; */
text-align: center; text-align: center;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
} }
.el-upload--text .el-icon-upload { .el-upload--text .el-icon-upload {
font-size: 67px; font-size: 67px;
color: #97a8be; color: #97a8be;
margin: 40px 0 16px; margin: 40px 0 16px;
line-height: 50px; line-height: 50px;
} }
.el-upload--text { .el-upload--text {
color: #97a8be; color: #97a8be;
font-size: 14px; font-size: 14px;
text-align: center; text-align: center;
} }
.el-upload--text em { .el-upload--text em {
font-style: normal; font-style: normal;
} }
/*VueEditor*/ /*VueEditor*/
.ql-container { .ql-container {
min-height: 400px; min-height: 400px;
} }
.ql-snow .ql-tooltip { .ql-snow .ql-tooltip {
transform: translateX(117.5px) translateY(10px) !important; transform: translateX(117.5px) translateY(10px) !important;
} }
.editor-btn { .editor-btn {
margin-top: 20px; margin-top: 20px;
} }
/*markdown*/ /*markdown*/
.v-note-wrapper .v-note-panel { .v-note-wrapper .v-note-panel {
min-height: 500px; min-height: 500px;
} }

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -0,0 +1,77 @@
<template>
<div class="wrapper">
<v-head></v-head>
<!-- <v-sidebar></v-sidebar> -->
<div class="content-box_l">
<!-- <v-tags></v-tags> -->
<div class="content content_l">
<div>
<transition name="move" mode="out-in">
<keep-alive :include="tagsList">
<router-view></router-view>
</keep-alive>
</transition>
<el-backtop target=".content"></el-backtop>
</div>
</div>
</div>
</div>
</template>
<script>
import vHead from './Lead.vue';
// import vSidebar from './Sidebar.vue';
// import vTags from './Tags.vue';
// import bus from './bus';
export default {
data() {
return {
tagsList: []
};
},
components: {
vHead,
// vSidebar,
// vTags
},
created() {
// bus.$on('collapse-content', msg => {
// this.collapse = msg;
// });
// // 只有在标签页列表里的页面才使用keep-alive即关闭标签之后就不保存到内存中了。
// bus.$on('tags', msg => {
// let arr = [];
// for (let i = 0, len = msg.length; i < len; i++) {
// msg[i].name && arr.push(msg[i].name);
// }
// this.tagsList = arr;
// });
}
};
</script>
<style scoped>
.wrapper {
/* width: 1280px;
margin: 0 auto; */
}
.content-box_l {
margin-top: 0;
padding-bottom: 30px;
transition: left .3s ease-in-out;
background: #fff;
}
.content_l {
width: 100%;
height: 100%;
box-sizing: border-box;
}
.content_l>div {
width: 1280px;
margin: 0 auto;
padding: 10px 0;
}
</style>

View File

@@ -38,7 +38,7 @@
</el-tooltip> </el-tooltip>
</div> </div>
<div class="user-avator" @click="skip_check()" v-else> <div class="user-avator" @click="skip_check()" v-else>
<el-tooltip class="item" effect="light" content="Connect to ORCID" placement="bottom-end"> <el-tooltip class="item" effect="light" content="Connect to ORCID" placement="bottom-end">
<img src="../../assets/img/orcno.png" /> <img src="../../assets/img/orcno.png" />
</el-tooltip> </el-tooltip>
</div> </div>
@@ -80,11 +80,11 @@ export default {
}, },
computed: { computed: {
username() { username() {
let username = localStorage.getItem('ms_username'); let username = localStorage.getItem('U_name');
return username ? username : this.name; return username ? username : this.name;
}, },
userrole() { userrole() {
let userrole = localStorage.getItem('ms_userrole'); let userrole = localStorage.getItem('U_status');
if (userrole == 1) { if (userrole == 1) {
return this.$t('total.author'); return this.$t('total.author');
} else if (userrole == 2) { } else if (userrole == 2) {
@@ -100,8 +100,8 @@ export default {
// 用户名下拉菜单选择事件 // 用户名下拉菜单选择事件
handleCommand(command) { handleCommand(command) {
if (command == 'loginout') { if (command == 'loginout') {
localStorage.removeItem('ms_username'); localStorage.removeItem('U_name');
localStorage.removeItem('ms_userrole'); localStorage.removeItem('U_status');
this.$router.push('/login'); this.$router.push('/login');
} }
}, },
@@ -113,7 +113,7 @@ export default {
//判断orcid //判断orcid
initORCID() { initORCID() {
this.$api this.$api
.post('api/user/checkOrcid', { account: localStorage.getItem('ms_username') }) .post('api/user/checkOrcid', { account: localStorage.getItem('U_name') })
.then((res) => { .then((res) => {
this.hasorcie = res.userinfo.orcid == '' ? false : true; this.hasorcie = res.userinfo.orcid == '' ? false : true;
this.orcid = res.userinfo.orcid; this.orcid = res.userinfo.orcid;

View File

@@ -0,0 +1,232 @@
<template>
<div class="header">
<div style="width: 1280px;margin: 0 auto;">
<div class="logo">
<img src="../../assets/img/bit_bug.png" alt="" style="width: 80px;margin-right: 10px;">
<span style="color:#1c66c0" v-if="this.link_path == '/managing'">{{$t('charact.role1')}}</span>
<span style="color:#e26a2d" v-if="this.link_path == '/editorial'">{{$t('charact.role2')}}</span>
<span style="color:#4640c4" v-if="this.link_path == '/peerewer'">{{$t('charact.role3')}}</span>
<span style="color:#cc3646" v-if="this.link_path == '/youthed'">{{$t('charact.role4')}}</span>
</div>
<div class="group">
TMR Group System
</div>
<div class="header-right">
<div class="header-user-con">
<!-- 中英文切换 -->
<el-dropdown class="egch_lagu" trigger="click" @command="chengelang">
<span class="el-dropdown-link">
language
<i class="el-icon-caret-bottom"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="en">english</el-dropdown-item>
<el-dropdown-item command="zh">中文简体</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- 用户名下拉菜单 -->
<el-dropdown class="user-name" trigger="click" @command="handleCommand">
<span class="el-dropdown-link">
Master
<!-- {{username}} -->
<i class="el-icon-caret-bottom"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="loginout">退出登录</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- 期刊下拉菜单 -->
<el-dropdown class="link_jour" trigger="click" @command="handlejournal">
<span>
{{ this.cate_title }}<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu :default-active="onRoutes" router slot="dropdown">
<el-dropdown-item v-for="item in cate_jour" :command="item" :index="item.index">
<i :class="item.icon"></i>{{ item.title }}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
<div>
</div>
</div>
<br clear="both">
</div>
</div>
</template>
<script>
import bus from '../common/bus';
export default {
data() {
return {
name: 'linxin',
cate_title: '',
link_path: '',
rostage_name: '',
cate_jour: [{
icon: 'el-icon-collection',
id: '1',
index: 'compiler',
title: 'Gastroenterology & Hepatology Research'
}, {
icon: 'el-icon-setting',
id: '2',
index: 'moniting',
title: 'Microenvironment & Microecology Research'
}, {
icon: 'el-icon-news',
id: '3',
index: 'quality',
title: '333'
}, {
icon: 'el-icon-suitcase-1',
id: '4',
index: 'wages',
title: '444'
}]
};
},
computed: {
username() {
let username = localStorage.getItem('U_name');
return username ? username : this.name;
},
onRoutes() {
0
return this.$route.path.replace('/', '');
}
},
created() {
this.getData();
},
methods: {
getData() {
this.cate_title = this.cate_jour[0].title
localStorage.setItem('journal_title', this.cate_jour[0].title);
localStorage.setItem('journal_id', this.cate_jour[0].id);
this.$router.push({
path: this.link_path,
query: {
jour_id: this.cate_jour[0].id
}
});
},
// 期刊下拉菜单点击
handlejournal(command) {
this.cate_title = command.title;
localStorage.setItem('journal_title', command.title);
localStorage.setItem('journal_id', command.id);
this.$router.push({
path: this.link_path,
query: {
jour_id: command.id
}
});
},
//切换语言
chengelang(commond) {
localStorage.setItem('langs', commond);
this.$router.go(0);
},
// 用户名下拉菜单选择事件
handleCommand(command) {
if (command == 'loginout') {
// 二次确认
this.$confirm('确定要退出登录', '提示', {
type: 'warning'
})
.then(() => {
this.$router.push('/login');
})
.catch(() => {});
}
}
},
mounted() {},
watch: {
$route: {
handler: function(route) {
this.link_path = route.path
},
immediate: true
}
}
};
</script>
<style scoped>
.header {
position: relative;
box-sizing: border-box;
width: 100%;
height: 70px;
font-size: 22px;
color: #333;
border-bottom: 3px solid #000;
background-color: #fff !important;
}
.header>div {}
.collapse-btn {
float: left;
padding: 0 21px;
cursor: pointer;
line-height: 70px;
}
.header .logo {
float: left;
/* width: 400px; */
line-height: 70px;
}
.header .logo i {
margin-right: 10px;
}
.header .group {
float: left;
width: 600px;
text-align: right;
line-height: 60px;
font-weight: bolder;
}
.header-right {
float: right;
padding-right: 20px;
}
.header-user-con {
display: flex;
height: 70px;
align-items: center;
}
.link_jour {
font-weight: bold;
align-items: center;
cursor: pointer;
}
.egch_lagu {
margin-right: 20px;
}
.user-name {
margin-right: 20px;
}
.el-dropdown-link {
color: #333;
cursor: pointer;
}
</style>

View File

@@ -55,7 +55,7 @@ export default {
data() { data() {
return { return {
collapse: false, collapse: false,
userrole:localStorage.getItem('ms_userrole'), userrole:localStorage.getItem('U_status'),
items:[], items:[],
author_items: [ author_items: [
{ {
@@ -77,18 +77,18 @@ export default {
title:this.$t('sidebar.author2') title:this.$t('sidebar.author2')
} }
] ]
},
{
icon: 'el-icon-user',
index: '2',
title: this.$t('sidebar.reviewerArticle'),
subs:[
{
index:'authorApplyReviewer',
title:this.$t('sidebar.authorApplyReviewer')
}
]
} }
// {
// icon: 'el-icon-user',
// index: '2',
// title: this.$t('sidebar.reviewerArticle'),
// subs:[
// {
// index:'authorApplyReviewer',
// title:this.$t('sidebar.authorApplyReviewer')
// }
// ]
// }
], ],
editor_items:[ editor_items:[
{ {
@@ -107,6 +107,21 @@ export default {
} }
] ]
}, },
{
icon:'el-icon-paperclip',
index:'4',
title:this.$t('sidebar.editmber'),
subs:[
{
index:'editmbereditor',
title:this.$t('sidebar.editmber1')
},
{
index:'editmberperiod',
title:this.$t('sidebar.editmber2')
}
]
},
{ {
icon:'el-icon-s-custom', icon:'el-icon-s-custom',
index:'3', index:'3',
@@ -248,15 +263,16 @@ export default {
} }
}, },
created() { created() {
if(this.userrole==1){ if(this.userrole==2){ //其余的身份(显示作者)
this.items = this.author_items; this.items = this.author_items;
}else if(this.userrole ==2){ }else if(this.userrole ==1){ //编辑
this.items = this.editor_items; this.items = this.editor_items;
}else if(this.userrole=='admin'){ }else if(this.userrole==0){ //超级管理员
this.items = this.admin_items; this.items = this.admin_items;
}else if(this.userrole=='reviewer'){
this.items = this.reviewer_items;
} }
// else if(this.userrole=='reviewer'){
// this.items = this.reviewer_items;
// }
// 通过 Event Bus 进行组件间通信,来折叠侧边栏 // 通过 Event Bus 进行组件间通信,来折叠侧边栏
bus.$on('collapse', msg => { bus.$on('collapse', msg => {
this.collapse = msg; this.collapse = msg;

View File

@@ -1,69 +1,79 @@
const en = { const en = {
system: { system: {
title: 'Submission System', title: 'Submission System',
repassword:'Forgot your password?', repassword: 'Forgot your password?',
register:'Not registered yet? Register now.', register: 'Not registered yet? Register now.',
orcidlogin:'Login with your ORCID iD', orcidlogin: 'Login with your ORCID iD',
login:'Log in', login: 'Log in',
forgetpwd:'Find Your Password', forgetpwd: 'Find Your Password',
screen:'full screen', screen: 'full screen',
noscreen:'Cancel full screen', noscreen: 'Cancel full screen',
loyout:'Log out', loyout: 'Log out',
langbtn:'language', langbtn: 'language',
label:'Label options', label: 'Label options',
labelother:'close other', labelother: 'close other',
labelall:'close all' labelall: 'close all'
}, },
total:{ total: {
author:'author', author: 'author',
editor:'editor', editor: 'editor',
reviewers:'reviewer', reviewers: 'reviewer',
admin:'admin' admin: 'admin'
}, },
sidebar:{ sidebar: {
main:'Home Page', main: 'Home Page',
author:'Author', author: 'Author',
author1:'My manuscript', author1: 'My manuscript',
author2:'Submit manuscript', author2: 'Submit manuscript',
editor:'Editor', editor: 'Editor',
editor1:'Manuscript list', editor1: 'Manuscript list',
editormanage:'Editor Management', editormanage: 'Editor Management',
editormanage1:'Editor list', editormanage1: 'Editor list',
editormanage2:'Add editor', editormanage2: 'Add editor',
journal:'Journal Management', journal: 'Journal Management',
journal1:'Journal list', journal1: 'Journal list',
journal2:'Add journal', journal2: 'Add journal',
reviewer:'Reviewer Management', reviewer: 'Reviewer Management',
reviewer1:'Reviewer application list', reviewer1: 'Reviewer application list',
reviewer2:'Reviewer list', reviewer2: 'Reviewer list',
reviewer3:'Reviewer import', reviewer3: 'Reviewer import',
reviewer4:'Import error', reviewer4: 'Import error',
reviewerArticle:'Reviewer', reviewerArticle: 'Reviewer',
reviewerArticle1:'Manuscript list', reviewerArticle1: 'Manuscript list',
authorApplyReviewer:'Become reviewer', authorApplyReviewer: 'Become reviewer',
reviewerimport:'Reviewer import', reviewerimport: 'Reviewer import',
reviewerimporterror:'import error', reviewerimporterror: 'import error',
monitor:'Monitor', monitor: 'Monitor',
monitor1:'Manuscript situation', monitor1: 'Manuscript situation',
chief:'Chief editor', chief: 'Chief editor',
chief1:'Editor list', chief1: 'Editor list',
chief2:'Journal list' chief2: 'Journal list',
}, editmber: 'Editorial management',
home:{ editmber1: 'Editorial board list',
authortop:'Author guide', editmber2: 'Journal List'
usermsg:'New messages', },
}, home: {
artstate:{ authortop: 'Author guide',
state0:'Received', usermsg: 'New messages',
state1:'With editor', },
state2:'Under review', artstate: {
state3:'Reject', state0: 'Received',
state4:'Revision', state1: 'With editor',
state5:'Accepted ', state2: 'Under review',
act1:'Dealing', state3: 'Reject',
act2:'Finished' state4: 'Revision',
}, state5: 'Accepted ',
act1: 'Dealing',
act2: 'Finished'
},
charact: {
role: 'Role',
role1: 'Role editor',
role2: 'Editorial board',
role3: 'Reviewer',
role4: 'Youth editorial board',
}
} }

View File

@@ -1,70 +1,79 @@
const zh = { const zh = {
system: { system: {
title: '投稿系统', title: '投稿系统',
repassword:'忘记密码', repassword: '忘记密码',
register:'注册', register: '注册',
orcidlogin:'ORCID登陆', orcidlogin: 'ORCID登陆',
login:'登录', login: '登录',
forgetpwd:'找回密码', forgetpwd: '找回密码',
screen:'全屏', screen: '全屏',
noscreen:'取消全屏', noscreen: '取消全屏',
loyout:'退出登录', loyout: '退出登录',
langbtn:'语言选择', langbtn: '语言选择',
label:'标签选项', label: '标签选项',
labelother:'关闭其他', labelother: '关闭其他',
labelall:'关闭所有' labelall: '关闭所有'
}, },
total:{ total: {
author:'作者', author: '作者',
editor:'编辑', editor: '编辑',
reviewers:'审稿人', reviewers: '审稿人',
admin:'管理员' admin: '管理员'
}, },
sidebar:{ sidebar: {
main:'系统首页', main: '系统首页',
author:'作者', author: '作者',
author1:'我的稿件', author1: '我的稿件',
author2:'新增稿件', author2: '新增稿件',
editor:'编辑', editor: '编辑',
editor1:'待审稿件', editor1: '待审稿件',
editormanage:'编辑管理', editormanage: '编辑管理',
editormanage1:'编辑列表', editormanage1: '编辑列表',
editormanage2:'添加编辑', editormanage2: '添加编辑',
journal:'期刊管理', journal: '期刊管理',
journal1:'期刊列表', journal1: '期刊列表',
journal2:'添加期刊', journal2: '添加期刊',
reviewer:'审稿人管理', reviewer: '审稿人管理',
reviewer1:'申请列表', reviewer1: '申请列表',
reviewer2:'审稿人列表', reviewer2: '审稿人列表',
reviewer3:'审稿人导入', reviewer3: '审稿人导入',
reviewer4:'导入失败列表', reviewer4: '导入失败列表',
reviewerArticle:'审稿人', reviewerArticle: '审稿人',
reviewerArticle1:'待审文章', reviewerArticle1: '待审文章',
authorApplyReviewer:'成为审稿人', authorApplyReviewer: '成为审稿人',
reviewerimport:'审稿人导入', reviewerimport: '审稿人导入',
reviewerimporterror:'导入失败列表', reviewerimporterror: '导入失败列表',
monitor:'总监', monitor: '总监',
monitor1:'稿件情况', monitor1: '稿件情况',
chief:'主编管理', chief: '主编管理',
chief1:'主编列表', chief1: '主编列表',
chief2:'期刊列表' chief2: '期刊列表',
}, editmber: '编委管理',
home:{ editmber1: '编委列表',
authortop:'用户指南', editmber2: '期刊列表'
usermsg:'新消息', },
}, home: {
artstate:{ authortop: '用户指南',
state0:'投稿中', usermsg: '新消息',
state1:'已受理', },
state2:'送审中', artstate: {
state3:'拒稿', state0: '投稿中',
state4:'退修', state1: '已受理',
state5:'接收 ', state2: '送审中',
act1:'审查中', state3: '拒稿',
act2:'已完结' state4: '退修',
}, state5: '接收 ',
act1: '审查中',
act2: '已完结'
},
charact: {
role: '角色',
role1: '主编',
role2: '编委',
role3: '审稿人',
role4: '青年编委',
}
} }

View File

@@ -1,54 +1,106 @@
<template> <template>
<div> <div>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="10" v-show="userrole=='reviewer'||userrole==1"> <el-row :gutter="20">
<el-card shadow="hover"> <el-col :span="4" v-if="this.usercap.includes('chief')">
<div slot="header" class="clearfix"> <router-link target="_blank" :to="{path:'/managing',query: {top_id: '1'}}">
<span>{{$t('home.authortop')}}</span> <div class="grid-jue1">
</div> <svg t="1629185957321" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
<div class="top-content"> p-id="3125" width="40" height="40">
<span> <path d="M657.749333 142.222222c-55.523556 0-113.777778 24.007111-145.976889 63.488-32.426667-39.480889-90.794667-63.488-145.863111-63.488H48.241778v728.177778h288.881778c109.795556-1.934222 126.634667 14.677333 135.509333 22.755556a48.924444 48.924444 0 0 1 12.970667 22.755555h52.337777a49.607111 49.607111 0 0 1 16.611556-27.534222c13.425778-9.102222 34.133333-20.252444 159.288889-18.773333h261.688889V142.222222z m-172.487111 694.044445c-35.498667-13.312-104.903111-18.887111-151.210666-18.887111H100.238222V194.56h265.671111c56.888889 0 119.694222 33.223111 119.694223 80.896v481.621333s-0.796444 45.169778-0.341334 79.075556z m240.526222-18.659556c-97.962667-1.706667-152.689778 0.796444-187.505777 18.659556V275.456c0-47.672889 63.146667-80.896 119.808-80.896h265.329777v622.933333z"
<p>Welcome to the TMR Publishing Group online manuscript submission and tracking system.</p> fill="#ffffff" p-id="3126"></path>
<p>Please go through our instructions for authors before submitting.</p> <path d="M810.666667 415.288889l-79.644445-62.577778-79.758222 62.577778v-307.2h159.402667v307.2zM167.708444 332.231111h250.311112v52.337778h-250.311112zM167.708444 480.369778h250.311112v52.337778h-250.311112zM167.708444 628.508444h250.311112v52.337778h-250.311112z"
<p><el-link type="primary" href="/articleAdd">Click here</el-link> to submit your manuscript.</p> fill="#ffffff" p-id="3127"></path>
<el-divider></el-divider> </svg>
<p>If you experience any problems, please contact us by publisher@tmrjournals.com</p> <p>{{$t('charact.role1')}}</p>
</span> </div>
</div> </router-link>
</el-col>
<el-col :span="4" v-if="this.usercap.includes('board')">
<router-link target="_blank" :to="{path:'/editorial',query: {top_id: '1'}}">
<div class="grid-jue2">
<svg t="1629186126715" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="3462" width="40" height="40">
<path d="M356.693333 910.222222H91.022222V113.777778h743.310222v179.768889h-52.110222V165.888H143.132444v692.224h213.560889V910.222222z"
fill="#ffffff" p-id="3463"></path>
<path d="M880.867556 781.539556v76.231111H473.088v-76.231111h407.779556M932.977778 729.429333H420.977778V910.222222h512V729.429333zM227.555556 510.065778h243.256888v52.110222H227.555556zM227.555556 381.041778h243.256888v52.110222H227.555556zM227.555556 252.131556h294.456888v52.110222H227.555556zM676.977778 372.508444a63.943111 63.943111 0 1 1-62.577778 63.943112 63.488 63.488 0 0 1 63.032889-63.943112m0-52.110222a116.053333 116.053333 0 1 0 115.256889 116.053334 115.598222 115.598222 0 0 0-115.712-116.053334z"
fill="#ffffff" p-id="3464"></path>
<path d="M533.162667 768.227556l-45.169778-26.055112L622.364444 513.592889l45.169778 26.168889-134.371555 228.465778zM820.792889 768.227556L686.421333 539.761778l45.169778-26.168889 134.371556 228.579555-45.169778 26.055112z"
fill="#ffffff" p-id="3465"></path>
</svg>
<p>{{$t('charact.role2')}}</p>
</div>
</router-link>
</el-col>
<el-col :span="4" v-if="this.usercap.includes('reviewer')">
<router-link target="_blank" :to="{path:'/peerewer',query: {top_id: '1'}}">
<div class="grid-jue3">
<svg t="1629185981340" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="3293" width="40" height="40">
<path d="M447.715556 910.222222H91.022222V113.777778h728.177778v327.68h-52.110222V165.888H143.132444v692.224h304.583112V910.222222zM611.214222 890.083556L542.72 910.222222l20.138667-68.380444 321.877333-321.763556L932.977778 568.32 611.214222 890.083556z"
fill="#ffffff" p-id="3294"></path>
<path d="M499.256889 613.717333H343.153778l-28.216889 67.470223H251.448889L391.509333 361.813333H455.111111l138.126222 319.374223h-65.763555zM477.866667 561.265778l-56.206223-134.144-56.888888 134.144zM522.24 305.834667h136.533333v28.444444h-136.533333z"
fill="#ffffff" p-id="3295"></path>
<path d="M576.284444 251.790222h28.444445v136.533334h-28.444445z" fill="#ffffff" p-id="3296"></path>
</svg>
<p>{{$t('charact.role3')}}</p>
</div>
</router-link>
</el-col>
<el-col :span="4" v-if="this.usercap.includes('yboard')">
<router-link target="_blank" :to="{path:'/youthed',query: {top_id: '1'}}">
<div class="grid-jue4">
<svg t="1629185867793" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="2957" width="40" height="40">
<path d="M515.413333 125.155556H125.155556v796.444444h757.76V597.674667H830.577778V869.262222H177.493333V177.493333h337.92V125.155556z"
fill="#ffffff" p-id="2958"></path>
<path d="M276.48 309.816889h147.911111v52.337778h-147.911111zM276.48 497.208889h147.911111v52.337778h-147.911111zM276.48 684.714667h455.111111v52.337777h-455.111111zM760.718222 174.193778l66.332445 39.708444-194.56 325.063111-50.289778 8.760889-16.042667-48.469333 194.56-325.063111M742.627556 102.4L508.928 492.885333l37.774222 113.777778 118.442667-20.593778L898.844444 195.925333 742.627556 102.4z"
fill="#ffffff" p-id="2959"></path>
</svg>
<p>{{$t('charact.role4')}}</p>
</div>
</router-link>
</el-col>
</el-row>
<el-col :span="10" v-show="userrole=='reviewer'||userrole==1">
<el-card shadow="hover">
<div slot="header" class="clearfix">
<span>{{$t('home.authortop')}}</span>
</div>
<div class="top-content">
<span>
<p>Welcome to the TMR Publishing Group online manuscript submission and tracking system.</p>
<p>Please go through our instructions for authors before submitting.</p>
<p>
<el-link type="primary" href="/articleAdd">Click here</el-link> to submit your manuscript.
</p>
<el-divider></el-divider>
<p>If you experience any problems, please contact us by publisher@tmrjournals.com</p>
</span>
</div>
<!-- <el-button size="medium " type="primary" @click="goaddarticle" >add article</el-button> --> <!-- <el-button size="medium " type="primary" @click="goaddarticle" >add article</el-button> -->
</el-card> </el-card>
</el-col> </el-col>
<el-col :span="14"> <el-col :span="14">
<el-card shadow="hover"> <el-card shadow="hover">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<el-badge <el-badge :value="this.usermsgList.length" :hidden="this.usermsgList.length>0?false:true" class="item">
:value="this.usermsgList.length" <span>{{$t('home.usermsg')}}</span>
:hidden="this.usermsgList.length>0?false:true" </el-badge>
class="item" </div>
> <el-table :data="usermsgList" border class="msg-table">
<span>{{$t('home.usermsg')}}</span> <el-table-column label="Date" width="150" :formatter="dateFormate" prop="ctime"></el-table-column>
</el-badge> <el-table-column label="Message" prop="content"></el-table-column>
</div> <el-table-column label="" width="80" align="center">
<el-table <template slot-scope="scope">
:data="usermsgList" <el-button type="text" @click="show(scope.row)">To See</el-button>
border </template>
class="msg-table" </el-table-column>
> </el-table>
<el-table-column label="Date" width="150" :formatter="dateFormate" prop="ctime"></el-table-column> </el-card>
<el-table-column label="Message" prop="content"></el-table-column> </el-col>
<el-table-column label="" width="80" align="center"> <!--<el-col :span="12">
<template slot-scope="scope">
<el-button
type="text"
@click="show(scope.row)"
>To See</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
<!--<el-col :span="12">
<el-card shadow="hover"> <el-card shadow="hover">
<div> <div>
<span>add article</span> <span>add article</span>
@@ -60,117 +112,168 @@
</div> </div>
</el-card> </el-card>
</el-col>--> </el-col>-->
</el-row> </el-row>
</div> </div>
</template> </template>
<script> <script>
import Schart from 'vue-schart'; import Schart from 'vue-schart';
import bus from '../common/bus'; import bus from '../common/bus';
export default { export default {
name: 'dashboard', name: 'dashboard',
data() { data() {
return { return {
name: localStorage.getItem('ms_username'), name: localStorage.getItem('U_name'),
userrole: localStorage.getItem('ms_userrole'), userrole: localStorage.getItem('U_status'),
userdata: '', usercap: localStorage.getItem('U_role'),
usermsgList: [] userdata: '',
}; usermsgList: []
}, };
created: function () { },
// this.getUserdata(); created: function() {
this.initUserMsg(); // this.getUserdata();
}, this.initUserMsg();
components: { },
Schart components: {
}, Schart
computed: { },
role() { computed: {
let frag = 'dads'; role() {
switch (this.userrole) { let frag = 'dads';
case '1': switch (this.userrole) {
frag = this.$t('total.author'); case '2':
break; frag = this.$t('total.author');
case '2': break;
frag = this.$t('total.editor'); case '1':
break; frag = this.$t('total.editor');
case 'reviewer': break;
frag = this.$t('total.reviewers') + ' & ' + this.$t('total.author'); case 'reviewer':
break; frag = this.$t('total.reviewers') + ' & ' + this.$t('total.author');
case 'admin': break;
frag = this.$t('total.admin'); case '0':
break; frag = this.$t('total.admin');
} break;
return frag; }
}, return frag;
my_login_time() { },
return this.formatDate(this.userdata.last_login_time); my_login_time() {
} return this.formatDate(this.userdata.last_login_time);
}, }
methods: { },
// getUserdata() { methods: {
// this.$api // getUserdata() {
// .post('api/user/getUserdata', {'account':this.name}) // this.$api
// .then(res=>{ // .post('api/user/getUserdata', {'account':this.name})
// if(res.code==0){ // .then(res=>{
// this.userdata = res.data; // if(res.code==0){
// }else{ // this.userdata = res.data;
// this.$message.error('get userinfo error'); // }else{
// console.log('error getuserdata'); // this.$message.error('get userinfo error');
// } // console.log('error getuserdata');
// }) // }
// .catch(err=>{ // })
// }); // .catch(err=>{
// }, // });
initUserMsg() { // },
this.$api.post('api/User/getUserMsg', { account: this.name }).then((res) => { initUserMsg() {
this.usermsgList = res; this.$api.post('api/User/getUserMsg', {
}); account: this.name
}, }).then((res) => {
dateFormate(row, column, cellValue, index) { this.usermsgList = res;
return this.formatDate(cellValue); });
}, },
show(row){ dateFormate(row, column, cellValue, index) {
this.$api.post('api/User/changeMsgState',{id:row.user_msg_id}) return this.formatDate(cellValue);
.then(res=>{ },
this.initUserMsg(); show(row) {
this.$router.push(row.url); this.$api.post('api/User/changeMsgState', {
}); id: row.user_msg_id
}, })
formatDate(timestamp) { .then(res => {
var date = new Date(timestamp * 1000); //时间戳为10位需*1000时间戳为13位的话不需乘1000 this.initUserMsg();
var Y = date.getFullYear() + '-'; this.$router.push(row.url);
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(); formatDate(timestamp) {
var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); var date = new Date(timestamp * 1000); //时间戳为10位需*1000时间戳为13位的话不需乘1000
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds(); var Y = date.getFullYear() + '-';
return Y + M + D + ' ' + h + ':' + m + ':' + s; var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
}, var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
goaddarticle(){ var h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
this.$router.push('/articleAdd'); 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;
}; },
goaddarticle() {
this.$router.push('/articleAdd');
}
}
};
</script> </script>
<style scoped> <style scoped>
.msg-table{ .msg-table {
text-align: center; text-align: center;
} }
.add-button{
display: block; .add-button {
margin: 50px auto; display: block;
} margin: 50px auto;
.top-content{ }
padding: 2px;
} .top-content {
.top-content span{ padding: 2px;
font-family: Arial, Helvetica, sans-serif; }
display: block;
padding: 2px; .top-content span {
font-size: 14px; font-family: Arial, Helvetica, sans-serif;
line-height: 1.5; display: block;
} padding: 2px;
font-size: 14px;
line-height: 1.5;
}
.grid-jue1,
.grid-jue2,
.grid-jue3,
.grid-jue4 {
margin: 10px 10px 20px 10px;
padding: 20px 20px 26px 20px;
color: #fff;
border-radius: 5px;
}
.grid-jue1 p,
.grid-jue2 p,
.grid-jue3 p,
.grid-jue4 p {
margin-left: 50px;
margin-top: -30px;
}
.grid-jue1:hover,
.grid-jue2:hover,
.grid-jue3:hover,
.grid-jue4:hover {
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 30%);
}
.grid-jue1 {
background-image: linear-gradient(to right, #1c66c0, #118bb3);
}
.grid-jue2 {
background-image: linear-gradient(to right, #e26a2d, #f5953c);
}
.grid-jue3 {
background-image: linear-gradient(to right, #4640c4, #7959e1);
}
.grid-jue4 {
background-image: linear-gradient(to right, #cc3646, #e84651);
}
</style> </style>

View File

@@ -1,177 +1,181 @@
<template> <template>
<div class="login-wrap"> <div class="login-wrap">
<div class="ms-login"> <div class="ms-login">
<div class="ms-title">{{ $t('system.title') }}</div> <div class="ms-title">{{ $t('system.title') }}</div>
<el-form :model="param" :rules="rules" ref="login" label-width="0px" class="ms-content"> <el-form :model="param" :rules="rules" ref="login" label-width="0px" class="ms-content">
<el-form-item prop="username"> <el-form-item prop="username">
<el-input v-model="param.username" auto-complete="off" placeholder="username"> <el-input v-model="param.username" auto-complete="off" placeholder="username">
<i slot="prefix" class="el-icon-lx-people" /> <i slot="prefix" class="el-icon-lx-people" />
<!-- <el-button slot="prepend" icon="el-icon-lx-people"></el-button> --> <!-- <el-button slot="prepend" icon="el-icon-lx-people"></el-button> -->
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="password"> <el-form-item prop="password">
<el-input type="password" auto-complete="off" placeholder="password" v-model="param.password"> <el-input type="password" auto-complete="off" placeholder="password" v-model="param.password">
<i slot="prefix" class="el-icon-lx-lock" /> <i slot="prefix" class="el-icon-lx-lock" />
<!-- <el-button slot="prepend" icon="el-icon-lx-lock"></el-button> --> <!-- <el-button slot="prepend" icon="el-icon-lx-lock"></el-button> -->
</el-input> </el-input>
</el-form-item> </el-form-item>
<div class="login-btn"> <div class="login-btn">
<el-button type="primary" @click="submitForm()">{{ $t('system.login') }}</el-button> <el-button type="primary" @click="submitForm()">{{ $t('system.login') }}</el-button>
</div> </div>
<el-row style="text-align: left"> <el-row style="text-align: left">
<el-col :span="24"> <el-col :span="24">
<el-link :underline="false" type="primary" @click="doRetrieve()">{{ $t('system.repassword') }}</el-link> <el-link :underline="false" type="primary" @click="doRetrieve()">{{ $t('system.repassword') }}</el-link>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-link :underline="false" type="primary" @click="doRegister()">{{ $t('system.register') }}</el-link> <el-link :underline="false" type="primary" @click="doRegister()">{{ $t('system.register') }}</el-link>
</el-col> </el-col>
<el-col :span="24" style="margin-top: 5px"> <el-col :span="24" style="margin-top: 5px">
<el-link :underline="false" type="primary" @click="skip_check()"> <el-link :underline="false" type="primary" @click="skip_check()">
<img class="orcid" src="../../assets/img/orcid.png" style="float: left; margin: -1px 5px 0 0" />{{$t('system.orcidlogin')}} <img class="orcid" src="../../assets/img/orcid.png" style="float: left; margin: -1px 5px 0 0" />{{$t('system.orcidlogin')}}
</el-link> </el-link>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
data: function () { data: function() {
return { return {
aa: localStorage.getItem('ms_journal'), aa: localStorage.getItem('ms_journal'),
orcidLink: orcidLink: 'https://orcid.org/oauth/authorize?client_id=APP-PKF0BGRP6DWM6FUB&response_type=code&scope=/authenticate&redirect_uri=https://submission.tmrjournals.com/orcidLink',
'https://orcid.org/oauth/authorize?client_id=APP-PKF0BGRP6DWM6FUB&response_type=code&scope=/authenticate&redirect_uri=https://submission.tmrjournals.com/orcidLink', param: {
param: { username: '',
username: '', password: ''
password: '' },
}, rules: {
rules: { username: [{
username: [ required: true,
{ message: 'enter one user name',
required: true, trigger: 'blur'
message: 'enter one user name', }],
trigger: 'blur' password: [{
} required: true,
], message: 'Please input a password',
password: [ trigger: 'blur'
{ }]
required: true, }
message: 'Please input a password', };
trigger: 'blur' },
} methods: {
] submitForm() {
} //登录操作
}; this.$refs.login.validate((valid) => {
}, if (valid) {
methods: { this.$api
submitForm() { .post('api/User/checkLogin', this.param)
//登录操作 .then((res) => {
this.$refs.login.validate((valid) => { console.log(res);
if (valid) { if (res.code == 1) {
this.$api this.$message.error('Login failed, user name or password error!');
.post('api/user/checkLogin', this.param) return false;
.then((res) => { } else {
console.log(res); this.$message.success('login success');
if (res.code == 1) { // U_status 0超级管理员 1编辑 2作者
this.$message.error('Login failed, user name or password error!'); if (this.param.username == 'superadmin' || this.param.username == 'wuxiongzhi2') {
return false; localStorage.setItem('U_status', '0'); //超级管理员
} else { localStorage.setItem('U_role', 'superadmin');
this.$message.success('login success'); localStorage.setItem('U_name', res.userinfo.account);
localStorage.setItem('ms_username', res.userinfo.account); localStorage.setItem('U_id', res.userinfo.user_id);
if (this.param.username == 'superadmin' || this.param.username == 'wuxiongzhi2') { } else if (res.data.roles.includes('editor')) {
localStorage.setItem('ms_userrole', 'admin'); localStorage.setItem('U_status', '1'); //编辑
} else if (res.userinfo.type == 1 && res.userinfo.is_reviewer) { localStorage.setItem('U_role', res.data.roles);
localStorage.setItem('ms_userrole', 'reviewer'); localStorage.setItem('U_name', res.data.userinfo.account);
} else { localStorage.setItem('U_id', res.data.userinfo.user_id);
localStorage.setItem('ms_userrole', res.userinfo.type); } else {
} localStorage.setItem('U_status', '2'); //其余的身份
this.$router.push('/'); localStorage.setItem('U_role', res.data.roles);
} localStorage.setItem('U_name', res.data.userinfo.account);
}) localStorage.setItem('U_id', res.data.userinfo.user_id);
.catch((err) => { }
console.log(err); this.$router.push('/');
}); }
} else { })
this.$message.error('Please enter the correct account and password'); .catch((err) => {
console.log('error submit!!'); console.log(err);
return false; });
} } else {
}); this.$message.error('Please enter the correct account and password');
}, console.log('error submit!!');
doRegister() { return false;
//注册页面 }
this.$router.push({ });
path: '/register' },
}); doRegister() {
}, //注册页面
doRetrieve() { this.$router.push({
//找回密码 path: '/register'
this.$router.push({ });
path: '/retrieve' },
}); doRetrieve() {
}, //找回密码
this.$router.push({
path: '/retrieve'
});
},
skip_check() { skip_check() {
location.href = this.orcidLink; location.href = this.orcidLink;
} }
} }
}; };
</script> </script>
<style scoped> <style scoped>
.login-wrap { .login-wrap {
position: relative; position: relative;
width: 100%; width: 100%;
height: 100%; height: 100%;
background-image: url(../../assets/img/login-bg.jpg); background-image: url(../../assets/img/login-bg.jpg);
background-size: 100%; background-size: 100%;
} }
.ms-title { .ms-title {
width: 100%; width: 100%;
line-height: 50px; line-height: 50px;
text-align: center; text-align: center;
font-size: 20px; font-size: 20px;
color: #fff; color: #fff;
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
} }
.ms-login { .ms-login {
position: absolute; position: absolute;
left: 50%; left: 50%;
top: 50%; top: 50%;
width: 350px; width: 350px;
margin: -190px 0 0 -175px; margin: -190px 0 0 -175px;
border-radius: 5px; border-radius: 5px;
background: rgba(255, 255, 255, 0.3); background: rgba(255, 255, 255, 0.3);
overflow: hidden; overflow: hidden;
} }
.ms-content { .ms-content {
padding: 30px 30px; padding: 30px 30px;
} }
.login-btn { .login-btn {
text-align: center; text-align: center;
} }
.login-btn button { .login-btn button {
width: 100%; width: 100%;
height: 36px; height: 36px;
margin-bottom: 10px; margin-bottom: 10px;
} }
.login-tips { .login-tips {
font-size: 12px; font-size: 12px;
line-height: 30px; line-height: 30px;
color: #fff; color: #fff;
} }
.orcid { .orcid {
display: block; display: block;
width: 15px; width: 15px;
height: 15px; height: 15px;
} }
</style> </style>

View File

@@ -52,7 +52,7 @@
<el-option key="B" label="Review" value="B"></el-option> <el-option key="B" label="Review" value="B"></el-option>
<el-option key="C" label="Case report" value="C"></el-option> <el-option key="C" label="Case report" value="C"></el-option>
<el-option key="M" label="Meta-analysis" value="M"></el-option> <el-option key="M" label="Meta-analysis" value="M"></el-option>
<el-option key="P" label="Research proposal" value="P"></el-option> <el-option key="P" label="Research proposal" value="P"></el-option>
<el-option key="N" label="News" value="N"></el-option> <el-option key="N" label="News" value="N"></el-option>
<el-option key="T" label="Comment" value="T"></el-option> <el-option key="T" label="Comment" value="T"></el-option>
<el-option key="O" label="Others" value="O"></el-option> <el-option key="O" label="Others" value="O"></el-option>
@@ -283,9 +283,9 @@
<el-dialog title="" :visible.sync="licensebox" width="30%"> <el-dialog title="" :visible.sync="licensebox" width="30%">
<span style="word-wrap:break-word; word-break:normal; "> <span style="word-wrap:break-word; word-break:normal; ">
Creative Commons Licensing<br> Creative Commons Licensing<br>
TMR Publishing Group provides authors the choice of applying the Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) licenses defined below, to be determined after acceptance:<br> TMR Publishing Group provides authors the choice of applying the Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) licenses defined below, to be determined after acceptance:<br>
Attribution: CC BY-NC 4.0<br> Attribution: CC BY-NC 4.0<br>
This license lets others distribute, remix, tweak, and build upon your work. They can not use the material for commercial purposes. This license lets others distribute, remix, tweak, and build upon your work. They can not use the material for commercial purposes.
</span> </span>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="licensebox = false">close</el-button> <el-button @click="licensebox = false">close</el-button>
@@ -305,7 +305,7 @@ export default {
loading: false, loading: false,
form: { form: {
journal: localStorage.getItem('ms_journal_alias') ? parseInt(localStorage.getItem('ms_journal_alias')) : 1, journal: localStorage.getItem('ms_journal_alias') ? parseInt(localStorage.getItem('ms_journal_alias')) : 1,
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
title: '', title: '',
major: '', major: '',
cmajor: '', cmajor: '',

View File

@@ -11,7 +11,7 @@
<span> <span>
<p> <p>
I am writing just to follow up on the suggestion from the editor of {{ form.journalname }} that you might be I am writing just to follow up on the suggestion from the editor of {{ form.journalname }} that you might be
interested in submitting your paper to {{ transinfo.jourtitle }} instead.<br /><br /> interested in submitting your paper to {{ transinfo.jourtitle }} instead.<br /><br />
</p> </p>
<p> <p>
If you choose to pursue publication in {{ transinfo.jourtitle }}, If you choose to pursue publication in {{ transinfo.jourtitle }},
@@ -385,7 +385,7 @@ export default {
articleId: this.$route.query.id, articleId: this.$route.query.id,
journal: '', journal: '',
journalname: '', journalname: '',
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
title: '', title: '',
accept_sn: '', accept_sn: '',
abstrart: '', abstrart: '',
@@ -436,7 +436,7 @@ export default {
frag = 'Meta-analysis'; frag = 'Meta-analysis';
break; break;
case 'P': case 'P':
frag = 'Research proposal'; frag = 'Research proposal';
break; break;
case 'N': case 'N':
frag = 'News'; frag = 'News';

View File

@@ -515,7 +515,7 @@ export default {
totalpageFileList:[], totalpageFileList:[],
manuscirptFileList: [], manuscirptFileList: [],
editform: { editform: {
editname: localStorage.getItem('ms_username'), editname: localStorage.getItem('U_name'),
articleId: this.$route.query.id, articleId: this.$route.query.id,
state: 0, state: 0,
trsjournal:0, trsjournal:0,
@@ -605,7 +605,7 @@ export default {
frag = 'Meta-analysis'; frag = 'Meta-analysis';
break; break;
case 'P': case 'P':
frag = 'Research proposal'; frag = 'Research proposal';
break; break;
case 'N': case 'N':
frag = 'News'; frag = 'News';

View File

@@ -87,7 +87,7 @@ export default {
return { return {
items: '', items: '',
query: { query: {
username: localStorage.getItem('ms_username'), 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,
name: '', name: '',
state:0, state:0,

View File

@@ -102,7 +102,7 @@ export default {
return { return {
items: '', items: '',
query: { query: {
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
journal: 0, journal: 0,
name: '', name: '',
state:-1, state:-1,

View File

@@ -394,13 +394,13 @@ export default {
baseUrl: this.Common.baseUrl, baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl, mediaUrl: this.Common.mediaUrl,
dateId: this.$route.query.id, dateId: this.$route.query.id,
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
articlefileList: [], articlefileList: [],
articlezipList: [], articlezipList: [],
dialogFormVisible: false, dialogFormVisible: false,
activeNames: ['1', '2', '3', '4', '5', '6', '7'], activeNames: ['1', '2', '3', '4', '5', '6', '7'],
detailDate: { detailDate: {
editor: localStorage.getItem('ms_username'), editor: localStorage.getItem('U_name'),
artrevid: '', artrevid: '',
article: '', article: '',
reviewer: '', reviewer: '',

View File

@@ -52,7 +52,7 @@ export default {
articleId: this.$route.query.id, articleId: this.$route.query.id,
journal: '', journal: '',
journalname: '', journalname: '',
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
title: '', title: '',
accept_sn: '', accept_sn: '',
abstrart: '', abstrart: '',

View File

@@ -136,11 +136,11 @@ export default {
data() { data() {
return { return {
baseUrl: this.Common.baseUrl, baseUrl: this.Common.baseUrl,
name:localStorage.getItem('ms_username'), name:localStorage.getItem('U_name'),
userdata: '', userdata: '',
loading: false, loading: false,
reviewerForm: { reviewerForm: {
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
journal: '', journal: '',
gender:1, gender:1,
introduction:'', introduction:'',

View File

@@ -3,7 +3,7 @@
<div class="crumbs"> <div class="crumbs">
<el-breadcrumb separator="/"> <el-breadcrumb separator="/">
<el-breadcrumb-item> <el-breadcrumb-item>
<i class="el-icon-connection"></i> Journal list <i class="el-icon-connection"></i> Editor list
</el-breadcrumb-item> </el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
</div> </div>

View File

@@ -0,0 +1,361 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-connection"></i> Editorial board list
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container">
<div class="handle-box">
<el-button type="primary" icon="el-icon-circle-plus-outline" @click="addEditor">add</el-button>
</div>
<div class="handle-box" :rules="rules">
<el-select v-model="query.journal_id" placeholder="请选择期刊" @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>
</div>
<el-table :data="tableData" border stripe class="table" ref="multipleTable" header-cell-class-name="table-header">
<el-table-column prop="account" label="username" align="center"></el-table-column>
<el-table-column prop="realname" label="realname" align="center"></el-table-column>
<el-table-column prop="phone" label="phone" align="center"></el-table-column>
<el-table-column prop="email" label="email" align="center"></el-table-column>
<el-table-column label="" width="100" align="center">
<template slot-scope="scope">
<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>
<!-- 添加弹出框 -->
<el-dialog title="Add editorial board" :visible.sync="addVisible" width="40%">
<el-form ref="add_Form" :model="addForm" :rules="rules" label-width="150px">
<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="journal" prop="journal_id">
<el-select v-model="addForm.journal_id" filterable placeholder="Please select a responsible Journal" value-key="groupID"
style="width: 300px;">
<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="realname" prop="realname">
<el-input v-model="addForm.realname"></el-input>
</el-form-item>
<el-form-item label="password" prop="password">
<el-input v-model="addForm.password" type="password"></el-input>
</el-form-item>
<el-form-item label="Confirm password" prop="repassword">
<el-input v-model="addForm.repassword" type="password"></el-input>
</el-form-item>
<el-form-item label="phone" prop="phone">
<el-input v-model="addForm.phone"></el-input>
</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)">OK</el-button>
</span>
</el-dialog>
<!-- 已有信息弹出框 -->
<el-dialog title="Add editorial board" :visible.sync="oldVisible" width="40%">
<el-form ref="old_Form" :model="oldForm" :rules="rules" label-width="100px">
<el-form-item label="account">
{{oldForm.account}}
</el-form-item>
<el-form-item label="email">
{{oldForm.email}}
</el-form-item>
<el-form-item label="journal" prop="journal_id">
<el-select v-model="oldForm.journal_id" filterable placeholder="Please select a responsible Journal" value-key="groupID"
style="width: 300px;">
<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="realname">
{{oldForm.realname}}
</el-form-item>
<el-form-item label="phone">
{{oldForm.phone}}
</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>
</div>
</template>
<script>
export default {
data() {
return {
edit_id: localStorage.getItem('U_id'),
tableData: [],
df_jour: [],
addVisible: false,
oldVisible: false,
addForm: {},
oldForm: {},
aid: -1,
id: -1,
query: {
journal_id: 0,
},
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"
}],
journal_id: [{
required: true,
message: 'Please select a responsible Journal',
trigger: 'blur'
}],
password: [{
required: true,
message: 'Please input password',
trigger: 'blur'
}],
repassword: [{
required: true,
message: 'Please input confirm password',
trigger: 'blur'
}]
}
};
},
created() {
this.getjour();
// this.getdate();
},
methods: {
// 获取编委和负责期刊列表数据
getdate() {
this.$api
.post('api/Chief/getJournalBoard', this.query)
.then(res => {
this.tableData = res.data.boards;
})
.catch(err => {
console.log(err);
});
},
getjour() {
this.$api
.post('api/Chief/getJournalsByEditor', {
'user_id': this.edit_id
})
.then(res => {
if (res.code == 0) {
this.df_jour = res.data.journals;
this.query.journal_id = this.df_jour[0].journal_id
this.$api
.post('api/Chief/getJournalBoard', this.query)
.then(res => {
this.tableData = res.data.boards;
})
.catch(err => {
console.log(err);
});
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
// 下拉分类搜索
chan_id(event) {
this.getdate();
},
// 添加操作
addEditor(index, row) {
this.aid = index;
this.addVisible = true;
},
// 查找与他相同的账号
saerNa_U() {
if (this.addForm.account != undefined) {
this.$api
.post('api/Chief/checkEmailForUser', {
'email': this.addForm.account
})
.then(res => {
if (res.code == 0) {
if (res.data.user_info != null) {
this.$confirm('该账户已存在,是否在该账户下操作?', '提示', {
type: 'warning'
})
.then(() => {
this.addVisible = false;
this.$refs.add_Form.resetFields();
// this.id = index;
this.oldVisible = true;
this.oldForm = res.data.user_info;
})
.catch(() => {});
}
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
},
// 查找与他相同的邮箱
saerEm_U() {
if (this.addForm.email != undefined) {
this.$api
.post('api/Chief/checkEmailForUser', {
'email': this.addForm.email
})
.then(res => {
if (res.code == 0) {
if (res.data.user_info != null) {
this.$confirm('该账户已存在,是否在该账户下操作?', '提示', {
type: 'warning'
})
.then(() => {
this.addVisible = false;
this.$refs.add_Form.resetFields();
// this.id = index;
this.oldVisible = true;
this.oldForm = res.data.user_info;
})
.catch(() => {});
}
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
},
// 保存添加
saveAdd(addForm) {
if (addForm.password == addForm.repassword) {
this.$refs.add_Form.validate((valid) => {
if (valid) {
this.$api
.post('api/Chief/addJournalBoard', this.addForm)
.then(res => {
if (res.code == 0) {
this.addVisible = false;
this.$refs.add_Form.resetFields();
this.$message.success(`添加成功`);
this.getdate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
return false;
}
});
} else {
this.$message.error("两次新密码输入不一致");
}
},
// 保存old添加
saveOld(oldForm) {
this.$refs.old_Form.validate((valid) => {
if (valid) {
this.$api
.post('api/Chief/addJournalBoardHas', this.oldForm)
.then(res => {
if (res.code == 0) {
this.oldVisible = false;
this.$refs.old_Form.resetFields();
this.$message.success(`添加成功`);
this.getdate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
return false;
}
});
},
// 删除操作
handleDelete(index, row) {
// 二次确认删除
this.$confirm('确定要删除吗?', '提示', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/Chief/delJournalBoard', row)
.then(res => {
if (res.code == 0) {
this.$message.success('删除成功');
this.getdate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(() => {});
}
}
};
</script>
<style scoped>
.handle-box {
margin-bottom: 20px;
}
.table {
width: 100%;
font-size: 14px;
}
.red {
color: #ff0000;
}
</style>

View File

@@ -0,0 +1,183 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-connection"></i> Journal list
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container">
<el-table :data="tableData" border stripe class="table" ref="multipleTable" header-cell-class-name="table-header">
<el-table-column prop="title" label="title" width="320px"></el-table-column>
<el-table-column label="chief" align="center">
<template slot-scope="scope">
<div v-for="item in scope.row.chief">
{{item.realname==''?item.account:(item.realname!=''?item.account+' ('+item.realname+')':'')}}
<el-button type="text" icon="el-icon-delete" class="red" @click="handleDelete(item)"></el-button>
</div>
<el-button type="text" icon="el-icon-edit" @click="handleEdit(scope.$index, scope.row)">Choice</el-button>
</template>
</el-table-column>
<el-table-column prop="issn" label="issn" width="130px"></el-table-column>
<el-table-column prop="email" label="email" width="240px"></el-table-column>
<el-table-column prop="website" label="website" width="300px"></el-table-column>
</el-table>
</div>
<!-- 选择弹出框 -->
<el-dialog title="Choice editor" :visible.sync="editVisible" width="30%">
<el-form ref="edit_Form" :model="editForm" :rules="rules" label-width="80px">
<el-form-item label="title">
<template slot-scope="scope">
{{editForm.title}}
</template>
</el-form-item>
<el-form-item label="chief" prop="chief">
<el-select v-model="editForm.user_id" filterable placeholder="Please select the editor in chief" value-key="groupID"
style="width: 250px;">
<el-option v-for="item in chietry"
:label="item.realname==''?item.account:(item.realname!=''?item.account+' ('+item.realname+')':'')"
:key="item.user_id" :value="item.user_id"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editVisible = false">Cancel</el-button>
<el-button type="primary" @click="saveEdit(editForm)">OK</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [],
editVisible: false,
editForm: {},
idx: -1,
chietry: [],
rules: {
account: [{
required: true,
message: 'Please input account',
trigger: 'blur'
}]
}
};
},
created() {
this.getdate();
},
methods: {
// 获取列表数据
getdate() {
this.$api
.post('api/Chief/getJournalForChief')
.then(res => {
this.tableData = res.data.journals;
})
.catch(err => {
console.log(err);
});
},
// 编辑操作
handleEdit(index, row) {
this.idx = index;
this.editForm = Object.assign({}, row);
// 获取下拉数据
this.$api
.post('api/Chief/getChiefList')
.then(res => {
if (res.code == 0) {
this.chietry = res.data.chiefs;
for (let i = 0; i < this.chietry.length; i++) {
for (let r = 0; r < this.editForm.chief.length; r++) {
if (this.chietry[i].user_id == this.editForm.chief[r].user_id) {
this.chietry.splice(i, 1);
if (i == 0) {
i = 0
} else {
i = i - 1
}
}
}
}
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
this.editVisible = true;
},
// 保存编辑
saveEdit(editForm) {
this.$refs.edit_Form.validate((valid) => {
if (valid) {
this.$api
.post('api/Chief/addChiefToJournal', this.editForm)
.then(res => {
if (res.code == 0) {
this.editVisible = false;
this.$message.success(`更改第 ${this.idx + 1} 行成功`);
this.getdate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 删除操作
handleDelete(item) {
// 二次确认删除
this.$confirm('Are you sure you want to delete', 'Delete', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/Chief/delChiefToJournal', item)
.then(res => {
if (res.code == 0) {
this.$message.success('删除成功');
this.getdate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(() => {});
}
}
};
</script>
<style scoped>
.handle-box {
margin-bottom: 20px;
}
.table {
width: 100%;
font-size: 14px;
}
.red {
color: #ff0000;
}
</style>

View File

@@ -58,7 +58,7 @@ export default {
jdt:false, jdt:false,
mediaUrl: this.Common.mediaUrl, mediaUrl: this.Common.mediaUrl,
baseUrl: this.Common.baseUrl, baseUrl: this.Common.baseUrl,
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
upform: { upform: {
course: '', course: '',
url: '' url: ''

View File

@@ -0,0 +1,49 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-collection"></i> {{this.head_line}}
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container container_l">
789+456
</div>
</div>
</template>
<script>
export default {
data() {
return {
head_line: "",
tableData: []
};
},
mounted() {
},
created() {
this.getData();
},
methods: {
// 获取数据
getData() {
this.head_line = localStorage.getItem('journal_title');
}
},
computed: {
},
watch: {
$route(to, from) {
this.getData()
}
}
};
</script>
<style scoped>
</style>

View File

@@ -335,7 +335,7 @@ export default {
totalpageFileList:[], totalpageFileList:[],
manuscirptFileList: [], manuscirptFileList: [],
editform: { editform: {
editname: localStorage.getItem('ms_username'), editname: localStorage.getItem('U_name'),
articleId: this.$route.query.id, articleId: this.$route.query.id,
state: '', state: '',
editormsg: '' editormsg: ''
@@ -412,7 +412,7 @@ export default {
frag = 'Meta-analysis'; frag = 'Meta-analysis';
break; break;
case 'P': case 'P':
frag = 'Research proposal'; frag = 'Research proposal';
break; break;
case 'N': case 'N':
frag = 'News'; frag = 'News';

View File

@@ -7,7 +7,7 @@ export default {
data: function () { data: function () {
return { return {
query: { query: {
account: localStorage.getItem('ms_username'), account: localStorage.getItem('U_name'),
code: this.$route.query.code code: this.$route.query.code
}, },
loading: true, loading: true,

View File

@@ -1,312 +1,279 @@
<template> <template>
<div class="login-wrap" v-loading="loading"> <div class="login-wrap" v-loading="loading">
<template> <template>
<p class="ms_notes"> <p class="ms_notes">
Thank you for using ORCID ID to login our website, please continue to login or register TMR Publshing Group account to connect with your ORCID ID. Thank you for using ORCID ID to login our website, please continue to login or register TMR Publshing Group account
</p> to connect with your ORCID ID.
<!-- <p class="ms_noter"> </p>
<!-- <p class="ms_noter">
如果你拥有账户但没有绑定相应的ORCID请点击绑定操作<br/> 如果你拥有账户但没有绑定相应的ORCID请点击绑定操作<br/>
如果你没有账户请点击注册进行相应操作 如果你没有账户请点击注册进行相应操作
</p> --> </p> -->
<el-tabs v-model="activeName" class="ms_tab_n"> <el-tabs v-model="activeName" class="ms_tab_n">
<el-tab-pane label="Login" name="first"> <el-tab-pane label="Login" name="first">
<div class="ms_link"> <div class="ms_link">
<div class="ms-title">User Login</div> <div class="ms-title">User Login</div>
<el-form class="ms-content" :rules="registerRules" ref="loginForm" :model="loginForm" label-width="0"> <el-form class="ms-content" :rules="registerRules" ref="loginForm" :model="loginForm" label-width="0">
<!-- 用户名 --> <!-- 用户名 -->
<el-form-item prop="username"> <el-form-item prop="username">
<el-input size="small" v-model="loginForm.username" auto-complete="off" placeholder="username"> <el-input size="small" v-model="loginForm.username" auto-complete="off" placeholder="username">
<i slot="prefix" class="el-icon-user"></i> <i slot="prefix" class="el-icon-user"></i>
</el-input> </el-input>
</el-form-item> </el-form-item>
<!-- 密码 --> <!-- 密码 -->
<el-form-item prop="password"> <el-form-item prop="password">
<el-input <el-input size="small" v-model="loginForm.password" auto-complete="off" placeholder="password" show-password>
size="small" <i slot="prefix" class="el-icon-lock"></i>
v-model="loginForm.password" </el-input>
auto-complete="off" </el-form-item>
placeholder="password" <!-- 按钮 -->
show-password <el-row justify="center">
> <el-form-item>
<i slot="prefix" class="el-icon-lock"></i> <el-button type="primary" @click.native.prevent="orcidBind" class="register-submit" style="width: 100%">bind</el-button>
</el-input> </el-form-item>
</el-form-item> </el-row>
<!-- 按钮 --> </el-form>
<el-row justify="center"> </div>
<el-form-item> </el-tab-pane>
<el-button type="primary" @click.native.prevent="orcidBind" class="register-submit" style="width: 100%" <el-tab-pane label="Register" name="second">
>bind</el-button <div class="ms_login">
> <div class="ms-title">User Register</div>
</el-form-item> <el-form class="ms-content" :rules="registerRules" ref="registerForm" :model="registerForm" label-width="0">
</el-row> <!-- 用户名 -->
</el-form> <el-form-item prop="username">
</div> <el-input size="small" v-model="registerForm.username" auto-complete="off" placeholder="username">
</el-tab-pane> <i slot="prefix" class="el-icon-user"></i>
<el-tab-pane label="Register" name="second"> </el-input>
<div class="ms_login"> </el-form-item>
<div class="ms-title">User Register</div> <!-- 密码 -->
<el-form class="ms-content" :rules="registerRules" ref="registerForm" :model="registerForm" label-width="0"> <el-form-item prop="password">
<!-- 用户名 --> <el-input size="small" v-model="registerForm.password" auto-complete="off" placeholder="password" show-password>
<el-form-item prop="username"> <i slot="prefix" class="el-icon-lock"></i>
<el-input size="small" v-model="registerForm.username" auto-complete="off" placeholder="username"> </el-input>
<i slot="prefix" class="el-icon-user"></i> </el-form-item>
</el-input> <!-- 确认密码 -->
</el-form-item> <el-form-item prop="passwordd">
<!-- 密码 --> <el-input size="small" v-model="registerForm.passwordd" auto-complete="off" placeholder="password"
<el-form-item prop="password"> show-password>
<el-input <i slot="prefix" class="el-icon-lock"></i>
size="small" </el-input>
v-model="registerForm.password" </el-form-item>
auto-complete="off" <!-- 姓名 -->
placeholder="password" <el-form-item prop="name">
show-password <el-input size="small" v-model="registerForm.name" auto-complete="off" placeholder="realname">
> <i slot="prefix" class="el-icon-edit-outline"></i>
<i slot="prefix" class="el-icon-lock"></i> </el-input>
</el-input> </el-form-item>
</el-form-item> <!-- 手机 -->
<!-- 确认密码 --> <el-form-item prop="phone">
<el-form-item prop="passwordd"> <el-input size="small" v-model="registerForm.phone" auto-complete="off" placeholder="phone">
<el-input <i slot="prefix" class="el-icon-mobile-phone" />
size="small" </el-input>
v-model="registerForm.passwordd" </el-form-item>
auto-complete="off" <!-- 邮件 -->
placeholder="password" <el-form-item prop="email">
show-password <el-input size="small" v-model="registerForm.email" auto-complete="off" placeholder="email">
> <i slot="prefix" class="el-icon-message"></i>
<i slot="prefix" class="el-icon-lock"></i> </el-input>
</el-input> </el-form-item>
</el-form-item> <!-- 按钮 -->
<!-- 姓名 --> <el-row justify="center">
<el-form-item prop="name"> <el-form-item>
<el-input size="small" v-model="registerForm.name" auto-complete="off" placeholder="realname"> <el-button type="primary" @click.native.prevent="orcidRegister" class="register-submit" style="width: 100%">bind</el-button>
<i slot="prefix" class="el-icon-edit-outline"></i> </el-form-item>
</el-input> </el-row>
</el-form-item> </el-form>
<!-- 手机 --> </div>
<el-form-item prop="phone"> </el-tab-pane>
<el-input size="small" v-model="registerForm.phone" auto-complete="off" placeholder="phone"> </el-tabs>
<i slot="prefix" class="el-icon-mobile-phone" /> </template>
</el-input> </div>
</el-form-item>
<!-- 邮件 -->
<el-form-item prop="email">
<el-input size="small" v-model="registerForm.email" auto-complete="off" placeholder="email">
<i slot="prefix" class="el-icon-message"></i>
</el-input>
</el-form-item>
<!-- 按钮 -->
<el-row justify="center">
<el-form-item>
<el-button
type="primary"
@click.native.prevent="orcidRegister"
class="register-submit"
style="width: 100%"
>bind</el-button
>
</el-form-item>
</el-row>
</el-form>
</div>
</el-tab-pane>
</el-tabs>
</template>
</div>
</template> </template>
<script> <script>
export default { export default {
data: function () { data: function() {
return { return {
account: localStorage.getItem('ms_username'), account: localStorage.getItem('U_name'),
code: this.$route.query.code, code: this.$route.query.code,
// loading: true, // loading: true,
has_user: true, has_user: true,
loginForm: {}, loginForm: {},
registerForm: {}, registerForm: {},
activeName: 'first', activeName: 'first',
registerRules: { registerRules: {
username: [ username: [{
{ required: true,
required: true, message: 'Please enter your username.',
message: 'Please enter your username.', trigger: 'blur'
trigger: 'blur' }],
} password: [{
], required: true,
password: [ message: 'Please enter your password.',
{ trigger: 'blur'
required: true, }],
message: 'Please enter your password.', passwordd: [{
trigger: 'blur' required: true,
} message: 'Please enter your password.',
], trigger: 'blur'
passwordd: [ }],
{ name: [{
required: true, required: true,
message: 'Please enter your password.', message: 'Please enter your real name.',
trigger: 'blur' trigger: 'blur'
} }],
], phone: [{
name: [ required: true,
{ message: 'Please enter the correct mobile phone number.',
required: true, trigger: 'blur'
message: 'Please enter your real name.', }],
trigger: 'blur' email: [{
} required: true,
], message: 'Please enter your email address.',
phone: [ trigger: 'blur'
{ },
required: true, {
message: 'Please enter the correct mobile phone number.', type: 'email',
trigger: 'blur' message: 'Email address format errorexample@gmail.com.',
} trigger: 'blur'
], }
email: [ ]
{ }
required: true, };
message: 'Please enter your email address.', },
trigger: 'blur' created: function() {
}, this.initLinkOrcid();
{ },
type: 'email', methods: {
message: 'Email address format errorexample@gmail.com.', initLinkOrcid() {
trigger: 'blur' this.$api
} .post('api/User/OrcidLogin', {
] code: this.code
} })
}; .then((res) => {
}, if (res.data.user == null) {
created: function () { this.loginForm.orcid = res.data.orcid;
this.initLinkOrcid(); this.registerForm.orcid = res.data.orcid;
}, this.loading = false;
methods: { } else {
initLinkOrcid() { this.$message.success('Login success');
this.$api localStorage.setItem('U_name', res.data.user.account);
.post('api/User/OrcidLogin', { code: this.code }) if (res.data.user.type == 1 && res.data.user.is_reviewer) {
.then((res) => { localStorage.setItem('ms_userrole', 'reviewer');
if (res.data.user == null) { } else {
this.loginForm.orcid = res.data.orcid; localStorage.setItem('ms_userrole', res.data.user.type);
this.registerForm.orcid = res.data.orcid; }
this.loading = false; this.$router.push('/');
} else { }
this.$message.success('Login success'); })
localStorage.setItem('ms_username', res.data.user.account); .catch((err) => {
if (res.data.user.type == 1 && res.data.user.is_reviewer) { console.log(err);
localStorage.setItem('ms_userrole', 'reviewer'); });
} else { },
localStorage.setItem('ms_userrole', res.data.user.type); //绑定操作提交
} orcidBind() {
this.$router.push('/'); this.$api
} .post('api/User/orcidBind', this.loginForm)
}) .then((res) => {
.catch((err) => { if (res.data.code == 1) {
console.log(err); this.$message.error(res.data.msg);
}); } else {
}, this.$message.success('Binding success');
//绑定操作提交 localStorage.setItem('U_name', res.data.user.account);
orcidBind() { if (res.data.user.type == 1 && res.data.user.is_reviewer) {
this.$api localStorage.setItem('ms_userrole', 'reviewer');
.post('api/User/orcidBind', this.loginForm) } else {
.then((res) => { localStorage.setItem('ms_userrole', res.data.user.type);
if (res.data.code == 1) { }
this.$message.error(res.data.msg); this.$router.push('/');
} else { }
this.$message.success('Binding success'); })
localStorage.setItem('ms_username', res.data.user.account); .catch((err) => {
if (res.data.user.type == 1 && res.data.user.is_reviewer) { console.log(err);
localStorage.setItem('ms_userrole', 'reviewer'); });
} else { },
localStorage.setItem('ms_userrole', res.data.user.type); //注册提交
} orcidRegister() {
this.$router.push('/'); this.$api
} .post('api/User/orcidRegister', this.registerForm)
}) .then((res) => {
.catch((err) => { this.$message.success('Register success');
console.log(err); localStorage.setItem('U_name', res.data.user.account);
}); if (res.data.user.type == 1 && res.data.user.is_reviewer) {
}, localStorage.setItem('ms_userrole', 'reviewer');
//注册提交 } else {
orcidRegister() { localStorage.setItem('ms_userrole', res.data.user.type);
this.$api }
.post('api/User/orcidRegister', this.registerForm) this.$router.push('/');
.then((res) => { })
this.$message.success('Register success'); .catch((err) => {
localStorage.setItem('ms_username', res.data.user.account); console.log(err);
if (res.data.user.type == 1 && res.data.user.is_reviewer) { });
localStorage.setItem('ms_userrole', 'reviewer'); }
} else { }
localStorage.setItem('ms_userrole', res.data.user.type); };
}
this.$router.push('/');
})
.catch((err) => {
console.log(err);
});
}
}
};
</script> </script>
<style> <style>
.login-wrap { .login-wrap {
position: relative; position: relative;
width: 100%; width: 100%;
height: 100%; height: 100%;
background-image: url(../../assets/img/login-bg.jpg); background-image: url(../../assets/img/login-bg.jpg);
background-size: 100%; background-size: 100%;
padding-top: 80px; padding-top: 80px;
} }
.ms_login, .ms_login,
.ms_link { .ms_link {
width: 400px; width: 400px;
margin: 0 auto; margin: 0 auto;
} }
.ms_login .ms-title, .ms_login .ms-title,
.ms_link .ms-title { .ms_link .ms-title {
text-align: center; text-align: center;
font-size: 18px; font-size: 18px;
margin: 20px 0; margin: 20px 0;
color: #fff; color: #fff;
} }
.ms_notes { .ms_notes {
width: 400px; width: 400px;
margin: 0 auto 60px auto; margin: 0 auto 60px auto;
padding: 20px 50px; padding: 20px 50px;
line-height: 24px; line-height: 24px;
background: rgba(255, 255, 255, 0.5); background: rgba(255, 255, 255, 0.5);
color: #fe7300; color: #fe7300;
border-radius: 5px; border-radius: 5px;
} }
/* .ms_link {} /* .ms_link {}
.ms_link .ms-title {} */ .ms_link .ms-title {} */
.ms_tab_n { .ms_tab_n {
width: 500px; width: 500px;
margin: 0 auto; margin: 0 auto;
border-radius: 5px; border-radius: 5px;
padding-bottom: 30px; padding-bottom: 30px;
background: rgba(255, 255, 255, 0.3); background: rgba(255, 255, 255, 0.3);
} }
.ms_tab_n .el-tabs__nav { .ms_tab_n .el-tabs__nav {
margin-left: 142px; margin-left: 142px;
height: 60px; height: 60px;
padding-top: 25px; padding-top: 25px;
} }
.ms_tab_n .el-tabs__item { .ms_tab_n .el-tabs__item {
font-size: 22px; font-size: 22px;
padding: 0 40px; padding: 0 40px;
color: #fff; color: #fff;
} }
.ms_tab_n .el-tabs__active-bar { .ms_tab_n .el-tabs__active-bar {
left: -28px; left: -28px;
width: 120px !important; width: 120px !important;
} }
</style> </style>

View File

@@ -72,7 +72,7 @@ export default {
data() { data() {
return { return {
query: { query: {
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
journalId: 0, journalId: 0,
pageIndex: 1, pageIndex: 1,
pageSize: 10 pageSize: 10

View File

@@ -517,7 +517,7 @@ export default {
baseUrl: this.Common.baseUrl, baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl, mediaUrl: this.Common.mediaUrl,
dateId: this.$route.query.id, dateId: this.$route.query.id,
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
loading:false, loading:false,
articlefileList: [], articlefileList: [],
figFileList: [], figFileList: [],

View File

@@ -59,9 +59,9 @@ export default {
name:'reviewerArticleList', name:'reviewerArticleList',
data() { data() {
return { return {
userrole:localStorage.getItem('ms_userrole'), userrole:localStorage.getItem('U_status'),
query: { query: {
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
pageIndex: 1, pageIndex: 1,
pageSize: 10 pageSize: 10
}, },

View File

@@ -101,7 +101,7 @@ export default {
mediaUrl:this.Common.mediaUrl, mediaUrl:this.Common.mediaUrl,
baseUrl: this.Common.baseUrl, baseUrl: this.Common.baseUrl,
fullscreenLoading: false, fullscreenLoading: false,
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
upform: { upform: {
journal: '', journal: '',
url: '' url: ''

View File

@@ -1,66 +1,49 @@
<template> <template>
<div> <div>
<div class="crumbs"> <div class="crumbs">
<el-breadcrumb separator="/"> <el-breadcrumb separator="/">
<el-breadcrumb-item> <el-breadcrumb-item>
<i class="el-icon-user"></i> Reviewer list <i class="el-icon-user"></i> Reviewer list
</el-breadcrumb-item> </el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<div class="container"> <div class="container">
<div class="handle-box"> <div class="handle-box">
<el-select <el-select v-model="query.journalId" @change="getDate" placeholder="Please select journal">
v-model="query.journalId" <el-option :key="0" label="All journal" :value="0"></el-option>
@change="getdate" <el-option v-for="item in journalList" :key="item.journal_id" :label="item.title" :value="item.journal_id"></el-option>
placeholder="Please select journal" </el-select>
> <!-- <el-button type="primary" icon="el-icon-circle-plus-outline" @click="addJournal">add</el-button> -->
<el-option :key="0" label="All journal" :value="0"></el-option> </div>
<el-option <el-table :data="tableData" border stripe class="table" ref="multipleTable" header-cell-class-name="table-header">
v-for="item in journalList" <!-- <el-table-column prop="user_id" label="No." align="center"></el-table-column> -->
:key="item.journal_id" <el-table-column prop="account" label="Account" align="center"></el-table-column>
:label="item.title" <el-table-column prop="realname" label="Name" align="center"></el-table-column>
:value="item.journal_id" <el-table-column prop="country" label="Country" align="center"></el-table-column>
></el-option> <el-table-column prop="company" label="Affiliation" align="center"></el-table-column>
</el-select> <el-table-column label="" width="220" align="center">
<!-- <el-button type="primary" icon="el-icon-circle-plus-outline" @click="addJournal">add</el-button> --> <template slot-scope="scope">
</div> <el-button size="mini" type="primary" plain icon="el-icon-tickets" @click="showdetail(scope.row)">Detail</el-button>
<el-table <el-button size="mini" type="danger" plain icon="el-icon-delete" @click="showDelete(scope.row)">Delete</el-button>
:data="tableData" </template>
border </el-table-column>
stripe </el-table>
class="table" <div class="pagination">
ref="multipleTable" <el-pagination background layout="total, prev, pager, next" :current-page="query.pageIndex" :page-size="query.pageSize"
header-cell-class-name="table-header" :total="Total" @current-change="handlePageChange"></el-pagination>
> </div>
<!-- <el-table-column prop="user_id" label="No." align="center"></el-table-column> --> </div>
<el-table-column prop="account" label="Account" align="center"></el-table-column> <!-- 删除弹出框 -->
<el-table-column prop="realname" label="Name" align="center"></el-table-column> <el-dialog title="删除" :visible.sync="delOpen" width="40%">
<el-table-column prop="country" label="Country" align="center"></el-table-column> <div v-for="item in lineOptions" :name='item.journal_id' :value='item.reviewer_id' style="margin-left: 60px;">
<el-table-column prop="company" label="Affiliation" align="center"></el-table-column> {{item.journal.title}} - {{item.reviewer.account}}
<el-table-column label="" width="180" align="center"> <el-button type="text" icon="el-icon-delete" @click="lastDelete($event)" style="color: #FF0000;margin-left: 20px;">Delete</el-button>
<template slot-scope="scope"> </div>
<el-button <span slot="footer" class="dialog-footer">
size="mini" <el-button @click="delOpen = false;" type="primary"> </el-button>
type="primary" </span>
plain </el-dialog>
icon="el-icon-tickets" <!-- <el-dialog title="change" :visible.sync="editVisible" width="40%">
@click="showdetail(scope.row)"
>Detail</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
background
layout="total, prev, pager, next"
:current-page="query.pageIndex"
:page-size="query.pageSize"
:total="Total"
@current-change="handlePageChange"
></el-pagination>
</div>
</div>
<!-- <el-dialog title="change" :visible.sync="editVisible" width="40%">
<el-form ref="changform" :model="change" label-width="80px"> <el-form ref="changform" :model="change" label-width="80px">
<el-form-item label="editormsg"> <el-form-item label="editormsg">
<span>{{change.title}}</span> <span>{{change.title}}</span>
@@ -82,105 +65,153 @@
<el-button type="primary" @click="">save</el-button> <el-button type="primary" @click="">save</el-button>
</span> </span>
</el-dialog> --> </el-dialog> -->
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name:'reviewerList', name: 'reviewerList',
data() { data() {
return { return {
query: { query: {
username: localStorage.getItem('ms_username'), username: localStorage.getItem('U_name'),
journalId:0, journalId: 0,
pageIndex: 1, pageIndex: 1,
pageSize: 10 pageSize: 10
}, },
tableData: [], tableData: [],
journalList:[], journalList: [],
Total: 0, Total: 0,
editVisible: false, // editVisible: false,
}; delForm: {
}, line: []
created() { },
this.getdate(); delOpen: false,
this.initselect(); addForm: {},
}, lineOptions: [],
methods: { mess_age: {}
// 获取编辑列表数据 };
getdate() { },
this.$api created() {
.post('api/User/getreviewerList', this.query) this.getDate();
.then(res => { this.initselect();
this.Total = res.total; },
this.tableData = res.data; methods: {
}) // 获取编辑列表数据
.catch(err => { getDate() {
console.log(err); this.$api
}); .post('api/User/getreviewerList', this.query)
}, .then(res => {
// 分页导航 this.Total = res.total;
handlePageChange(val) { this.tableData = res.data;
this.$set(this.query, 'pageIndex', val); })
this.getdate(); .catch(err => {
}, console.log(err);
showdetail(row) { });
this.$router.push({ path: 'reviewerDetail', query: { id: row.user_id } }); },
}, // 分页导航
//初始化期刊选项 handlePageChange(val) {
initselect() { this.$set(this.query, 'pageIndex', val);
this.$api this.getDate();
.post('api/Article/getJournal', { username: this.query.username }) },
.then(res => { // 查看详情
this.journalList = res; showdetail(row) {
}) this.$router.push({
.catch(err => { path: 'reviewerDetail',
console.log(err); query: {
}); id: row.user_id
} }
} });
}; },
// 删除弹窗
showDelete(index, row) {
this.aid = index;
this.delOpen = true;
this.$api
.post('api/User/getReviewerForDel', {
reviewer_id: index.reviewer_id,
editor_account: localStorage.getItem('U_name')
})
.then(res => {
this.lineOptions = res.data;
})
.catch(err => {
console.log(err);
});
},
// 删除操作
lastDelete(e) {
this.mess_age.reviewer_id = e.currentTarget.parentElement.getAttribute('value')
this.mess_age.journal_id = e.currentTarget.parentElement.getAttribute('name')
// 二次确认删除
this.$confirm('确定要删除吗?', '提示', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/User/deleteArticleReviewer',this.mess_age)
.then(res => {
if (res.code == 0) {
this.delOpen = false;
this.$message.success('删除成功');
this.getDate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(() => {});
},
//初始化期刊选项
initselect() {
this.$api
.post('api/Article/getJournal', {
username: this.query.username
})
.then(res => {
this.journalList = res;
})
.catch(err => {
console.log(err);
});
}
}
};
</script> </script>
<style scoped> <style scoped>
.handle-box { .handle-box {
margin-bottom: 20px; margin-bottom: 20px;
} }
.handle-select { .table {
width: 120px; width: 100%;
} font-size: 14px;
}
.handle-input { .table-td-thumb {
width: 300px; display: block;
display: inline-block; margin: auto;
} width: 40px;
.table { height: 40px;
width: 100%; }
font-size: 14px;
} .el-table .warning-row {
.red { background: #f3ca7f;
color: #ff0000; }
}
.mr10 { .el-table .success-row {
margin-right: 10px; background: #bcfc9a;
} }
.table-td-thumb {
display: block; .el-table .normol-row {
margin: auto; background: #d8f1c7
width: 40px; }
height: 40px;
} .el-table .red-row {
.el-table .warning-row { background: #f05555;
background: #f3ca7f; }
}
.el-table .success-row {
background: #bcfc9a;
}
.el-table .normol-row{
background: #d8f1c7
}
.el-table .red-row{
background: #f05555;
}
</style> </style>

View File

@@ -29,8 +29,8 @@ const i18n = new VueI18n({
//使用钩子函数对路由进行权限跳转 //使用钩子函数对路由进行权限跳转
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
document.title = `${to.meta.title} | Traditional Medicine Research`; document.title = `${to.meta.title} | Traditional Medicine Research`;
const role = localStorage.getItem('ms_username'); const role = localStorage.getItem('U_name');
const userrole = localStorage.getItem('ms_userrole'); const userrole = localStorage.getItem('U_status');
if (!role && to.path!='/register'&&to.path!=='/submission'&&to.path!=='/orcidLink'&&to.path!=='/img'&& to.path !=='/reviewer'&&to.path !=='/thanks' &&to.path !== '/login'&&to.path.search(/retrieve/i)<0 ) { if (!role && to.path!='/register'&&to.path!=='/submission'&&to.path!=='/orcidLink'&&to.path!=='/img'&& to.path !=='/reviewer'&&to.path !=='/thanks' &&to.path !== '/login'&&to.path.search(/retrieve/i)<0 ) {
next('/login'); next('/login');
// } else if (to.meta.permission) { // } else if (to.meta.permission) {

View File

@@ -4,258 +4,392 @@ import Router from 'vue-router';
Vue.use(Router); Vue.use(Router);
const originalPush = Router.prototype.push const originalPush = Router.prototype.push
Router.prototype.push = function push(location) { Router.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err) return originalPush.call(this, location).catch(err => err)
} }
export default new Router({ export default new Router({
mode: 'history', mode: 'history',
routes: [ routes: [{
{ path: '/',
path: '/', redirect: '/dashboard'
redirect: '/dashboard' },
}, {
{ path: '/',
path: '/', component: () => import( /* webpackChunkName: "home" */ '../components/common/Home.vue'),
component: () => import(/* webpackChunkName: "home" */ '../components/common/Home.vue'), meta: {
meta: { title: '自述文件' }, title: '自述文件'
children: [ },
{ children: [{
path: '/dashboard', path: '/dashboard',
component: () => import(/* webpackChunkName: "dashboard" */ '../components/page/Dashboard.vue'), component: () => import( /* webpackChunkName: "dashboard" */ '../components/page/Dashboard.vue'),
meta: { title: 'Home' } meta: {
}, title: 'Home'
// { }
// path: '/icon', },
// component: () => import('../components/page/Icon.vue'), // {
// meta: { title: '自定义图标' } // path: '/icon',
// }, // component: () => import('../components/page/Icon.vue'),
{ // meta: { title: '自定义图标' }
path: '/articleList', // },
component: () => import(/* webpackChunkName: "table" */ '../components/page/articleList.vue'),
meta: { title: 'My manuscript' }
},
{
path: '/articleListEditor',
component: () => import(/* webpackChunkName: "table" */ '../components/page/articleListEditor.vue'),
meta: { title: 'Manuscript to be examined' ,permission: 2}
},
{
path:'/articleDetailEditor',
component: () => import('../components/page/articleDetailEditor.vue'),
meta: { title: 'Manuscript detail' ,permission: 2},
hidden:true
},
{
path: '/articleDetail',
component: () => import('../components/page/articleDetail.vue'),
meta: { title: 'Manuscript detail' ,},
hidden:true
},
{
path:'articleRevise',
component:()=>import('../components/page/articleRevise.vue'),
meta:{title:'Manuscript revise'},
hidden:true
},
{
path: '/articleAdd',
component: () => import('../components/page/articleAdd.vue'),
meta: { title: 'Add manuscript' }
},
{
path:'/articleReviewer',
component:()=>import('../components/page/articleReviewer.vue'),
meta:{title:'Article reviewer'},
hidden:true
},
{
path:'/articleReviewerDetail',
component:()=>import('../components/page/articleReviewerDetail'),
meta:{title:'Article detail'},
hidden:true
},
{
path:'/editorList',
component: ()=>import('../components/page/editorList.vue'),
meta:{title:'Editor list'}
},
{
path:'/editorAdd',
component:()=>import('../components/page/editorAdd.vue'),
meta:{title:'Editor add'}
},
{
path:'/journalList',
component:()=>import('../components/page/journallist.vue'),
meta:{title:'Journal list'}
},
{
path:'authorApplyReviewer',
component:()=>import('../components/page/authorApplyReviewer.vue'),
meta:{title:'Author apply'},
hidden:true
},
{
path:'/journalAdd',
component:()=>import('../components/page/journalAdd.vue'),
meta:{title:'Journal add'}
},
{
path:'/reviewerApplyList',
component:()=>import('../components/page/reviewerApplyList.vue'),
meta:{title:'Reviewer aplly list'}
},
{
path:'/reviewerApplyDetail',
component:()=>import('../components/page/reviewerApplyDetail.vue'),
meta:({title:'Reviewer apply detail'}),
hidden:true
},
{
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',
component:()=>import('../components/page/reviewerList.vue'),
meta:{title:'Reviewer list'}
},
{
path:'/reviewerDetail',
component:()=>import('../components/page/reviewerDetail.vue'),
meta:{title:'reviewer detail'},
hidden:true
},
{
path:'/adminImportReviewer',
component:()=>import('../components/page/adminImportReviewer.vue'),
meta:{title:'Import reviewer'}
},
{
path:'/adminImportreviewerError',
component:()=>import('../components/page/adminImportreviewerError.vue'),
meta:{title:'Import error'}
},
{
path:'/reviewerImport',
component:()=>import('../components/page/reviewerImport.vue'),
meta:{title:'Reviewer import'}
},
{
path:'/authorApplySuccess',
component:()=>import('../components/page/authorApplySuccess.vue'),
meta:{title:'Apply success'}
},
{
path:'/reviewerImportError',
component:()=>import('../components/page/reviewerImportError.vue'),
meta:{title:'Import error'}
},
{
path:'/monitorManuscript',
component:()=>import('../components/page/monitorManuscript.vue'),
meta:{title:'Manuscript list'}
},
{
path:'/monitorManuscriptDetail',
component:()=>import('../components/page/monitorManuscriptDetail.vue'),
meta:{title:'Manuscript detail'},
hidden:true
},
{ {
path:'/chiefeditor', path: '/articleList',
component:()=>import('../components/page/chiefeditor.vue'), component: () => import( /* webpackChunkName: "table" */ '../components/page/articleList.vue'),
meta:{title:'Editor list'}, meta: {
hidden:true title: 'My manuscript'
}
}, },
{ {
path:'/chiefperiod', path: '/articleListEditor',
component:()=>import('../components/page/chiefperiod.vue'), component: () => import( /* webpackChunkName: "table" */ '../components/page/articleListEditor.vue'),
meta:{title:'Journal list'}, meta: {
hidden:true title: 'Manuscript to be examined',
permission: 2
}
}, },
{ {
path: '/404', path: '/articleDetailEditor',
component: () => import(/* webpackChunkName: "404" */ '../components/page/404.vue'), component: () => import('../components/page/articleDetailEditor.vue'),
meta: { title: '404' } meta: {
}, title: 'Manuscript detail',
{ permission: 2
path: '/403', },
component: () => import(/* webpackChunkName: "403" */ '../components/page/403.vue'), hidden: true
meta: { title: '403' } },
}, {
// { path: '/articleDetail',
// path: '/donate', component: () => import('../components/page/articleDetail.vue'),
// component: () => import(/* webpackChunkName: "donate" */ '../components/page/Donate.vue'), meta: {
// meta: { title: '支持作者' } title: 'Manuscript detail',
// } },
] hidden: true
}, },
{ {
path: '/login', path: 'articleRevise',
component: () => import(/* webpackChunkName: "login" */ '../components/page/Login.vue'), component: () => import('../components/page/articleRevise.vue'),
meta: { title: 'Login' } meta: {
}, title: 'Manuscript revise'
{ },
path: '/retrieve', hidden: true
component: () => import(/* webpackChunkName: "retrieve" */ '../components/page/Retrieve.vue'), },
meta: { title: 'Retrieve password' } {
}, path: '/articleAdd',
{ component: () => import('../components/page/articleAdd.vue'),
path: '/retrieveact', meta: {
component: () => import(/* webpackChunkName: "retrieveact" */ '../components/page/Retrieveact.vue'), title: 'Add manuscript'
meta: { title: 'Retrieve password' } }
}, },
{ {
path:'/submission', path: '/articleReviewer',
component:()=>import('../components/page/submission.vue'), component: () => import('../components/page/articleReviewer.vue'),
meta:{title:'Submission system'} meta: {
}, title: 'Article reviewer'
{ },
path: '/register', hidden: true
component: () => import(/* webpackChunkName: "register" */ '../components/page/Register.vue'), },
meta: { title: 'Register' } {
}, path: '/articleReviewerDetail',
{ component: () => import('../components/page/articleReviewerDetail'),
path:'/reviewer', meta: {
component:()=>import('../components/page/reviewer.vue'), title: 'Article detail'
meta:{title:'reviewer'} },
}, hidden: true
{ },
path:'/orcidLink', {
component:()=>import('../components/page/orcidLink.vue'), path: '/editorList',
meta:{title:'orcidLink'} component: () => import('../components/page/editorList.vue'),
}, meta: {
{ title: 'Editor list'
path:'/orcidBind', }
component:()=>import('../components/page/orcidBind.vue'), },
meta:{title:'orcidBind'} {
}, path: '/editorAdd',
{ component: () => import('../components/page/editorAdd.vue'),
path:'/thanks', meta: {
component:()=>import('../components/page/thanks.vue'), title: 'Editor add'
meta:{title:'thanks'} }
}, },
{ {
path:'/test', path: '/journalList',
component:()=>import('../components/page/test.vue'), component: () => import('../components/page/journallist.vue'),
meta:{title:'test'} meta: {
}, title: 'Journal list'
{ }
path:'/img', },
component:()=>import('../components/page/img.vue'), {
meta:{title:'img'} path: 'authorApplyReviewer',
}, component: () => import('../components/page/authorApplyReviewer.vue'),
{ meta: {
path: '*', title: 'Author apply'
redirect: '/404' },
} hidden: true
] },
{
path: '/journalAdd',
component: () => import('../components/page/journalAdd.vue'),
meta: {
title: 'Journal add'
}
},
{
path: '/reviewerApplyList',
component: () => import('../components/page/reviewerApplyList.vue'),
meta: {
title: 'Reviewer aplly list'
}
},
{
path: '/reviewerApplyDetail',
component: () => import('../components/page/reviewerApplyDetail.vue'),
meta: ({
title: 'Reviewer apply detail'
}),
hidden: true
},
{
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',
component: () => import('../components/page/reviewerList.vue'),
meta: {
title: 'Reviewer list'
}
},
{
path: '/reviewerDetail',
component: () => import('../components/page/reviewerDetail.vue'),
meta: {
title: 'reviewer detail'
},
hidden: true
},
{
path: '/adminImportReviewer',
component: () => import('../components/page/adminImportReviewer.vue'),
meta: {
title: 'Import reviewer'
}
},
{
path: '/adminImportreviewerError',
component: () => import('../components/page/adminImportreviewerError.vue'),
meta: {
title: 'Import error'
}
},
{
path: '/reviewerImport',
component: () => import('../components/page/reviewerImport.vue'),
meta: {
title: 'Reviewer import'
}
},
{
path: '/authorApplySuccess',
component: () => import('../components/page/authorApplySuccess.vue'),
meta: {
title: 'Apply success'
}
},
{
path: '/reviewerImportError',
component: () => import('../components/page/reviewerImportError.vue'),
meta: {
title: 'Import error'
}
},
{
path: '/monitorManuscript',
component: () => import('../components/page/monitorManuscript.vue'),
meta: {
title: 'Manuscript list'
}
},
{
path: '/monitorManuscriptDetail',
component: () => import('../components/page/monitorManuscriptDetail.vue'),
meta: {
title: 'Manuscript detail'
},
hidden: true
},
{
path: '/chiefeditor',
component: () => import('../components/page/chiefeditor.vue'),
meta: {
title: 'Editor list'
},
hidden: true
},
{
path: '/chiefperiod',
component: () => import('../components/page/chiefperiod.vue'),
meta: {
title: 'Journal list'
},
hidden: true
},
{
path: '/editmbereditor',
component: () => import('../components/page/editmbereditor.vue'),
meta: {
title: 'Editor list'
},
hidden: true
},
{
path: '/editmberperiod',
component: () => import('../components/page/editmberperiod.vue'),
meta: {
title: 'Journal list'
},
hidden: true
},
{
path: '/404',
component: () => import( /* webpackChunkName: "404" */ '../components/page/404.vue'),
meta: {
title: '404'
}
},
{
path: '/403',
component: () => import( /* webpackChunkName: "403" */ '../components/page/403.vue'),
meta: {
title: '403'
}
},
// {
// path: '/donate',
// component: () => import(/* webpackChunkName: "donate" */ '../components/page/Donate.vue'),
// meta: { title: '支持作者' }
// }
]
},
{
path: '/',
component: () => import( /* webpackChunkName: "content" */ '../components/common/Content.vue'),
meta: {
title: 'Content'
},
children: [{
path: '/managing',
component: () => import( /* webpackChunkName: "managing" */ '../components/page/man_aging'),
meta: {
title: '主编'
}
}, {
path: '/editorial',
component: () => import( /* webpackChunkName: "editorial" */ '../components/page/man_aging'),
meta: {
title: '编委'
}
}, {
path: '/peerewer',
component: () => import( /* webpackChunkName: "peerewer" */ '../components/page/man_aging'),
meta: {
title: '审稿人'
}
}, {
path: '/youthed',
component: () => import( /* webpackChunkName: "youthed" */ '../components/page/man_aging'),
meta: {
title: '青年编委'
}
}]
},
{
path: '/login',
component: () => import( /* webpackChunkName: "login" */ '../components/page/Login.vue'),
meta: {
title: 'Login'
}
},
{
path: '/retrieve',
component: () => import( /* webpackChunkName: "retrieve" */ '../components/page/Retrieve.vue'),
meta: {
title: 'Retrieve password'
}
},
{
path: '/retrieveact',
component: () => import( /* webpackChunkName: "retrieveact" */ '../components/page/Retrieveact.vue'),
meta: {
title: 'Retrieve password'
}
},
{
path: '/submission',
component: () => import('../components/page/submission.vue'),
meta: {
title: 'Submission system'
}
},
{
path: '/register',
component: () => import( /* webpackChunkName: "register" */ '../components/page/Register.vue'),
meta: {
title: 'Register'
}
},
{
path: '/reviewer',
component: () => import('../components/page/reviewer.vue'),
meta: {
title: 'reviewer'
}
},
{
path: '/orcidLink',
component: () => import('../components/page/orcidLink.vue'),
meta: {
title: 'orcidLink'
}
},
{
path: '/orcidBind',
component: () => import('../components/page/orcidBind.vue'),
meta: {
title: 'orcidBind'
}
},
{
path: '/thanks',
component: () => import('../components/page/thanks.vue'),
meta: {
title: 'thanks'
}
},
{
path: '/test',
component: () => import('../components/page/test.vue'),
meta: {
title: 'test'
}
},
{
path: '/img',
component: () => import('../components/page/img.vue'),
meta: {
title: 'img'
}
},
{
path: '*',
redirect: '/404'
}
]
}); });