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

@@ -1,54 +1,106 @@
<template>
<div>
<el-row :gutter="20">
<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-card>
</el-col>
<el-col :span="14">
<el-card shadow="hover">
<div slot="header" class="clearfix">
<el-badge
:value="this.usermsgList.length"
:hidden="this.usermsgList.length>0?false:true"
class="item"
>
<span>{{$t('home.usermsg')}}</span>
</el-badge>
</div>
<el-table
:data="usermsgList"
border
class="msg-table"
>
<el-table-column label="Date" width="150" :formatter="dateFormate" prop="ctime"></el-table-column>
<el-table-column label="Message" prop="content"></el-table-column>
<el-table-column label="" width="80" align="center">
<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">
<div>
<el-row :gutter="20">
<el-row :gutter="20">
<el-col :span="4" v-if="this.usercap.includes('chief')">
<router-link target="_blank" :to="{path:'/managing',query: {top_id: '1'}}">
<div class="grid-jue1">
<svg t="1629185957321" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="3125" width="40" height="40">
<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"
fill="#ffffff" p-id="3126"></path>
<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"
fill="#ffffff" p-id="3127"></path>
</svg>
<p>{{$t('charact.role1')}}</p>
</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-card>
</el-col>
<el-col :span="14">
<el-card shadow="hover">
<div slot="header" class="clearfix">
<el-badge :value="this.usermsgList.length" :hidden="this.usermsgList.length>0?false:true" class="item">
<span>{{$t('home.usermsg')}}</span>
</el-badge>
</div>
<el-table :data="usermsgList" border class="msg-table">
<el-table-column label="Date" width="150" :formatter="dateFormate" prop="ctime"></el-table-column>
<el-table-column label="Message" prop="content"></el-table-column>
<el-table-column label="" width="80" align="center">
<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">
<div>
<span>add article</span>
@@ -60,117 +112,168 @@
</div>
</el-card>
</el-col>-->
</el-row>
</div>
</el-row>
</div>
</template>
<script>
import Schart from 'vue-schart';
import bus from '../common/bus';
export default {
name: 'dashboard',
data() {
return {
name: localStorage.getItem('ms_username'),
userrole: localStorage.getItem('ms_userrole'),
userdata: '',
usermsgList: []
};
},
created: function () {
// this.getUserdata();
this.initUserMsg();
},
components: {
Schart
},
computed: {
role() {
let frag = 'dads';
switch (this.userrole) {
case '1':
frag = this.$t('total.author');
break;
case '2':
frag = this.$t('total.editor');
break;
case 'reviewer':
frag = this.$t('total.reviewers') + ' & ' + this.$t('total.author');
break;
case 'admin':
frag = this.$t('total.admin');
break;
}
return frag;
},
my_login_time() {
return this.formatDate(this.userdata.last_login_time);
}
},
methods: {
// getUserdata() {
// this.$api
// .post('api/user/getUserdata', {'account':this.name})
// .then(res=>{
// if(res.code==0){
// this.userdata = res.data;
// }else{
// this.$message.error('get userinfo error');
// console.log('error getuserdata');
// }
// })
// .catch(err=>{
// });
// },
initUserMsg() {
this.$api.post('api/User/getUserMsg', { account: this.name }).then((res) => {
this.usermsgList = res;
});
},
dateFormate(row, column, cellValue, index) {
return this.formatDate(cellValue);
},
show(row){
this.$api.post('api/User/changeMsgState',{id:row.user_msg_id})
.then(res=>{
this.initUserMsg();
this.$router.push(row.url);
});
},
formatDate(timestamp) {
var date = new Date(timestamp * 1000); //时间戳为10位需*1000时间戳为13位的话不需乘1000
var Y = date.getFullYear() + '-';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
var h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return Y + M + D + ' ' + h + ':' + m + ':' + s;
},
goaddarticle(){
this.$router.push('/articleAdd');
}
}
};
import Schart from 'vue-schart';
import bus from '../common/bus';
export default {
name: 'dashboard',
data() {
return {
name: localStorage.getItem('U_name'),
userrole: localStorage.getItem('U_status'),
usercap: localStorage.getItem('U_role'),
userdata: '',
usermsgList: []
};
},
created: function() {
// this.getUserdata();
this.initUserMsg();
},
components: {
Schart
},
computed: {
role() {
let frag = 'dads';
switch (this.userrole) {
case '2':
frag = this.$t('total.author');
break;
case '1':
frag = this.$t('total.editor');
break;
case 'reviewer':
frag = this.$t('total.reviewers') + ' & ' + this.$t('total.author');
break;
case '0':
frag = this.$t('total.admin');
break;
}
return frag;
},
my_login_time() {
return this.formatDate(this.userdata.last_login_time);
}
},
methods: {
// getUserdata() {
// this.$api
// .post('api/user/getUserdata', {'account':this.name})
// .then(res=>{
// if(res.code==0){
// this.userdata = res.data;
// }else{
// this.$message.error('get userinfo error');
// console.log('error getuserdata');
// }
// })
// .catch(err=>{
// });
// },
initUserMsg() {
this.$api.post('api/User/getUserMsg', {
account: this.name
}).then((res) => {
this.usermsgList = res;
});
},
dateFormate(row, column, cellValue, index) {
return this.formatDate(cellValue);
},
show(row) {
this.$api.post('api/User/changeMsgState', {
id: row.user_msg_id
})
.then(res => {
this.initUserMsg();
this.$router.push(row.url);
});
},
formatDate(timestamp) {
var date = new Date(timestamp * 1000); //时间戳为10位需*1000时间戳为13位的话不需乘1000
var Y = date.getFullYear() + '-';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
var h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return Y + M + D + ' ' + h + ':' + m + ':' + s;
},
goaddarticle() {
this.$router.push('/articleAdd');
}
}
};
</script>
<style scoped>
.msg-table{
text-align: center;
}
.add-button{
display: block;
margin: 50px auto;
}
.top-content{
padding: 2px;
}
.top-content span{
font-family: Arial, Helvetica, sans-serif;
display: block;
padding: 2px;
font-size: 14px;
line-height: 1.5;
}
.msg-table {
text-align: center;
}
.add-button {
display: block;
margin: 50px auto;
}
.top-content {
padding: 2px;
}
.top-content span {
font-family: Arial, Helvetica, sans-serif;
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>

View File

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

View File

@@ -52,7 +52,7 @@
<el-option key="B" label="Review" value="B"></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="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="T" label="Comment" value="T"></el-option>
<el-option key="O" label="Others" value="O"></el-option>
@@ -283,9 +283,9 @@
<el-dialog title="" :visible.sync="licensebox" width="30%">
<span style="word-wrap:break-word; word-break:normal; ">
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>
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 slot="footer" class="dialog-footer">
<el-button @click="licensebox = false">close</el-button>
@@ -305,7 +305,7 @@ export default {
loading: false,
form: {
journal: localStorage.getItem('ms_journal_alias') ? parseInt(localStorage.getItem('ms_journal_alias')) : 1,
username: localStorage.getItem('ms_username'),
username: localStorage.getItem('U_name'),
title: '',
major: '',
cmajor: '',

View File

@@ -11,7 +11,7 @@
<span>
<p>
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>
If you choose to pursue publication in {{ transinfo.jourtitle }},
@@ -385,7 +385,7 @@ export default {
articleId: this.$route.query.id,
journal: '',
journalname: '',
username: localStorage.getItem('ms_username'),
username: localStorage.getItem('U_name'),
title: '',
accept_sn: '',
abstrart: '',
@@ -436,7 +436,7 @@ export default {
frag = 'Meta-analysis';
break;
case 'P':
frag = 'Research proposal';
frag = 'Research proposal';
break;
case 'N':
frag = 'News';

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-connection"></i> Journal list
<i class="el-icon-connection"></i> Editor list
</el-breadcrumb-item>
</el-breadcrumb>
</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,
mediaUrl: this.Common.mediaUrl,
baseUrl: this.Common.baseUrl,
username: localStorage.getItem('ms_username'),
username: localStorage.getItem('U_name'),
upform: {
course: '',
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:[],
manuscirptFileList: [],
editform: {
editname: localStorage.getItem('ms_username'),
editname: localStorage.getItem('U_name'),
articleId: this.$route.query.id,
state: '',
editormsg: ''
@@ -412,7 +412,7 @@ export default {
frag = 'Meta-analysis';
break;
case 'P':
frag = 'Research proposal';
frag = 'Research proposal';
break;
case 'N':
frag = 'News';

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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