Files
tougao_web/src/components/page/man_text_jx.vue
2025-11-20 10:19:34 +08:00

524 lines
15 KiB
Vue
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-document-copy"></i>
<router-link :to="{path:'/managing'}">
<span class="top_dao"> Editor-in-Chief Article</span>
</router-link>
>> Editor-in-Chief Article Detail
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container_l">
<el-row :gutter="20" style="display: flex;">
<el-col :span="16">
<el-card class="box-card">
<div class="tet_list" :model="txt_mess">
<h4>{{txt_mess.title}}</h4>
<h5>{{this.head_line}}<span style="margin: 0 10px;">>></span> Manuscript ID: {{txt_mess.accept_sn}}</h5>
<p style="margin: 8px 0 5px 0;"><b>Author : </b>{{txt_mess.author}}</p>
<p><b>Type :</b> {{txt_mess.type}}</p>
<p><b>Submitted time :</b> {{txt_mess.ctime}}</p>
<p style="margin-bottom: 10px;"><b>Abstract :</b> <br>{{txt_mess.abstrart}}</p>
<div class="file_sty" v-for="item in fileList">
<img src="../../assets/img/icon_0.png" alt="" class="icon_img">
<a :href='mediaUrl+item.file_url' target="_blank" class="txt_pdf">Manuscript
<span style="margin-left: 50px;color: #888;font-size: 13px;">{{item.ctime}}</span>
<i class="el-icon-download" style="margin-left: 20px;color: #66b1ff;font-weight: bold;"></i>
</a><br>
</div>
<p style="margin-top: 10px;color: #999;font-size: 14px;">
<b style="color: #e41411;">Download failed</b>
<br>If you have upgraded the Google Chrome browser to version 86, released on October 6, 2020, you may have
noticed that some file downloads don't work anymore in the browser. You click on the download link and nothing
happens. 
<br>1. Right now, the easiest option available is to
<b style="color: #e41411;">right-click on the download link and select "save link as".</b>
The download is executed when you do that.
<br>2. Please try to use a different browser for downloads. For now, a browser like Firefox, Internet Explorer,
Brave, Vivaldi, the new Edge, or Opera all allow the download.
</p>
</div>
</el-card>
</el-col>
<el-col :span="8">
<el-card class="box-card">
<div class="tet_people">
<h4>I want to invite the following editorial board members to get more opinions for the manuscript.
<el-button type="primary" @click="add_Editer" plain style="margin:5px 0 5px 20px;">+ Add</el-button>
</h4>
<ul v-for="(item,index) in Editard_list">
<li style="list-style: none;font-size: 15px;">
<span><span style="margin-right: 6px;">{{index+1}}.</span>{{item.account}} (<font v-if="item.realname!=''">{{item.realname}}
, </font>{{item.email}}) </span>
<el-button type="text" icon="el-icon-delete" class="red" @click="handleDelete(item)"></el-button>
</li>
</ul>
<p style="color: #6f6f6f;font-size: 14px; margin: 20px 0px 0px 10px;" v-if="Editard_list==''">No editorial board
members</p>
</div>
</el-card>
</el-col>
</el-row>
<div>
<h2 style="margin: 30px 0 15px 5px;font-size: 16px;">Add my comment (The comment will be showed to : editor,
editorial board members, young sciencists member.)</h2>
<div class="chatIcon">
<el-popover placement="top-start" width="400" trigger="click" class="emoBox">
<div class="emotionList">
<a href="javascript:void(0);" @click="getEmo(index)" v-for="(item,index) in faceList" :key="index" class="emotionItem">{{item}}</a>
</div>
<!-- <el-button class="emotionSelect" slot="reference" style="padding: 7px 10px;border: 0;margin: 3px 5px;position: absolute;z-index: 500;background: 0;">
<svg t="1629607720277" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="3396" width="20" height="20">
<path d="M512 1024c282.752 0 512-229.248 512-512S794.752 0 512 0 0 229.248 0 512s229.248 512 512 512z m0-85.333333C276.352 938.666667 85.333333 747.648 85.333333 512S276.352 85.333333 512 85.333333s426.666667 191.018667 426.666667 426.666667-191.018667 426.666667-426.666667 426.666667z"
fill="#FFBB20" p-id="3397"></path>
<path d="M512 512m-85.333333 0a85.333333 85.333333 0 1 0 170.666666 0 85.333333 85.333333 0 1 0-170.666666 0Z"
fill="#FFFFFF" p-id="3398"></path>
<path d="M320 405.333333m-64 0a64 64 0 1 0 128 0 64 64 0 1 0-128 0Z" fill="#666666" p-id="3399"></path>
<path d="M704 405.333333m-64 0a64 64 0 1 0 128 0 64 64 0 1 0-128 0Z" fill="#666666" p-id="3400"></path>
<path d="M234.666667 576c42.666667 170.666667 135.125333 256 277.333333 256s234.666667-85.333333 277.333333-256h-554.666666z"
fill="#E01313" p-id="3401"></path>
</svg>
</el-button> -->
</el-popover>
</div>
<el-input v-model="add_edit.content" class="chatText ping_lun" type="textarea" id='textarea' rows="5" placeholder="Please enter the content..."
@keyup.enter.native="sendInfo"></el-input>
<div style="text-align: right;">
<el-button type="primary" @click="hdSubmit" class="sub_mit">Save</el-button>
</div>
</div>
<h2 style="margin: 0 0 15px 5px;font-size: 16px;">All comments</h2>
<el-card class="box-card" v-if="this.commentData!=''">
<comment :comments="commentData"></comment>
</el-card>
<p v-if="this.commentData==''" style="color:#6f6f6f;font-size: 14px;margin: 20px 0 0 10px;">No comment</p>
</div>
<!-- 添加编委弹出框 -->
<el-dialog title="Add Editorial board member" :visible.sync="addVisible" width="50%" :close-on-click-modal="false">
<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="account" label="account" align="center"></el-table-column>
<el-table-column prop="major_title" label="major title" align="center"></el-table-column>
<el-table-column prop="realname" label="realname" align="center"></el-table-column>
<el-table-column prop="phone" label="phone" align="center" width="150px"></el-table-column>
<el-table-column prop="email" label="email" align="center"></el-table-column>
<el-table-column label="" width="100" align="center">
<template slot-scope="scope">
<el-button type="text" @click="handleChoose(scope.$index, scope.row)">+ Choice</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background layout="total, prev, pager, next" :current-page="qEdit.pageIndex" :page-size="qEdit.pageSize"
:total="Total" @current-change="handlePageChange"></el-pagination>
</div>
</el-dialog>
</div>
</template>
<script>
import comment from './comment'
// import appData from '../../assets/js/emoji.json'
const appData = require("../../assets/js/emoji.json");
export default {
components: {
comment
},
mounted() {
for (let i in appData) {
this.faceList.push(appData[i].char);
}
},
data() {
return {
mediaUrl: this.Common.mediaUrl,
textarea: '',
commentData: [],
txt_mess: {},
txt_peop: {},
add_edit: {
article_id: this.$route.query.Art_id,
user_id: localStorage.getItem('U_id'),
content: ''
},
select_edit: {
board_id: '',
article_id: this.$route.query.Art_id,
},
head_line: '',
Art_id: this.$route.query.Art_id,
tableData: [],
fileList: [],
faceList: [],
addVisible: false,
qEdit: {
journal_id: localStorage.getItem('journal_id'),
pageIndex: 1,
pageSize: 10
},
Total: 0,
Editard_list: [],
// Edit_Chi: [],
rules: {}
}
},
created() {
this.getData();
},
methods: {
getData() {
// 获取文章信息
this.$api
.post('api/Chief/getArticleDetail ', {
'article_id': this.Art_id
})
.then(res => {
if (res.code == 0) {
let mes_date = new Date(parseInt(res.data.article.ctime) * 1000);
let Y = mes_date.getFullYear() + '-';
let M = mes_date.getMonth() + 1 < 10 ? '0' + (mes_date.getMonth() + 1) + '-' : mes_date.getMonth() + 1 + '-';
let D = mes_date.getDate() < 10 ? '0' + mes_date.getDate() : mes_date.getDate();
res.data.article.ctime = Y + M + D;
this.txt_mess = res.data.article;
if (res.data.article.file != "") {
this.head_line = res.data.article.journal.title;
let file_down = res.data.article.file;
for (var i = 0; i < file_down.length; i++) {
let date = new Date(parseInt(file_down[i].ctime) * 1000);
let Y = date.getFullYear() + '-';
let M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) + '-' : date.getMonth() + 1 + '-';
let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
file_down[i].ctime = Y + M + D;
}
this.fileList = file_down
// 获取文章编委池子
this.$api
.post('api/Chief/getAllArticleBoards', this.qEdit)
.then(res => {
if (res.code == 0) {
this.tableData = res.data.boards;
this.Total = res.data.count || 0;
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
console.log(err);
});
}
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
// 获取文章的编委列表
this.$api
.post('api/Chief/getArticleBoard', {
'article_id': this.Art_id
})
.then(res => {
if (res.code == 0) {
this.Editard_list = res.data.boards;
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
// 获取评论内容
this.$api
.post('api/Chief/getAllChiefMsg', {
'article_id': this.Art_id
})
.then(res => {
if (res.code == 0) {
for (var i = 0; i < res.data.msgs.length; i++) {
let date = new Date(parseInt(res.data.msgs[i].ctime) * 1000);
let Y = date.getFullYear() + '-';
let M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) + '-' : date.getMonth() + 1 + '-';
let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
let h = date.getHours() < 10 ? ('0' + date.getHours()) + ':' : date.getHours() + ':';
let n = date.getMinutes() < 10 ? ('0' + date.getMinutes()) + ':' : date.getMinutes() + ':';
let s = date.getSeconds() < 10 ? ('0' + date.getSeconds()) : date.getSeconds();
res.data.msgs[i].ctime = Y + M + D + ' ' + h + n + s;
}
this.commentData = res.data.msgs;
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
// 添加编委-弹出框
add_Editer() {
this.addVisible = true;
},
// 保存添加编委
handleChoose(index, row) {
this.select_edit.board_id = row.user_id;
this.$api
.post('api/Chief/addArticleBoard', this.select_edit)
.then(res => {
if (res.code == 0) {
this.$message.success('Editorial board of newly added articles succeeded!');
this.addVisible = false;
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
// 分页导航
handlePageChange(val) {
this.$set(this.qEdit, 'pageIndex', val);
this.getData();
},
// 删除编委
handleDelete(item) {
// 二次确认删除
this.$confirm('Are you sure you want to delete the editorial board of this article', 'Delete', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/Chief/delArticleBoard', item)
.then(res => {
if (res.code == 0) {
this.$message.success('删除成功');
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 获取表情包
getEmo(index) {
var textArea = document.getElementById('textarea');
function changeSelectedText(obj, str) {
if (window.getSelection) {
// 非IE浏览器
textArea.setRangeText(str);
// 在未选中文本的情况下,重新设置光标位置
textArea.selectionStart += str.length;
textArea.focus()
} else if (document.selection) {
// IE浏览器
obj.focus();
var sel = document.selection.createRange();
sel.text = str;
}
}
changeSelectedText(textArea, this.faceList[index]);
this.textarea = textArea.value; // 要同步data中的数据
// console.log(this.faceList[index]);
return;
},
// 添加评论
hdSubmit() {
// console.log(this.add_edit)
if (this.add_edit.content == '') {
this.$message.error('Add message cannot be empty!');
} else {
this.$api
.post('api/Chief/addMsgForArticle', this.add_edit)
.then(res => {
if (res.code == 0) {
this.$message.success('Successfully added message!');
this.add_edit.content = ''
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
}
}
}
</script>
<style scoped>
.ma_title {
margin-bottom: 5px;
font-weight: bold;
}
.icon_img {
width: 20px;
height: 20px;
margin-right: 10px;
vertical-align: middle;
}
.tet_list {
font-size: 20px;
}
.upload-txtc .el-upload-list__item .el-icon-upload-success {
display: none !important;
}
.top_dao:hover {
text-decoration: underline;
cursor: pointer;
}
.tet_list h5 {
font-size: 15px;
margin: 20px 0 5px 0;
font-weight: normal;
}
.tet_list p {
font-family: Calibri;
line-height: 22px;
font-size: 16px;
}
.tet_people {}
.tet_people .el-input {
margin-top: 20px;
}
.file_sty {
margin-bottom: 6px;
}
.file_sty a {
color: #606266;
font-size: 14px;
}
.file_sty a:hover {
text-decoration: underline;
}
.ping_lun {}
.ping_lun textarea {
/* padding-top: 50px; */
-webkit-box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
border: 0;
}
.ping_lun textarea:focus {
/* height: 140px; */
-webkit-box-shadow: 0 0 6px 0 #5094d5;
box-shadow: 0 0 6px 0 #5094d5;
border: 1px solid #5094d5;
}
.sub_mit {
margin: 15px 0 0 0;
width: 100px;
}
.red {
color: #ff0000;
}
/* 表情包 */
.el-popover {
height: 200px;
width: 400px;
overflow: scroll;
overflow-x: auto;
}
.chatIcon {
/* padding: 0 10px; */
font-size: 25px;
}
.emotionList {
display: flex;
flex-wrap: wrap;
padding: 5px;
}
.emotionItem {
width: 10%;
font-size: 20px;
text-align: center;
}
/*包含以下四种的链接*/
.emotionItem {
text-decoration: none;
}
/*正常的未被访问过的链接*/
.emotionItem:link {
text-decoration: none;
}
/*已经访问过的链接*/
.emotionItem:visited {
text-decoration: none;
}
/*鼠标划过(停留)的链接*/
.emotionItem:hover {
text-decoration: none;
}
/* 正在点击的链接*/
.emotionItem:active {
text-decoration: none;
}
</style>