This commit is contained in:
徐哼唧L
2023-06-07 09:22:26 +08:00
parent d20483d6e2
commit 186cc1b552
24 changed files with 3062 additions and 345 deletions

View File

@@ -72,6 +72,10 @@
{{$t('sidebar.man_ing2')}}
</el-menu-item>
</el-submenu>
<!-- <el-menu-item index="documentView">
<i class="el-icon-document-copy"></i>
<span slot="title"> {{$t('sidebar.document')}}</span>
</el-menu-item> -->
<el-submenu index="10">
<template slot="title">
<i class="el-icon-data-analysis"></i> {{$t('sidebar.analyp')}}
@@ -332,11 +336,6 @@
index: 'dashboard',
title: this.$t('sidebar.main')
},
// {
// icon: 'el-icon-document-copy',
// index: 'documentView',
// title: this.$t('sidebar.document'),
// },
{
icon: 'el-icon-connection',
index: '5',

View File

@@ -1,9 +1,9 @@
<script>
// const mediaUrl = '/public/';
// const baseUrl = '/';
const mediaUrl = '/public/';
const baseUrl = '/';
const mediaUrl = 'http://www.tougao.com/';
const baseUrl = 'http://www.tougao.com/';
// const mediaUrl = 'http://www.tougao.com/';
// const baseUrl = 'http://www.tougao.com/';
// const IMGdoURL = 'http://www.journal.com/';
// const IMGupURL = 'http://www.journal.com/';

View File

@@ -103,6 +103,24 @@
v-if="this.coreTable.g_author==''">Certified</el-button>
</div>
</div>
<div v-if="this.coreTable.code!=''">
<div class="expTit">
Invitation code
<!-- <el-popover placement="top-start" width="300" trigger="hover"
content="If you invite users to submit, please fill in your invitation code.">
<span slot="reference">
<i class="el-icon-info" style="color: #ef8429;font-size: 18px;cursor: pointer;"></i>
</span>
</el-popover> -->
:
</div>
<div class="expInde" style="display: flex;">
<p style="font-weight: bold;color: #006699;margin-right: 10px;">{{this.coreTable.code}}</p>
<!-- <p style="margin: 0 0 0 10px;">(56)</p> -->
<el-button type="primary" @click="codeCopy" icon="el-icon-copy-document" size="mini" plain
style="padding: 4px 8px;">Copy</el-button>
</div>
</div>
</div>
</el-col>
@@ -182,22 +200,6 @@
</div>
</div> -->
<!-- <div>
<div class="expTit">
Invitation code
<el-popover placement="top-start" width="300" trigger="hover"
content="If you invite users to submit, please fill in your invitation code.">
<span slot="reference">
<i class="el-icon-info" style="color: #e7d219;font-size: 18px;cursor: pointer;"></i>
</span>
</el-popover>
:
</div>
<div class="expInde" style="display: flex;">
<p style="font-weight: bold;color: #006699;">dfsfsd56789</p>
<p style="margin: 0 0 0 10px;">(56)</p>
</div>
</div> -->
</div>
</el-col>
@@ -1641,6 +1643,17 @@
});
},
// 复制邀请码
codeCopy() {
var input = document.createElement("input"); // 创建input对象
input.value = this.coreTable.code; // 设置复制内容
document.body.appendChild(input); // 添加临时实例
input.select(); // 选择实例内容
document.execCommand("Copy"); // 执行复制
document.body.removeChild(input); // 删除临时实例
this.$message.success('Invitation code copied successfully!');
},
// 个人信息弹出框
openCoreHand() {
this.coreForm = JSON.parse(JSON.stringify(this.coreTable))

View File

@@ -246,7 +246,7 @@
<h3>
Upload Manuscript
</h3>
<el-form-item label="Cover letter :">
<el-form-item label="Cover letter :" label-width="200px">
<el-upload class="upload-demo up_newstyle" :action="upload_coverLetter"
accept=".pdf, .doc, .docx" name="coverLetter" :before-upload="beforeupload_coverLetter"
:on-error="uperr_coverLetter" :on-success="upSuccess_coverLetter" :limit="1"
@@ -260,7 +260,7 @@
</div>
</el-upload>
</el-form-item>
<el-form-item>
<el-form-item label-width="200px">
<span slot="label">
Figures
<el-popover placement="top-start" width="350" trigger="hover">
@@ -304,7 +304,7 @@
<div class="el-upload__tip" slot="tip">Only word files can be uploaded(.doc,.docx)</div>
</el-upload>
</el-form-item> -->
<el-form-item label="Manuscirpt :" prop="manuscirpt">
<el-form-item label="Manuscirpt :" prop="manuscirpt" label-width="200px">
<el-upload ref="uploadFile" 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"
@@ -319,6 +319,20 @@
</el-upload>
</a>
</el-form-item>
<el-form-item label="Supplementary Material :" label-width="200px">
<el-upload class="upload-demo up_newstyle" :action="upload_supplementary" accept=".zip"
name="supplementary" :before-upload="beforeupload_supplementary"
:on-error="uperr_coverLetter" :on-success="upSuccess_supplementary" :limit="1"
:on-exceed="alertlimit" :on-remove="removefilesupplementary"
:file-list="fileL_supplementary" :on-preview="dowloadFile">
<div class="el-upload__text">
<em>Upload</em>
</div>
<div class="el-upload__tip" slot="tip">
Only ZIP files can be uploaded (file formats: .zip).
</div>
</el-upload>
</el-form-item>
<div style="text-align: center;margin: 40px 0 0 0;">
<el-button type="primary" @click="onStep(3)" class="pro_ceed">Next Step</el-button>
</div>
@@ -493,7 +507,30 @@
misconduct policy.
</p>
<div style="margin:50px 0 30px 30px">
<div style="margin:50px 0 0 30px">
<el-form-item>
<span slot="label">
Invitation code
<el-popover placement="top-start" width="320" trigger="hover">
<p
style="line-height: 24px;word-wrap: break-word;word-break: normal;text-align: left;">
The journal encourages scientists to invite their colleagues or
collaborators to submit manuscripts in order to promote collaboration and
expand the journal's author network. You will be rewarded with credits that
can be used to offset APC (specific details subject to journal policies) and
gain priority in editorial board selection.
</p>
<i class="el-icon-info" slot="reference"
style="color: #ef8429;cursor: pointer;vertical-align: super;font-size: 20px;"></i>
</el-popover>
:
</span>
<el-input v-model="form.code" placeholder="Please enter invitation code"
style="width: 200px;"></el-input>
</el-form-item>
</div>
<div style="margin:20px 0 30px 30px">
<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;"> the license
@@ -615,7 +652,9 @@
coverLetter: '',
picturesAndTables: '',
totalpage: '',
manuscirpt: ''
manuscirpt: '',
supplementary: '',
code: ''
},
journal_type: [{
name: 'ARTICLE',
@@ -709,6 +748,7 @@
fileL_coverLetter: [],
fileL_picturesAndTables: [],
fileL_manuscirpt: [],
fileL_supplementary: [],
rules: {
journal: [{
required: true,
@@ -863,6 +903,9 @@
upload_manuscirpt: function() {
return this.baseUrl + 'api/Article/up_file/type/manuscirpt';
},
upload_supplementary: function() {
return this.baseUrl + 'api/Article/up_file/type/supplementary';
},
upload_qualifications: function() {
return this.baseUrl + 'api/Admin/up_file';
},
@@ -1355,6 +1398,23 @@
// }
// return ismau;
},
beforeupload_supplementary(file) {
let flieArr = file.name.split(".")
let fileSuffix = flieArr[flieArr.length - 1];
if (fileSuffix != 'zip') {
this.$message.error('Only zip files can be uploaded(.zip)');
return false;
}
// const ismau =
// file.type === 'application/msword' ||
// file.type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ||
// file.type === 'application/x-zip-compressed' ||
// file.name.split('.')[1] === 'rar';
// if (!ismau) {
// this.$message.error('Only word and compressed files(.doc,.docx,.rar,.zip)');
// }
// return ismau;
},
//文件上传成功后的操作
upSuccess_coverLetter(res, file) {
if (res.code == 0) {
@@ -1396,6 +1456,17 @@
this.$message.error('service error: ' + res.msg);
}
},
upSuccess_supplementary(res, file) {
if (res.code == 0) {
this.form.supplementary = 'supplementary/' + res.upurl;
this.fileL_supplementary = [{}]
this.fileL_supplementary[0].name = "Supplementary Material";
this.fileL_supplementary[0].url = 'supplementary/' + res.upurl;
this.onStaging(6)
} else {
this.$message.error('service error: ' + res.msg);
}
},
clearUploadedFile() {
this.$refs['uploadFile'].clearFiles();
},
@@ -1452,6 +1523,21 @@
}
});
},
removefilesupplementary() {
this.form.supplementary = '';
this.fileL_supplementary = [];
this.$api
.post('api/Article/delArticleFile', {
file_id: this.form.supplementaryId
})
.then((res) => {
if (res.code == 0) {
this.$message.success('Deletion succeeded!');
} else {
this.$message.error(res.msg);
}
});
},
getOpState(index) {
let a = this.activeNames.indexOf(index) > -1 ? 'Close' : 'Open';
},
@@ -1608,6 +1694,12 @@
this.fileL_manuscirpt[0].name = "Manuscirpt File";
this.fileL_manuscirpt[0].url = this.form.manuscirpt;
}
this.fileL_supplementary = [];
if (this.form.supplementary != '') {
this.fileL_supplementary = [{}];
this.fileL_supplementary[0].name = "Supplementary Material";
this.fileL_supplementary[0].url = this.form.supplementary;
}
},
// 点击进行下一步
@@ -1805,6 +1897,20 @@
this.$message.error(res.msg);
}
});
} else if (e == 6) {
this.$api
.post('api/Article/addArticlefile', {
article_id: this.form.article_id,
type: 'supplementary',
url: this.form.supplementary
})
.then((res) => {
if (res.code == 0) {
this.form.supplementaryId = res.data.file_id
} else {
this.$message.error(res.msg);
}
});
}
},
@@ -1901,6 +2007,10 @@
this.form.manuscirpt = res.data.files[i].file_url
this.form.manuscirptId = res.data.files[i].file_id
}
if (res.data.files[i].type_name == 'supplementary') {
this.form.supplementary = res.data.files[i].file_url
this.form.supplementaryId = res.data.files[i].file_id
}
}
this.showFiles()
}
@@ -2240,4 +2350,10 @@
.tuijian_f .el-form-item>.el-form-item__label:before {
content: "" !important;
}
.el-popover {
word-break: break-word;
text-align: left;
}
</style>

View File

