tijiao
This commit is contained in:
@@ -2,8 +2,8 @@
|
|||||||
//记得切换
|
//记得切换
|
||||||
|
|
||||||
//正式
|
//正式
|
||||||
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/';
|
||||||
@@ -11,9 +11,9 @@ const baseUrl = '/';
|
|||||||
|
|
||||||
//本地(正式环境 )
|
//本地(正式环境 )
|
||||||
|
|
||||||
// const mediaUrl = 'https://submission.tmrjournals.com/public/';
|
const mediaUrl = 'https://submission.tmrjournals.com/public/';
|
||||||
|
|
||||||
// const baseUrl = '/api';
|
const baseUrl = '/api';
|
||||||
//晓玲
|
//晓玲
|
||||||
|
|
||||||
// const mediaUrl = 'http://zmzm.tougao.dev.com/public/';
|
// const mediaUrl = 'http://zmzm.tougao.dev.com/public/';
|
||||||
|
|||||||
@@ -2,35 +2,36 @@
|
|||||||
<div class="login-wrap">
|
<div class="login-wrap">
|
||||||
<div class="ms-login">
|
<div class="ms-login">
|
||||||
<div class="ms-title">User Register</div>
|
<div class="ms-title">User Register</div>
|
||||||
<el-form class="ms-content" :rules="registerRules" ref="registerForm" :model="registerForm" label-width="0">
|
<el-form class="ms-content" :rules="registerRules" ref="registerForm" :model="registerForm" label-width="140px">
|
||||||
<!-- 用户名 -->
|
<!-- 用户名 -->
|
||||||
<el-form-item prop="username">
|
<el-form-item prop="username" class="form-item" label="English Name :">
|
||||||
<el-input size="small" v-model="registerForm.username" auto-complete="off" placeholder="username">
|
|
||||||
|
<el-input size="small" v-model="registerForm.username" auto-complete="off" placeholder="">
|
||||||
<i slot="prefix" class="el-icon-user"></i>
|
<i slot="prefix" class="el-icon-user"></i>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 密码 -->
|
<!-- 密码 -->
|
||||||
<el-form-item prop="password">
|
<el-form-item prop="password" class="form-item" label="Password :">
|
||||||
<el-input size="small" v-model="registerForm.password" auto-complete="off" placeholder="password"
|
<el-input size="small" v-model="registerForm.password" auto-complete="off" placeholder=""
|
||||||
show-password>
|
show-password>
|
||||||
<i slot="prefix" class="el-icon-lock"></i>
|
<i slot="prefix" class="el-icon-lock"></i>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 姓名 -->
|
<!-- 姓名 -->
|
||||||
<el-form-item prop="name">
|
<el-form-item prop="name" class="form-item" label="Real name :">
|
||||||
<el-input size="small" v-model="registerForm.name" auto-complete="off" placeholder="realname">
|
<el-input size="small" v-model="registerForm.name" auto-complete="off" placeholder="">
|
||||||
<i slot="prefix" class="el-icon-edit-outline"></i>
|
<i slot="prefix" class="el-icon-edit-outline"></i>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 手机 -->
|
<!-- 手机 -->
|
||||||
<el-form-item prop="phone">
|
<el-form-item prop="phone" class="form-item" label="Phone :">
|
||||||
<el-input size="small" v-model="registerForm.phone" auto-complete="off" placeholder="phone">
|
<el-input size="small" v-model="registerForm.phone" auto-complete="off" placeholder="">
|
||||||
<i slot="prefix" class="el-icon-mobile-phone" />
|
<i slot="prefix" class="el-icon-mobile-phone" />
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 邮件 -->
|
<!-- 邮件 -->
|
||||||
<el-form-item prop="email">
|
<el-form-item prop="email" class="form-item" label="Email :">
|
||||||
<el-input size="small" v-model="registerForm.email" auto-complete="off" placeholder="email">
|
<el-input size="small" v-model="registerForm.email" auto-complete="off" placeholder="">
|
||||||
<i slot="prefix" class="el-icon-message"></i>
|
<i slot="prefix" class="el-icon-message"></i>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -46,24 +47,25 @@
|
|||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<!-- 验证码 -->
|
<!-- 验证码 -->
|
||||||
<el-form-item prop="code">
|
<el-form-item prop="code" class="form-item" label="Verification code :">
|
||||||
<el-row :span="24">
|
<el-row :span="24">
|
||||||
<el-col :span="16">
|
<el-col :span="16">
|
||||||
<el-input size="small" v-model="registerForm.code" auto-complete="off"
|
<el-input size="small" v-model="registerForm.code" auto-complete="off"
|
||||||
placeholder="captcha">
|
placeholder="">
|
||||||
<i slot="prefix" class="el-icon-key" />
|
<i slot="prefix" class="el-icon-key" />
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<div class="login-code">
|
<div class="login-code">
|
||||||
<img :src="image" @click="refreshCode" alt="captcha" class="captchaimg" />
|
<img :src="image" @click="refreshCode" alt="Verification code" class="captchaimg" />
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 隐私政策 -->
|
<!-- 隐私政策 -->
|
||||||
<el-form-item prop="code">
|
<el-form-item prop="code" class="form-item">
|
||||||
|
<span class="required-field">*</span>
|
||||||
<el-row :span="24">
|
<el-row :span="24">
|
||||||
<p class="pri_tit">
|
<p class="pri_tit">
|
||||||
<el-checkbox v-model="registerForm.checked">
|
<el-checkbox v-model="registerForm.checked">
|
||||||
@@ -90,7 +92,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="14"></el-col>
|
<el-col :span="14"></el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-link :underline="false" type="primary" href="/" class="rebacklogin">Go login</el-link>
|
<el-link :underline="false" type="primary" href="/" class="rebacklogin">Login</el-link>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
@@ -139,7 +141,7 @@
|
|||||||
registerRules: {
|
registerRules: {
|
||||||
username: [{
|
username: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: 'Please enter your username.',
|
message: 'Please enter your English name.',
|
||||||
trigger: 'blur'
|
trigger: 'blur'
|
||||||
}],
|
}],
|
||||||
password: [{
|
password: [{
|
||||||
@@ -153,11 +155,11 @@
|
|||||||
trigger: 'blur'
|
trigger: 'blur'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
// name: [{
|
name: [{
|
||||||
// required: true,
|
required: true,
|
||||||
// message: 'Please enter your real name.',
|
message: 'Please enter your real name.',
|
||||||
// trigger: 'blur'
|
trigger: 'blur'
|
||||||
// }],
|
}],
|
||||||
// phone: [{
|
// phone: [{
|
||||||
// required: true,
|
// required: true,
|
||||||
// message: 'Please enter the correct mobile phone number.',
|
// message: 'Please enter the correct mobile phone number.',
|
||||||
@@ -182,7 +184,7 @@
|
|||||||
],
|
],
|
||||||
code: [{
|
code: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: 'Captcha code cannot be empty.',
|
message: 'Please enter the verification code.',
|
||||||
trigger: 'blur'
|
trigger: 'blur'
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
@@ -267,8 +269,8 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
width: 500px;
|
width: 620px;
|
||||||
margin: -290px 0 0 -250px;
|
margin: -290px 0 0 -270px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
/* background: rgba(255, 255, 255, 0.3); */
|
/* background: rgba(255, 255, 255, 0.3); */
|
||||||
@@ -276,7 +278,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ms-content {
|
.ms-content {
|
||||||
padding: 0 30px 30px 30px;
|
padding: 0 20px 20px 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-btn {
|
.login-btn {
|
||||||
@@ -327,4 +329,16 @@
|
|||||||
line-height: 18px;
|
line-height: 18px;
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.form-item{
|
||||||
|
position: relative;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
.required-field {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
left: -14px;
|
||||||
|
top: 0;
|
||||||
|
color: #F56C6C;margin-right: 4px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="">
|
<div style="">
|
||||||
<div style="display: flex; justify-content: space-between">
|
<div style="display: flex; justify-content: space-between">
|
||||||
<div style="width: 100%;min-width: 1020px; position: relative">
|
<div style="width: 100%; min-width: 1020px; position: relative">
|
||||||
<div class="step_list_new">
|
<div class="step_list_new">
|
||||||
<el-steps :active="0" align-center>
|
<el-steps :active="0" align-center>
|
||||||
<el-step
|
<el-step
|
||||||
@@ -20,19 +20,9 @@
|
|||||||
</el-steps>
|
</el-steps>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- <div class="step_list" style="width: 960px; position: relative">
|
|
||||||
<div v-for="item in listStep" @click="StepCode(item.index)" :class="show_step == item.index ? 'C_style' : ''">
|
<ProgressBar :progress="uploadPercentage" v-if="isShowProgress" />
|
||||||
<div>
|
<div class="manu_add" style="width: calc(100% - 20px)" v-loading="loading">
|
||||||
<i :class="item.icon"></i>
|
|
||||||
{{ item.title }}
|
|
||||||
<div class="num">{{ item.index }}</div>
|
|
||||||
</div>
|
|
||||||
<p class="bor_der"></p>
|
|
||||||
</div>
|
|
||||||
<br clear="both" />
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<div class="manu_add" style="width: calc(100% - 20px);" v-loading="loading">
|
|
||||||
<el-form ref="articleform" :model="form" :rules="rules" label-width="120px">
|
<el-form ref="articleform" :model="form" :rules="rules" label-width="120px">
|
||||||
<div class="bag_color" v-if="show_step == 1">
|
<div class="bag_color" v-if="show_step == 1">
|
||||||
<div>
|
<div>
|
||||||
@@ -46,10 +36,8 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="Type :" prop="type">
|
||||||
|
<el-select v-model="form.type" style="width: 240px" placeholder="">
|
||||||
<el-form-item label="Type :" prop="type" >
|
|
||||||
<el-select v-model="form.type" style="width: 240px" placeholder="">
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in journal_type"
|
v-for="item in journal_type"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -58,9 +46,32 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="Manuscirpt :" prop="manuscirpt" label-width="120px">
|
||||||
|
<el-upload :on-progress="handleProgress"
|
||||||
|
ref="uploadFileManuscirpt"
|
||||||
|
class="upload-demo up_newstyle"
|
||||||
|
:action="upload_manuscirpt"
|
||||||
|
accept=".docx"
|
||||||
|
name="manuscirpt"
|
||||||
|
:before-upload="beforeupload_manuscirpt"
|
||||||
|
:on-error="uperr_coverLetter"
|
||||||
|
:on-success="upSuccess_manuscirpt"
|
||||||
|
:limit="1"
|
||||||
|
:on-exceed="alertlimit"
|
||||||
|
:on-remove="removefilemanuscirpt"
|
||||||
|
:file-list="fileL_manuscirpt"
|
||||||
|
:on-preview="dowloadFile"
|
||||||
|
>
|
||||||
|
<div class="el-upload__text" @click="removefilemanuscirpt">
|
||||||
|
<em>Upload</em>
|
||||||
|
</div>
|
||||||
|
<div class="el-upload__tip" slot="tip">
|
||||||
|
Only Word and compressed files can be uploaded (file format: .docx).
|
||||||
|
</div>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="Manuscript Title :" prop="title" label-width="160px">
|
<el-form-item label="Manuscript Title :" prop="title" label-width="160px">
|
||||||
<el-input v-model="form.title" ></el-input>
|
<el-input v-model="form.title"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="Whether ethical approval was obtained ?" prop="approval" label-width="290px">
|
<el-form-item label="Whether ethical approval was obtained ?" prop="approval" label-width="290px">
|
||||||
@@ -75,8 +86,7 @@
|
|||||||
v-if="form.approval == 1"
|
v-if="form.approval == 1"
|
||||||
label-width="290px"
|
label-width="290px"
|
||||||
>
|
>
|
||||||
|
<el-upload
|
||||||
<el-upload
|
|
||||||
ref="uploadFile"
|
ref="uploadFile"
|
||||||
class="upload-demo up_newstyle"
|
class="upload-demo up_newstyle"
|
||||||
:action="upload_articleApproval"
|
:action="upload_articleApproval"
|
||||||
@@ -94,13 +104,18 @@
|
|||||||
<div class="el-upload__text" @click="clearUploadedFile">
|
<div class="el-upload__text" @click="clearUploadedFile">
|
||||||
<em>Upload</em>
|
<em>Upload</em>
|
||||||
</div>
|
</div>
|
||||||
<div class="el-upload__tip" slot="tip" style="line-height: 20px;left: 80px;font-size: 13px;top: -9px;">
|
<div
|
||||||
Only PDF and compressed files can be uploaded.<br/>
|
class="el-upload__tip"
|
||||||
<span style="color: #8c8d8f;">Please ensure that the file includes the ethics approval number and the institutional approval document.</span>
|
slot="tip"
|
||||||
|
style="line-height: 20px; left: 80px; font-size: 13px; top: -9px"
|
||||||
|
>
|
||||||
|
Only PDF and compressed files can be uploaded.<br />
|
||||||
|
<span style="color: #8c8d8f"
|
||||||
|
>Please ensure that the file includes the ethics approval number and the institutional
|
||||||
|
approval document.</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
|
|
||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="Explain the reason clearly :"
|
label="Explain the reason clearly :"
|
||||||
@@ -108,20 +123,10 @@
|
|||||||
v-if="form.approval === 0"
|
v-if="form.approval === 0"
|
||||||
label-width="300px"
|
label-width="300px"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input type="textarea" rows="2" v-model="form.approval_content"></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
|
<el-input type="textarea" rows="5" v-model="form.abstrart"></el-input>
|
||||||
type="textarea"
|
|
||||||
rows="5"
|
|
||||||
v-model="form.abstrart"
|
|
||||||
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 话题 -->
|
<!-- 话题 -->
|
||||||
<!-- <el-form-item label="Topics :" prop="topics">
|
<!-- <el-form-item label="Topics :" prop="topics">
|
||||||
@@ -137,7 +142,6 @@
|
|||||||
:key="index"
|
:key="index"
|
||||||
:name="index + 1"
|
:name="index + 1"
|
||||||
v-model="item.ke"
|
v-model="item.ke"
|
||||||
|
|
||||||
style="width: 150px; margin-right: 15px; margin-bottom: 3px"
|
style="width: 150px; margin-right: 15px; margin-bottom: 3px"
|
||||||
></el-input>
|
></el-input>
|
||||||
<el-button type="text" @click="addfund">
|
<el-button type="text" @click="addfund">
|
||||||
@@ -145,14 +149,9 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Fund :">
|
<el-form-item label="Fund :">
|
||||||
<el-input
|
<el-input v-model="form.fund"> </el-input>
|
||||||
v-model="form.fund"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div style="text-align: center; margin: 40px 0 0 0">
|
<div style="text-align: center; margin: 40px 0 0 0">
|
||||||
<el-button type="warning" @click="onStagingSave(1)" class="pro_stage">Save as draft </el-button>
|
<el-button type="warning" @click="onStagingSave(1)" class="pro_stage">Save as draft </el-button>
|
||||||
<el-button type="primary" @click="onStep(1)" class="pro_ceed"
|
<el-button type="primary" @click="onStep(1)" class="pro_ceed"
|
||||||
@@ -401,30 +400,7 @@
|
|||||||
<div class="el-upload__tip" slot="tip">Only word files can be uploaded(.doc,.docx)</div>
|
<div class="el-upload__tip" slot="tip">Only word files can be uploaded(.doc,.docx)</div>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<el-form-item label="Manuscirpt :" prop="manuscirpt" label-width="200px">
|
|
||||||
<el-upload
|
|
||||||
ref="uploadFileManuscirpt"
|
|
||||||
class="upload-demo up_newstyle"
|
|
||||||
:action="upload_manuscirpt"
|
|
||||||
accept=".docx"
|
|
||||||
name="manuscirpt"
|
|
||||||
:before-upload="beforeupload_manuscirpt"
|
|
||||||
:on-error="uperr_coverLetter"
|
|
||||||
:on-success="upSuccess_manuscirpt"
|
|
||||||
:limit="1"
|
|
||||||
:on-exceed="alertlimit"
|
|
||||||
:on-remove="removefilemanuscirpt"
|
|
||||||
:file-list="fileL_manuscirpt"
|
|
||||||
:on-preview="dowloadFile"
|
|
||||||
>
|
|
||||||
<div class="el-upload__text" @click="removefilemanuscirpt">
|
|
||||||
<em>Upload</em>
|
|
||||||
</div>
|
|
||||||
<div class="el-upload__tip" slot="tip">
|
|
||||||
Only Word and compressed files can be uploaded (file format: .docx).
|
|
||||||
</div>
|
|
||||||
</el-upload>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="Supplementary Material :" label-width="200px">
|
<el-form-item label="Supplementary Material :" label-width="200px">
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo up_newstyle"
|
class="upload-demo up_newstyle"
|
||||||
@@ -443,7 +419,18 @@
|
|||||||
<div class="el-upload__text">
|
<div class="el-upload__text">
|
||||||
<em>Upload</em>
|
<em>Upload</em>
|
||||||
</div>
|
</div>
|
||||||
<div class="el-upload__tip" slot="tip">Only ZIP files can be uploaded (file formats: .zip).</div>
|
<div
|
||||||
|
class="el-upload__tip"
|
||||||
|
slot="tip"
|
||||||
|
style="line-height: 20px; left: 80px; font-size: 13px; top: -9px"
|
||||||
|
>
|
||||||
|
Only ZIP files can be uploaded (file formats: .zip).
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<span style="color: #888"
|
||||||
|
>Please upload the original, uncropped full-length Western blot images.</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div style="text-align: center; margin: 40px 0 0 0">
|
<div style="text-align: center; margin: 40px 0 0 0">
|
||||||
@@ -517,11 +504,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 简介 -->
|
<!-- 简介 -->
|
||||||
<el-form-item prop="introduction" label="Introduction :">
|
<el-form-item prop="introduction" label="Introduction :">
|
||||||
<el-input
|
<el-input type="textarea" rows="3" v-model="reviewerForm.introduction"></el-input>
|
||||||
type="textarea"
|
|
||||||
rows="3"
|
|
||||||
v-model="reviewerForm.introduction"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 国家 -->
|
<!-- 国家 -->
|
||||||
<el-form-item prop="country" label="Country :">
|
<el-form-item prop="country" label="Country :">
|
||||||
@@ -547,12 +530,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 领域 -->
|
<!-- 领域 -->
|
||||||
<el-form-item prop="field" label="Field :">
|
<el-form-item prop="field" label="Field :">
|
||||||
<el-input
|
<el-input size="small" v-model="reviewerForm.field" auto-complete="off"></el-input>
|
||||||
size="small"
|
|
||||||
v-model="reviewerForm.field"
|
|
||||||
auto-complete="off"
|
|
||||||
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 职称 -->
|
<!-- 职称 -->
|
||||||
<el-form-item prop="technical" label="Technical :">
|
<el-form-item prop="technical" label="Technical :">
|
||||||
@@ -566,12 +544,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 单位 -->
|
<!-- 单位 -->
|
||||||
<el-form-item prop="company" label="Affiliation :">
|
<el-form-item prop="company" label="Affiliation :">
|
||||||
<el-input
|
<el-input size="small" v-model="reviewerForm.company" auto-complete="off"></el-input>
|
||||||
size="small"
|
|
||||||
v-model="reviewerForm.company"
|
|
||||||
auto-complete="off"
|
|
||||||
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 简历 -->
|
<!-- 简历 -->
|
||||||
<el-form-item label="CV. :">
|
<el-form-item label="CV. :">
|
||||||
@@ -604,7 +577,6 @@
|
|||||||
plain
|
plain
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
style="width: 210px"
|
style="width: 210px"
|
||||||
|
|
||||||
>Add Recommended Reviewer</el-button
|
>Add Recommended Reviewer</el-button
|
||||||
>
|
>
|
||||||
</p>
|
</p>
|
||||||
@@ -623,7 +595,7 @@
|
|||||||
<el-form
|
<el-form
|
||||||
ref="tuiJianForm"
|
ref="tuiJianForm"
|
||||||
v-for="(item, index) in tuiJianForm"
|
v-for="(item, index) in tuiJianForm"
|
||||||
:rules="rules"
|
:rules="tuiJianRules"
|
||||||
label-position="top"
|
label-position="top"
|
||||||
label-width="110px"
|
label-width="110px"
|
||||||
class="tuijian_f"
|
class="tuijian_f"
|
||||||
@@ -633,39 +605,23 @@
|
|||||||
Reviewer <span style="margin: 0 0 0 3px">{{ index + 1 }}</span>
|
Reviewer <span style="margin: 0 0 0 3px">{{ index + 1 }}</span>
|
||||||
</p>
|
</p>
|
||||||
<el-form-item label="Realname :" prop="realname">
|
<el-form-item label="Realname :" prop="realname">
|
||||||
<el-input v-model="item.realname" style="width: 160px"></el-input>
|
<el-input v-model="item.realname" clearable></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Email :" prop="email">
|
<el-form-item label="Email :" prop="email">
|
||||||
<el-input v-model="item.email" style="width: 160px" :validate-event="false"></el-input>
|
<el-input v-model="item.email" :validate-event="false" clearable></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Department :" >
|
<el-form-item label="Department :" prop="department">
|
||||||
<el-input v-model="item.department"></el-input>
|
<el-input v-model="item.department" clearable></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="Country :" prop="country">
|
<el-form-item label="Affiliation :" prop="affiliation">
|
||||||
<el-select
|
<el-input v-model="item.affiliation" :validate-event="false" clearable></el-input>
|
||||||
v-model="item.country"
|
|
||||||
filterable
|
|
||||||
|
|
||||||
clearable
|
|
||||||
style="width: 180px"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="it in countrys"
|
|
||||||
:key="it.en_name"
|
|
||||||
:label="it.en_name"
|
|
||||||
:value="it.en_name"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item> -->
|
|
||||||
<el-form-item label="Affiliation :" prop="Affiliation">
|
|
||||||
<el-input v-model="item.Affiliation" style="width: 160px" :validate-event="false"></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Filed :" prop="major_all">
|
<el-form-item label="Filed :" prop="major_all">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
|
placeholder=""
|
||||||
:options="step4MajorList"
|
:options="step4MajorList"
|
||||||
v-model="item.major_all"
|
v-model="item.major_all"
|
||||||
:props="default4Params"
|
:props="default4Params"
|
||||||
style="width: 270px"
|
|
||||||
clearable
|
clearable
|
||||||
></el-cascader>
|
></el-cascader>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -692,35 +648,8 @@
|
|||||||
investigation in line with our misconduct policy.
|
investigation in line with our misconduct policy.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<!-- <h3 style="margin-bottom:16px;margin-top:30px;">Figure Copyright Declaration</h3>
|
|
||||||
<p style="line-height: 25px; margin: 0 10px 0 55px; font-size: 14px">
|
<div style="margin: 30px 0 30px 0px">
|
||||||
· I confirm that all figures in this manuscript are original<br/>
|
|
||||||
· I confirm that all figures in this manuscript used with proper permission. (upload the copyright permission letters or license documents figures.)
|
|
||||||
|
|
||||||
</p> -->
|
|
||||||
<!-- <div v-if="form.journal != 0">
|
|
||||||
<h3 style="margin-bottom:16px;margin-top:30px;">Article Processing Charge</h3>
|
|
||||||
<div style="line-height: 25px; margin: 0 10px 0 55px; font-size: 14px">
|
|
||||||
|
|
||||||
<div style="font-size: 16px;margin-bottom: 10px;font-weight: 700;">
|
|
||||||
$ {{ getFee(form.journal) }}
|
|
||||||
</div>
|
|
||||||
<div style="color: #8c8d8f;line-height: 20px;" v-if="getFee(form.journal) && getFee(form.journal) != '0.00'">
|
|
||||||
<i class="el-icon-warning" style="color: #517fd5; margin-right: 4px"></i>The article processing fee
|
|
||||||
applies to papers submitted and ultimately accepted for publication after January 1, 2025. For
|
|
||||||
authors seeking to apply for fee discounts, please
|
|
||||||
<a
|
|
||||||
style="color: rgb(81, 127, 213); cursor: pointer; text-decoration: underline"
|
|
||||||
href="https://www.tmrjournals.com/apc/"
|
|
||||||
target="_blank"
|
|
||||||
>click here</a
|
|
||||||
>
|
|
||||||
to view detailed policies.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<div style="margin:30px 0 30px 0px">
|
|
||||||
<el-form-item label-width="180px">
|
<el-form-item label-width="180px">
|
||||||
<span slot="label">
|
<span slot="label">
|
||||||
Invitation code
|
Invitation code
|
||||||
@@ -739,14 +668,14 @@
|
|||||||
</el-popover>
|
</el-popover>
|
||||||
:
|
:
|
||||||
</span>
|
</span>
|
||||||
<el-input
|
<el-input v-model="form.code" style="width: 200px"></el-input>
|
||||||
v-model="form.code"
|
|
||||||
|
|
||||||
style="width: 200px"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<el-form-item label="Article Processing Charge :" v-if="form.journal&&form.journal != 0" label-width="220px">
|
<el-form-item
|
||||||
|
label="Article Processing Charge :"
|
||||||
|
v-if="form.journal && form.journal != 0"
|
||||||
|
label-width="220px"
|
||||||
|
>
|
||||||
$ {{ getFee(form.journal) }}
|
$ {{ getFee(form.journal) }}
|
||||||
<div style="color: #8c8d8f" v-if="getFee(form.journal) && getFee(form.journal) != '0.00'">
|
<div style="color: #8c8d8f" v-if="getFee(form.journal) && getFee(form.journal) != '0.00'">
|
||||||
<i class="el-icon-warning" style="color: #517fd5; margin-right: 4px"></i>The article processing fee
|
<i class="el-icon-warning" style="color: #517fd5; margin-right: 4px"></i>The article processing fee
|
||||||
@@ -761,47 +690,44 @@
|
|||||||
to view detailed policies.
|
to view detailed policies.
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Figure Copyright Declaration :" label-width="220px" prop="qualification">
|
<el-form-item label="Figure Copyright Declaration :" label-width="220px" prop="qualification">
|
||||||
|
<div style="color: #333">
|
||||||
<div style="color: #333" >
|
<el-radio v-model="form.qualification" label="1"
|
||||||
<el-radio v-model="form.qualification" label="1">I confirm that all figures in this manuscript are original.</el-radio>
|
>I confirm that all figures in this manuscript are original.</el-radio
|
||||||
<el-radio v-model="form.qualification" label="2">I confirm that all figures in this manuscript used with proper permission.</el-radio>
|
>
|
||||||
|
<el-radio v-model="form.qualification" label="2"
|
||||||
<el-form-item
|
>I confirm that all figures in this manuscript used with proper permission.</el-radio
|
||||||
label=""
|
>
|
||||||
prop="qualification_file"
|
|
||||||
v-if="form.qualification == 2"
|
<el-form-item label="" prop="qualification_file" v-if="form.qualification == 2" label-width="0px">
|
||||||
label-width="0px"
|
<div style="position: relative; top: 4px; margin-left: 14px">
|
||||||
>
|
<el-upload
|
||||||
<div style="position: relative;top: 4px;margin-left: 14px">
|
ref="uploadFile"
|
||||||
<el-upload
|
class="upload-demo up_newstyle"
|
||||||
ref="uploadFile"
|
:action="upload_articleApproval"
|
||||||
class="upload-demo up_newstyle"
|
accept=".pdf"
|
||||||
:action="upload_articleApproval"
|
name="articleApproval"
|
||||||
accept=".pdf"
|
:before-upload="beforeupload_articleApproval"
|
||||||
name="articleApproval"
|
:on-error="uperr_coverLetter"
|
||||||
:before-upload="beforeupload_articleApproval"
|
:on-success="upSuccess_articleApproval"
|
||||||
:on-error="uperr_coverLetter"
|
:limit="1"
|
||||||
:on-success="upSuccess_articleApproval"
|
:on-exceed="alertlimit"
|
||||||
:limit="1"
|
:on-remove="removefilearticleApproval"
|
||||||
:on-exceed="alertlimit"
|
:file-list="fileL_articleApproval"
|
||||||
:on-remove="removefilearticleApproval"
|
:on-preview="dowloadFile"
|
||||||
:file-list="fileL_articleApproval"
|
>
|
||||||
:on-preview="dowloadFile"
|
<div class="el-upload__text" @click="clearUploadedFile">
|
||||||
>
|
<em>Upload</em>
|
||||||
<div class="el-upload__text" @click="clearUploadedFile">
|
</div>
|
||||||
<em>Upload</em>
|
<div class="el-upload__tip" slot="tip" style="color: #888; left: 80px; font-size: 13px">
|
||||||
</div>
|
Upload the copyright permission letters or license documents figures.<br />
|
||||||
<div class="el-upload__tip" slot="tip" style="color: #888;left:80px;font-size: 13px;">
|
</div>
|
||||||
Upload the copyright permission letters or license documents figures.<br/>
|
</el-upload>
|
||||||
</div>
|
</div>
|
||||||
</el-upload>
|
</el-form-item>
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="Has artificial intelligence been used in the article ?"
|
label="Has artificial intelligence been used in the article ?"
|
||||||
prop="approval"
|
prop="approval"
|
||||||
@@ -812,17 +738,10 @@
|
|||||||
<el-radio :label="2">No</el-radio>
|
<el-radio :label="2">No</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<div v-if="form.is_use_ai == 1">
|
<div v-if="form.is_use_ai == 1">
|
||||||
|
<el-input type="textarea" v-model="form.use_ai_explain" :rows="4"></el-input>
|
||||||
<el-input
|
|
||||||
type="textarea"
|
|
||||||
v-model="form.use_ai_explain"
|
|
||||||
:rows="4"
|
|
||||||
></el-input>
|
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div style="margin: 50px 0 30px 30px">
|
<div style="margin: 50px 0 30px 30px">
|
||||||
<el-checkbox v-model="agreechecked" style="font-weight: bold">I accept </el-checkbox>
|
<el-checkbox v-model="agreechecked" style="font-weight: bold">I accept </el-checkbox>
|
||||||
<el-link @click="licensebox = true" type="primary" style="padding-left: 5px; font-weight: bold">
|
<el-link @click="licensebox = true" type="primary" style="padding-left: 5px; font-weight: bold">
|
||||||
@@ -879,10 +798,10 @@
|
|||||||
attention.
|
attention.
|
||||||
</p>
|
</p>
|
||||||
<common-word-html
|
<common-word-html
|
||||||
v-show="show_step == 3"
|
|
||||||
:articleId="stagingID"
|
:articleId="stagingID"
|
||||||
imgHeight="120px"
|
imgHeight="120px"
|
||||||
v-if="isShowCommonWord && stagingID"
|
v-if="isShowCommonWord&&stagingID"
|
||||||
style="margin-top: 10px; box-sizing: border-box; background-color: #fff"
|
style="margin-top: 10px; box-sizing: border-box; background-color: #fff"
|
||||||
></common-word-html>
|
></common-word-html>
|
||||||
</div>
|
</div>
|
||||||
@@ -938,7 +857,6 @@
|
|||||||
<el-autocomplete
|
<el-autocomplete
|
||||||
class="inline-input"
|
class="inline-input"
|
||||||
v-model="authMeaIN.email"
|
v-model="authMeaIN.email"
|
||||||
|
|
||||||
:fetch-suggestions="
|
:fetch-suggestions="
|
||||||
(queryString, callback) => {
|
(queryString, callback) => {
|
||||||
chaMateFit(queryString, callback, 1);
|
chaMateFit(queryString, callback, 1);
|
||||||
@@ -960,11 +878,11 @@
|
|||||||
<span style="color: #f56c6c">*</span>
|
<span style="color: #f56c6c">*</span>
|
||||||
Name :
|
Name :
|
||||||
</span>
|
</span>
|
||||||
<el-input v-model="authMeaIN.firstname" style="width: 280px; margin-right: 20px"></el-input>
|
<el-input v-model="authMeaIN.firstname" style="width: 280px; margin-right: 20px"></el-input>
|
||||||
<el-input v-model="authMeaIN.lastname" style="width: 280px"> </el-input>
|
<el-input v-model="authMeaIN.lastname" style="width: 280px"> </el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="ORCID iD :" label-width="120px" prop="orcid">
|
<el-form-item label="ORCID iD :" label-width="120px" prop="orcid">
|
||||||
<el-input v-model="authMeaIN.orcid" style="width: 280px"> </el-input>
|
<el-input v-model="authMeaIN.orcid" style="width: 280px"> </el-input>
|
||||||
<a href="https://orcid.org/register" target="_blank" class="orcid_link">Register for an ORCID iD</a>
|
<a href="https://orcid.org/register" target="_blank" class="orcid_link">Register for an ORCID iD</a>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="First author :" label-width="180px">
|
<el-form-item label="First author :" label-width="180px">
|
||||||
@@ -978,7 +896,7 @@
|
|||||||
<span style="color: #f56c6c">*</span>
|
<span style="color: #f56c6c">*</span>
|
||||||
Title :
|
Title :
|
||||||
</span>
|
</span>
|
||||||
<el-select v-model="authMeaIN.title" style="width: 280px" @change="chanSelt" placeholder="">
|
<el-select v-model="authMeaIN.title" style="width: 280px" @change="chanSelt" placeholder="">
|
||||||
<el-option key="Prof." label="Prof." value="Prof."></el-option>
|
<el-option key="Prof." label="Prof." value="Prof."></el-option>
|
||||||
<el-option key="Associate Prof." label="Associate Prof." value="Associate Prof."></el-option>
|
<el-option key="Associate Prof." label="Associate Prof." value="Associate Prof."></el-option>
|
||||||
<el-option key="Assistant Prof." label="Assistant Prof." value="Assistant Prof."></el-option>
|
<el-option key="Assistant Prof." label="Assistant Prof." value="Assistant Prof."></el-option>
|
||||||
@@ -991,7 +909,6 @@
|
|||||||
class="inline-input"
|
class="inline-input"
|
||||||
v-model="authMeaIN.company"
|
v-model="authMeaIN.company"
|
||||||
:fetch-suggestions="searchCompany"
|
:fetch-suggestions="searchCompany"
|
||||||
|
|
||||||
:trigger-on-focus="false"
|
:trigger-on-focus="false"
|
||||||
@select="selCompany($event, index)"
|
@select="selCompany($event, index)"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@@ -999,21 +916,21 @@
|
|||||||
</el-autocomplete>
|
</el-autocomplete>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Department :" label-width="120px">
|
<el-form-item label="Department :" label-width="120px">
|
||||||
<el-input v-model="authMeaIN.department" ></el-input>
|
<el-input v-model="authMeaIN.department"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Address :" label-width="120px">
|
<el-form-item label="Address :" label-width="120px">
|
||||||
<span slot="label">
|
<span slot="label">
|
||||||
<span style="color: #f56c6c" v-show="authMeaIN.isReport">*</span>
|
<span style="color: #f56c6c" v-show="authMeaIN.isReport">*</span>
|
||||||
Address :
|
Address :
|
||||||
</span>
|
</span>
|
||||||
<el-input v-model="authMeaIN.address" ></el-input>
|
<el-input v-model="authMeaIN.address"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label-width="120px">
|
<el-form-item label-width="120px">
|
||||||
<span slot="label">
|
<span slot="label">
|
||||||
<span style="color: #f56c6c">*</span>
|
<span style="color: #f56c6c">*</span>
|
||||||
Country :
|
Country :
|
||||||
</span>
|
</span>
|
||||||
<el-select v-model="authMeaIN.country" filterable style="width: 280px" placeholder="">
|
<el-select v-model="authMeaIN.country" filterable style="width: 280px" placeholder="">
|
||||||
<el-option v-for="it in countrys" :key="it.en_name" :label="it.en_name" :value="it.en_name"></el-option>
|
<el-option v-for="it in countrys" :key="it.en_name" :label="it.en_name" :value="it.en_name"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -1028,12 +945,29 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import JournalSelector from '@/components/page/components/article/journal-selector.vue';
|
import JournalSelector from '@/components/page/components/article/journal-selector.vue';
|
||||||
|
import ProgressBar from '@/components/page/components/article/progress.vue';
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
JournalSelector
|
JournalSelector,
|
||||||
|
ProgressBar
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
// 自定义校验:禁止QQ邮箱
|
||||||
|
const validateNotQQEmail = (rule, value, callback) => {
|
||||||
|
// 正则匹配QQ邮箱(以@qq.com结尾,不区分大小写)
|
||||||
|
const qqEmailReg = /@qq\.com$/i;
|
||||||
|
if (value) { // 若有值(必填校验已通过),则检查是否为QQ邮箱
|
||||||
|
if (qqEmailReg.test(value)) {
|
||||||
|
callback(new Error('QQ email is not allowed')); // 不允许QQ邮箱
|
||||||
|
} else {
|
||||||
|
callback(); // 校验通过
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
callback(); // 空值由必填校验处理,这里不重复判断
|
||||||
|
}
|
||||||
|
};
|
||||||
return {
|
return {
|
||||||
|
isShowProgress: false,
|
||||||
hasAIContent: ['1'],
|
hasAIContent: ['1'],
|
||||||
isHasAI: '0',
|
isHasAI: '0',
|
||||||
majorValueList: [],
|
majorValueList: [],
|
||||||
@@ -1041,7 +975,7 @@ export default {
|
|||||||
usercap: localStorage.getItem('U_role'),
|
usercap: localStorage.getItem('U_role'),
|
||||||
ms_alias: localStorage.getItem('ms_journal_alias'),
|
ms_alias: localStorage.getItem('ms_journal_alias'),
|
||||||
stagingID: this.$route.query.id,
|
stagingID: this.$route.query.id,
|
||||||
isShowCommonWord: false,
|
isShowCommonWord: true,
|
||||||
move_step: 1, //进行步骤
|
move_step: 1, //进行步骤
|
||||||
show_step: 1, //显示内容
|
show_step: 1, //显示内容
|
||||||
items: [],
|
items: [],
|
||||||
@@ -1122,7 +1056,7 @@ export default {
|
|||||||
qualification: '',
|
qualification: '',
|
||||||
approval_content: '',
|
approval_content: '',
|
||||||
code: '',
|
code: '',
|
||||||
is_use_ai: "",
|
is_use_ai: '',
|
||||||
use_ai_explain: ''
|
use_ai_explain: ''
|
||||||
// topics:null
|
// topics:null
|
||||||
},
|
},
|
||||||
@@ -1143,21 +1077,11 @@ export default {
|
|||||||
{
|
{
|
||||||
realname: '',
|
realname: '',
|
||||||
email: '',
|
email: '',
|
||||||
country: '',
|
department: '',
|
||||||
|
affiliation: '',
|
||||||
major_all: ''
|
major_all: ''
|
||||||
},
|
},
|
||||||
{
|
|
||||||
realname: '',
|
|
||||||
email: '',
|
|
||||||
country: '',
|
|
||||||
major_all: ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
realname: '',
|
|
||||||
email: '',
|
|
||||||
country: '',
|
|
||||||
major_all: ''
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
countrys: [],
|
countrys: [],
|
||||||
fileL_articleApproval: [],
|
fileL_articleApproval: [],
|
||||||
@@ -1165,6 +1089,47 @@ export default {
|
|||||||
fileL_picturesAndTables: [],
|
fileL_picturesAndTables: [],
|
||||||
fileL_manuscirpt: [],
|
fileL_manuscirpt: [],
|
||||||
fileL_supplementary: [],
|
fileL_supplementary: [],
|
||||||
|
tuiJianRules: {
|
||||||
|
realname: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: 'Please enter a realname',
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
email: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: 'Please enter a email',
|
||||||
|
trigger: 'blur'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: validateNotQQEmail, // 绑定自定义校验
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
department: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: 'Please enter a department',
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
affiliation: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: 'Please select a affiliation',
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
major_all: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: 'Please select a Filed',
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
rules: {
|
rules: {
|
||||||
journal: [
|
journal: [
|
||||||
{
|
{
|
||||||
@@ -1287,7 +1252,7 @@ export default {
|
|||||||
trigger: 'blur'
|
trigger: 'blur'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
email: [
|
email: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
@@ -1357,7 +1322,7 @@ export default {
|
|||||||
message: 'Please upload ethical approva file',
|
message: 'Please upload ethical approva file',
|
||||||
trigger: 'blur'
|
trigger: 'blur'
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
},
|
},
|
||||||
forWard: false,
|
forWard: false,
|
||||||
authorVisible: false,
|
authorVisible: false,
|
||||||
@@ -1416,6 +1381,7 @@ export default {
|
|||||||
children: 'children'
|
children: 'children'
|
||||||
},
|
},
|
||||||
tables: [],
|
tables: [],
|
||||||
|
uploadPercentage: 0,
|
||||||
wordimgList: [],
|
wordimgList: [],
|
||||||
tablesHtml: [],
|
tablesHtml: [],
|
||||||
imagesHtml: []
|
imagesHtml: []
|
||||||
@@ -1475,14 +1441,28 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 提交前校验所有评审人表单
|
||||||
|
async validateAllReviewers() {
|
||||||
|
// 遍历所有表单实例
|
||||||
|
for (const form of this.$refs.tuiJianForm) {
|
||||||
|
// 校验当前表单(返回Promise)
|
||||||
|
const valid = await form.validate().catch(() => false);
|
||||||
|
if (!valid) {
|
||||||
|
// 有表单未通过校验,终止并返回false
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 所有表单校验通过
|
||||||
|
return true;
|
||||||
|
},
|
||||||
handleJournalSelected(journal) {
|
handleJournalSelected(journal) {
|
||||||
if (journal == '') {
|
if (journal == '') {
|
||||||
this.check_item = {};
|
this.check_item = {};
|
||||||
this.ms_alias = '';
|
this.ms_alias = '';
|
||||||
this.form.journal = '';
|
this.form.journal = '';
|
||||||
this.reviewerof.journal = 1;
|
this.reviewerof.journal = 1;
|
||||||
|
|
||||||
console.log('this.form at line 1386:', this.form)
|
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');
|
||||||
}
|
}
|
||||||
@@ -1491,13 +1471,20 @@ export default {
|
|||||||
this.ch_Jour_all(journal.journal_id);
|
this.ch_Jour_all(journal.journal_id);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onSubmit() {
|
async onSubmit() {
|
||||||
if (!this.agreechecked) {
|
if (!this.agreechecked) {
|
||||||
this.$message.error(
|
this.$message.error(
|
||||||
'Dear author, the licenses need to be accecpted before you submit the manuscript. You could find more information in http://creativecommons.org/licenses/by/4.0/'
|
'Dear author, the licenses need to be accecpted before you submit the manuscript. You could find more information in http://creativecommons.org/licenses/by/4.0/'
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
// 校验所有评审人表单
|
||||||
|
const valid = await this.validateAllReviewers();
|
||||||
|
if (!valid) {
|
||||||
|
this.$message.error('Please fill in all reviewer information correctly!');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return;
|
||||||
this.$refs.articleform.validate((valid) => {
|
this.$refs.articleform.validate((valid) => {
|
||||||
if (this.isAbstractTooShort(this.form.abstrart)) {
|
if (this.isAbstractTooShort(this.form.abstrart)) {
|
||||||
this.$message.error('The abstract should not be less than 200 words!');
|
this.$message.error('The abstract should not be less than 200 words!');
|
||||||
@@ -1591,9 +1578,8 @@ export default {
|
|||||||
this.$refs.tuiJianForm[i].validate((vali) => {
|
this.$refs.tuiJianForm[i].validate((vali) => {
|
||||||
if (vali) {
|
if (vali) {
|
||||||
tuijian_yanzheng += 0;
|
tuijian_yanzheng += 0;
|
||||||
//this.tuiJianForm[i].major = this.tuiJianForm[i].major_all[0]
|
|
||||||
this.tuiJianForm[i].major = this.tuiJianForm[i].major_all[this.tuiJianForm[i].major_all.length - 1];
|
this.tuiJianForm[i].major = this.tuiJianForm[i].major_all[this.tuiJianForm[i].major_all.length - 1];
|
||||||
//this.tuiJianForm[i].cmajor = this.tuiJianForm[i].major_all[1]
|
|
||||||
} else {
|
} else {
|
||||||
tuijian_yanzheng += 1;
|
tuijian_yanzheng += 1;
|
||||||
}
|
}
|
||||||
@@ -1933,7 +1919,15 @@ export default {
|
|||||||
|
|
||||||
// 保存修改用户信息
|
// 保存修改用户信息
|
||||||
saveAuthor(value) {
|
saveAuthor(value) {
|
||||||
if (value.firstname == '' || value.lastname == '' || value.title == '' || value.Country == '' || value.email == ''||value.company == ''||value.orcid == '') {
|
if (
|
||||||
|
value.firstname == '' ||
|
||||||
|
value.lastname == '' ||
|
||||||
|
value.title == '' ||
|
||||||
|
value.Country == '' ||
|
||||||
|
value.email == '' ||
|
||||||
|
value.company == '' ||
|
||||||
|
value.orcid == ''
|
||||||
|
) {
|
||||||
this.$message.error('Please provide complete author information!');
|
this.$message.error('Please provide complete author information!');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2323,10 +2317,16 @@ export default {
|
|||||||
this.$message.error('service error:' + res.msg);
|
this.$message.error('service error:' + res.msg);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// 进度回调:实时获取进度
|
||||||
|
handleProgress(event, file, fileList) {
|
||||||
|
this.isShowProgress=true
|
||||||
|
|
||||||
|
// event.percentage 就是当前进度(百分比,浮点数)
|
||||||
|
this.uploadPercentage = Math.round(event.percent); // 取整数
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
addWordTablesList(tables) {
|
addWordTablesList(tables) {
|
||||||
console.log('tables at line 2187:', tables);
|
|
||||||
console.log('this.fileMesForm at line 2189:', this.stagingID);
|
|
||||||
var data = {
|
var data = {
|
||||||
article_id: this.stagingID,
|
article_id: this.stagingID,
|
||||||
|
|
||||||
@@ -2336,21 +2336,23 @@ export default {
|
|||||||
html_data: ''
|
html_data: ''
|
||||||
}))
|
}))
|
||||||
};
|
};
|
||||||
|
|
||||||
this.$api.post('api/Article/addArticleTable', data).then((res) => {
|
this.$api.post('api/Article/addArticleTable', data).then((res) => {
|
||||||
this.isShowCommonWord = true;
|
this.isShowCommonWord = true;
|
||||||
|
setTimeout(() => {
|
||||||
|
this.isShowProgress=false;
|
||||||
|
},500)
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
upLoadWordTables() {},
|
upLoadWordTables() {},
|
||||||
upSuccess_manuscirpt(res, File) {
|
upSuccess_manuscirpt(res, File) {
|
||||||
// console.log('file at line 2174:', file.raw)
|
// console.log('file at line 2174:', file.raw)
|
||||||
if (File) {
|
if (File) {
|
||||||
|
|
||||||
var that = this;
|
var that = this;
|
||||||
const reader = new FileReader();
|
const reader = new FileReader();
|
||||||
reader.onload = function (e) {
|
reader.onload = function (e) {
|
||||||
that.$commonJS.extractWordTablesToArrays(File.raw, function (wordTables) {
|
that.$commonJS.extractWordTablesToArrays(File.raw, function (wordTables) {
|
||||||
console.log('tablesHtml at line 61:', wordTables);
|
|
||||||
return;
|
|
||||||
that.addWordTablesList(wordTables);
|
that.addWordTablesList(wordTables);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -2555,7 +2557,7 @@ export default {
|
|||||||
this.Reviewerof.journal = e;
|
this.Reviewerof.journal = e;
|
||||||
this.checkReviewer();
|
this.checkReviewer();
|
||||||
this.form.journal = e;
|
this.form.journal = e;
|
||||||
this.$refs.articleform.clearValidate(['journal']);;
|
this.$refs.articleform.clearValidate(['journal']);
|
||||||
this.form.major = '';
|
this.form.major = '';
|
||||||
this.form.major_a = '';
|
this.form.major_a = '';
|
||||||
this.form.major_b = '';
|
this.form.major_b = '';
|
||||||
@@ -2848,12 +2850,12 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (e == 2) {
|
} else if (e == 2) {
|
||||||
this.isShowCommonWord = false;
|
// this.isShowCommonWord = false;
|
||||||
setTimeout(() => {
|
// setTimeout(() => {
|
||||||
this.isShowCommonWord = true;
|
// this.isShowCommonWord = true;
|
||||||
// that.getWordTablesList();
|
// // that.getWordTablesList();
|
||||||
// that.getWordimgList();
|
// // that.getWordimgList();
|
||||||
}, 200);
|
// }, 200);
|
||||||
// for (let i = 0; i < this.form.authorList.length; i++) {
|
// for (let i = 0; i < this.form.authorList.length; i++) {
|
||||||
// if (this.form.authorList[i].art_aut_id == undefined) {
|
// if (this.form.authorList[i].art_aut_id == undefined) {
|
||||||
// this.form.authorList[i].art_aut_id = 0
|
// this.form.authorList[i].art_aut_id = 0
|
||||||
@@ -2925,9 +2927,7 @@ export default {
|
|||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
this.form.manuscirptId = res.data.file_id;
|
this.form.manuscirptId = res.data.file_id;
|
||||||
console.log('this.form.manuscirpt at line 2652:', this.form.manuscirpt);
|
|
||||||
|
|
||||||
console.log('1111111111111111111111111111');
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// that.getWordTablesList();
|
// that.getWordTablesList();
|
||||||
// that.getWordimgList();
|
// that.getWordimgList();
|
||||||
@@ -3123,7 +3123,7 @@ export default {
|
|||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
border-top-left-radius: 10px;
|
border-top-left-radius: 10px;
|
||||||
border-top-right-radius: 10px;
|
border-top-right-radius: 10px;
|
||||||
width: calc(100% - 60px);
|
width: calc(100% - 20px);
|
||||||
/* margin-bottom: 10px; */
|
/* margin-bottom: 10px; */
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
@@ -3501,7 +3501,7 @@ export default {
|
|||||||
.tuijian_f > .shanchu_tj {
|
.tuijian_f > .shanchu_tj {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 0;
|
top: 5px;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3517,7 +3517,46 @@ export default {
|
|||||||
.tuijian_f .el-form-item > .el-form-item__label:before {
|
.tuijian_f .el-form-item > .el-form-item__label:before {
|
||||||
content: '' !important;
|
content: '' !important;
|
||||||
}
|
}
|
||||||
|
/* 评审人表单容器 - 网格布局设置 */
|
||||||
|
.tuijian_f {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(4, 1fr); /* 4列平均分布 */
|
||||||
|
gap: 10px; /* 字段间间距 */
|
||||||
|
/* padding:0 10px; */
|
||||||
|
border: 1px solid #eee; /* 可选:加个边框区分每个评审人表单 */
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-bottom: 10px; /* 多个评审人表单之间的间距 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 标题和删除按钮样式调整 */
|
||||||
|
.tuijian_f > p {
|
||||||
|
grid-column: 1 / -1; /* 标题占满整行 */
|
||||||
|
margin: 0 0 0px 0;
|
||||||
|
font-weight: 500;
|
||||||
|
padding: 0 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tuijian_f .shanchu_tj {
|
||||||
|
grid-column: 4 / 5; /* 删除按钮放在第4列 */
|
||||||
|
align-self: end; /* 靠下对齐 */
|
||||||
|
justify-self: end; /* 靠右对齐 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Filed字段单独占一行 */
|
||||||
|
.tuijian_f .el-form-item:nth-child(6) {
|
||||||
|
/* 因为Filed是第6个表单项(从p开始算第1个) */
|
||||||
|
grid-column: 1 / -1; /* 占满所有列(整行) */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 调整字段宽度和对齐(可选,根据需要微调) */
|
||||||
|
.tuijian_f .el-form-item {
|
||||||
|
margin-bottom: 0; /* 取消默认margin,用grid的gap控制间距 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.tuijian_f .el-input,
|
||||||
|
.tuijian_f .el-cascader {
|
||||||
|
width: 100% !important; /* 让输入框自适应网格列宽 */
|
||||||
|
}
|
||||||
.el-popover {
|
.el-popover {
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="journal-selector relative w-full max-w-md" ref="journalSelector">
|
<div class="journal-selector relative w-full max-w-md" ref="journalSelector">
|
||||||
|
|
||||||
|
|
||||||
<!-- 使用el-input作为输入框 -->
|
<!-- 使用el-input作为输入框 -->
|
||||||
<div v-if="!selectedJournal">
|
<div v-if="!selectedJournal">
|
||||||
<el-input clearable
|
<el-input clearable
|
||||||
@@ -185,7 +185,11 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
if(JSON.stringify(this.check_item)!=='{}'){
|
||||||
|
this.selectedJournal = this.check_item;
|
||||||
|
}else{
|
||||||
|
this.selectedJournal = null;
|
||||||
|
}
|
||||||
this.getJournalList();
|
this.getJournalList();
|
||||||
document.addEventListener('click', this.handleClickOutside);
|
document.addEventListener('click', this.handleClickOutside);
|
||||||
},
|
},
|
||||||
|
|||||||
133
src/components/page/components/article/progress.vue
Normal file
133
src/components/page/components/article/progress.vue
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
<template>
|
||||||
|
<div class="mask-layer">
|
||||||
|
<div class="progress-container">
|
||||||
|
<!-- 1. AI解析文章内容 -->
|
||||||
|
<div class="progress-item">
|
||||||
|
|
||||||
|
<div style="font-size: 24px;color: #fff;">AI 解析中:</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="progress-wrap">
|
||||||
|
<div class="progress-bar" :style="{ width: contentProgress + '%' }"></div>
|
||||||
|
<span class="progress-text" :style="Math.round(contentProgress) >96 ? 'color: #fff' : ''">{{ Math.round(contentProgress) }}%</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
progress: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
contentProgress: 0,
|
||||||
|
imageProgress: 0,
|
||||||
|
tableProgress: 0,
|
||||||
|
timers: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.contentProgress = this.progress;
|
||||||
|
// 优化:减小步长 + 缩短间隔,让更新更频繁、变化更细腻
|
||||||
|
this.startProgress('contentProgress', 0.8, 100); // 每次+0.8,100ms更新一次
|
||||||
|
this.startProgress('imageProgress', 1.2, 100); // 每次+1.2,100ms更新一次
|
||||||
|
this.startProgress('tableProgress', 1.0, 100); // 每次+1.0,100ms更新一次
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
this.timers.forEach(timer => clearInterval(timer));
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
close(){
|
||||||
|
this.$emit('close');
|
||||||
|
},
|
||||||
|
startProgress(progressKey, step, interval) {
|
||||||
|
const timer = setInterval(() => {
|
||||||
|
if (this[progressKey] < 100) {
|
||||||
|
// 保留小数点后1位精度,避免整数跳跃感
|
||||||
|
this[progressKey] = Math.min(parseFloat((this[progressKey] + step).toFixed(1)), 100);
|
||||||
|
} else {
|
||||||
|
clearInterval(timer);
|
||||||
|
}
|
||||||
|
}, interval);
|
||||||
|
this.timers.push(timer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.mask-layer {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: rgba(0, 0, 0, 0.6);
|
||||||
|
z-index: 1000;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-container {
|
||||||
|
width: 60%;
|
||||||
|
padding: 40px;
|
||||||
|
/* background-color: #fff; */
|
||||||
|
border-radius: 8px;
|
||||||
|
/* box-shadow: 0 0 15px rgba(0, 0, 0, 0.2); */
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-item {
|
||||||
|
margin-bottom: 25px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-item span:first-child {
|
||||||
|
width: 140px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #333;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-wrap {
|
||||||
|
flex: 1;
|
||||||
|
height: 20px;
|
||||||
|
background-color: #f0f2f5;
|
||||||
|
border-radius: 8px;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 核心优化:更柔和的过渡曲线 + 延长过渡时间 */
|
||||||
|
.progress-bar {
|
||||||
|
height: 100%;
|
||||||
|
background-color: #409eff;
|
||||||
|
transition: width 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); /* 缓动曲线更丝滑 */
|
||||||
|
background-image: linear-gradient(90deg, #409eff, #69b1ff); /* 轻微渐变增强质感 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-text {
|
||||||
|
position: absolute;
|
||||||
|
right: 8px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
font-size: 16px;
|
||||||
|
color: #409eff;
|
||||||
|
font-weight: 500;
|
||||||
|
min-width: 24px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
<el-form class="ms-content" :rules="registerRules" ref="registerForm" :model="registerForm" label-width="0">
|
<el-form class="ms-content" :rules="registerRules" ref="registerForm" :model="registerForm" label-width="0">
|
||||||
<!-- 用户名 -->
|
<!-- 用户名 -->
|
||||||
<el-form-item prop="username">
|
<el-form-item prop="username">
|
||||||
<el-input size="small" v-model="registerForm.username" auto-complete="off" placeholder="username">
|
<el-input size="small" v-model="registerForm.username" auto-complete="off" placeholder="user name">
|
||||||
<i slot="prefix" class="el-icon-user"></i>
|
<i slot="prefix" class="el-icon-user"></i>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|||||||
Reference in New Issue
Block a user