1 Commits

Author SHA1 Message Date
6cd8b17bf3 审稿页面显示 2025-12-04 14:30:51 +08:00
19 changed files with 238 additions and 3813 deletions

View File

@@ -19,8 +19,8 @@ const service = axios.create({
// baseURL: 'https://submission.tmrjournals.com/', //正式 记得切换 // baseURL: 'https://submission.tmrjournals.com/', //正式 记得切换
// baseURL: 'http://www.tougao.com/', //测试本地 记得切换 // baseURL: 'http://www.tougao.com/', //测试本地 记得切换
// baseURL: 'http://192.168.110.110/tougao/public/index.php/', // baseURL: 'http://192.168.110.110/tougao/public/index.php/',
baseURL: '/api', //本地 // baseURL: '/api', //本地
// baseURL: '/', //正式 baseURL: '/', //正式
}); });

View File

@@ -86,6 +86,7 @@ export default {
props: ['home'], props: ['home'],
data() { data() {
return { return {
localUsername: localStorage.getItem('U_name') || 'unknown user',
isProofreading: false, isProofreading: false,
collapse: false, collapse: false,
fullscreen: false, fullscreen: false,
@@ -131,9 +132,10 @@ export default {
} }
}, },
computed: { computed: {
username() { username() {
let username = localStorage.getItem('U_name');
return username ? username : this.name; return this.localUsername ? this.localUsername : this.name;
}, },
onRoutes() { onRoutes() {
0; 0;
@@ -153,6 +155,11 @@ export default {
} }
}, },
methods: { methods: {
updateUsername() {
this.localUsername = localStorage.getItem('U_name');
},
goHome() { goHome() {
this.$router.push('/'); this.$router.push('/');
}, },
@@ -272,10 +279,19 @@ export default {
} }
}, },
mounted() { mounted() {
if (this.$bus) { // 检查 $bus 是否存在,避免未定义错误
this.$bus.$on('user-name-updated', this.updateUsername);
}
if (document.body.clientWidth < 1000) { if (document.body.clientWidth < 1000) {
this.collapseChage(); this.collapseChage();
} }
}, },
beforeDestroy() {
// 步骤 C2: 销毁前移除监听器
if (this.$bus) {
this.$bus.$off('user-name-updated', this.updateUsername);
}
},
watch: { watch: {
$route: { $route: {
handler: function (route) { handler: function (route) {

View File

@@ -2,16 +2,16 @@
//记得切换 //记得切换
//正式 //正式
// const mediaUrl = '/public/'; const mediaUrl = '/public/';
// const baseUrl = '/'; const baseUrl = '/';
// const mediaUrl = 'https://submission.tmrjournals.com/public/'; // const mediaUrl = 'https://submission.tmrjournals.com/public/';
// // const mediaUrl = 'http://zmzm.tougao.dev.com/public/'; // // const mediaUrl = 'http://zmzm.tougao.dev.com/public/';
// const baseUrl = '/api' // const baseUrl = '/api'
const mediaUrl = 'http://tougaotest.tmrjournals.com/public/'; // const mediaUrl = 'http://tougaotest.tmrjournals.com/public/';
// const mediaUrl = 'http://zmzm.tougao.dev.com/public/'; // // const mediaUrl = 'http://zmzm.tougao.dev.com/public/';
const baseUrl = '/api'; // const baseUrl = '/api';
//本地(正式环境 ) //本地(正式环境 )

View File

@@ -1875,11 +1875,12 @@ export default {
}, },
handleAvatarError(res, file) {}, handleAvatarError(res, file) {},
beforeAvatarUpload(file) { beforeAvatarUpload(file) {
// const isLt2M = file.size / 1024 / 1024 < 10; const isLt2M = file.size / 1024 / 1024 < 20;
// if (!isLt2M) { if (!isLt2M) {
// this.$message.error('Picture size cannot exceed 10M!'); this.$message.error('Picture size cannot exceed 20M!');
// } return false;
// return isLt2M; }
const isValidFormat = ['image/jpeg', 'image/png', 'image/tiff'].includes(file.type); const isValidFormat = ['image/jpeg', 'image/png', 'image/tiff'].includes(file.type);
if (!isValidFormat) { if (!isValidFormat) {
this.$message.error(this.$t('commonTable.uploadImageInfo')); this.$message.error(this.$t('commonTable.uploadImageInfo'));

View File

@@ -124,7 +124,7 @@ export default {
// formatter函数动态修改tooltip样式 // formatter函数动态修改tooltip样式
formatter: function (params) { formatter: function (params) {
var that = this; var that = this;
console.log('params at line 430:', params);
if (params) { if (params) {
var htmlStr = ''; var htmlStr = '';
// htmlStr += params[0].name.replace(/\-/g, '/') + '<br/>'; //x轴的名称 // htmlStr += params[0].name.replace(/\-/g, '/') + '<br/>'; //x轴的名称
@@ -324,7 +324,7 @@ export default {
var otherInfo = optionJournalData.map((e) => { var otherInfo = optionJournalData.map((e) => {
for (let i in e.value) { for (let i in e.value) {
if (i == key) { if (i == key) {
console.log('e at line 299:', e.value[i]);
return { return {
key: e.key, key: e.key,
value: e.value[i].split('/')[0] value: e.value[i].split('/')[0]
@@ -386,7 +386,7 @@ export default {
var url = ''; var url = '';
if (type == 'month') { if (type == 'month') {
for (let i in this.monthData) { for (let i in this.monthData) {
console.log('i at line 386:', i);
timeData.push(i); timeData.push(i);
} }
@@ -396,7 +396,7 @@ export default {
}); });
} else if (type == 'year') { } else if (type == 'year') {
for (let i in this.yearData) { for (let i in this.yearData) {
console.log('i at line 386:', i);
timeData.push(i); timeData.push(i);
} }
tableData = this.JournalYearData.map((e) => { tableData = this.JournalYearData.map((e) => {

View File

@@ -7,6 +7,7 @@
{{ item.name }} {{ item.name }}
</h5> </h5>
<p v-if="index == 0"> <p v-if="index == 0">
<span style="color: #f56c6c; font-weight: 700" v-if="feeStatus == 0"> <span style="color: #f56c6c; font-weight: 700" v-if="feeStatus == 0">
<i class="el-icon-warning" style="margin-right: 10px"></i>Manuscript unpaid <i class="el-icon-warning" style="margin-right: 10px"></i>Manuscript unpaid
</span> </span>
@@ -89,6 +90,7 @@
<el-table-column prop="" :label="$t('pendingPayment.Paymentstatus')"> <el-table-column prop="" :label="$t('pendingPayment.Paymentstatus')">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="feeStatus == 0" style="color: #f56c6c"><b>Manuscript unpaid</b></span> <span v-if="feeStatus == 0" style="color: #f56c6c"><b>Manuscript unpaid</b></span>
<span v-if="feeStatus == 1" style="color: #67c23a"><b>Paid already</b></span> <span v-if="feeStatus == 1" style="color: #67c23a"><b>Paid already</b></span>
<span v-if="feeStatus == 2" style="color: #67c23a"><b>No payment required</b></span> <span v-if="feeStatus == 2" style="color: #67c23a"><b>No payment required</b></span>
@@ -733,7 +735,9 @@ export default {
if (this.article_pay_info.is_buy == 1) { if (this.article_pay_info.is_buy == 1) {
if (Number(this.article_pay_info.fee) == 0) { if (Number(this.article_pay_info.fee) == 0) {
this.feeStatus = 2; this.feeStatus = 2;
} else { } else {
this.feeStatus = 1; this.feeStatus = 1;
} }
@@ -741,8 +745,8 @@ export default {
this.feeStatus = 0; this.feeStatus = 0;
} }
this.tableData = [{ ...this.article_pay_info }]; this.tableData = [{ ...this.article_pay_info }];
this.feeStatus = res.data.state;
this.isShowCommit = res.data.state == 1 ? true : false; this.isShowCommit = this.article_pay_info.is_buy == 1 ? true : false;
console.log(this.isShowCommit); console.log(this.isShowCommit);
} }
}); });

View File

@@ -128,7 +128,7 @@ export default {
// formatter函数动态修改tooltip样式 // formatter函数动态修改tooltip样式
formatter: function (params) { formatter: function (params) {
var that = this; var that = this;
console.log('params at line 430:', params);
if (params) { if (params) {
var htmlStr = ''; var htmlStr = '';
// htmlStr += params[0].name.replace(/\-/g, '/') + '<br/>'; //x轴的名称 // htmlStr += params[0].name.replace(/\-/g, '/') + '<br/>'; //x轴的名称
@@ -328,7 +328,7 @@ export default {
var otherInfo = optionJournalData.map((e) => { var otherInfo = optionJournalData.map((e) => {
for (let i in e.value) { for (let i in e.value) {
if (i == key) { if (i == key) {
console.log('e at line 299:', e.value[i]);
return { return {
key: e.key, key: e.key,
value: e.value[i].split('/')[0] value: e.value[i].split('/')[0]
@@ -390,7 +390,7 @@ export default {
var url = ''; var url = '';
if (type == 'month') { if (type == 'month') {
for (let i in this.monthData) { for (let i in this.monthData) {
console.log('i at line 386:', i);
timeData.push(i); timeData.push(i);
} }
@@ -400,7 +400,7 @@ export default {
}); });
} else if (type == 'year') { } else if (type == 'year') {
for (let i in this.yearData) { for (let i in this.yearData) {
console.log('i at line 386:', i);
timeData.push(i); timeData.push(i);
} }
tableData = this.JournalYearData.map((e) => { tableData = this.JournalYearData.map((e) => {

View File

@@ -154,7 +154,14 @@
<el-input type="textarea" rows="2" v-model="form.approval_content"></el-input> <el-input type="textarea" rows="2" v-model="form.approval_content"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="Abstract :" prop="abstrart"> <el-form-item label="Abstract :" prop="abstrart">
<el-input type="textarea" rows="6" v-model="form.abstrart"></el-input> <el-input
type="textarea"
v-model="form.abstrart"
:autosize="{ minRows: 1, maxRows: 100 }"
class="full-show-no-scroll"
placeholder=""
/>
</el-form-item> </el-form-item>
<!-- 话题 --> <!-- 话题 -->
<!-- <el-form-item label="Topics :" prop="topics"> <!-- <el-form-item label="Topics :" prop="topics">
@@ -167,10 +174,22 @@
<el-form-item label="Key words :"> <el-form-item label="Key words :">
<div v-if="keywordsList && keywordsList.length > 0"> <div v-if="keywordsList && keywordsList.length > 0">
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange" style="color: #006699;">Select All</el-checkbox> <el-checkbox
:indeterminate="isIndeterminate"
v-model="checkAll"
@change="handleCheckAllChange"
style="color: #006699"
>Select All</el-checkbox
>
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange"> <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
<div v-for="(item, index) in keywordsList" :key="index" style="margin-right:16px;display: inline-block;"> <div
<el-checkbox style="margin-right: 4px;" :label="index + 1" v-model="item.checked">{{item.keyword}}</el-checkbox> v-for="(item, index) in keywordsList"
:key="index"
style="margin-right: 16px; display: inline-block"
>
<el-checkbox style="margin-right: 4px" :label="index + 1" v-model="item.checked">{{
item.keyword
}}</el-checkbox>
<el-input <el-input
:name="index + 1" :name="index + 1"
v-model="item.ke" v-model="item.ke"
@@ -182,13 +201,16 @@
</el-checkbox-group> </el-checkbox-group>
</div> </div>
<el-button type="text" @click="addfund"> <el-button type="text" @click="addfund">
<i class="el-icon-circle-plus-outline">Add</i> <i class="el-icon-circle-plus-outline">Add</i>
</el-button> </el-button>
<el-button v-if="checkedCities.length > 0" type="text" @click="deletefund" style="color: #f56c6c;margin-left: 20px;"> <el-button
<i class="el-icon-remove-outline" style="color: #f56c6c;">Delete</i> v-if="checkedCities.length > 0"
type="text"
@click="deletefund"
style="color: #f56c6c; margin-left: 20px"
>
<i class="el-icon-remove-outline" style="color: #f56c6c">Delete</i>
</el-button> </el-button>
</el-form-item> </el-form-item>
<el-form-item label="Fund :"> <el-form-item label="Fund :">
@@ -820,7 +842,11 @@
<font style="color: #006699">3.Value:</font> This manuscript belongs to the advanced topic and can attract wide <font style="color: #006699">3.Value:</font> This manuscript belongs to the advanced topic and can attract wide
attention. attention.
<br /> <br />
<span style="margin-top:6px"> please download the manuscript template <font @click="dowloadFileTemplate()" style="color: #006699;margin-left: 2px;cursor: pointer;"> <i class="el-icon-download" style="font-weight: bold"></i> Microsoft Word template</font>. <span style="margin-top: 6px">
please download the manuscript template
<font @click="dowloadFileTemplate()" style="color: #006699; margin-left: 2px; cursor: pointer">
<i class="el-icon-download" style="font-weight: bold"></i> Microsoft Word template</font
>.
</span> </span>
</p> </p>
<common-word-html <common-word-html
@@ -1038,7 +1064,6 @@ export default {
ProgressBar ProgressBar
}, },
data() { data() {
// 自定义校验禁止QQ邮箱 // 自定义校验禁止QQ邮箱
const validateNotQQEmail = (rule, value, callback) => { const validateNotQQEmail = (rule, value, callback) => {
// 通用邮箱格式正则(基础校验,匹配大多数标准邮箱格式) // 通用邮箱格式正则(基础校验,匹配大多数标准邮箱格式)
@@ -1608,8 +1633,7 @@ export default {
this.isIndeterminate = false; this.isIndeterminate = false;
}, },
handleCheckedCitiesChange() { handleCheckedCitiesChange() {
console.log('this.checkedCities at line 1594:', this.checkedCities);
console.log('this.checkedCities at line 1594:', this.checkedCities)
}, },
handleDelete(index) { handleDelete(index) {
this.keywordsList.splice(index, 1); this.keywordsList.splice(index, 1);
@@ -1856,7 +1880,7 @@ this.keywordsList.splice(index, 1);
this.form.journal = ''; this.form.journal = '';
this.reviewerof.journal = 1; this.reviewerof.journal = 1;
console.log('this.form at line 1386:', this.form);
if (localStorage.getItem('ms_journal_alias')) { if (localStorage.getItem('ms_journal_alias')) {
localStorage.removeItem('ms_journal_alias'); localStorage.removeItem('ms_journal_alias');
} }
@@ -1965,17 +1989,16 @@ this.keywordsList.splice(index, 1);
// 2. 将选中的序号index+1转成原始索引index并存入集合提高查询效率 // 2. 将选中的序号index+1转成原始索引index并存入集合提高查询效率
const selectedIndexes = new Set( const selectedIndexes = new Set(
this.checkedCities.map(seq => seq - 1) // 序号 - 1 = 原始索引 this.checkedCities.map((seq) => seq - 1) // 序号 - 1 = 原始索引
); );
// 3. 过滤 keywordsList保留索引不在选中集合中的项 // 3. 过滤 keywordsList保留索引不在选中集合中的项
this.keywordsList = this.keywordsList.filter((_, index) => this.keywordsList = this.keywordsList.filter((_, index) => !selectedIndexes.has(index));
!selectedIndexes.has(index)
);
this.checkAll = false; this.checkAll = false;
// 4. 清空选中状态和半选状态(删除后无选中项) // 4. 清空选中状态和半选状态(删除后无选中项)
this.checkedCities = []; this.checkedCities = [];
this.isIndeterminate = false; }, this.isIndeterminate = false;
},
//初始化期刊选项 //初始化期刊选项
initSelect() { initSelect() {
this.items = this.$store.state.journalList; this.items = this.$store.state.journalList;
@@ -2495,7 +2518,6 @@ this.checkAll = false;
dowloadFileTemplate() { dowloadFileTemplate() {
var filePath = 'https://submission.tmrjournals.com/public/ArticleTemplate/manuscirpt/ManuscirptWordTemplate.docx'; var filePath = 'https://submission.tmrjournals.com/public/ArticleTemplate/manuscirpt/ManuscirptWordTemplate.docx';
// 获取heads中的filename文件名 // 获取heads中的filename文件名
let downloadElement = document.createElement('a'); let downloadElement = document.createElement('a');
// 创建下载的链接 // 创建下载的链接
@@ -4016,6 +4038,30 @@ document.body.removeChild(downloadElement);
margin-left: 10px; margin-left: 10px;
cursor: pointer; cursor: pointer;
} }
/* 穿透Element UI的样式强制覆盖所有限制 */
.full-show-no-scroll::v-deep .el-textarea {
overflow: visible !important;
}
.full-show-no-scroll::v-deep .el-textarea__inner {
white-space: normal !important; /* 强制换行 */
word-wrap: break-word !important; /* 长文本/长单词换行 */
overflow: visible !important; /* 溢出内容显示,不隐藏 */
max-height: none !important; /* 取消最大高度限制 */
resize: none !important; /* 禁止手动调整大小 */
padding: 12px; /* 可选:调整内边距,避免内容贴边 */
}
/* 隐藏滚动条(即使偶尔出现也看不见) */
.full-show-no-scroll::v-deep ::-webkit-scrollbar {
display: none !important;
}
::v-deep .el-textarea__inner {
line-height: 1.5 !important;
font-family: 'Helvetica Neue For Number', 'Elsevier Gulliver', Georgia, serif !important;
}
</style> </style>
<style> <style>

View File

@@ -1620,7 +1620,7 @@ export default {
this.form.journal = ''; this.form.journal = '';
this.reviewerof.journal = 1; this.reviewerof.journal = 1;
console.log('this.form at line 1386:', this.form);
if (localStorage.getItem('ms_journal_alias')) { if (localStorage.getItem('ms_journal_alias')) {
localStorage.removeItem('ms_journal_alias'); localStorage.removeItem('ms_journal_alias');
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1088,7 +1088,7 @@ export default {
this.detailDate.articlezip = ''; this.detailDate.articlezip = '';
}, },
mystate(mystate) { mystate(mystate) {
console.log('mystate at line 1052:', mystate);
let str = ''; let str = '';
switch (mystate) { switch (mystate) {
case 1: case 1:

View File

@@ -1997,7 +1997,7 @@ export default {
}, },
// 获取数据 // 获取数据
async getdate(options) { async getdate(options) {
console.log('options at line 1917:', options);
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: 'Loading...', text: 'Loading...',

View File

@@ -386,7 +386,7 @@ export default {
this.detailDate.articlezip = ''; this.detailDate.articlezip = '';
}, },
mystate(mystate) { mystate(mystate) {
console.log('mystate at line 1052:', mystate);
let str = ''; let str = '';
switch (mystate) { switch (mystate) {
case 1: case 1:

View File

@@ -3723,7 +3723,7 @@ return false
getContent1(type, content) { getContent1(type, content) {
console.log('content at line 2986:', content); console.log('content at line 2986:', content);
content = this.$commonJS.transformHtmlString(content); content = this.$commonJS.transformHtmlString(content);
console.log('content at line 2997:', content);
var div = document.createElement('div'); var div = document.createElement('div');
div.innerHTML = content; // 将 HTML 字符串加载到 div 中 div.innerHTML = content; // 将 HTML 字符串加载到 div 中

View File

@@ -469,7 +469,7 @@ export default {
// formatter函数动态修改tooltip样式 // formatter函数动态修改tooltip样式
formatter: function (params) { formatter: function (params) {
var that = this; var that = this;
console.log('params at line 430:', params);
if (params) { if (params) {
var htmlStr = ''; var htmlStr = '';
// htmlStr += params[0].name.replace(/\-/g, '/') + '<br/>'; //x轴的名称 // htmlStr += params[0].name.replace(/\-/g, '/') + '<br/>'; //x轴的名称

View File

@@ -8,11 +8,11 @@
element-loading-spinner="el-icon-loading" element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)" element-loading-background="rgba(0, 0, 0, 0.8)"
> >
<el-row :gutter="20" style="height: 100%;"> <el-row :gutter="20" style="height: 100%;" v-if="txt_mess&&txt_mess.accept_sn">
<el-col :span="10" style="height: 100%;"> <el-col :span="10" style="height: 100%;" v-if="this.add_apply == 0">
<iframe ref="mainiframe" :src="pdfUrl" class="lookpdf" frameborder="0"></iframe> <iframe ref="mainiframe" :src="pdfUrl" class="lookpdf" frameborder="0"></iframe>
</el-col> </el-col>
<el-col :span="14" style="height: 100%; overflow-y: scroll"> <el-col :span="this.add_apply == 0?14:24" style="height: 100%; overflow-y: scroll" :style="{'padding': this.add_apply == 1?'0 20px':'0'}">
<!-- <el-col :span="24"> --> <!-- <el-col :span="24"> -->
<el-card class="box-card"> <el-card class="box-card">
<div class="tet_list" :model="txt_mess" > <div class="tet_list" :model="txt_mess" >
@@ -24,7 +24,7 @@
</h5> </h5>
<p style="display: inline-block; margin: 0 35px"><b>Type :</b> {{ txt_mess.atype }}</p> <p style="display: inline-block; margin: 0 35px"><b>Type :</b> {{ txt_mess.atype }}</p>
<p style="display: inline-block"><b>Submitted time :</b> {{ txt_mess.ctime }}</p> <p style="display: inline-block"><b>Submitted time :</b> {{ txt_mess.ctime }}</p>
<div> <div v-if="this.add_apply == 0">
<p><b>Abstract :</b> <br />{{ txt_mess.abstrart }}</p> <p><b>Abstract :</b> <br />{{ txt_mess.abstrart }}</p>
<div class="file_sty" v-for="item in fileList" style="margin-top: 15px"> <div class="file_sty" v-for="item in fileList" style="margin-top: 15px">
<img src="../../assets/img/icon_0.png" alt="" class="icon_img" /> <img src="../../assets/img/icon_0.png" alt="" class="icon_img" />
@@ -93,259 +93,7 @@ If you're still having trouble with Chrome, you could use other browsers to comp
<el-card class="box-card" v-if="this.add_apply == 0"> <el-card class="box-card" v-if="this.add_apply == 0">
<!-- 审稿人表单修改 --> <!-- 审稿人表单修改 -->
<common-review-article @refresh="getData" type="questionform" :form="questionform" :txt_mess="txt_mess" :btn_submit="btn_submit" :articleId="articleId" :journal_id="journal_id"></common-review-article> <common-review-article @refresh="getData" type="questionform" :form="questionform" :txt_mess="txt_mess" :btn_submit="btn_submit" :articleId="articleId" :journal_id="journal_id"></common-review-article>
<!-- <el-form :model="questionform" :rules="rules" ref="question" label-width="300px" label-position="top">
<el-divider content-position="center">REFEREE'S ASSESSMENT</el-divider>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item prop="qu6">
<span slot="label">
1.Does the manuscript fall within the aim and scope of the journal?
<a :href="txt_mess.aim_web" target="_blank" class="jouLink">( Aims & Scope ) </a>
</span>
<el-radio-group v-model="questionform.qu6">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="2.Originality of the topic">
<el-radio-group v-model="questionform.qu1">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="3.Importance in its Field">
<el-radio-group v-model="questionform.qu3">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="4.English language">
<el-radio-group v-model="questionform.qu8">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="5.Readily Understandable">
<el-radio-group v-model="questionform.qu5">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-collapse>
<el-form-item label="6.Does the title represent manuscript's contents?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu9">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="1" style="margin-top: -10px">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.qu9contents"
:rows="4"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
</el-collapse>
<el-collapse>
<el-form-item label="7.Is the Abstract accurate and concise?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu10">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="2" style="margin-top: -10px">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.qu10contents"
:rows="4"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-form-item label="8.Are the approach/ methods properly described?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu11">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="3" style="margin-top: -10px">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.qu11contents"
:rows="4"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-form-item label="9.Are the conclusions and interpretations sound?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu12">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="4" style="margin-top: -10px">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.qu12contents"
:rows="4"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-form-item label="10.Are the references properly cited?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu13">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="5" style="margin-top: -10px">
<template slot="title"> <i class="el-icon-edit"></i>Comments/ Suggestions </template>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.qu13contents"
:rows="4"
></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-divider content-position="center">REFEREE'S RECOMMENDATIONS</el-divider>
<el-form-item label="Overall the Paper is Rated" prop="rated">
( <span style="color: #e41411">←←←←← Bad ←←← Poor</span>
<span style="width: 10px; display: inline-block"></span>
<span style="color: #369916">Accept → Superior → Excellent</span>)
<br />
<el-radio-group v-model="questionform.rated" size="small">
<el-radio-button label="1"></el-radio-button>
<el-radio-button label="2"></el-radio-button>
<el-radio-button label="3"></el-radio-button>
<el-radio-button label="4"></el-radio-button>
<el-radio-button label="5"></el-radio-button>
<el-radio-button label="6"></el-radio-button>
<el-radio-button label="7"></el-radio-button>
<el-radio-button label="8"></el-radio-button>
<el-radio-button label="9"></el-radio-button>
<el-radio-button label="10"></el-radio-button>
</el-radio-group>
<span style="margin-left: 20px">Your score : {{ questionform.rated }}</span>
</el-form-item>
<el-form-item label="REFEREE'S RECOMMENDATIONS" prop="recommend">
<el-radio-group v-model="questionform.recommend" style="line-height: 30px">
<el-radio :label="1">Minor revision</el-radio>
<br />
<el-radio :label="2">Major revision</el-radio>
<br />
<div v-if="journal_id == 1 || journal_id == 23 || journal_id == 10">
<el-radio :label="3">Reject in current form, but may be resubmitted</el-radio>
<br />
<el-radio :label="4">Reject</el-radio>
</div>
<div v-else>
<el-radio :label="4">Reject</el-radio>
</div>
</el-radio-group>
</el-form-item>
<el-form-item
label="Comments for the Authors"
v-if="this.txt_mess.atype == 'Comment' || this.txt_mess.atype == 'News'"
>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.comment"
:rows="8"
></el-input>
</el-form-item> <el-form-item label="" v-if="articleId">
<common-word-html :articleId="articleId" style="box-sizing: border-box"
></common-word-html>
</el-form-item>
<el-form-item
label="Comments for the Authors"
prop="comment"
v-if="this.txt_mess.atype != 'Comment' && this.txt_mess.atype != 'News'"
>
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.comment"
:rows="8"
></el-input>
</el-form-item>
<el-form-item label="Confidential Comments to the Editor">
<el-input
type="textarea"
placeholder="please input content"
v-model="questionform.confident"
:rows="8"
></el-input>
</el-form-item>
<el-form-item label="Please choose disclose your name or remain anonymous">
<el-radio-group v-model="questionform.is_anonymous" style="line-height: 30px">
<el-radio :label="0">Disclose name</el-radio>
<br />
<el-radio :label="1">Remain anonymous</el-radio>
</el-radio-group>
<p style="line-height: 20px; color: #aaa; font-size: 13px; margin: 12px 0 0 0">
If you agree to disclose your name, we will acknowledge you by name in the published PDF. However,
if you prefer to remain anonymous, we will still express our gratitude by thanking you as an
anonymous reviewer.
<br />For example, {{ txt_mess.title }} would like to thank AAAAAAAA, BBBBBBBB, and other anonymous
reviewers for their invaluable contributions to the peer review process of this paper.
</p>
</el-form-item>
<el-form-item v-if="this.btn_submit == 0">
<el-button type="primary" @click="questionSubmit">submit</el-button>
</el-form-item>
</el-collapse>
</el-form> -->
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
@@ -411,7 +159,7 @@ export default {
is_anonymous: '', is_anonymous: '',
type: '', type: '',
}, },
add_apply: 0, add_apply: null,
btn_submit: 0, btn_submit: 0,
pdfUrl: '', pdfUrl: '',
journal_id: null, journal_id: null,
@@ -449,7 +197,7 @@ export default {
}, },
created() { created() {
if (this.Direct_log == null) { if (this.Direct_log == null) {
this.getData(); this.CheckReviewerPermissions();
} else { } else {
this.$api this.$api
.post('api/Chief/autoLoginForChief', { .post('api/Chief/autoLoginForChief', {
@@ -461,17 +209,9 @@ export default {
localStorage.setItem('U_name', res.data.user.account); localStorage.setItem('U_name', res.data.user.account);
localStorage.setItem('U_id', res.data.user.user_id); localStorage.setItem('U_id', res.data.user.user_id);
localStorage.setItem('U_relname', res.data.user.realname); localStorage.setItem('U_relname', res.data.user.realname);
this.$bus.$emit('user-name-updated');
this.$api this.CheckReviewerPermissions()
.post('api/Reviewer/agreeReviewerArticle', {
art_rev_id: this.Art_id
})
.then((res) => {
this.getData();
})
.catch((err) => {
this.$message.error(err);
});
} else { } else {
this.$message.error(res.msg); this.$message.error(res.msg);
} }
@@ -482,7 +222,43 @@ export default {
} }
}, },
methods: { methods: {
//审稿人权限判断
CheckReviewerPermissions() {
let params = {
art_rev_id: this.Art_id,
account: localStorage.getItem('U_name'),
};
if (this.Direct_log) {
params.act = this.Direct_log;
}
var that = this;
this.$api
.post('api/Workbench/getReviewerAuth', params)
.then((res) => {
//是否有审稿权限1是2否
if(res.data.is_review_auth==1){
that.add_apply = 0;
that.getData()
}else{
this.txt_mess={...res.data.article,title:res.data.article.journal_name,ctime:res.data.review.ctime,atype:res.data.article.type_name};
this.add_apply = 1;
}
})
.catch((err) => {
this.$message.error(err);
});
},
getData() { getData() {
const loading = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
// 获取文章信息 // 获取文章信息
this.$api this.$api
.post('api/Reviewer/getartrevdate', { .post('api/Reviewer/getartrevdate', {
@@ -500,19 +276,15 @@ export default {
let M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) + '-' : date.getMonth() + 1 + '-'; let M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) + '-' : date.getMonth() + 1 + '-';
let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(); let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
res.ctime = Y + M + D; res.ctime = Y + M + D;
this.txt_mess = res; this.txt_mess = res;
this.journal_id = res.journal_id; this.journal_id = res.journal_id;
console.log('journal_id', this.journal_id);
// 文章状态
if (res.astate == 2) {
this.add_apply = 0; loading.close();
} else {
this.add_apply = 1;
}
}) })
.catch((err) => { .catch((err) => {
loading.close();
this.$message.error(err); this.$message.error(err);
}); });

View File

@@ -17,6 +17,7 @@ import Common from './components/common/common'
import store from './store' // 引入 store import store from './store' // 引入 store
Vue.prototype.$bus = new Vue();
Vue.prototype.$validateString = function (str) { Vue.prototype.$validateString = function (str) {
return /^[a-zA-Z\s\u00C0-\u00FF\u0100-\u017F-]+$/.test(str); return /^[a-zA-Z\s\u00C0-\u00FF\u0100-\u017F-]+$/.test(str);
} }
@@ -92,6 +93,7 @@ async function loadJournalType() {
async function loadJournalList() { async function loadJournalList() {
try { try {
const localData = store.state.journalList; const localData = store.state.journalList;
if (localData && Array.isArray(localData) && localData.length > 0) { if (localData && Array.isArray(localData) && localData.length > 0) {
return localData; return localData;
} }

View File

@@ -354,7 +354,8 @@ export default new Router({
path: '/success', path: '/success',
component: () => import('../components/page/components/pendingPayment/success.vue'), component: () => import('../components/page/components/pendingPayment/success.vue'),
meta: { meta: {
title: 'Success' title: 'Success',
hideJournal: true
} }
}, },
{ {
@@ -368,7 +369,8 @@ export default new Router({
path: '/articleReviewer', path: '/articleReviewer',
component: () => import('../components/page/articleReviewer.vue'), component: () => import('../components/page/articleReviewer.vue'),
meta: { meta: {
title: 'Article reviewer' title: 'Article reviewer',
hideJournal: true
}, },
hidden: true hidden: true
}, },
@@ -376,7 +378,8 @@ export default new Router({
path: '/articleEditorialBoard', path: '/articleEditorialBoard',
component: () => import('../components/page/articleEditorialBoard.vue'), component: () => import('../components/page/articleEditorialBoard.vue'),
meta: { meta: {
title: 'Article Editorial Board' title: 'Article Editorial Board',
hideJournal: true
}, },
hidden: true hidden: true
}, },
@@ -400,7 +403,8 @@ export default new Router({
path: '/articleReviewerAdd', path: '/articleReviewerAdd',
component: () => import('../components/page/articleReviewerAdd.vue'), component: () => import('../components/page/articleReviewerAdd.vue'),
meta: { meta: {
title: 'Article reviewer' title: 'Article reviewer',
hideJournal: true
}, },
hidden: true hidden: true
}, },
@@ -676,6 +680,7 @@ export default new Router({
component: () => import('../components/page/per_history'), component: () => import('../components/page/per_history'),
meta: { meta: {
title: 'Review History', title: 'Review History',
hideJournal: true
} }
}, },
{ {
@@ -705,14 +710,16 @@ export default new Router({
component: () => import('../components/page/per_text'), component: () => import('../components/page/per_text'),
meta: { meta: {
title: 'Reviewer article details', title: 'Reviewer article details',
hideSidebar: true hideSidebar: true,
hideJournal: true
} }
}, },
{ {
path: '/edit_per_text', //审稿人文章详情 path: '/edit_per_text', //审稿人文章详情
component: () => import('../components/page/edit_per_text'), component: () => import('../components/page/edit_per_text'),
meta: { meta: {
title: 'Final decision article details' title: 'Final decision article details',
hideJournal: true
} }
}, },
@@ -720,42 +727,48 @@ export default new Router({
path: '/per_text_yq', //审稿人文章详情-邀请 path: '/per_text_yq', //审稿人文章详情-邀请
component: () => import('../components/page/per_text_yq'), component: () => import('../components/page/per_text_yq'),
meta: { meta: {
title: 'Reviewer article details' title: 'Reviewer article details',
hideJournal: true
} }
}, },
{ {
path: '/edit_per_text_yq', //审稿人文章详情-邀请 path: '/edit_per_text_yq', //审稿人文章详情-邀请
component: () => import('../components/page/edit_per_text_yq'), component: () => import('../components/page/edit_per_text_yq'),
meta: { meta: {
title: 'Final decision article details' title: 'Final decision article details',
hideJournal: true
} }
}, },
{ {
path: '/per_text_success', //审稿人文章-审稿成功页 path: '/per_text_success', //审稿人文章-审稿成功页
component: () => import('../components/page/per_text_success'), component: () => import('../components/page/per_text_success'),
meta: { meta: {
title: 'Review completed' title: 'Review completed',
hideJournal: true
} }
}, },
{ {
path: '/edit_per_text_success', //审稿人文章-审稿成功页 path: '/edit_per_text_success', //审稿人文章-审稿成功页
component: () => import('../components/page/edit_per_text_success'), component: () => import('../components/page/edit_per_text_success'),
meta: { meta: {
title: 'Review completed' title: 'Review completed',
hideJournal: true
} }
}, },
{ {
path: '/per_text_repeat', //审稿人文章-重复审稿提示 path: '/per_text_repeat', //审稿人文章-重复审稿提示
component: () => import('../components/page/per_text_repeat'), component: () => import('../components/page/per_text_repeat'),
meta: { meta: {
title: 'Review repeat' title: 'Review repeat',
hideJournal: true
} }
}, },
{ {
path: '/per_text_fail', path: '/per_text_fail',
component: () => import('../components/page/per_text_fail.vue'), component: () => import('../components/page/per_text_fail.vue'),
meta: { meta: {
title: 'Review fail' title: 'Review fail',
hideJournal: true
} }
}, },
{ {
@@ -769,7 +782,8 @@ export default new Router({
path: '/edithistory', //编委历史列表 path: '/edithistory', //编委历史列表
component: () => import('../components/page/edit_history'), component: () => import('../components/page/edit_history'),
meta: { meta: {
title: 'Accepted manuscript' title: 'Accepted manuscript',
hideJournal: true
} }
}, },
{ {

View File

@@ -76,8 +76,8 @@ module.exports = {
// target: 'http://192.168.110.110/tougao/public/index.php/', // target: 'http://192.168.110.110/tougao/public/index.php/',
// target: 'http://api.tmrjournals.com/public/index.php/',//正式 // target: 'http://api.tmrjournals.com/public/index.php/',//正式
// target: 'http://zmzm.tougao.dev.com/',//晓玲 // target: 'http://zmzm.tougao.dev.com/',//晓玲
// target: 'https://submission.tmrjournals.com/',//正式 target: 'https://submission.tmrjournals.com/',//正式
target: 'http://tougaotest.tmrjournals.com/public/index.php/',//测试环境 // target: 'http://tougaotest.tmrjournals.com/public/index.php/',//测试环境
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/api': '' '^/api': ''