@@ -302,6 +302,7 @@
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
supplementaryFileList:[],
countrys: [],
transinfo: [],
msgform: {
@@ -622,6 +623,7 @@
this.picturesAndTablesFileList = res.picturesAndTables;
this.totalpageFileList = res.totalpage;
this.manuscirptFileList = res.manuscirpt;
this.supplementaryFileList = res.supplementary;
})
.catch((err) => {
console.log(err);

View File

@@ -167,6 +167,22 @@
<br clear="both">
</el-col>
</el-row>
<el-row :gutter="24" v-if="supplementaryFileList">
<el-col :span="24">
<h4>Supplementary Material : </h4>
<p class="fi_new">
<a v-for="item in supplementaryFileList" :href="mediaUrl + item.file_url">
<img src="../../assets/img/icon_0.png">
<span>
<font>Uploader : </font>{{item.username}}
<i><i class="el-icon-time"></i>{{formatDate(item.ctime)}}</i>
</span>
<i class="el-icon-download download"></i>
</a>
</p>
<br clear="both">
</el-col>
</el-row>
<el-row v-if="responseFileList!=''">
<div
@@ -378,6 +394,7 @@
coverLetterFileList: [],
picturesAndTablesFileList: [],
totalpageFileList: [],
supplementaryFileList: [],
manuscirptFileList: [],
responseFileList: [],
authorList_name: '',
@@ -838,6 +855,7 @@
this.picturesAndTablesFileList = res.picturesAndTables;
this.manuscirptFileList = res.manuscirpt;
this.totalpageFileList = res.totalpage;
this.supplementaryFileList = res.supplementary;
})
.catch(err => {
console.log(err);

View File

@@ -262,6 +262,18 @@
</a>
</p>
<br clear="both" v-if="totalpageFileList">
<h4 v-if="supplementaryFileList">Supplementary Material : </h4>
<p v-if="supplementaryFileList">
<a v-for="item in supplementaryFileList" :href="mediaUrl + item.file_url">
<img src="../../assets/img/icon_0.png">
<span>
<font>Uploader : </font>{{item.username}}
<i><i class="el-icon-time"></i>{{formatDate(item.ctime)}}</i>
</span>
<i class="el-icon-download download"></i>
</a>
</p>
<br clear="both" v-if="supplementaryFileList">
<h4>Manuscirpt : </h4>
<p>
<a v-for="item in manuscirptFileList" :href="mediaUrl + item.file_url">
@@ -348,6 +360,7 @@
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
supplementaryFileList: [],
comentDeploy: [],
activeComment: [],
authorList_name: '',
@@ -503,6 +516,7 @@
this.picturesAndTablesFileList = res.picturesAndTables;
this.manuscirptFileList = res.manuscirpt;
this.totalpageFileList = res.totalpage;
this.supplementaryFileList = res.supplementary;
})
.catch(err => {
console.log(err);

View File

@@ -263,6 +263,18 @@
</a>
</p>
<br clear="both" v-if="totalpageFileList">
<h4 v-if="supplementaryFileList">Supplementary Material : </h4>
<p v-if="supplementaryFileList">
<a v-for="item in supplementaryFileList" :href="mediaUrl + item.file_url">
<img src="../../assets/img/icon_0.png">
<span>
<font>Uploader : </font>{{item.username}}
<i><i class="el-icon-time"></i>{{formatDate(item.ctime)}}</i>
</span>
<i class="el-icon-download download"></i>
</a>
</p>
<br clear="both" v-if="supplementaryFileList">
<h4>Manuscirpt : </h4>
<p>
<a v-for="item in manuscirptFileList" :href="mediaUrl + item.file_url">
@@ -502,6 +514,7 @@
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
supplementaryFileList:[],
};
},
created() {
@@ -605,6 +618,7 @@
this.picturesAndTablesFileList = res.picturesAndTables;
this.manuscirptFileList = res.manuscirpt;
this.totalpageFileList = res.totalpage;
this.supplementaryFileList = res.supplementary;
})
.catch(err => {
console.log(err);

View File

@@ -536,28 +536,42 @@
</div>
<!-- 生成文章 -->
<!-- Html排版 -->
<div :ref="tabsList[4].refName" class="scroll-item">
<div class="bor_style_onli">
<h4>{{tabsList[4].name}}</h4>
<div>
<p style="color: #606266;font-size: 14px;line-height: 21px;margin-bottom: 15px;">
HTML Full Text Layout
</p>
</div>
<div style="text-align: center;">
<el-button type="primary" @click="htmlContet()" style="width: 300px;">
<i class="el-icon-document-copy"></i>
Html Proofread
</el-button>
</div>
</div>
</div>
<!-- 生成文章 -->
<div :ref="tabsList[5].refName" class="scroll-item">
<div class="bor_style_onli">
<h4>{{tabsList[5].name}}</h4>
<div style="font-size: 14px;">
<div style="margin: 30px 0 40px 0;">
Choose Template :
<el-select v-model="shuTter.board" placeholder="Please select a template..."
@change="select_tem($event)" style="width: 253px;">
@change="select_tem($event)" style="width: 225px;">
<el-option v-for="item in fol_low" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-button type="primary" style="width: 150px;margin:0 10px 0 20px;" @click="EstaBlish">
<el-button type="primary" style="width: 150px;margin:0 5px 0 15px;" @click="EstaBlish">
<i class="el-icon-document"></i>
Create Manuscript
</el-button>
<el-button type="warning" @click="htmlContet()" v-if="p_article_id>=368">
<i class="el-icon-document-copy"></i>
Html Proofread
</el-button>
</div>
<div style="margin: 30px 0 40px 0;">
<h5 style="font-size: 16px;margin: 0 0 30px 0;letter-spacing: -0.5px;">Download list</h5>
@@ -646,9 +660,9 @@
<!-- 作者确认 -->
<div :ref="tabsList[5].refName" class="scroll-item">
<div :ref="tabsList[6].refName" class="scroll-item">
<div class="bor_style_onli">
<h4>{{tabsList[5].name}}</h4>
<h4>{{tabsList[6].name}}</h4>
<p style="color: #606266;font-size: 14px;line-height: 21px;">
Three situations after sending PROOF to the author:
<br>1. If the author confirms PROOF, please click "Push online" to be online.
@@ -718,7 +732,7 @@
</el-dialog>
<!-- 预览列表 -->
<el-dialog title="" :visible.sync="preLisVisible" width="800px">
<el-dialog title="" :visible.sync="preLisVisible" width="850px">
<div class="aMesage">
<div class="aMes_typ">
{{deMesYul.type}}
@@ -771,12 +785,22 @@
</p>
</div>
<div class="aArt_abst">
<div>
<div class="titTop">
<b :class="preactive == 1?'Tab_col':''" @click="preactive = 1">Abstract</b>
<b :class="preactive == 2?'Tab_col':''" @click="preactive = 2">Medical history of objective</b>
<b :class="preactive == 3?'Tab_col':''" @click="preactive = 3"
v-if="deMesYul.htmlList!=''&&deMesYul.htmlList!=undefined">Html</b>
</div>
<p v-if="preactive==1" v-html="deMesYul.abstract"></p>
<p v-if="preactive==2" v-html="deMesYul.mhoo"></p>
<div v-if="preactive==3" v-for="(item,index) in deMesYul.htmlList" class="titHtml">
<p v-html="item.content" v-if="!item.p_main_img_id"></p>
<p v-if="item.p_main_img_id" class="MaxPicture">
<img :src="baseUrl+'public/mainimg/'+item.content" :style="'width:'+item.width+'px'">
<font :style="'width:'+item.width+'px'">{{item.note}}
</font>
</p>
</div>
</div>
</div>
<span slot="footer" class="dialog-footer">
@@ -836,13 +860,18 @@
// rongCont: 'Modify the article body.'
// },
{
name: 'Create Build',
name: 'Html',
refName: 'setSixRef',
rongCont: 'HTML layout.'
},
{
name: 'Create Build',
refName: 'setSevenRef',
rongCont: 'Create different types of checked manuscripts and download them.'
},
{
name: 'Proof',
refName: 'setSevenRef',
refName: 'setEightRef',
rongCont: ''
}
],
@@ -1321,8 +1350,6 @@
loading.close()
});
// 获取参考文献
this.$api
.post('api/Production/getReferList', {
@@ -1918,10 +1945,6 @@
}
},
// 6----模板选择
select_tem() {
@@ -1941,7 +1964,6 @@
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.$api
.post('api/Production/doTypeSetting', {
p_article_id: this.p_article_id
@@ -1968,19 +1990,29 @@
.catch(err => {
this.$message.error(err);
});
},
// 6----校对文章
htmlContet() {
this.$router.push({
path: 'comArtHtml',
query: {
id: this.p_article_id
}
});
this.$api
.post('api/Production/getProductionMains', {
p_article_id: this.p_article_id
})
.then(res => {
if (res.code == 0) {
this.$router.push({
path: 'comArtHtmlCreat',
query: {
id: this.p_article_id
}
});
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
// 6----修改时间为年月日
@@ -2437,7 +2469,24 @@
// 预览文章
gOpreviewArt() {
this.preArtVisible = true
// 获取文章信息
this.$api
.post('api/Production/getProductionMains', {
p_article_id: this.p_article_id
})
.then(res => {
if (res.code == 0) {
this.deMesYul.htmlList = res.data.mains
this.preArtVisible = true
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
// 预览pdf
@@ -2636,7 +2685,7 @@
}
.tab_post>div:nth-child(6) .line {
.tab_post>div:nth-child(7) .line {
border: none;
}
@@ -3096,12 +3145,12 @@
margin-top: 30px;
}
.aArt_abst div {
.aArt_abst .titTop {
border-bottom: 1px solid #ddd;
margin-bottom: 20px;
}
.aArt_abst div b {
.aArt_abst .titTop b {
font-weight: normal;
display: inline-block;
padding: 8px 10px;
@@ -3111,16 +3160,42 @@
cursor: pointer;
}
.aArt_abst div b.Tab_col {
.aArt_abst .titTop b.Tab_col {
border: 1px solid #ddd;
border-bottom-color: #fff;
}
.aArt_abst .titHtml {
letter-spacing: .03em;
margin: 15px 10px 0 10px;
color: #444;
font-size: 15px;
line-height: 1.4;
word-break: break-word;
}
.aArt_abst>p {
margin: 25px 10px 0 10px;
text-align: justify;
color: #444;
color: #666;
font-size: 15px;
line-height: 1.4;
/* text-indent: 2.6rem; */
word-break: break-word;
}
.aArt_abst .titHtml .MaxPicture {
text-align: center;
}
.aArt_abst .titHtml .MaxPicture>img {
margin-bottom: 10px;
}
.aArt_abst .titHtml .MaxPicture>font {
display: block;
margin: 0 auto;
font-size: 13px;
}
</style>

View File

@@ -37,6 +37,26 @@
<p v-html="scope.row.title"></p>
</template>
</el-table-column>
<el-table-column label="Html" width="100px" align="center">
<template slot-scope="scope">
<p>
<span style="margin: 0 5px 0 0;">File: </span>
<b class="el-icon-check" style="color: #0fa31d;font-weight: bold;"
v-if="scope.row.file_html!=''">
</b>
<b class="el-icon-close" style="color: #ff0000;font-weight: bold;"
v-if="scope.row.file_html==''">
</b>
</p>
<p>
<span style="margin: 0 5px 0 0;">Layout: </span>
<b class="el-icon-check" style="color: #0fa31d;font-weight: bold;" v-if="scope.row.mains!=''">
</b>
<b class="el-icon-close" style="color: #ff0000;font-weight: bold;" v-if="scope.row.mains==''">
</b>
</p>
</template>
</el-table-column>
<el-table-column label="Sort" width="60px" align="center">
<template slot-scope="scope">
<p v-html="scope.row.sort"></p>
@@ -54,7 +74,6 @@
@click="ChoseRelated(scope.row)">
Relevant</el-button>
</p>
</template>
</el-table-column>
</el-table>
@@ -93,7 +112,6 @@
</span>
</el-dialog>
<!-- 话题信息 -->
<el-dialog title="" :visible.sync="topicVisible" width="550px">
<el-form ref="editMes" :model="EditMes" label-width="50px">
@@ -171,6 +189,68 @@
<el-button type="primary" @click="RelatVisible = false" plain>Close</el-button>
</span>
</el-dialog>
<!-- Html排版 -->
<el-dialog title="HTML layout" :visible.sync="HtmlVisible" width="900px" :close-on-click-modal="false">
<div style="margin: 0 0 0 10px;" class="htmlfile">
<h3 style="font-size: 16px;margin-bottom: 25px;line-height: 22px;letter-spacing: -0.5px;word-break: break-word;"
v-html="UpHtpFIle.title"></h3>
<div target="_blank" v-if="UpHtpFIle.htmlfile==''">
<font style="font-size: 16px;">Html File :</font>
<span style="color: rgb(102, 102, 102);margin-left: 15px;">No Manuscript</span>
</div>
<div target="_blank" v-if="UpHtpFIle.htmlfile!=''">
<font style="font-size: 16px;">Html File :</font>
<a :href="'https://www.tmrjournals.com/public/articleHTML/'+UpHtpFIle.htmlfile" target="_blank">
<img src="../../assets/img/icon_0.png" style="vertical-align: sub;margin: 0 15px;">
<span style="color: #333;">Html File</span>
<i class="el-icon-view" style="color: #66b1ff;font-weight: bold;margin-left: 20px;"></i>
</a>
</div>
<!-- <div style="margin: 20px 0 0 88px">
<el-upload ref="uploadUpHt" class="upload-demo" :action="baseUrl + 'api/Production/up_pdf_file'"
accept=".pdf," name="pdf" :before-upload="beforeupload_UpHt" :on-error="uperr_UpHt"
:on-success="upSuccess_UpHt" :limit="1" :on-exceed="alertlimit" :on-remove="removefileUpHt"
style="display: inline-block;">
<div class="el-upload__text" style="padding:6px 10px;background-color: #006699;">
<font style="color: #fff;font-size: 12px;">
<b class="el-icon-upload2" style="font-weight: bold;margin-right: 5px;"></b>
Click Re upload
</font>
</div>
<div class="el-upload__tip" slot="tip" style="vertical-align: top;">Only pdf file
can be uploaded(.pdf)</div>
</el-upload>
</div> -->
<div style="border-top: 2px dashed #0066994d;margin: 20px 0 0 0;padding: 20px 0 0 0;">
<font style="font-size: 16px;">Html Layout :</font>
<span style="margin-left: 15px;color: #666;" v-if="UpHtpFIle.mains==''">No Layout</span>
<span style="margin-left: 15px;color: #0b4b6a;" v-if="UpHtpFIle.mains!=''">Typesetting
completed</span>
<el-button type="primary" icon="el-icon-document-copy" @click="htmlLayout()"
style="margin-left: 20px;">
<font v-if="UpHtpFIle.mains==''">Creat Html Proofread</font>
<font v-if="UpHtpFIle.mains!=''">Edit Html Proofread</font>
</el-button>
<div class="titHtml" v-if="UpHtpFIle.mains!=''">
<div v-for="(item,index) in UpHtpFIle.mains">
<p v-html="item.content" v-if="item.width==0"></p>
<p v-if="item.width!=0" class="MaxPicture">
<img :src="baseUrl+'public/mainimg/'+item.content" :style="'width:'+item.width+'px'">
<font :style="'width:'+item.width+'px'">{{item.note}}
</font>
</p>
</div>
</div>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="HtmlVisible = false" plain>Cancel</el-button>
</span>
</el-dialog>
</div>
</template>
@@ -206,9 +286,21 @@
RelatMes: {
keyword: ''
},
UpHtpFIle: {
title: '',
article_id: '',
htmlfile: '',
mains: [],
},
UpLoadFile: {
article_id: '',
file: '',
},
HtmlMes: {},
EditVisible: false,
RelatVisible: false,
topicVisible: false,
HtmlVisible: false,
topListName: [],
listopic: [],
title_header: '',
@@ -546,14 +638,59 @@
});
},
// 文章html弹出层
htmlContet(e) {
this.UpHtpFIle.article_id = e.article_id
this.UpHtpFIle.doi = e.doi
this.UpHtpFIle.htmlfile = e.file_html
this.UpHtpFIle.title = e.title
this.UpHtpFIle.mains = e.mains
this.UpLoadFile.article_id = e.article_id
this.HtmlVisible = true
},
// 修改文章html
htmlContet() {
this.$router.push({
path: 'comArtHtml',
query: {
id: 502
}
htmlLayout() {
const loading = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.$api
.post('api/Production/getProductionMainsByDoi', {
doi: this.UpHtpFIle.doi
})
.then(res => {
if (res.code == 0) {
loading.close()
this.HtmlVisible = false
if (this.UpHtpFIle.mains == '') {
this.$router.push({
path: 'comArtHtmlCreat',
query: {
doi: this.UpHtpFIle.doi,
artID: this.UpHtpFIle.article_id
}
});
} else {
this.$router.push({
path: 'comArtHtmlEdit',
query: {
artID: this.UpHtpFIle.article_id
}
});
}
} else {
loading.close()
this.$message.error(res.msg);
}
})
.catch(err => {
loading.close()
this.$message.error(err);
});
},
// 分页导航
@@ -569,6 +706,41 @@
window.open(urlBlan, '_blank')
},
// 文件上传
beforeupload_UpHt(file) {
},
uperr_UpHt(err) {
this.$message.error('upload error');
},
upSuccess_UpHt(res, file) {
return
if (res.code == 0) {
this.UpLoadFile.file = 'pdf/' + res.upurl;
this.$api
.post('api/Production/updateArticlePdf', this.UpLoadFile)
.then(res => {
if (res.code == 0) {
this.$message.success('Upload PDF succeeded!');
this.$refs.uploadUpHt.clearFiles();
this.UpLoadFile.file = '';
}
})
.catch(err => {
this.$message.error(err);
});
} else {
this.$message.error('service error' + res.msg);
}
},
removefileUpHt(file, fileList) {
this.UpLoadFile.file = '';
},
alertlimit() {
this.$message.error('The maximum number of uploaded files has been exceeded');
},
}
};
</script>
@@ -668,4 +840,100 @@
right: 10px;
top: 10px;
}
.titHtml {
border: 2px dotted #ccc;
background-color: #f7f7f7;
border-radius: 2px;
padding: 0px 20px 20px 20px;
margin: 15px 0 0 0;
}
.titHtml>div {
letter-spacing: .03em;
margin: 15px 0 0 0;
}
.titHtml>div>p {
font-size: 14px;
line-height: 1.4;
min-height: 19px;
color: #444;
word-break: break-word;
font-family: "Helvetica Neue", Helvetica, Georgia, sans-serif;
}
.titHtml .MaxPicture {
text-align: center;
}
.titHtml .MaxPicture>img {
margin-bottom: 10px;
}
.titHtml .MaxPicture>font {
display: block;
margin: 0 auto;
font-size: 13px;
}
/deep/.htmlfile .upload-demo {
overflow: auto;
}
/deep/.htmlfile .upload-demo .el-upload {
width: 55px;
float: left;
margin-left: 5px;
border: none;
text-align: left;
height: 35px;
}
/deep/.htmlfile .upload-demo .el-upload {
margin-left: 0 !important;
width: 150px !important;
height: auto !important;
text-align: center !important;
}
/deep/.htmlfile .upload-demo .el-upload__tip {
margin-left: 15px;
float: left;
}
/deep/.htmlfile .upload-demo .el-upload-list {
margin-top: 4px;
margin-left: 20px;
float: left;
width: 35px;
display: none;
}
/deep/.htmlfile .upload-demo .el-upload-list .el-upload-list__item {
width: 30px !important;
}
/deep/.htmlfile .upload-demo .el-upload-list .el-upload-list__item:hover {
cursor: pointer;
}
/deep/.htmlfile .upload-demo .el-upload-list .el-upload-list__item .el-upload-list__item-name {
width: 30px;
}
/deep/.htmlfile .upload-demo .el-upload-list .el-upload-list__item .el-upload-list__item-status-label {
display: none;
}
/deep/.htmlfile .upload-demo .el-upload-list__item:hover .el-icon-close {
display: none;
}
</style>

View File

@@ -353,6 +353,18 @@
</a>
</p>
<br clear="both" v-if="totalpageFileList">
<h4 v-if="supplementaryFileList">Supplementary Material : </h4>
<p v-if="supplementaryFileList">
<a v-for="item in supplementaryFileList" :href="mediaUrl + item.file_url">
<img src="../../assets/img/icon_0.png">
<span>
<font>Uploader : </font>{{item.username}}
<i><i class="el-icon-time"></i>{{formatDate(item.ctime)}}</i>
</span>
<i class="el-icon-download download"></i>
</a>
</p>
<br clear="both" v-if="supplementaryFileList">
<h4>Manuscirpt : </h4>
<p>
<a v-for="item in manuscirptFileList" :href="mediaUrl + item.file_url">
@@ -409,6 +421,7 @@
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
supplementaryFileList:[],
};
},
created: function() {
@@ -488,6 +501,7 @@
this.picturesAndTablesFileList = res.picturesAndTables;
this.manuscirptFileList = res.manuscirpt;
this.totalpageFileList = res.totalpage;
this.supplementaryFileList = res.supplementary;
})
.catch(err => {
console.log(err);

View File

@@ -150,6 +150,18 @@
</a>
</p>
<br clear="both" v-if="totalpageFileList">
<h4 v-if="supplementaryFileList">Supplementary Material : </h4>
<p v-if="supplementaryFileList">
<a v-for="item in supplementaryFileList" :href="mediaUrl + item.file_url">
<img src="../../assets/img/icon_0.png">
<span>
<font>Uploader : </font>{{item.username}}
<i><i class="el-icon-time"></i>{{formatDate(item.ctime)}}</i>
</span>
<i class="el-icon-download download"></i>
</a>
</p>
<br clear="both" v-if="supplementaryFileList">
<h4>Manuscirpt : </h4>
<p>
<a v-for="item in manuscirptFileList" :href="mediaUrl + item.file_url">
@@ -190,6 +202,7 @@
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
supplementaryFileList: [],
};
},
created: function() {
@@ -258,6 +271,7 @@
this.picturesAndTablesFileList = res.picturesAndTables;
this.manuscirptFileList = res.manuscirpt;
this.totalpageFileList = res.totalpage;
this.supplementaryFileList = res.supplementary;
})
.catch(err => {
console.log(err);

File diff suppressed because one or more lines are too long

View File

@@ -8,18 +8,30 @@
</el-breadcrumb>
</div>
<div class="container" style="height: 97%;min-width: 1000px;background-color: #fafafa;padding: 10px 0 0 0;">
<h3 class="man_Title">{{detailTitle}}</h3>
<h3 class="man_Title">
{{detailTitle}}
</h3>
<div class="type_MTxt">
<div v-for="(item,index) in Main_List">
<p v-html="item.text"></p>
<p v-html="item.text" v-if="!item.p_main_img_id"></p>
<p v-if="item.p_main_img_id" class="MaxPicture">
<img :src="baseUrl+'public/mainimg/'+item.content" :style="'width:'+item.width+'px'">
<font :style="'width:'+item.width+'px'">{{item.note}}
</font>
</p>
<font v-if="item.getnum!=0" class="chNumer">{{item.getnum}}</font>
<b class="MaxBtn" @click="MTxtEdit(item,index)" style="background-color: #006699;right: 40px;">
<b class="MaxBtn" @click="MTxtEdit(item,index)" style="background-color: #006699;right: 80px;">
<i class="el-icon-edit"></i>
</b>
<!-- <b class="MaxBtn" @click="MTxtPic(item,index)" style="background-color: #13bc20;right: 80px;">
<i class="el-icon-picture-outline"></i>
<b class="MaxBtn" @click="MTxtPic(item,index)" style="background-color: #13bc20;right: 40px;">
<svg t="1684978324047" class="icon" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="1967" width="15" height="15">
<path
d="M512 46.208a42.666667 42.666667 0 0 1 4.992 85.077333L512 131.541333H174.208a42.666667 42.666667 0 0 0-42.368 37.717334l-0.298667 4.949333v487.850667L307.2 501.12a88.874667 88.874667 0 0 1 112.042667-6.570667l5.845333 4.608 150.442667 128.896 101.973333-101.888a88.874667 88.874667 0 0 1 110.122667-12.373333l6.058666 4.138667 104.832 78.592V512a42.666667 42.666667 0 0 1 85.077334-4.992l0.298666 4.992v342.698667a128 128 0 0 1-120.490666 127.786666l-7.509334 0.213334H174.208a128 128 0 0 1-127.786667-120.490667l-0.213333-7.509333V174.208a128 128 0 0 1 120.490667-127.786667l7.509333-0.213333H512zM366.378667 563.2l-1.536 0.853333-233.301334 213.76v76.885334a42.666667 42.666667 0 0 0 37.717334 42.368l4.949333 0.298666H855.893333a42.666667 42.666667 0 0 0 42.368-37.717333l0.298667-4.949333v-151.808l-3.285333-2.090667-152.789334-114.602667a3.541333 3.541333 0 0 0-3.2-0.554666l-1.450666 0.853333-97.28 97.28 76.970666 66.048a42.666667 42.666667 0 0 1-51.2 68.010667l-4.309333-3.2-292.437333-250.666667a3.541333 3.541333 0 0 0-3.2-0.768z m415.829333-516.992a42.666667 42.666667 0 0 1 42.410667 37.717333l0.256 4.949334v96h96a42.666667 42.666667 0 0 1 4.992 85.077333l-4.992 0.256h-96v96a42.666667 42.666667 0 0 1-85.034667 4.992l-0.298667-4.992v-96h-96a42.666667 42.666667 0 0 1-4.949333-85.034667l4.949333-0.298666h96v-96a42.666667 42.666667 0 0 1 42.666667-42.666667z"
fill="#ffffff" p-id="1968"></path>
</svg>
</b>
<b class="MaxBtn" @click="MTxtTable(item,index)" style="background-color: #e07404;right:40px;">
<!-- <b class="MaxBtn" @click="MTxtTable(item,index)" style="background-color: #e07404;right:40px;">
<i class="el-icon-document-add"></i>
</b> -->
<b class="MaxBtn" @click="MTxtDelet(item,index)" style="background-color: #bc1a13;right: 0px;">
@@ -27,11 +39,17 @@
</b>
</div>
</div>
<div style="height: 20px;"></div>
<div style="height: 20px;" v-if="Art_Doi==undefined"></div>
<div style="margin: 20px 0 0 0;text-align: center;padding-bottom: 30px;" v-if="Art_Doi!=undefined">
<el-button icon="el-icon-finished" type="primary" style="width: 350px;" @click="pushOnline()">
Push Online
</el-button>
</div>
</div>
<!--修改文本 -->
<el-dialog title="Modify Text" :visible.sync="txtVisible" width="800px" :close-on-click-modal="false">
<el-dialog title="Edit Text" :visible.sync="txtVisible" width="800px" :close-on-click-modal="false">
<el-form ref="editMes" :model="txtStyle" label-width="1px">
<p style="margin: 0 5px 15px 5px;line-height: 18px;font-size: 13px;color: #aaa;">{{exegesis}}</p>
<el-form-item label="">
@@ -60,54 +78,59 @@
</span>
</el-dialog>
<!--添加图片 -->
<el-dialog title="Insert Picture" :visible.sync="pictVisible" width="800px" :close-on-click-modal="false">
<!--添加/修改图片 -->
<el-dialog :title="picStyle.visiTitle" :visible.sync="pictVisible" width="800px" :close-on-click-modal="false">
<el-form ref="editMes" :model="picStyle" label-width="150px">
<el-form-item>
<span slot="label">
<font style="color: #f56c6c;margin-right: 5px;">*</font>
Picture :
</span>
<el-upload class="avatar-uploader" :action="baseUrl+'api/Production/up_articlepic_file'"
:show-file-list="false" name="articleicon" :on-success="handleAvatarSuccess"
<el-upload class="avatar-uploader" :action="baseUrl+'api/Production/up_mainimg_file'"
:show-file-list="false" name="mainimg" :on-success="handleAvatarSuccess"
:on-error="handleAvatarError" :before-upload="beforeAvatarUpload">
<img v-if="picStyle.imageUrl" :src="picStyle.imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="Bottom Title :">
<!-- <el-form-item label="Bottom Title :">
<el-input placeholder="Please enter the table title..." v-model="picStyle.titleBot">
</el-input>
</el-form-item>
<el-form-item label="Bottom Describe :">
<el-input placeholder="Please enter the table describe..." v-model="picStyle.titleDes">
</el-form-item> -->
<el-form-item label="Picture Describe :">
<el-input placeholder="Please enter the table describe..." v-model="picStyle.note" type="textarea"
:rows="3">
</el-input>
</el-form-item>
</el-form>
<p style="margin: 20px 0;text-align: right;">
<el-button type="warning" plain
@click="picStyle.picUrl='';picStyle.titleBot='';picStyle.titleDes='';picStyle.imageUrl='';">
@click="picStyle.picUrl='';picStyle.titleBot='';picStyle.note='';picStyle.imageUrl='';">
<i class="el-icon-refresh" style="margin-right: 5px;"></i>Empty
</el-button>
</p>
<div class="lineStyle" v-if="picStyle.picUrl!=''">
<div>
<span class="title">Picture Width :</span>
<el-input v-model="picStyle.picwith" style="width: 120px;">
<span class="title" style="margin-left: 25px;">Picture Width :</span>
<el-input v-model="picStyle.width" style="width: 120px;">
<template slot="append">px</template>
</el-input>
</div>
</div>
<div style="padding: 0 20px;" v-if="picStyle.picUrl!=''">
<div style="text-align: center;">
<img :src="baseUrl+'public/'+picStyle.picUrl" :style="'width:'+picStyle.picwith+'px'">
<img :src="baseUrl+'public/mainimg/'+picStyle.picUrl" :style="'width:'+picStyle.width+'px'">
</div>
<p style="text-align: center;margin: 10px 0 15px 0;font-size: 12px;color: #006699;">
<b>{{picStyle.titleBot}}</b>
</p>
<p style="text-align: center;margin: 10px 0 0 0;font-size: 12px;">{{picStyle.titleDes}}</p>
<p style="text-align: center;margin: 10px auto 0;font-size: 12px;line-height: 22px;"
:style="'width:'+picStyle.width+'px'" v-html="picStyle.note"></p>
</div>
<span slot="footer" class="dialog-footer" v-if="picStyle.picUrl!=''">
<el-button @click="pictVisible=false">
Cancel
</el-button>
<el-button type="primary" @click="savePic">
<i class="el-icon-finished" style="margin-right: 5px;"></i>
Save Picture
@@ -192,9 +215,11 @@
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
Art_Id: this.$route.query.id,
Art_Doi: this.$route.query.doi,
Art_web_Id: this.$route.query.artID,
Art_P_Id: '',
btnDisble: true,
detailTitle: '',
detailMes: {},
Main_List: [],
txtStyle: {
text: '',
@@ -212,11 +237,11 @@
threeVisible: false,
picStyle: {
titleBot: '',
titleDes: '',
note: '',
// picUrl: 'https://www.tmrjournals.cn/public/articleHTML/TMR/TMR20230213002/images/alternativeImage/TMR20230213002-F004.jpg',
picUrl: '',
imageUrl: '',
picwith: '500'
width: '500'
},
pictVisible: false,
exegesis: "The following contents'<b></b>,<i></i>'are necessary for the generation phase, please do not delete them!!!",
@@ -230,6 +255,16 @@
methods: {
//
getDate() {
let urlLInk = ''
let urlTask = {}
if (this.Art_Id != undefined) {
urlLInk = 'api/Production/getProductionMains'
urlTask.p_article_id = this.Art_Id
}
if (this.Art_Doi != undefined) {
urlLInk = 'api/Production/getProductionMainsByDoi'
urlTask.doi = this.Art_Doi
}
const loading = this.$loading({
lock: true,
text: 'Loading...',
@@ -239,22 +274,15 @@
//
this.$api
.post('api/Production/getProductionMains', {
p_article_id: this.Art_Id
})
.post(urlLInk, urlTask)
.then(res => {
if (res.code == 0) {
this.detailTitle = res.data.production.title
this.detailMes = res.data.mains
this.Main_List = []
for (let i = 0; i < this.detailMes.length; i++) {
this.Main_List.push({
p_main_id: this.detailMes[i].p_main_id,
text: this.detailMes[i].content,
value: i + 1,
getnum: 0,
check: false,
})
this.Art_P_Id = res.data.production.p_article_id
this.Main_List = res.data.mains
for (let i = 0; i < this.Main_List.length; i++) {
this.Main_List[i].text = this.Main_List[i].content
this.Main_List[i].getnum = 0
}
loading.close()
} else {
@@ -268,13 +296,21 @@
});
},
//
// /
MTxtEdit(val, num) {
this.txtVisible = true
this.txtStyle = JSON.parse(JSON.stringify(val))
this.txtStyle.index = num
this.txtStyle.ChGtpTxt = ''
this.btnDisble = true
if (val.p_main_img_id == undefined) {
this.txtVisible = true
this.txtStyle = JSON.parse(JSON.stringify(val))
this.txtStyle.index = num
this.txtStyle.ChGtpTxt = ''
this.btnDisble = true
} else {
this.picStyle = JSON.parse(JSON.stringify(val));
this.picStyle.picUrl = this.picStyle.content;
this.picStyle.imageUrl = this.baseUrl + 'public/mainimg/' + this.picStyle.content
this.picStyle.visiTitle = 'Edit Picture'
this.pictVisible = true
}
},
// gpt
@@ -300,7 +336,7 @@
this.btnDisble = true
this.$message.error('Converting fail!');
});
}else{
} else {
this.$message.warning('Converting, please wait!');
}
},
@@ -319,8 +355,10 @@
})
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully edit text!');
this.txtVisible = false
this.Main_List[this.txtStyle.index].text = JSON.parse(JSON.stringify(this.txtStyle.text))
this.getDate()
// this.Main_List[this.txtStyle.index].text = JSON.parse(JSON.stringify(this.txtStyle.text))
} else {
this.$message.error(res.msg);
}
@@ -332,29 +370,78 @@
//
MTxtPic(val, num) {
this.picStyle.p_main_id = val.p_main_id;
if (!val.p_main_img_id) {
this.picStyle.pre_type = 'main';
this.picStyle.body = val.p_main_id;
} else {
this.picStyle.pre_type = 'img';
this.picStyle.body = val.p_main_img_id;
}
this.picStyle.p_article_id = this.Art_P_Id;
this.picStyle.titleBot = '';
this.picStyle.titleDes = '';
this.picStyle.note = '';
this.picStyle.width = '500';
this.picStyle.picUrl = '';
this.picStyle.imageUrl = ''
this.picStyle.visiTitle = 'Insert Picture Backward'
this.pictVisible = true
},
//
savePic() {
let dataImage = ''
dataImage = '<div style="text-align: center;"><img src="' + this.baseUrl + 'public/' + this.picStyle
.picUrl + '" style="width:' + this.picStyle.picwith + 'px"></div>'
if (this.picStyle.titleBot != '') {
dataImage = dataImage +
'<p style="text-align: center;margin: 10px 0 15px 0;font-size: 12px;color: #006699;">' +
this.lineStyle.titleBot + '</p>'
// let dataImage = ''
// dataImage = '<div style="text-align: center;"><img src="' + this.baseUrl + 'public/' + this.picStyle
// .picUrl + '" style="width:' + this.picStyle.width + 'px"></div>'
// if (this.picStyle.titleBot != '') {
// dataImage = dataImage +
// '<p style="text-align: center;margin: 10px 0 15px 0;font-size: 12px;color: #006699;">' +
// this.lineStyle.titleBot + '</p>'
// }
// if (this.picStyle.note != '') {
// dataImage = dataImage + '<p style="text-align: center;margin: 10px 0 0 0;font-size: 12px;">' +
// this.lineStyle.note + '</p>'
// }
// console.log(dataImage)
if (this.picStyle.note == '') {
this.$message.error('Please fill in the picture describe!');
return
}
if (this.picStyle.titleDes != '') {
dataImage = dataImage + '<p style="text-align: center;margin: 10px 0 0 0;font-size: 12px;">' +
this.lineStyle.titleDes + '</p>'
this.picStyle.content = this.picStyle.picUrl
if (this.picStyle.visiTitle == 'Edit Picture') {
this.$api
.post('api/Production/editProductionMainImg', this.picStyle)
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully edit image!');
this.pictVisible = false
this.getDate()
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
this.$api
.post('api/Production/addProductionMainImg', this.picStyle)
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully added image!');
this.pictVisible = false
this.getDate()
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
console.log(dataImage)
},
//
@@ -372,6 +459,7 @@
this.$message.error('Please fill in the table content!');
return
}
console.log(this.lineStyle.textarea)
let txtRows = this.lineStyle.textarea.split("\n");
let txtColum = []
for (let i = 0; i < txtRows.length; i++) {
@@ -431,28 +519,86 @@
console.log(dataTable)
},
//
// /
MTxtDelet(val, num) {
this.$api
.post('api/Production/delProductionMain', {
p_main_id: val.p_main_id
if (!val.p_main_img_id) {
this.$api
.post('api/Production/delProductionMain', {
p_main_id: val.p_main_id
})
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully deleted!')
this.getDate()
// this.Main_List.splice(num, 1);
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
this.$api
.post('api/Production/delProductionMainImg', {
p_main_img_id: val.p_main_img_id
})
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully deleted!')
this.getDate()
// this.Main_List.splice(num, 1);
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
},
//
pushOnline() {
//
this.$confirm('Are you sure you want to push it to the official website?', 'Tips', {
type: 'warning'
})
.then(res => {
if (res.code == 0) {
this.Main_List.splice(num, 1);
} else {
this.$message.error(res.msg);
}
.then(() => {
this.$api
.post('api/Production/pushMainToWeb', {
article_id: this.Art_web_Id,
p_article_id: this.Art_P_Id
})
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully push!')
this.getDate()
if (this.Art_Doi != undefined) {
this.$router.push({
path: 'comArtHtmlEdit',
query: {
artID: this.Art_web_Id
}
});
}
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(err => {
this.$message.error(err);
});
.catch(() => {});
},
//
handleAvatarSuccess(res, file) {
if (res.code == 0) {
this.picStyle.picUrl = res.upurl;
this.$forceUpdate()
} else {
this.$message.error(res.msg);
}
@@ -540,9 +686,16 @@
border-bottom: 1px solid #dde1eb;
box-shadow: 0 5px 5px -2px rgb(134 134 134);
padding: 12px 25px 8px 25px;
font-size: 15px;
line-height: 20px;
font-size: 16px;
line-height: 24px;
color: #333;
position: relative;
}
.man_Title button {
position: absolute;
top: 10px;
right: 10px;
}
@@ -587,6 +740,20 @@
padding: 0 6px;
}
.type_MTxt>div .MaxPicture {
text-align: center;
}
.type_MTxt>div .MaxPicture>img {
margin-bottom: 10px;
}
.type_MTxt>div .MaxPicture>font {
display: block;
margin: 0 auto;
font-size: 13px;
}
.type_MTxt>div .MaxBtn {
position: absolute;
right: 0;

View File

@@ -0,0 +1,759 @@
<template>
<div style="height: 98%;">
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-document-copy"></i> Artcile Html
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container" style="height: 97%;min-width: 1000px;background-color: #fafafa;padding: 10px 0 0 0;">
<h3 class="man_Title">
{{detailTitle}}
</h3>
<div class="type_MTxt">
<div v-for="(item,index) in Main_List">
<p v-html="item.text" v-if="item.width==0"></p>
<p v-if="item.width!=0" class="MaxPicture">
<img :src="baseUrl+'public/mainimg/'+item.content" :style="'width:'+item.width+'px'">
<font :style="'width:'+item.width+'px'">{{item.note}}
</font>
</p>
<font v-if="item.getnum!=0" class="chNumer">{{item.getnum}}</font>
<b class="MaxBtn" @click="MTxtEdit(item,index)" style="background-color: #006699;right: 120px;">
<i class="el-icon-edit"></i>
</b>
<b class="MaxBtn" @click="MTxtAdtxt(item,index)" style="background-color: #1c0099;right: 80px;">
<svg t="1685694820833" class="icon" viewBox="0 0 1025 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="10080" width="15" height="15">
<path
d="M978.823529 843.294118 873.411765 843.294118 873.411765 978.823529C873.411765 1003.760941 853.172706 1024 828.235294 1024 803.297882 1024 783.058824 1003.760941 783.058824 978.823529L783.058824 843.294118 677.647059 843.294118C652.709647 843.294118 632.470588 823.055059 632.470588 798.117647 632.470588 773.150118 652.709647 752.941176 677.647059 752.941176L783.058824 752.941176 783.058824 647.529412C783.058824 622.561882 803.297882 602.352941 828.235294 602.352941 853.172706 602.352941 873.411765 622.561882 873.411765 647.529412L873.411765 752.941176 978.823529 752.941176C1003.760941 752.941176 1024 773.150118 1024 798.117647 1024 823.055059 1003.760941 843.294118 978.823529 843.294118ZM647.529412 692.705882 225.882353 692.705882C200.944941 692.705882 180.705882 672.466824 180.705882 647.529412 180.705882 622.561882 200.944941 602.352941 225.882353 602.352941L647.529412 602.352941C672.466824 602.352941 692.705882 622.561882 692.705882 647.529412 692.705882 672.466824 672.466824 692.705882 647.529412 692.705882ZM647.529412 331.294118 225.882353 331.294118C200.944941 331.294118 180.705882 311.055059 180.705882 286.117647 180.705882 261.150118 200.944941 240.911059 225.882353 240.911059L647.529412 240.911059C672.466824 240.911059 692.705882 261.150118 692.705882 286.117647 692.705882 311.055059 672.466824 331.294118 647.529412 331.294118ZM647.529412 512 225.882353 512C200.944941 512 180.705882 491.760941 180.705882 466.823529 180.705882 441.856 200.944941 421.647059 225.882353 421.647059L647.529412 421.647059C672.466824 421.647059 692.705882 441.856 692.705882 466.823529 692.705882 491.760941 672.466824 512 647.529412 512ZM828.235294 542.117647C803.297882 542.117647 783.058824 521.878588 783.058824 496.911059L783.058824 90.352941 90.352941 90.352941 90.352941 903.529412 647.529412 903.529412C672.466824 903.529412 692.705882 923.738353 692.705882 948.705882 692.705882 973.643294 672.466824 993.882353 647.529412 993.882353L45.176471 993.882353C20.239059 993.882353 0 973.643294 0 948.705882L0 45.176471C0 20.239059 20.239059 0 45.176471 0L828.235294 0C853.172706 0 873.411765 20.239059 873.411765 45.176471L873.411765 496.911059C873.411765 521.878588 853.172706 542.117647 828.235294 542.117647Z"
fill="#ffffff" p-id="10081"></path>
</svg>
</b>
<b class="MaxBtn" @click="MTxtPic(item,index)" style="background-color: #13bc20;right: 40px;">
<svg t="1684978324047" class="icon" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="1967" width="15" height="15">
<path
d="M512 46.208a42.666667 42.666667 0 0 1 4.992 85.077333L512 131.541333H174.208a42.666667 42.666667 0 0 0-42.368 37.717334l-0.298667 4.949333v487.850667L307.2 501.12a88.874667 88.874667 0 0 1 112.042667-6.570667l5.845333 4.608 150.442667 128.896 101.973333-101.888a88.874667 88.874667 0 0 1 110.122667-12.373333l6.058666 4.138667 104.832 78.592V512a42.666667 42.666667 0 0 1 85.077334-4.992l0.298666 4.992v342.698667a128 128 0 0 1-120.490666 127.786666l-7.509334 0.213334H174.208a128 128 0 0 1-127.786667-120.490667l-0.213333-7.509333V174.208a128 128 0 0 1 120.490667-127.786667l7.509333-0.213333H512zM366.378667 563.2l-1.536 0.853333-233.301334 213.76v76.885334a42.666667 42.666667 0 0 0 37.717334 42.368l4.949333 0.298666H855.893333a42.666667 42.666667 0 0 0 42.368-37.717333l0.298667-4.949333v-151.808l-3.285333-2.090667-152.789334-114.602667a3.541333 3.541333 0 0 0-3.2-0.554666l-1.450666 0.853333-97.28 97.28 76.970666 66.048a42.666667 42.666667 0 0 1-51.2 68.010667l-4.309333-3.2-292.437333-250.666667a3.541333 3.541333 0 0 0-3.2-0.768z m415.829333-516.992a42.666667 42.666667 0 0 1 42.410667 37.717333l0.256 4.949334v96h96a42.666667 42.666667 0 0 1 4.992 85.077333l-4.992 0.256h-96v96a42.666667 42.666667 0 0 1-85.034667 4.992l-0.298667-4.992v-96h-96a42.666667 42.666667 0 0 1-4.949333-85.034667l4.949333-0.298666h96v-96a42.666667 42.666667 0 0 1 42.666667-42.666667z"
fill="#ffffff" p-id="1968"></path>
</svg>
</b>
<!-- <b class="MaxBtn" @click="MTxtTable(item,index)" style="background-color: #e07404;right:40px;">
<i class="el-icon-document-add"></i>
</b> -->
<b class="MaxBtn" @click="MTxtDelet(item,index)" style="background-color: #bc1a13;right: 0px;">
<i class="el-icon-delete"></i>
</b>
</div>
</div>
<div style="height: 20px;"></div>
</div>
<!--修改/添加文本 -->
<el-dialog :title="txtStyle.visiTitle" :visible.sync="txtVisible" width="800px" :close-on-click-modal="false">
<el-form ref="editMes" :model="txtStyle" label-width="1px">
<el-form-item label="">
<el-input type="textarea" placeholder="Please enter the table content..." v-model="txtStyle.text"
autosize>
</el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="txtVisible=false">
Cancel
</el-button>
<el-button type="primary" @click="saveTxt">
<i class="el-icon-finished" style="margin-right: 5px;"></i>
Save
</el-button>
</span>
</el-dialog>
<!--添加/修改图片 -->
<el-dialog :title="picStyle.visiTitle" :visible.sync="pictVisible" width="800px" :close-on-click-modal="false">
<el-form ref="editMes" :model="picStyle" label-width="150px">
<el-form-item>
<span slot="label">
<font style="color: #f56c6c;margin-right: 5px;">*</font>
Picture :
</span>
<el-upload class="avatar-uploader" :action="baseUrl+'api/Production/up_mainimg_file'"
:show-file-list="false" name="mainimg" :on-success="handleAvatarSuccess"
:on-error="handleAvatarError" :before-upload="beforeAvatarUpload">
<img v-if="picStyle.imageUrl" :src="picStyle.imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<!-- <el-form-item label="Bottom Title :">
<el-input placeholder="Please enter the table title..." v-model="picStyle.titleBot">
</el-input>
</el-form-item> -->
<el-form-item label="Picture Describe :">
<el-input placeholder="Please enter the table describe..." v-model="picStyle.note" type="textarea"
:rows="3">
</el-input>
</el-form-item>
</el-form>
<p style="margin: 20px 0;text-align: right;">
<el-button type="warning" plain
@click="picStyle.picUrl='';picStyle.titleBot='';picStyle.note='';picStyle.imageUrl='';">
<i class="el-icon-refresh" style="margin-right: 5px;"></i>Empty
</el-button>
</p>
<div class="lineStyle" v-if="picStyle.picUrl!=''">
<div>
<span class="title" style="margin-left: 25px;">Picture Width :</span>
<el-input v-model="picStyle.width" style="width: 120px;">
<template slot="append">px</template>
</el-input>
</div>
</div>
<div style="padding: 0 20px;" v-if="picStyle.picUrl!=''">
<div style="text-align: center;">
<img :src="baseUrl+'public/mainimg/'+picStyle.picUrl" :style="'width:'+picStyle.width+'px'">
</div>
<p style="text-align: center;margin: 10px 0 15px 0;font-size: 12px;color: #006699;">
<b>{{picStyle.titleBot}}</b>
</p>
<p style="text-align: center;margin: 10px auto 0;font-size: 12px;line-height: 22px;"
:style="'width:'+picStyle.width+'px'" v-html="picStyle.note"></p>
</div>
<span slot="footer" class="dialog-footer" v-if="picStyle.picUrl!=''">
<el-button @click="pictVisible=false">
Cancel
</el-button>
<el-button type="primary" @click="savePic">
<i class="el-icon-finished" style="margin-right: 5px;"></i>
Save Picture
</el-button>
</span>
</el-dialog>
<!-- 添加表格 -->
<el-dialog title="Insert Table" :visible.sync="threeVisible" width="1000px" :close-on-click-modal="false">
<el-form ref="editMes" :model="lineStyle" label-width="115px">
<el-form-item label="Top Title :">
<el-input placeholder="Please enter the table title..." v-model="lineStyle.titleTop">
</el-input>
</el-form-item>
<el-form-item>
<span slot="label">
<font style="color: #f56c6c;margin-right: 5px;">*</font>
Content :
</span>
<el-input type="textarea" :rows="5" placeholder="Please enter the table content..."
v-model="lineStyle.textarea">
</el-input>
</el-form-item>
<el-form-item label="Bottom Title :">
<el-input placeholder="Please enter the table title..." v-model="lineStyle.titleBot">
</el-input>
</el-form-item>
</el-form>
<p style="margin: 20px 0;text-align: right;">
<el-button type="warning" plain
@click="lineStyle.textarea='';lineStyle.titleTop='';lineStyle.titleBot='';lineTable=[]">
<i class="el-icon-refresh" style="margin-right: 5px;"></i>Empty
</el-button>
<el-button type="primary" plain @click="CopyExcelToTable">
<i class="el-icon-sort" style="margin-right: 5px;"></i>Generate Table
</el-button>
</p>
<div class="lineStyle" v-if="lineTable.length!=0">
<div>
<span class="title">Table All Width :</span>
<el-input v-model="lineStyle.tabwith" style="width: 120px;">
<template slot="append">%</template>
</el-input>
</div>
<div>
<div v-for="(item,index) in lineStyle.arrwith" class="styArry">
<span class="title">Column <b style="color: #006699;">{{index+1}}</b> :</span>
<el-input v-model="lineStyle.arrwith[index]" style="width: 100px;">
<template slot="append">%</template>
</el-input>
</div>
</div>
</div>
<div style="padding: 0 20px;" v-if="lineTable.length!=0">
<p style="text-align: center;margin: 0 0 10px 0;font-size: 12px;color: #006699;">
<b>{{lineStyle.titleTop}}</b>
</p>
<div class="lineAll" :style="'width:'+lineStyle.tabwith+'%'">
<div v-for="item in lineTable" class="lineTit">
<div v-for="(eqrt,iner) in item" :style="'width:'+lineStyle.arrwith[iner]+'%'">
{{eqrt}}
</div>
</div>
</div>
<p style="text-align: center;margin: 10px 0 0 0;font-size: 12px;">{{lineStyle.titleBot}}</p>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="saveLine" v-if="lineTable.length!=0">
<i class="el-icon-finished" style="margin-right: 5px;"></i>
Save Table
</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
Art_web_Id: this.$route.query.artID,
detailTitle: '',
Main_List: [],
txtStyle: {
text: '',
},
txtVisible: false,
lineStyle: {
titleTop: '',
titleBot: '',
textarea: '',
tabwith: '100',
arrwith: []
},
lineTable: [],
threeVisible: false,
picStyle: {
titleBot: '',
note: '',
// picUrl: 'https://www.tmrjournals.cn/public/articleHTML/TMR/TMR20230213002/images/alternativeImage/TMR20230213002-F004.jpg',
picUrl: '',
imageUrl: '',
width: '500'
},
pictVisible: false,
};
},
created() {
this.getDate()
},
methods: {
// 获取数据
getDate() {
const loading = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
// 获取文章信息
this.$api
.post('api/Production/getWebMains', {
article_id: this.Art_web_Id
})
.then(res => {
if (res.code == 0) {
this.detailTitle = res.data.article.title
this.Main_List = res.data.mains
for (let i = 0; i < this.Main_List.length; i++) {
this.Main_List[i].text = this.Main_List[i].content
this.Main_List[i].getnum = 0
}
loading.close()
} else {
this.$message.error(res.msg);
loading.close()
}
})
.catch(err => {
this.$message.error(err);
loading.close()
});
},
// 修改段落/图片
MTxtEdit(val, num) {
if (val.width == 0) {
this.txtVisible = true
this.txtStyle = JSON.parse(JSON.stringify(val))
this.txtStyle.index = num
this.txtStyle.visiTitle = 'Edit Text'
} else {
this.picStyle = JSON.parse(JSON.stringify(val));
this.picStyle.type = 'img';
this.picStyle.picUrl = this.picStyle.content;
this.picStyle.imageUrl = this.baseUrl + 'public/mainimg/' + this.picStyle.content
this.picStyle.visiTitle = 'Edit Picture'
this.pictVisible = true
}
},
// 添加段落
MTxtAdtxt(val, num) {
this.txtStyle.visiTitle = 'Add Text'
this.txtStyle.article_id = this.Art_web_Id;
this.txtStyle.pre_id = val.article_main_id;
this.txtStyle.type = 'content'
this.txtStyle.text = ''
this.txtVisible = true
},
// 确定保存段落修改
saveTxt() {
if (this.txtStyle.visiTitle == 'Edit Text') {
this.$api
.post('api/Production/editWebMain', {
article_main_id: this.txtStyle.article_main_id,
type: 'content',
content: this.txtStyle.text
})
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully edit text!')
this.txtVisible = false
this.getDate()
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
if (this.txtStyle.text == '') {
this.$message.error('Please fill in the content!');
return
}
this.txtStyle.content = this.txtStyle.text
this.$api
.post('api/Production/addWebMain', this.txtStyle)
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully add text!')
this.txtVisible = false
this.getDate()
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
},
// 图片段落
MTxtPic(val, num) {
this.picStyle.type = 'img';
this.picStyle.pre_id = val.article_main_id;
this.picStyle.article_id = this.Art_web_Id;
this.picStyle.titleBot = '';
this.picStyle.note = '';
this.picStyle.width = '500';
this.picStyle.picUrl = '';
this.picStyle.imageUrl = ''
this.picStyle.visiTitle = 'Insert Picture Backward'
this.pictVisible = true
},
// 确定保存图片
savePic() {
// let dataImage = ''
// dataImage = '<div style="text-align: center;"><img src="' + this.baseUrl + 'public/' + this.picStyle
// .picUrl + '" style="width:' + this.picStyle.width + 'px"></div>'
// if (this.picStyle.titleBot != '') {
// dataImage = dataImage +
// '<p style="text-align: center;margin: 10px 0 15px 0;font-size: 12px;color: #006699;">' +
// this.lineStyle.titleBot + '</p>'
// }
// if (this.picStyle.note != '') {
// dataImage = dataImage + '<p style="text-align: center;margin: 10px 0 0 0;font-size: 12px;">' +
// this.lineStyle.note + '</p>'
// }
// console.log(dataImage)
if (this.picStyle.note == '') {
this.$message.error('Please fill in the picture describe!');
return
}
this.picStyle.content = this.picStyle.picUrl
if (this.picStyle.visiTitle == 'Edit Picture') {
this.$api
.post('api/Production/editWebMain', this.picStyle)
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully edit image!');
this.pictVisible = false
this.getDate()
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
this.$api
.post('api/Production/addWebMain', this.picStyle)
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully added image!');
this.pictVisible = false
this.getDate()
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
},
// 表格段落
MTxtTable(val, num) {
this.lineStyle.article_main_id = val.article_main_id;
this.lineStyle.textarea = '';
this.lineStyle.titleCon = '';
this.lineTable = [];
this.threeVisible = true
},
// 表格转化
CopyExcelToTable() {
if (this.lineStyle.textarea == '') {
this.$message.error('Please fill in the table content!');
return
}
console.log(this.lineStyle.textarea)
let txtRows = this.lineStyle.textarea.split("\n");
let txtColum = []
for (let i = 0; i < txtRows.length; i++) {
if (txtRows[i] != "") {
let columns = txtRows[i].split("\t");
let dataone = [];
for (let j = 0; j < columns.length; j++) {
dataone.push(columns[j]);
}
txtColum.push(dataone);
};
}
let arrwithNumer = Math.floor(100 / txtColum[0].length) - 2
this.lineStyle.arrwith = []
for (let i = 0; i < txtColum[0].length; i++) {
this.lineStyle.arrwith.push(arrwithNumer)
}
this.lineTable = txtColum
},
// 确定保存表格
saveLine() {
let dataTable = ''
for (let i = 0; i < this.lineTable.length; i++) {
let ArryDr = ''
let listHNem = ''
for (let j = 0; j < this.lineTable[i].length; j++) {
let ArrHtml = '<div style="width:' + this.lineStyle.arrwith[j] +
'%;line-height: 22px;vertical-align: middle;display: inline-block;padding: 0 1%;font-size: 14px;color: #606266;word-wrap: break-word;word-break: normal;">' +
this.lineTable[i][j] + '</div>'
ArryDr = ArryDr + ArrHtml
}
if (i == 0) {
listHNem =
'<div style="display: flex;border-top: 2px solid #333333;border-bottom: 1px solid #333333;padding: 10px 0;font-weight: bold;margin-bottom: 20px;">' +
ArryDr + '</div>'
} else if (i == this.lineTable.length - 1) {
listHNem =
'<div style="display: flex;border-bottom: 2px solid #333333;padding:0 0 20px 0;">' +
ArryDr + '</div>'
ArryDr = ArryDr + listHNem
} else {
listHNem = '<div style="display: flex;padding:20px 0;">' + ArryDr + '</div>'
}
dataTable = dataTable + listHNem
}
dataTable = '<div style="width:' + this.lineStyle.tabwith + '%">' + dataTable + '</div>'
if (this.lineStyle.titleTop != '') {
dataTable = '<p style="text-align: center;margin: 0 0 10px 0;font-size: 12px;color: #006699;"><b>' +
this.lineStyle.titleTop + '</b></p>' + dataTable
}
if (this.lineStyle.titleBot != '') {
dataTable = dataTable + '<p style="text-align: center;margin: 10px 0 0 0;font-size: 12px;">' +
this.lineStyle.titleBot + '</p>'
}
console.log(dataTable)
},
// 删除段落/图片
MTxtDelet(val, num) {
this.$api
.post('api/Production/delWebMain', {
article_main_id: val.article_main_id
})
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully deleted!')
this.getDate()
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
// 上传图片
handleAvatarSuccess(res, file) {
if (res.code == 0) {
this.picStyle.picUrl = res.upurl;
this.$forceUpdate()
} else {
this.$message.error(res.msg);
}
this.picStyle.imageUrl = URL.createObjectURL(file.raw);
},
handleAvatarError(res, file) {
},
beforeAvatarUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 1;
if (!isLt2M) {
this.$message.error('Picture size cannot exceed 1M!');
}
return isLt2M;
},
},
};
</script>
<style scoped>
.lineStyle {
border-top: 1px solid #0066994d;
padding: 20px 20px 40px 20px;
}
.lineStyle>div {}
.lineStyle>div span.title {
font-size: 14px;
color: #606266;
margin: 0px 10px 0px 0px;
}
.lineStyle>div font.mark {
font-size: 14px;
color: #606266;
margin: 0px 0px 0px 10px;
}
.lineStyle .styArry {
display: inline-block;
margin: 15px 40px 0 0;
}
.lineStyle .styArry:nth-last-child(1) {
margin-right: 0;
}
.lineAll {
margin: 0 auto;
}
.lineAll .lineTit {
padding: 0 0 20px 0;
font-size: 14px;
}
.lineAll .lineTit:nth-child(1) {
border-top: 2px solid #333333;
border-bottom: 1px solid #333333;
padding: 10px 0;
font-weight: bold;
}
.lineAll .lineTit:nth-child(2) {
padding-top: 20px;
}
.lineAll .lineTit:nth-last-child(1) {
border-bottom: 2px solid #333333;
}
.lineAll .lineTit>div {
line-height: 22px;
vertical-align: middle;
display: inline-block;
padding: 0 1%;
}
.man_Title {
background-color: #fff;
margin: 0 0 10px 0;
border-bottom: 1px solid #dde1eb;
box-shadow: 0 5px 5px -2px rgb(134 134 134);
padding: 12px 25px 8px 25px;
font-size: 16px;
line-height: 24px;
color: #333;
position: relative;
}
.man_Title button {
position: absolute;
top: 10px;
right: 10px;
}
.type_MTxt {
background-color: #fff;
padding: 0 10px 10px 10px;
box-shadow: 0 1px 3px rgb(16 17 19 / 6%);
position: relative;
}
.type_MTxt>div {
position: relative;
padding: 8px 15px;
min-height: 22px;
border: 2px dashed #fff;
border-radius: 5px;
color: #606266;
}
.type_MTxt>div:hover {
background-color: rgb(0 102 153 / 10%);
border: 2px dashed rgb(0 102 153 / 50%);
}
.type_MTxt>div>p {
font-size: 14px;
line-height: 22px;
}
.type_MTxt>div .chNumer {
position: absolute;
top: -2px;
right: -1px;
border-radius: 3px;
font-size: 10px;
background-color: rgb(0 102 153 / 85%);
color: #fff;
padding: 0 6px;
}
.type_MTxt>div .MaxPicture {
text-align: center;
}
.type_MTxt>div .MaxPicture>img {
margin-bottom: 10px;
}
.type_MTxt>div .MaxPicture>font {
display: block;
margin: 0 auto;
font-size: 13px;
}
.type_MTxt>div .MaxBtn {
position: absolute;
right: 0;
top: -1px;
color: #fff;
border-radius: 50px;
font-size: 15.5px;
padding: 6px 7px;
display: none;
opacity: 0.75;
}
.type_MTxt>div:hover .MaxBtn {
display: block;
}
.type_MTxt>div .MaxBtn:hover {
opacity: 1;
cursor: pointer;
}
.type_CHar {
position: relative;
border-left: 4px solid rgba(0 102 153 / 20%);
border-radius: 5px;
padding: 20px 25px 15px 20px;
background-color: #fff;
margin: 20px 0 0 0;
font-size: 14px;
line-height: 22px;
box-shadow: 0 1px 10px rgb(0 102 153 / 20%);
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
width: 100px;
height: 100px;
}
.avatar-uploader_small {
height: 100px;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 120px;
height: 120px;
line-height: 120px;
text-align: center;
}
.avatar-uploader_small .el-upload {
width: 80px;
height: 80px;
}
.avatar-uploader_small .avatar-uploader-icon {
line-height: 80px;
margin-left: -30px;
}
.avatar {
width: 120px;
height: 120px;
display: block;
}
</style>

View File

@@ -16,7 +16,8 @@
Mail Template
</el-button> -->
</div>
<p v-if="tableData.length==0" style="color: #6f6f6f;font-size: 18px;margin-top: 30px;text-align: center;">No task</p>
<p v-if="tableData.length==0" style="color: #6f6f6f;font-size: 18px;margin-top: 30px;text-align: center;">No
task</p>
<div v-for="item in tableData" class="taskList" :style="stateChange(item.range,item.is_end)">
<div style="text-align: right;padding-right: 60px;">
<el-button type="primary" size="mini" icon="el-icon-view" @click="handleSend(item)">
@@ -54,10 +55,10 @@
</font>
{{decjuSendata(item.library)}}
<p v-if="item.category=='major'" style="display: inline-block;">
({{item.major_str}})
({{decjuCountry(item.china_type)}} , {{item.major_str}})
</p>
<p v-if="item.category=='keyword'" style="display: inline-block;">
({{item.keyword}})
({{decjuCountry(item.china_type)}} , {{item.keyword}})
</p>
</div>
<div class="taskRow">
@@ -80,7 +81,7 @@
Sent personnel :
</font>
<b style="color: #006699">{{item.user_count}}</b> in total,
<b style="color: #006699">{{item.user_send}}</b> people have been sent,
<b style="color: #006699">{{item.pushed_num}}</b> people have been sent,
send <b style="color: #006699">{{item.pagesize}}</b> people each time.
<!-- <div style="margin: 10px 0 0 120px;">
<p v-for="item in numbeoList" class="sentPeale">
@@ -104,7 +105,7 @@
<!-- 预览弹出框 -->
<el-dialog title="Preview mail messages" :visible.sync="sendVisible" :close-on-click-modal="false"
width="850px">
width="880px">
<el-form ref="send_Form" :model="sendForm" :rules="rules" label-width="160px">
<!-- <el-form-item label="Target personnel :" prop="senProce">
<el-checkbox-group v-model="sendForm.senProce" @change="chanProce">
@@ -123,23 +124,27 @@
<div>
{{decjuSendata(sendForm.library)}}
<p v-if="sendForm.category=='major'" style="display: inline-block;">
({{sendForm.major_str}})
({{decjuCountry(sendForm.china_type)}} , {{sendForm.major_str}})
</p>
<p v-if="sendForm.category=='keyword'" style="display: inline-block;">
({{sendForm.keyword}})
({{decjuCountry(sendForm.china_type)}} , {{sendForm.keyword}})
</p>
</div>
</el-form-item>
<el-form-item label="Subject :">
<div>{{sendForm.email_title}}</div>
<el-form-item label="Mail Template :" prop="email_title">
<div>
{{sendForm.email_title}}
</div>
<!-- <el-input v-model="sendForm.email_title"></el-input> -->
</el-form-item>
<!-- <el-form-item label="Mail Template :">
<div>Customize</div>
</el-form-item> -->
<el-form-item label="Content :">
<el-form-item label="Content :" prop="substance">
<div class="senderKuan">
<img src="../../assets/img/mailPT.png" style="margin-bottom: -10px;" v-if="sendForm.has_hb==1">
<div v-html="sendForm.template" style="padding: 20px;word-wrap: break-word;word-break: normal;">
<div style="background-color: #fff;">
<div v-html="sendForm.template" style="padding: 20px;word-wrap: break-word;word-break: normal;">
</div>
<!-- <quill-editor ref="myTextEditor" v-model="sendForm.template" :options="editorOption">
</quill-editor> -->
</div>
<img src="../../assets/img/mailPB.png" v-if="sendForm.has_hb==1">
</div>
@@ -150,7 +155,7 @@
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="sendVisible = false;">Cancel</el-button>
<!-- <el-button type="primary" @click="saveSend(sendForm)">Send mail</el-button> -->
<!-- <el-button type="primary" @click="saveSend(sendForm)">Save mail</el-button> -->
</span>
</el-dialog>
@@ -200,6 +205,13 @@
</template>
<script>
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
import {
quillEditor
} from 'vue-quill-editor';
export default {
data() {
return {
@@ -208,18 +220,15 @@
sendForm: {},
sendVisible: false,
testEForm: {
email: '376837995@qq.com'
email: ''
},
testEBox: false,
rangeList: [{
title: 'Appointment',
title: 'Promotion',
id: 1
}, {
title: 'Article Recommendation',
id: 2
}, {
title: 'Promotion',
id: 3
}],
numbeoList: [{
title: '1-100',
@@ -247,7 +256,57 @@
message: 'Please enter a email',
trigger: 'blur'
}],
email_title: [{
required: true,
message: 'Please enter email title',
trigger: 'blur'
}],
substance: [{
required: true,
message: 'Please enter email substance',
trigger: 'blur'
}],
},
editorOption: {
placeholder: 'Please enter...',
modules: {
toolbar: {
container: [
['bold', 'italic', 'underline', 'strike'],
[{
'header': 1
}, {
'header': 2
}],
[{
'list': 'ordered'
}, {
'list': 'bullet'
}],
[{
'script': 'sub'
}, {
'script': 'super'
}],
[{
'size': ['small', false, 'large', 'huge']
}],
[{
'header': [1, 2, 3, 4, 5, 6, false]
}],
[{
'color': []
}, {
'background': []
}],
[{
'align': []
}],
]
}
},
}
};
},
created: function() {
@@ -268,12 +327,6 @@
this.tableData = res.data.list
for (let i = 0; i < this.tableData.length; i++) {
this.tableData[i].journal_title = this.tableData[i].journal.title
if (this.tableData[i].pushed == '') {
this.tableData[i].user_send = 0
} else {
this.tableData[i].user_send = this.tableData[i].pagesize * this.tableData[i].pushed
.length
}
}
} else {
this.$message.error('res.msg');
@@ -328,7 +381,6 @@
this.$message.error(err);
});
} else {
this.$message.error('Please complete the information!');
}
});
@@ -413,14 +465,11 @@
let phrase = '';
switch (e) {
case 1:
phrase = 'Appointment';
phrase = 'Promotion';
break;
case 2:
phrase = 'Article Recommendation';
break;
case 3:
phrase = 'Promotion';
break;
}
return phrase;
},
@@ -441,6 +490,23 @@
}
return phrase;
},
// 人员国家
decjuCountry(e){
let country = '';
switch (e) {
case 0:
country = 'All countries';
break;
case 1:
country = 'Only China';
break;
case 2:
country = 'Without China';
break;
}
return country;
},
// 发送时间
timefreSDel(e) {
@@ -483,6 +549,15 @@
}
return 'background-color:' + str + ';border-color:' + sgr + ';box-shadow:' + skr;
},
// 富文本编辑器
onEditorChange({
editor,
html,
text
}) {
this.sendForm.substance = html;
},
}
};
</script>
@@ -553,10 +628,10 @@
.senderKuan {
margin: 5px 0 0 0;
padding: 5px;
border: 1px solid #00669933;
background: #fff;
border: 2px dashed #ccc;
background-color: #f2f2f2;
border-radius: 2px;
padding: 10px;
}
.senderKuan img {

View File

@@ -34,6 +34,19 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="User Country :" prop="china_type">
<el-radio-group v-model="EmailData.china_type" @change="getTarUser()">
<el-radio :label="0">
All countries
</el-radio>
<el-radio :label="1">
Only China
</el-radio>
<el-radio :label="2">
Without China
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="Target personnel :" prop="category">
<div class="senderKuan" style="position: relative;">
<el-radio-group v-model="EmailData.category" @change="numCateGory">
@@ -54,6 +67,9 @@
placeholder="Please select a major" @change="majorChange" popper-class='majorSelct'
:key="keyValue" style="width: 200px;position: absolute;top: 17px;left: 480px;">
</el-cascader>
<div>
</div>
<p class="tolPeoUse">
A total of <b>{{userListNum}}</b> users meet the filtering criteria.
</p>
@@ -121,35 +137,51 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="Content :" prop="substance">
<el-form-item label="Content :">
<div class="emaStyle">
<img src="../../assets/img/mailPT.png" v-if="EmailData.has_hb==1"
style="margin-bottom: -10px;">
<div style="background-color: #fff;padding: 20px 35px;">
<!-- <el-input type="textarea" v-model="EmailData.substance" autosize></el-input> -->
<div v-html="EmailData.substance"></div>
<div style="background-color: #fff;" v-if="EmailData.range==1">
<quill-editor ref="myTextEditor" v-model="EmailData.substance" :options="editorOption"
@focus="myTextMark='myTextEditor'">
</quill-editor>
</div>
<div style="background-color: #fff;" v-if="EmailData.range==2">
<quill-editor ref="myTextEditor1" v-model="EmailData.substance_top"
:options="editorOption" @focus="myTextMark='myTextEditor1'">
</quill-editor>
<div v-for="(item,index) in artChoseList" class="artCLise">
<a :href="'https://www.tmrjournals.com/article.html?J_num='+item.journal_id+'&a_id='+item.article_id"
target="_blank">
<font></font> {{item.title}}
</a>
<p style="color: #444;font-family: Calibri;font-size: 16px;">{{item.authortitle}}
</p>
<p style="color: #333;">
{{item.journal_title}}
<font style="display:inline-block;margin: 0 20px 0 20px;">|</font>
<a :href="'https://www.tmrjournals.com/public/articlePDF/'+item.file_pdf"
target="_blank">
<img src="https://www.tmrjournals.cn/img/link_3.jpg">PDF
</a>
</p>
<p>
<b>Cite this article :</b>
<font v-html="item.cite"></font>
</p>
</div>
<quill-editor ref="myTextEditor2" v-model="EmailData.substance_bom"
:options="editorOption" @focus="myTextMark='myTextEditor2'">
</quill-editor>
</div>
<img src="../../assets/img/mailPB.png" v-if="EmailData.has_hb==1"
style="margin-bottom: -10px;">
<!-- <div v-for="(item,index) in artChoseList" class="artCLise" v-if="EmailData.range==2">
<a :href="'https://www.tmrjournals.com/article.html?J_num='+item.journal_id+'&a_id='+item.article_id"
target="_blank">
<font></font> {{item.title}}
</a>
<p style="color: #444;font-family: Calibri;font-size: 16px;">{{item.authortitle}}</p>
<p style="color: #333;">
{{item.journal_title}}
<font style="display:inline-block;margin: 0 20px 0 20px;">|</font>
<a :href="'https://www.tmrjournals.com/public/articlePDF/'+item.file_pdf"
target="_blank">
<img src="https://www.tmrjournals.cn/img/link_3.jpg">PDF
</a>
</p>
<p>
<b>Cite this article :</b>
<font v-html="item.cite"></font>
</p>
</div> -->
<el-upload class="avatar-uploader avatar-uploader-foot"
:action="baseUrl+'api/Promotion/up_promotion_file'" name="promotion"
:show-file-list="false" :on-success="uploadSuccess">
</el-upload>
</div>
</el-form-item>
<el-form-item label="Public Image :" prop="has_hb">
@@ -247,6 +279,7 @@
return {
loading: false,
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
EmailData: {
user_id: localStorage.getItem('U_id'),
email_title: '',
@@ -256,25 +289,25 @@
category: 'keyword',
keyword: '',
major: '',
china_type: 0,
pagesize: 100,
range: 1,
template: '',
has_hb: 2,
substance: '',
substance_top: '',
substance_bom: '',
substanceOld: '',
frequency: 'day',
},
keyValue: 0,
userListNum: 0,
rangeList: [{
title: 'Appointment',
title: 'Promotion',
id: 1
}, {
title: 'Article Recommendation',
id: 2
}, {
title: 'Promotion',
id: 3
}],
numberList: [],
journalList: [],
@@ -308,6 +341,7 @@
children: 'children',
checkStrictly: true,
},
myTextMark: 'myTextEditor',
rules: {
range: [{
required: true,
@@ -359,12 +393,16 @@
message: "please input",
trigger: "blur"
}],
china_type: [{
required: true,
message: "please select",
trigger: "blur"
}],
pagesize: [{
required: true,
message: "please select a pagesize",
trigger: "blur"
}],
},
editorOption: {
placeholder: 'Please enter...',
@@ -372,7 +410,6 @@
toolbar: {
container: [
['bold', 'italic', 'underline', 'strike'],
['blockquote', 'code-block'],
[{
'header': 1
}, {
@@ -388,14 +425,6 @@
}, {
'script': 'super'
}],
[{
'indent': '-1'
}, {
'indent': '+1'
}],
[{
'direction': 'rtl'
}],
[{
'size': ['small', false, 'large', 'huge']
}],
@@ -407,14 +436,22 @@
}, {
'background': []
}],
[{
'font': []
}],
[{
'align': []
}],
['link']
]
['link', 'image']
],
// 工具栏
handlers: {
image: function(value) {
if (value) {
// upload点击上传事件
document.querySelector('.avatar-uploader input').click()
} else {
this.quill.format('image', false)
}
}
}
}
}
},
@@ -422,7 +459,7 @@
},
created: function() {
this.getData();
this.templeData();
this.changeRange();
},
computed: {
@@ -453,11 +490,6 @@
},
// 切换范围
changeRange() {
},
// 更换期刊
getIssnMajor() {
this.EmailData.major = ''
@@ -502,10 +534,16 @@
});
},
// 获取模板
templeData() {
// 切换范围获取模板
changeRange() {
this.EmailData.template = ''
this.EmailData.substance = ''
this.EmailData.substance_top = ''
this.EmailData.substance_bom = ''
this.$api
.post('api/Promotion/getEmailModel')
.post('api/Promotion/getEmailModel', {
type: this.EmailData.range
})
.then(res => {
if (res.code == 0) {
this.templeList = res.data.list;
@@ -518,13 +556,21 @@
});
},
// 切换模板
changeTemple(e) {
for (let i = 0; i < this.templeList.length; i++) {
if (this.templeList[i].pro_email_id == e) {
this.EmailData.email_title = this.templeList[i].title
this.EmailData.substanceOld = JSON.parse(JSON.stringify(this.templeList[i].content))
this.pushArticle()
if (this.EmailData.range == 1) {
this.EmailData.substance = this.templeList[i].content
} else if (this.EmailData.range == 2) {
this.EmailData.substance = this.templeList[i].content.split('{{articles}}\r\n\r\n')
this.EmailData.substance_top = this.EmailData.substance[0]
this.EmailData.substance_bom = this.EmailData.substance[1]
}
console.log()
}
}
},
@@ -532,7 +578,6 @@
// 插入文章列表
pushArticle() {
this.EmailData.substance = JSON.parse(JSON.stringify(this.EmailData.substanceOld))
let artHtml = ''
if (this.artChoseList.length > 0 && this.EmailData.range == 2) {
for (let i = 0; i < this.artChoseList.length; i++) {
@@ -553,9 +598,37 @@
artHtml = artHtml +
'<br/><style>.artCLise p{margin: 3px 0 0 2px;font-size: 13px;}.artCLise a{text-decoration: none;}.artCLise a:hover{text-decoration: underline;}</style>'
// for (let i = 0; i < this.artChoseList.length; i++) {
// artHtml +=
// '<a href="https://www.tmrjournals.com/article.html?J_num=' + this.artChoseList[
// i]
// .journal_id +
// '&a_id=' + this.artChoseList[i].article_id +
// '" target="_blank" style="font-size: 14px;line-height: 22px;color: #4e8374;font-weight: bold;"><font style="display: inline-block;width: 7px;height: 7px;border-radius: 10px;margin: 0 3px 0 0;background-color: #4e8374;"></font>' +
// this.artChoseList[i].title +
// '</a><p style="color: #444;font-family: Calibri;font-size: 16px;line-height: 20px;">' +
// this
// .artChoseList[i]
// .authortitle + '</p><p style="color: #333;">' + this.artChoseList[i]
// .journal_title +
// '<text style="display: inline-block;margin: 0 20px 0 20px;">|</text><a href="https://www.tmrjournals.cn/public/articlePDF/' +
// this.artChoseList[i].file_pdf +
// '" target="_blank" style="color: #7a2702;"><img src="https://www.tmrjournals.cn/img/link_3.jpg" style="width: 14px;vertical-align: text-bottom;margin: 0 5px 0 0;">PDF</a></p><p style="margin: 5px 0 15px 2px;padding:0 0 18px 0;line-height: 20px;font-size: 12px;color: #777;border-bottom: 1px dashed #4e837480;"><b style="margin: 0 5px 0 0;letter-spacing: -0.5px;color: #4e8374;font-weight: normal;">Cite this article :</b><font>' +
// this.artChoseList[i].cite + '</font></p>'
// };
// artHtml =
// '<div class="artCLise">' + artHtml +
// '</div><p style="height:20px"></p><style>.artCLise p{margin: 3px 0 0 2px;font-size: 13px;}.artCLise a{text-decoration: none;}.artCLise a:hover{text-decoration: underline;}</style>'
if (this.EmailData.substance.indexOf("{{articles}}\r\n\r\n") != -1) {
this.EmailData.substance = this.EmailData.substance.replace('{{articles}}\r\n\r\n', artHtml)
// console.log(this.EmailData.substance)
}
}
},
@@ -571,6 +644,7 @@
'lib': this.EmailData.library,
'category': 'keyword',
'body': this.EmailData.keyword,
'china_type': this.EmailData.china_type,
})
.then(res => {
if (res.code == 0) {
@@ -588,6 +662,7 @@
'lib': this.EmailData.library,
'category': 'major',
'body': this.EmailData.major,
'china_type': this.EmailData.china_type,
})
.then(res => {
if (res.code == 0) {
@@ -689,7 +764,7 @@
}
this.artTicleList[e].chooState = 1
this.artChoseList.push(this.artTicleList[e])
this.pushArticle()
// this.pushArticle()
},
// 删除文章
@@ -698,7 +773,7 @@
for (let i = 0; i < this.artChoseList.length; i++) {
if (this.artChoseList[i].article_id == row.article_id) {
this.artChoseList.splice(i, 1);
this.pushArticle()
// this.pushArticle()
}
};
},
@@ -710,7 +785,7 @@
if (this.artTicleList[i].article_id == value.article_id) {
this.artTicleList[i].chooState = 0
this.$forceUpdate()
this.pushArticle()
// this.pushArticle()
}
};
},
@@ -723,6 +798,10 @@
// 保存邮件
saveData() {
// const reg = /<\/?.+?\/?>/g
// this.EmailData.substance = this.EmailData.substance.replace(/<p>/gim,"")
// console.log(this.EmailData.substance)
if (this.userListNum == 0) {
this.$message.error('Please select target personnel!');
return
@@ -731,40 +810,61 @@
this.$refs.emailRef.validate((valid) => {
if (valid) {
let artHtml = ''
this.EmailData.template = JSON.parse(JSON.stringify(this.EmailData.substanceOld))
if (this.artChoseList.length > 0 && this.EmailData.range == 2) {
for (let i = 0; i < this.artChoseList.length; i++) {
artHtml +=
'<a href="https://www.tmrjournals.com/article.html?J_num=' + this.artChoseList[
i]
.journal_id +
'&a_id=' + this.artChoseList[i].article_id +
'" target="_blank" style="font-size: 14px;line-height: 22px;color: #4e8374;font-weight: bold;"><font style="display: inline-block;width: 7px;height: 7px;border-radius: 10px;margin: 0 3px 0 0;background-color: #4e8374;"></font>' +
this.artChoseList[i].title +
'</a><p style="color: #444;font-family: Calibri;font-size: 16px;line-height: 20px;">' +
this
.artChoseList[i]
.authortitle + '</p><p style="color: #333;">' + this.artChoseList[i]
.journal_title +
'<text style="display: inline-block;margin: 0 20px 0 20px;">|</text><a href="https://www.tmrjournals.cn/public/articlePDF/' +
this.artChoseList[i].file_pdf +
'" target="_blank" style="color: #7a2702;"><img src="https://www.tmrjournals.cn/img/link_3.jpg" style="width: 14px;vertical-align: text-bottom;margin: 0 5px 0 0;">PDF</a></p><p style="margin: 5px 0 15px 2px;padding:0 0 18px 0;line-height: 20px;font-size: 12px;color: #777;border-bottom: 1px dashed #4e837480;"><b style="margin: 0 5px 0 0;letter-spacing: -0.5px;color: #4e8374;font-weight: normal;">Cite this article :</b><font>' +
this.artChoseList[i].cite + '</font></p>'
};
if (this.EmailData.range == 1) {
this.EmailData.template = this.EmailData.substance.replace(/<p><br><\/p>/gim, '<br/>')
this.EmailData.template = this.EmailData.template.replace(/<p>/gim, "")
this.EmailData.template = this.EmailData.template.replace(/<\/p>/gim, '<br/>')
} else if (this.EmailData.range == 2) {
if (this.artChoseList.length == 0) {
this.$message.error('Please select articles!');
return
} else {
for (let i = 0; i < this.artChoseList.length; i++) {
artHtml +=
'<a href="https://www.tmrjournals.com/article.html?J_num=' + this
.artChoseList[
i]
.journal_id +
'&a_id=' + this.artChoseList[i].article_id +
'" target="_blank" style="font-size: 14px;line-height: 22px;color: #4e8374;font-weight: bold;"><font style="display: inline-block;width: 7px;height: 7px;border-radius: 10px;margin: 0 3px 0 0;background-color: #4e8374;"></font>' +
this.artChoseList[i].title +
'</a><p style="color: #444;font-family: Calibri;font-size: 16px;line-height: 20px;">' +
this
.artChoseList[i]
.authortitle + '</p><p style="color: #333;">' + this.artChoseList[i]
.journal_title +
'<text style="display: inline-block;margin: 0 20px 0 20px;">|</text><a href="https://www.tmrjournals.cn/public/articlePDF/' +
this.artChoseList[i].file_pdf +
'" target="_blank" style="color: #7a2702;"><img src="https://www.tmrjournals.cn/img/link_3.jpg" style="width: 14px;vertical-align: text-bottom;margin: 0 5px 0 0;">PDF</a></p><p style="margin: 5px 0 15px 2px;padding:0 0 18px 0;line-height: 20px;font-size: 12px;color: #777;border-bottom: 1px dashed #4e837480;"><b style="margin: 0 5px 0 0;letter-spacing: -0.5px;color: #4e8374;font-weight: normal;">Cite this article :</b><font>' +
this.artChoseList[i].cite + '</font></p>'
};
artHtml =
'<div class="artCLise">' + artHtml +
'</div><style>.artCLise p{margin: 3px 0 0 2px;font-size: 13px;}.artCLise a{text-decoration: none;}.artCLise a:hover{text-decoration: underline;}</style>'
artHtml =
'<div class="artCLise">' + artHtml +
'</div><p style="height:20px"></p><style>.artCLise p{margin: 3px 0 0 2px;font-size: 13px;}.artCLise a{text-decoration: none;}.artCLise a:hover{text-decoration: underline;}</style>'
this.EmailData.substance_top = this.EmailData.substance_top.replace(
/<p><br><\/p>/gim, '<br/>')
this.EmailData.substance_top = this.EmailData.substance_top.replace(/<p>/gim, "")
this.EmailData.substance_top = this.EmailData.substance_top.replace(/<\/p>/gim,
'<br/>')
this.EmailData.substance_bom = this.EmailData.substance_bom.replace(
/<p><br><\/p>/gim, '<br/>')
this.EmailData.substance_bom = this.EmailData.substance_bom.replace(/<p>/gim, "")
this.EmailData.substance_bom = this.EmailData.substance_bom.replace(/<\/p>/gim,
'<br/>')
if (this.EmailData.template.indexOf("{{articles}}\r\n\r\n") != -1) {
this.EmailData.template = this.EmailData.template.replace('{{articles}}\r\n\r\n',
artHtml)
this.EmailData.template = this.EmailData.substance_top + artHtml + this.EmailData
.substance_bom
}
}
// if (this.EmailData.template.indexOf("{{articles}}\r\n\r\n") != -1) {
// this.EmailData.template = this.EmailData.template.replace('{{articles}}\r\n\r\n',
// artHtml)
// }
this.$api
.post('api/Promotion/addPromotion', this.EmailData)
@@ -813,19 +913,16 @@
});
},
// 富文本编辑器
onEditorChange({
editor,
html,
text
}) {
this.EmailData.substance = html;
},
// 富文本编辑器上传
uploadSuccess(res) {
let quill = this.$refs[this.myTextMark].quill;
// 获取光标所在位置
let length = quill.getSelection().index
// 插入图片 res.upurl为服务器返回的图片地址
quill.insertEmbed(length, 'image', this.mediaUrl + 'promotion/' + res.upurl)
// 调整光标到最后
quill.setSelection(length + 1)
}
},
watch: {
@@ -1008,7 +1105,7 @@
.emaStyle .artCLise {
line-height: 22px;
margin-bottom: 15px;
margin: 15px 20px;
padding-bottom: 18px;
border-bottom: 1px dashed #4e837480;
}
@@ -1066,6 +1163,15 @@
vertical-align: text-bottom;
margin: 0 5px 0 0;
}
.avatar-uploader-foot {
height: 0;
}
.avatar-uploader-foot .el-upload--text {
height: 0 !important;
border: 0;
}
</style>

View File

@@ -91,7 +91,7 @@
</p>
</template>
</el-table-column>
<el-table-column label="" align="center" width="140">
<el-table-column label="" align="center" width="145">
<template slot="header">
<div>Reviewer</div>
<div>Decision</div>
@@ -107,6 +107,9 @@
<el-button v-for="(item, index) in scope.row.review"
:type="item.state==2?'danger':'success'" circle style="padding: 5px;"></el-button>
</p>
<el-button size="mini" type="primary" plain icon="el-icon-user"
@click="articleReviewer(scope.row)">
Peer-Review</el-button>
</template>
</el-table-column>
<el-table-column label="">
@@ -322,7 +325,8 @@
<template slot-scope="scope">
{{scope.row.stage_year}} Vol.{{scope.row.stage_vol}} issue.{{scope.row.stage_no}}
<br>
<el-button style="margin-top: 5px;" size="mini" type="success" plain icon="el-icon-view" @click="lookView(scope.row)">Preview</el-button>
<el-button style="margin-top: 5px;" size="mini" type="success" plain icon="el-icon-view"
@click="lookView(scope.row)">Preview</el-button>
</template>
</el-table-column>
<el-table-column label="Sort" width="60px" align="center">
@@ -347,7 +351,8 @@
</el-table-column>
<el-table-column label="" width="130px" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain icon="el-icon-tickets" @click="viewRelated(scope.row)">
<el-button size="mini" type="primary" plain icon="el-icon-tickets"
@click="viewRelated(scope.row)">
Relevant</el-button>
</template>
</el-table-column>
@@ -498,6 +503,22 @@
</p>
<br clear="both">
</el-col>
<el-row :gutter="24" v-if="supplementaryFileList">
<el-col :span="24">
<h4>Supplementary Material : </h4>
<p class="fi_new">
<a v-for="item in supplementaryFileList" :href="mediaUrl + item.file_url">
<img src="../../assets/img/icon_0.png">
<span>
<font>Uploader : </font>{{item.username}}
<i><i class="el-icon-time"></i>{{formatDate(item.ctime)}}</i>
</span>
<i class="el-icon-download download"></i>
</a>
</p>
<br clear="both">
</el-col>
</el-row>
<el-col :span="24">
<h4>Manuscirpt : </h4>
<p class="fi_new">
@@ -614,8 +635,272 @@
</el-row>
</el-dialog>
<!-- 审稿意见 -->
<el-dialog title="" :visible.sync="reviewVisible" width="1000px">
<p style="margin: 0 0 20px 0;font-size: 16px;">{{detailMess.title}}</p>
<el-table :data="reviewData" border stripe class="table" ref="multipleTable"
header-cell-class-name="table-header" empty-text="New messages (0)">
<el-table-column type="index" label="No." align="center" width="50"></el-table-column>
<el-table-column label="Reviewer" width="400">
<template slot-scope="scope">
<p class="tab_tie_col">
<span>Realname: </span>
<el-badge is-dot :hidden="scope.row.reviewer_act == 1 ? false : true" class="item">
{{ scope.row.reviewer }}
</el-badge>
</p>
<p class="tab_tie_col">
<span>Country: </span>{{scope.row.country}}
</p>
<p class="tab_tie_col">
<span>Company: </span>{{scope.row.company}}
</p>
<p class="tab_tie_col">
<span>Major: </span>{{scope.row.major_str}}
</p>
</template>
</el-table-column>
<el-table-column prop="field" label="Field"></el-table-column>
<el-table-column label="state" align="center" width="95">
<template slot-scope="scope">
{{stateFormat(scope.row.state)}}
<font style="color: #aaa;display: block;line-height: 18px;font-size: 13px;margin: 5px 0 0 0;">
{{formatDate(scope.row.ctime)}}
</font>
</template>
</el-table-column>
<el-table-column label="" width="150" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain icon="el-icon-tickets"
@click="initquesion(scope.row.art_rev_id)">See Feedback</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background layout="total, prev, pager, next" :current-page="query_review.pageIndex"
:page-size="query_review.pageSize" :total="Total_review" @current-change="handlePageChange_review">
</el-pagination>
</div>
</el-dialog>
<!-- 审稿问卷 -->
<el-dialog title="Feedback questionnaire" :visible.sync="questionVisible" width="900px">
<el-form :model="questionform" ref="question" label-width="300px" label-position="top">
<el-divider content-position="center">REFEREE'S ASSESSMENT</el-divider>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="1.Originality of the topic">
<el-radio-group v-model="questionform.qu1">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="2.Importance in its Field">
<el-radio-group v-model="questionform.qu3">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="3.Does the manuscript fall within the aim and scope of the journal?">
<el-radio-group v-model="questionform.qu6">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="4.English language">
<el-radio-group v-model="questionform.qu8">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="5.Readily Understandable">
<el-radio-group v-model="questionform.qu5">
<el-radio :label="1">Excellent</el-radio>
<el-radio :label="2">Good</el-radio>
<el-radio :label="3">Fair</el-radio>
<el-radio :label="4">Poor</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-collapse>
<el-form-item label="6.Does the title represent manuscript's contents?">
<el-col :span="8">
<el-radio-group v-model="questionform.qu9">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="12">
<el-collapse-item name="1" style="margin-top: -10px;">
<template slot="title">
<i class="el-icon-edit"></i>Comments/ Suggestions
</template>
<el-input type="textarea" placeholder="please input content"
v-model="questionform.qu9contents" :rows="4"></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
</el-collapse>
</el-col>
</el-row>
<el-collapse>
<el-form-item label="7.Is the Abstract accurate and concise?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu10">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="2" style="margin-top: -10px;">
<template slot="title">
<i class="el-icon-edit"></i>Comments/ Suggestions
</template>
<el-input type="textarea" placeholder="please input content"
v-model="questionform.qu10contents" :rows="4"></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-form-item label="8.Are the approach/ methods properly described?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu11">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="3" style="margin-top: -10px;">
<template slot="title">
<i class="el-icon-edit"></i>Comments/ Suggestions
</template>
<el-input type="textarea" placeholder="please input content"
v-model="questionform.qu11contents" :rows="4"></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-form-item label="9.Are the conclusions and interpretations sound?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu12">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="4" style="margin-top: -10px;">
<template slot="title">
<i class="el-icon-edit"></i>Comments/ Suggestions
</template>
<el-input type="textarea" placeholder="please input content"
v-model="questionform.qu12contents" :rows="4"></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-form-item label="10.Are the references properly cited?">
<el-col :span="4">
<el-radio-group v-model="questionform.qu13">
<el-radio :label="true">Yes</el-radio>
<el-radio :label="false">No</el-radio>
</el-radio-group>
</el-col>
<el-col :span="20">
<el-collapse-item name="5" style="margin-top: -10px;">
<template slot="title">
<i class="el-icon-edit"></i>Comments/ Suggestions
</template>
<el-input type="textarea" placeholder="please input content"
v-model="questionform.qu13contents" :rows="4"></el-input>
</el-collapse-item>
</el-col>
</el-form-item>
<el-divider content-position="center">REFEREE'S RECOMMENDATIONS</el-divider>
<el-form-item label="Overall the Paper is Rated">
(Poor------------------------Excellent)
<br />
<el-radio-group v-model="questionform.rated" size="small">
<el-radio-button label="1"></el-radio-button>
<el-radio-button label="2"></el-radio-button>
<el-radio-button label="3"></el-radio-button>
<el-radio-button label="4"></el-radio-button>
<el-radio-button label="5"></el-radio-button>
<el-radio-button label="6"></el-radio-button>
<el-radio-button label="7"></el-radio-button>
<el-radio-button label="8"></el-radio-button>
<el-radio-button label="9"></el-radio-button>
<el-radio-button label="10"></el-radio-button>
</el-radio-group>
<span style="margin-left: 20px;">>Your score:{{questionform.rated}}</span>
</el-form-item>
<el-form-item label="REFEREE'S RECOMMENDATIONS" prop="recommend">
<el-radio-group v-model="questionform.recommend" style="line-height: 30px;">
<el-radio :label="1">Accept with minor revision</el-radio>
<br />
<el-radio :label="2">Accept with major revision</el-radio>
<br />
<el-radio :label="3">Reject in current form, but may be resubmitted</el-radio>
<br />
<el-radio :label="4">Reject, with no resubmission</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="OTHER SPECIFIC CRITICISMS">
<el-radio-group v-model="questionform.other" style="line-height: 30px;">
<el-radio :label="1">Imperfect style</el-radio>
<br />
<el-radio :label="2">Too long</el-radio>
<br />
<el-radio :label="3">References incorrectly presented</el-radio>
<br />
<el-radio :label="4">Typographical and Grammatical errors</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="Comments for the Authors">
<el-input type="textarea" placeholder="please input content" v-model="questionform.comment"
:rows="8"></el-input>
</el-form-item>
<el-form-item label="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, {{detailMess.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-collapse>
</el-form>
</el-dialog>
<!-- 相关期刊 -->
<el-dialog title="" :visible.sync="RelatVisible" width="800px">
<p style="font-weight: bold;font-size: 16px;margin-bottom: 30px;" v-html="RelatMes.title"></p>
@@ -702,17 +987,25 @@
jourList_5: [],
stageList_5: [],
Total_5: 0,
topicList_5:[],
topicList_5: [],
chooseData_5: [],
RelatMes:{},
RelatVisible:false,
query_review: {
pageIndex: 1,
pageSize: 10
},
Total_review: 0,
RelatMes: {},
RelatVisible: false,
detailVisible: false,
reviewVisible: false,
reviewData: [],
detailMess: {},
authorList_name: '',
coverLetterFileList: [],
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
supplementaryFileList: [],
responseFileList: [],
talkMsgs: [],
msgs: [],
@@ -722,7 +1015,39 @@
user_id: '',
ad_content: ''
},
talkMsgs: []
talkMsgs: [],
questionVisible: false,
questionform: {
// rev_qu_id: '',
// art_rev_id: this.$route.query.id,
qu1: '',
qu2: '',
qu3: '',
qu4: '',
qu5: '',
qu6: '',
qu7: '',
qu8: '',
qu9: '',
qu9contents: '',
qu10: '',
qu10contents: '',
qu11: '',
qu11contents: '',
qu12: '',
qu12contents: '',
qu13: '',
qu13contents: '',
qu14: '',
qu14contents: '',
qu15: '',
qu15contents: '',
rated: '',
recommend: '',
other: '',
confident: '',
comment: ''
}
};
},
@@ -935,7 +1260,7 @@
console.log(err);
});
},
// 3-----------跳转页面
lookView(e) {
let urlBlan = 'https://www.tmrjournals.cn/article.html?J_num=' + e.journal_id + '&a_id=' + e
@@ -994,9 +1319,9 @@
loading.close();
});
},
// 5-----------相关文章
viewRelated(e){
viewRelated(e) {
this.RelatMes.title = e.title
this.RelatMes.article_id = e.article_id
this.$api
@@ -1206,6 +1531,7 @@
this.picturesAndTablesFileList = res.picturesAndTables;
this.manuscirptFileList = res.manuscirpt;
this.totalpageFileList = res.totalpage;
this.supplementaryFileList = res.supplementary;
})
.catch(err => {
console.log(err);
@@ -1237,6 +1563,66 @@
},
// 审稿信息预览
articleReviewer(e) {
this.detailMess.title = e.title
this.query_review.articleId = e.article_id
this.query_review.article_id = e.article_id
this.$api
.post('api/Article/getReviewerList', this.query_review)
.then((res) => {
this.Total_review = res.totle;
this.reviewData = res.data;
this.reviewVisible = true
})
.catch((err) => {
console.log(err);
});
},
//初始化问卷
initquesion(e) {
this.$api
.post('api/Reviewer/getQuestion', {
artrevid: e
}).then((res) => {
if (res.code == 0) {
this.questionform = res.data;
this.questionform.rev_qu_id = res.data.rev_qu_id;
this.questionform.qu1 = res.data.qu1;
this.questionform.qu2 = res.data.qu2;
this.questionform.qu3 = res.data.qu3;
this.questionform.qu4 = res.data.qu4;
this.questionform.qu5 = res.data.qu5;
this.questionform.qu6 = res.data.qu6;
this.questionform.qu7 = res.data.qu7;
this.questionform.qu8 = res.data.qu8;
this.questionform.qu9 = res.data.qu9 == 0 ? false : true;
this.questionform.qu9contents = res.data.qu9_contents;
this.questionform.qu10 = res.data.qu10 == 0 ? false : true;
this.questionform.qu10contents = res.data.qu10_contents;
this.questionform.qu11 = res.data.qu11 == 0 ? false : true;
this.questionform.qu11contents = res.data.qu11_contents;
this.questionform.qu12 = res.data.qu12 == 0 ? false : true;
this.questionform.qu12contents = res.data.qu12_contents;
this.questionform.qu13 = res.data.qu13 == 0 ? false : true;
this.questionform.qu13contents = res.data.qu13_contents;
this.questionform.qu14 = res.data.qu14 == 0 ? false : true;
this.questionform.qu14contents = res.data.qu14_contents;
this.questionform.qu15 = res.data.qu15 == 0 ? false : true;
this.questionform.qu15contents = res.data.qu15_contents;
this.questionform.rated = res.data.rated;
this.questionform.recommend = res.data.recommend;
this.questionform.other = res.data.other;
this.questionform.confident = res.data.confidential;
this.questionform.comment = res.data.comments;
this.questionform.is_anonymous = res.data.is_anonymous;
this.questionVisible = true
}
});
},
// 分页导航-1
handlePageChange_1(val) {
this.$set(this.query_1, 'pageIndex', val);
@@ -1257,6 +1643,10 @@
this.$set(this.query_5, 'pageIndex', val);
this.getDate_5();
},
// 分页导航-review
handlePageChange_review(val) {
this.$set(this.query_review, 'pageIndex', val);
},
}
};
@@ -1445,14 +1835,14 @@
/deep/ .articlDialog .el-dialog {
background: #fafafa;
}
.reta_tit{
margin: 30px 0 15px 0;
font-weight: bold;
letter-spacing: -0.5px;
font-size: 15px;
.reta_tit {
margin: 30px 0 15px 0;
font-weight: bold;
letter-spacing: -0.5px;
font-size: 15px;
}
.choose_list {
padding: 14px 15px;
margin-bottom: 10px;
@@ -1463,4 +1853,17 @@
line-height: 22px;
word-break: normal;
}
.tab_tie_col {
margin-bottom: 5px;
color: #333;
word-wrap: break-word;
word-break: normal;
}
.tab_tie_col>span {
color: #888;
margin: 0 5px 0 0;
font-size: 13px;
}
</style>

View File

@@ -155,6 +155,22 @@
<br clear="both">
</el-col>
</el-row>
<el-row :gutter="24" v-if="supplementaryFileList">
<el-col :span="24">
<h4>Supplementary Material : </h4>
<p class="fi_new">
<a v-for="item in supplementaryFileList" :href="mediaUrl + item.file_url">
<img src="../../assets/img/icon_0.png">
<span>
<font>Uploader : </font>{{item.username}}
<i><i class="el-icon-time"></i>{{formatDate(item.ctime)}}</i>
</span>
<i class="el-icon-download download"></i>
</a>
</p>
<br clear="both">
</el-col>
</el-row>
</div>
</div>
<div class="art_caozuo_">
@@ -311,6 +327,7 @@
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
supplementaryFileList: [],
authorList_name: '',
activeNames: ['2'],
editform: {
@@ -672,7 +689,6 @@
console.log(err);
});
// 留言板列表
this.$api
.post('api/Article/getArticleDialogs', {
@@ -684,6 +700,7 @@
.catch((err) => {
console.log(err);
});
},
//初始化filelist
initFileList() {
@@ -696,6 +713,7 @@
this.picturesAndTablesFileList = res.picturesAndTables;
this.manuscirptFileList = res.manuscirpt;
this.totalpageFileList = res.totalpage;
this.supplementaryFileList = res.supplementary;
})
.catch(err => {
console.log(err);

View File

@@ -241,6 +241,18 @@
</a>
</p>
<br clear="both" v-if="totalpageFileList">
<h4 v-if="supplementaryFileList">Supplementary Material : </h4>
<p v-if="supplementaryFileList">
<a v-for="item in supplementaryFileList" :href="mediaUrl + item.file_url">
<img src="../../assets/img/icon_0.png">
<span>
<font>Uploader : </font>{{item.username}}
<i><i class="el-icon-time"></i>{{formatDate(item.ctime)}}</i>
</span>
<i class="el-icon-download download"></i>
</a>
</p>
<br clear="both" v-if="supplementaryFileList">
<h4>Manuscirpt : </h4>
<p>
<a v-for="item in manuscirptFileList" :href="mediaUrl + item.file_url">
@@ -413,6 +425,7 @@
picturesAndTablesFileList: [],
totalpageFileList: [],
manuscirptFileList: [],
supplementaryFileList: [],
};
},
created() {
@@ -514,6 +527,7 @@
this.picturesAndTablesFileList = res.picturesAndTables;
this.manuscirptFileList = res.manuscirpt;
this.totalpageFileList = res.totalpage;
this.supplementaryFileList = res.supplementary;
})
.catch(err => {
console.log(err);

View File

@@ -13,18 +13,21 @@
</div>
<el-table :data="tableData" border stripe class="table" ref="multipleTable"
header-cell-class-name="table-header" empty-text="New messages (0)">
<el-table-column prop="journal_id" label="ID" align="center" width="50"></el-table-column>
<el-table-column prop="title" label="Title" align="center"></el-table-column>
<el-table-column prop="issn" label="Issn" align="center" width="110"></el-table-column>
<el-table-column prop="alias" label="Alias" align="center" width="80"></el-table-column>
<el-table-column prop="level" label="Level" align="center" width="70"></el-table-column>
<el-table-column prop="editor" label="Editor" align="center"></el-table-column>
<el-table-column label="" width="210" align="center">
<el-table-column prop="journal_id" label="ID" align="center" width="40"></el-table-column>
<el-table-column prop="title" label="Title"></el-table-column>
<el-table-column prop="issn" label="Issn" align="center" width="100"></el-table-column>
<el-table-column prop="alias" label="Alias" align="center" width="60"></el-table-column>
<el-table-column prop="level" label="Level" align="center" width="60"></el-table-column>
<el-table-column prop="kfen" label="Initial review score" align="center" width="70"></el-table-column>
<el-table-column prop="scope" label="Introduction" align="center" width="300"></el-table-column>
<el-table-column prop="editor" label="Editor" align="center" width="150"></el-table-column>
<el-table-column label="" width="150" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain icon="el-icon-tickets"
@click="showdetail(scope.row)">Detail</el-button>
<el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="showdetail(scope.row)">Edit Message</el-button>
<p style="height: 10px;"></p>
<el-button size="mini" type="warning" plain icon="el-icon-edit"
@click="handleChange(scope.row)">Change</el-button>
@click="handleChange(scope.row)">Change Editor</el-button>
</template>
</el-table-column>
</el-table>
@@ -34,8 +37,8 @@
</div>
</div>
<el-dialog title="Detail" :visible.sync="detailVisible" width="500px">
<el-form ref="detail_form" :model="detailForm" :rules="rules" label-width="110px">
<el-dialog title="Edit Message" :visible.sync="detailVisible" width="650px">
<el-form ref="detail_form" :model="detailForm" :rules="rules" label-width="165px">
<el-form-item label="Journal :">
<span>{{detailForm.title}}</span>
</el-form-item>
@@ -51,6 +54,12 @@
<el-form-item label="Password :" prop="epassword">
<el-input v-model="detailForm.epassword"></el-input>
</el-form-item>
<el-form-item label="Initial review score :" prop="kfen">
<el-input-number v-model="detailForm.kfen" :min="0"></el-input-number>
</el-form-item>
<el-form-item label="Introduction :" prop="scope">
<el-input type="textarea" rows="5" v-model="detailForm.scope"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="detailVisible = false">Cancel</el-button>
@@ -58,12 +67,12 @@
</span>
</el-dialog>
<el-dialog title="Change" :visible.sync="editVisible" width="500px">
<el-form ref="changform" :model="changeForm" label-width="90px">
<el-form-item label="Editormsg :">
<el-dialog title="Change Editor" :visible.sync="editVisible" width="500px">
<el-form ref="changform" :model="changeForm" label-width="100px">
<el-form-item label="Journal :">
<span>{{changeForm.title}}</span>
</el-form-item>
<el-form-item label="State :">
<el-form-item label="Editor :">
<el-select v-model="changeForm.editorId" placeholder="Please select">
<el-option :key="0" label="Please select" :value="0"></el-option>
<el-option v-for="item in editorList" :key="item.user_id" :label="item.account"
@@ -122,6 +131,16 @@
message: 'Please input re-password',
trigger: 'blur'
}],
kfen: [{
required: true,
message: 'Please input initial review score',
trigger: 'blur'
}],
scope: [{
required: true,
message: 'Please input journal introduction',
trigger: 'blur'
}],
email: [{
required: true,
message: 'Please input email',
@@ -181,11 +200,7 @@
},
// 更改期刊参数
showdetail(row) {
this.detailForm.title = row.title;
this.detailForm.journal_id = row.journal_id;
this.detailForm.level = row.level;
this.detailForm.email = row.email;
this.detailForm.epassword = row.epassword;
this.detailForm =JSON.parse(JSON.stringify(row))
this.detailVisible = true
},
// 保存期刊参数

View File

@@ -52,7 +52,7 @@
</div>
<p style="margin-top: 5px;color: #999;font-size: 14px;">
<b style="color: #e41411;">Download failed</b>
<b style="color: #e41411;">Download failed?</b>
<br>If you have upgraded the Google Chrome browser to version 86, released on
October 6,
2020,

View File

@@ -971,26 +971,26 @@
this.mess_age.reviewer_id = e.currentTarget.parentElement.getAttribute('value')
this.mess_age.journal_id = e.currentTarget.parentElement.getAttribute('name')
// 二次确认删除
this.$confirm('Are you sure you want to delete?', 'Tip', {
type: 'warning'
// this.$confirm('Are you sure you want to delete?', 'Tip', {
// type: 'warning'
// })
// .then(() => {
this.$api
.post('api/User/deleteArticleReviewer', this.mess_age)
.then(res => {
if (res.code == 0) {
this.delOpen = false;
this.$message.success('Deleted successfully');
this.getContent();
} else {
this.$message.error(res.msg);
}
})
.then(() => {
this.$api
.post('api/User/deleteArticleReviewer', this.mess_age)
.then(res => {
if (res.code == 0) {
this.delOpen = false;
this.$message.success('Deleted successfully');
this.getContent();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(() => {});
.catch(err => {
this.$message.error(err);
});
// })
// .catch(() => {});
},
// 评级弹出框
BoxGrade(e) {
@@ -1303,7 +1303,7 @@
.deteleBtn {
color: #ce1111;
margin-left: 18px;
}
.deteleBtn i {