Files
tougao_web/src/components/page/Journal_Agreement.vue
2024-05-06 15:29:42 +08:00

686 lines
25 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-user"></i> Journal Agreement </el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container" style="min-width: 1000px">
<div>
<span style="font-size: 14px; color: #606266; margin: 0 10px 0 0">Journal : </span>
<el-select
v-model="dataForm.journal_id"
placeholder="Please select a journal"
@change="handleSelectJournal"
style="width: 220px; margin-right: 35px"
>
<el-option v-for="item in df_jour" :label="item.title" :key="item.journal_id" :value="item.journal_id"></el-option>
</el-select>
</div>
<div class="handle-box" style="margin-bottom: 15px; overflow: hidden">
<!-- <div >
<el-button type="primary" icon="el-icon-plus" @click="addHandle" style="float: right;">
Add new Editors & Staff</el-button>
</div> -->
</div>
<!-- :action="'/api/api/Ucenter/up_userIcon_file'" -->
<el-upload
class="chapter-avatar-uploader"
:action="baseUrl + '/api/Ucenter/up_userIcon_file'"
name="icon"
accept=".jpeg,.jpg,.gif,.png"
:show-file-list="false"
:on-success="contentUploadSuccess"
>
</el-upload>
<quill-editor
v-model="dataForm.ethics"
ref="myQuillEditor"
:options="editorOption"
@blur="onEditorBlur($event)"
@focus="onEditorFocus($event)"
@ready="onEditorReady($event)"
class="chapter_editor"
>
</quill-editor>
<div class="queSub">
<el-button type="primary" @click="submitGpt()"> Submit </el-button>
</div>
<!-- <div class="pagination">
<el-pagination background layout="total, prev, pager, next" :current-page="query.pageIndex"
:page-size="query.pageSize" :total="Total" @current-change="handlePageChange"></el-pagination>
</div> -->
</div>
<!-- 添加弹出框 -->
<el-dialog title="Add Editors & Staff" :visible.sync="addVisible" width="660px" :close-on-click-modal="false" @close="addVisCancle">
<el-form ref="add_Form" :model="addForm" :rules="rules" label-width="140px" v-if="!dis_able">
<el-form-item label="Email / Account :" prop="account" v-if="!dis_able">
<el-input v-model="addForm.account" style="width: 300px"></el-input>
<el-button type="warning" @click="saerNa_U()" style="margin-left: 15px" icon="el-icon-paperclip"> Check</el-button>
<p style="color: #888; margin-top: 10px">
Note: The new Editors & Staff must be a registered user.
<br />Click <a class="zhu_ce" @click="Goto_res()">register</a>.
</p>
</el-form-item>
</el-form>
<el-form ref="add_Form" :model="addForm" :rules="rules" label-width="150px" v-if="dis_able">
<el-form-item label="Account :">
{{ addForm.account }}
</el-form-item>
<el-form-item label="Email :">
{{ addForm.email }}
</el-form-item>
<el-form-item label="Realname :">
{{ addForm.realname }}
</el-form-item>
<el-form-item label="Journal :" prop="journal_id">
<el-select v-model="addForm.journal_id" placeholder="Please select a journal" style="width: 270px">
<el-option v-for="item in df_jour" :label="item.title" :key="item.journal_id" :value="item.journal_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Title :" prop="title">
<el-select v-model="addForm.title" placeholder="Please select a title" style="width: 270px">
<el-option v-for="item in titleList" :label="item.name" :key="item.name" :value="item.name"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="Personal introduction :" >
<el-input type="textarea" v-model="addForm.areas" placeholder="Please enter"></el-input>
</el-form-item> -->
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addVisCancle">Cancel</el-button>
<el-button type="primary" @click="saveAdd()" v-if="dis_able">OK</el-button>
</span>
</el-dialog>
<!-- 编辑弹出框 -->
<el-dialog title="Edit Editors & Staff" :visible.sync="editvisible" width="600px" @close="editClose()">
<el-form ref="addForm1" :model="addForm1" label-width="150px">
<el-form-item label="Title :" prop="editor_title">
<el-select v-model="addForm1.editor_title" placeholder="Please select a title" style="width: 270px">
<el-option v-for="item in titleList" :label="item.name" :key="item.name" :value="item.name"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editClose()">Cancel</el-button>
<el-button type="primary" @click="saveEdit()">OK</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { quillEditor } from 'vue-quill-editor';
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
const toolbarOptions = [
['bold', 'italic', 'underline', 'strike'], // 加粗,斜体,下划线,删除线
['blockquote', 'code-block'], //引用,代码块
[{ header: 1 }, { header: 2 }], // 几级标题
[{ list: 'ordered' }, { list: 'bullet' }], // 有序列表,无序列表
[{ script: 'sub' }, { script: 'super' }], // 下角标,上角标
[{ indent: '-1' }, { indent: '+1' }], // 缩进
[{ direction: 'rtl' }], // 文字输入方向
[{ size: ['small', false, 'large', 'huge'] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
[{ color: [] }, { background: [] }], // 颜色选择
[{ font: ['SimSun', 'SimHei', 'Microsoft-YaHei', 'KaiTi', 'FangSong', 'Arial'] }], // 字体
[{ align: [] }], // 居中
['clean'], // 清除样式,
['link', 'image'] // 上传图片、上传视频
];
export default {
name: 'youthList',
components: {
quillEditor
},
data() {
return {
YearThis: 0,
edit_id: localStorage.getItem('U_id'),
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
dataForm: {},
editorOption: {
modules: {
history: {
delay: 1000,
maxStack: 50,
userOnly: false
},
toolbar: {
container: toolbarOptions,
handlers: {
image: function (value) {
if (value) {
// 调用element的图片上传组件
document.querySelector('.chapter-avatar-uploader input').click();
} else {
this.quill.format('image', false);
}
}
}
}
},
placeholder: this.$t('protocol.PublishingAgreementInfo')
},
query: {
journal_id: 0
},
Total: 0,
df_jour: [],
df_year: [],
titleList: [{ name: 'Production Editor' }, { name: 'Assistant Editor' }, { name: 'Managing Editor' }],
list_year: [
{
title: '1 Year',
id: 1
},
{
title: '2 Years',
id: 2
},
{
title: '3 Years',
id: 3
}
],
tableData: [],
IMG_Url: '',
addVisible: false,
reneVisible: false,
cerVisible: false,
addForm: {
account: ''
},
addForm1: {
etj_id: null,
editor_title: ''
},
editvisible: false,
reneForm: {
journal_id: 0
},
remarkMes: {
remark: ''
},
remarkBox: false,
dis_able: false,
rules: {
account: [
{
required: true,
message: 'Please enter email / account',
trigger: 'blur'
}
],
journal_id: [
{
required: true,
message: 'Please select journal',
trigger: 'blur'
}
]
// year: [{
// required: true,
// message: 'Please select year',
// trigger: 'blur'
// }],
}
};
},
onShow() {
var pages = getCurrentPages(); // 获取当前页面栈
var currentPage = pages[pages.length - 1]; // 当前页面
if (currentPage.data.refreshIfNeeded) {
currentPage.data.refreshIfNeeded = false;
//这里为要调用的函数重新获取数据记得加上this
this.getDate();
}
},
created() {
this.getSelect();
},
methods: {
// 提交问题
submitGpt() {
// if (this.falseMark) {
// return false
// }
if (this.dataForm.ethics == '') {
this.$message.error(this.$t('protocol.PublishingAgreementInfo') + '');
return false;
}
// 传递问题
this.$api
.post('api/Journal/editJournalLeftZc', {
...this.dataForm
})
.then((res) => {
console.log('res at line 257:', res);
if (res.code == 0) {
this.$message.success(res.msg);
this.getSelect();
// 循环答案
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
console.log(err);
});
},
handleSelectJournal(e) {
console.log('data at line 212:', e);
var data = this.df_jour.find((v) => v.journal_id == e);
console.log('data at line 246:', data);
this.dataForm.ethics = data.ethics;
this.$refs.myQuillEditor.form = this.dataForm.ethics;
// const length = this.$refs.myQuillEditor.quill.getLength(); // 获取编辑器内容的长度
// this.$refs.myQuillEditor.quill.setSelection(length, 0);
this.$nextTick(() => {
// let quill = this.$refs.myQuillEditor.quill;
// console.log('quill.getSelection() at line 292:', quill.getSelection())
// let length = quill.getSelection().length;
// // 插入图片res为服务器返回的图片链接地址
// quill.insertEmbed(length, 'image', this.mediaUrl + 'usericon/' + res.upurl);
// // 调整光标到最后
// quill.setSelection(length + 1);
});
this.$forceUpdate();
},
contentUploadSuccess(res, file) {
// console.log(res)
let quill = this.$refs.myQuillEditor.quill;
// 如果上传成功
if (res) {
// 获取光标所在位置
let length = quill.getSelection().index;
// 插入图片res为服务器返回的图片链接地址
quill.insertEmbed(length, 'image', this.mediaUrl + 'usericon/' + res.upurl);
// 调整光标到最后
quill.setSelection(length + 1);
} else {
// 提示信息需引入Message
this.$message.error('图片插入失败!');
}
},
// 失去焦点事件
onEditorBlur(quill) {
// console.log('editor blur!', quill)
},
// 获得焦点事件
onEditorFocus(quill) {
//console.log('editor focus!', quill)
},
// 准备富文本编辑器
onEditorReady(quill) {
// console.log('editor ready!', quill)
},
// 关闭编辑弹窗
editClose() {
this.editvisible = false;
(this.addForm1.etj_id = null), (this.addForm1.editor_title = '');
},
// 显示编辑弹出框
editHandle(val) {
this.editvisible = true;
this.$nextTick(function () {
this.addForm1.etj_id = val.etj_id;
this.addForm1.editor_title = val.editor_title;
});
},
// 提交编辑弹窗
saveEdit() {
this.$api
.post('api/User/editEditorToJournal', {
etj_id: this.addForm1.etj_id,
editor_title: this.addForm1.editor_title
})
.then((res) => {
if (res.code == 0) {
this.$message.success('Edit successfully!');
this.editClose();
// this.getDate();
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
},
// 获取下拉值
getSelect() {
this.$api
.post('api/Journal/getJournalByeditor', {
user_id: this.edit_id
})
.then((res) => {
if (res.code == 0) {
this.df_jour = res.data.journals;
if (JSON.stringify(this.dataForm) == '{}') {
this.dataForm.journal_id = this.df_jour[0].journal_id;
this.dataForm.ethics = this.df_jour[0].ethics;
}
// this.getDate();
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
},
// 获取列表数据
getDate() {
this.$api
.post('api/Journal/getJournalByeditor', {
user_id: this.edit_id
})
.then((res) => {
console.log(res, 111111111111);
if (res.code == 0) {
this.tableData = res.data.journals;
// for (var i = 0; i < this.tableData.length; i++) {
// this.getScoreData(i, this.tableData[i].score)
// }
// this.Total = res.data.count;
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
console.log(err);
});
},
// 评分
getScoreData(i, e) {
this.tableData[i].starList = [];
this.tableData[i].starList_mark = 0;
if (e < 0.5 && e > 0) {
this.tableData[i].starList.push({
star: 2
});
this.tableData[i].starList_mark = 1;
} else {
let zheng = Math.floor(e);
let xiao = Number(e) - Math.floor(e);
if (xiao >= 0.5) {
xiao = 0.5;
} else {
xiao = 0;
}
for (var j = 0; j < zheng; j++) {
this.tableData[i].starList.push({
star: 1
});
}
if (xiao == 0.5) {
this.tableData[i].starList.push({
star: 0
});
}
this.tableData[i].starList_mark = Number(zheng) + Number(xiao);
}
},
// 新增
addHandle() {
this.dis_able = false;
this.addForm.account = '';
this.addVisible = true;
},
// 保存添加
saveAdd() {
this.$refs.add_Form.validate((valid) => {
if (valid) {
const loading = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
// console.log(this.addForm,'this.addForm')
this.$api
.post('api/User/addEditorToJournal', {
user_id: this.addForm.user_id,
journal_id: this.addForm.journal_id,
editor_title: this.addForm.title
//'research_areas': this.addForm.areas
})
.then((res) => {
if (res.code == 0) {
this.getDate();
this.$message.success('Added successfully!');
// this.$refs.add_Form.resetFields();
this.dis_able = false;
this.addVisible = false;
loading.close();
} else {
this.$message.error(res.msg);
loading.close();
}
})
.catch((err) => {
this.$message.error(err);
loading.close();
});
} else {
return false;
}
});
},
// 添加关闭
addVisCancle() {
this.addVisible = false;
this.addForm.journal_id = null;
this.addForm.research_areas = '';
},
// 查找与他相同的账号
saerNa_U() {
if (this.addForm.account != undefined && this.addForm.account != '') {
this.$api
.post('api/User/searchUserByAccountEmail', {
account: this.addForm.account
})
.then((res) => {
if (res.code == 0) {
if (res.data.user == null) {
this.dis_able = false;
this.$message.error('Verify that the account or mailbox does not exist!');
} else {
this.dis_able = true;
this.addForm.user_id = res.data.user.user_id;
this.addForm.account = res.data.user.account;
this.addForm.realname = res.data.user.realname;
this.addForm.email = res.data.user.email;
}
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
} else {
this.$message.error('Verification account or mailbox cannot be empty!');
}
},
// 点击注册
Goto_res() {
this.$router.push('/register');
},
// 详情
handleDtail(e) {
let routerJump = this.$router.resolve({
path: '/partyRole',
query: {
id: e.user_id
}
});
window.open(routerJump.href, '_blank');
},
// 删除
reneDelete(e) {
// 二次确认删除
this.$confirm('Are you sure you want to delete?', 'Tip', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/User/delEditorToJournal', { etj_id: e.etj_id })
.then((res) => {
if (res.code == 0) {
this.$message.success('Deleted successfully');
this.getDate();
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 分页导航
handlePageChange(val) {
this.$set(this.query, 'pageIndex', val);
this.getDate();
},
colorIndex(num, time) {
if (time != 0) {
let date = new Date(parseInt(time * 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 U = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
time = Y + M + D;
}
let str = '';
if (num < 10) {
str =
'<b style="color:#cb160a">' +
num +
'</b><span style="color:#aaa;font-size:14px;margin-left:5px;"><br/>(' +
time +
')</span>';
} else if (num < 15) {
str =
'<b style="color:#cbb504">' +
num +
'</b><span style="color:#aaa;font-size:14px;margin-left:5px;"><br/>(' +
time +
')</span>';
} else {
str =
'<b style="color:#0cbc15">' +
num +
'</b><span style="color:#aaa;font-size:14px;margin-left:5px;"><br/>(' +
time +
')</span>';
}
if (time == 0) {
str = '<b style="color:#aaa;">0</b><br/><span style="color:#aaa;font-size:14px;margin-left:5px;">(Empty)</span>';
}
return str;
},
// 时间格式
formatDate(timestamp) {
var date = new Date(timestamp * 1000); //时间戳为10位需*1000时间戳为13位的话不需乘1000
var Y = date.getFullYear() + '-';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
var h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return Y + M + D;
},
formatYear(timestamp) {
var date = new Date(timestamp * 1000); //时间戳为10位需*1000时间戳为13位的话不需乘1000
var Y = date.getFullYear() + ' . ';
var M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
return Y + M;
}
}
};
</script>
<style scoped>
.handle-box {
margin-bottom: 20px;
}
.table {
width: 100%;
font-size: 14px;
}
.red {
color: #ff0000;
}
.zhu_ce {
text-decoration: underline;
color: #006699;
font-weight: bold;
cursor: pointer;
}
.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;
}
.starSty {
width: 18px;
margin-right: 4px;
vertical-align: text-top;
}
.starSty:nth-last-child(1) {
margin-right: 0;
}
.queSub {
position: absolute;
bottom: 30px;
right: 45px;
margin: 20px 0 0 0;
}
.container {
height: 70vh;
}
</style>