邮箱管理

This commit is contained in:
2024-08-27 16:28:05 +08:00
parent f83cce3087
commit f75474adcb
6 changed files with 421 additions and 2 deletions

View File

@@ -148,6 +148,12 @@
</template>
<!-- 编辑 -->
<template v-if="this.userrole == 1">
<el-submenu index="mailboxManagement">
<template slot="title"> <i class="el-icon-message"></i> {{ $t('sidebar.mailboxManagement') }} </template>
<el-menu-item index="mailboxManagement">
{{ $t('sidebar.mailboxManagement') }}
</el-menu-item>
</el-submenu>
<el-submenu index="tools">
<template slot="title"> <i class="el-icon-paperclip"></i> {{ $t('sidebar.tools') }} </template>
<el-menu-item index="RejectedArticles">

View File

@@ -125,6 +125,7 @@ const en = {
mailbox2: 'Mailbox list',
mailbox3: 'Mailbox template',
tools: 'Assistant tools',
mailboxManagement: 'Mailbox Management',
ReArticles: 'Rejected Manuscripts', // 被拒稿件
editorialBoard: 'Boss System',
editorialBoard1: 'Board Management',

View File

@@ -124,6 +124,7 @@ const zh = {
mailbox2: '邮件列表',
mailbox3: '模板管理',
tools: '辅助工具',
mailboxManagement: '邮箱管理',
ReArticles: '被拒稿件', // 被拒稿件
editorialBoard: '编委管理',
editorialBoard1: '编委列表',

View File

@@ -0,0 +1,404 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item> <i class="el-icon-message"></i> {{ $t('sidebar.mailboxManagement') }} </el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container">
<div class="handle-box" style="overflow: hidden">
<!-- <el-input v-model="query.username" placeholder="Account / Realname / Email" style="width: 240px; margin-right: 10px">
</el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="
query.pageIndex = 1;
getDate();
"
>Search</el-button
> -->
<el-button type="primary" icon="el-icon-plus" @click="handleAdd" style="float: right">Add Mailbox </el-button>
</div>
<el-table :data="tableData" border class="table" ref="multipleTable" header-cell-class-name="table-header" empty-text="">
<el-table-column prop="user" label="userName" width="200"></el-table-column>
<el-table-column prop="email" label="Email"></el-table-column>
<el-table-column label=" " width="120" align="center">
<template slot-scope="scope">
<!-- <el-button plain type="primary" icon="el-icon-edit" @click="handleEdit(scope.row)">Edit Message</el-button> -->
<el-button plain type="primary" icon="el-icon-discount" @click="handleEdit(scope.row)">Edit</el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- 添加用户弹出框 -->
<el-dialog :title="`${!addForm.id ? 'Add Mailbox' : 'Edit Password'}`" :visible.sync="addVisible" width="550px">
<el-form ref="addTab" :model="addForm" :rules="rules" label-width="150px">
<el-form-item label="User :" prop="user" v-if="!addForm.id">
<el-input v-model="addForm.user" clearable></el-input>
</el-form-item>
<el-form-item label="User :" prop="user1" v-else>
<p >{{ addForm.user }}</p>
</el-form-item>
<el-form-item label="email :" prop="email" v-if="addForm.id">
<p >{{ addForm.email?addForm.email:'' }}</p>
</el-form-item>
<!-- autocomplete="new-password" -->
<el-form-item label="Password :" prop="password" class="no-autofill-pwd">
<el-input v-model="addForm.password" clearable autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="Confirm password :" prop="repassword" class="no-autofill-pwd">
<el-input v-model="addForm.repassword" clearable autocomplete="off"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addVisible = false">Cancel</el-button>
<el-button type="primary" @click="saveAdd">Save</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
name: 'partyList',
data() {
return {
randomName: `password_${Math.random().toString(36).substr(2, 9)}`,
urlList: {
list: 'api/Email/getEmailAccounts',
add: 'api/Email/addEmailAccount',
edit: 'api/Email/changePassword'
},
mediaUrl: this.Common.mediaUrl,
userrole: localStorage.getItem('U_status'),
guest_id: localStorage.getItem('U_id'),
tableData: [],
blackForm: {},
emailForm: {
mark_new: ''
},
roleList: [
{
value: 0,
title: 'All Role'
},
{
value: 1,
title: 'Editor'
},
{
value: 2,
title: 'Reviewer'
},
{
value: 3,
title: 'Editorial Board Member'
}
],
addForm: {},
editForm: {},
query: {
role: 0,
pageIndex: 1,
pageSize: 15,
username: ''
},
link_Total: 0,
email_num: 0,
blackVisible: false,
emailVisible: false,
addVisible: false,
editVisible: false,
rules: {
user: [
{
required: true,
message: 'Please input user',
trigger: 'blur'
}
],
password: [
{
required: true,
validator: 'Please input password',
trigger: 'blur'
}
],
repassword: [
{
required: true,
validator: 'Please input password again',
trigger: 'blur'
}
]
}
};
},
mounted() {},
created() {
this.getDate();
},
methods: {
// 获取数据
getDate() {
this.$api
.post(this.urlList.list)
.then((res) => {
if (res.code == 0) {
this.tableData = res.data.list;
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
},
// 指数颜色
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><br/><span style="color:#aaa;font-size:14px;margin-left:5px;"> (' +
time +
')</span>';
} else if (num < 15) {
str =
'<b style="color:#cbb504">' +
num +
'</b><br/><span style="color:#aaa;font-size:14px;margin-left:5px;"> (' +
time +
')</span>';
} else {
str =
'<b style="color:#0cbc15">' +
num +
'</b><br/><span style="color:#aaa;font-size:14px;margin-left:5px;"> (' +
time +
')</span>';
}
if (time == 0) {
str = '<b style="color:#aaa;">0 </b><br/><span style="color:#aaa;font-size:14px;margin-left:5px;">(No time)</span>';
}
return str;
},
// 检测邮箱弹出框
handleAdd() {
this.addForm = {
user: '',
password: '',
repassword: ''
};
this.addVisible = true;
this.$nextTick(() => {
this.$refs.addTab.resetFields();
});
},
// 添加用户弹出框
saveEmail() {
this.$refs.emailTab.validate((valid) => {
if (valid) {
let Email_mark = 0;
let Accnt_mark = 0;
this.$api
.post('api/User/checkUserByEmail', this.emailForm)
.then((res) => {
if (res.code == 0) {
if (res.data.has == 0) {
Email_mark = 0;
} else {
Email_mark = 1;
}
} else {
this.$message.error(res.msg);
}
this.$api
.post('api/User/checkUserByAccount', this.emailForm)
.then((res) => {
if (res.code == 0) {
if (res.data.has == 0) {
Accnt_mark = 0;
} else {
Accnt_mark = 1;
}
} else {
this.$message.error(res.msg);
}
if (Email_mark == 1 && Accnt_mark == 1) {
this.email_num = 1;
this.emailForm.mark_new = 'Email and account already exist!';
} else if (Email_mark == 1 && Accnt_mark != 1) {
this.email_num = 1;
this.emailForm.mark_new = 'Email already exist!';
} else if (Email_mark != 1 && Accnt_mark == 1) {
this.email_num = 1;
this.emailForm.mark_new = 'Account already exist!';
} else {
this.addForm.email = this.emailForm.email;
this.addForm.account = this.emailForm.account;
this.email_num = 2;
setTimeout(() => {
this.emailVisible = false;
this.addVisible = true;
}, 1000);
}
})
.catch((err) => {
this.$message.error(err);
});
})
.catch((err) => {
this.$message.error(err);
});
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 保存添加用户
saveAdd() {
this.$refs.addTab.validate((valid) => {
if (valid) {
if (this.addForm.password == this.addForm.repassword) {
var data = {};
if (!this.addForm.id) {
data = {
user: this.addForm.user,
password: this.addForm.password
};
} else {
data = {
id: this.addForm.id,
password: this.addForm.password
};
}
this.$api
.post(this.addForm.id ? this.urlList.edit : this.urlList.add, data)
.then((res) => {
if (res.code == 0) {
this.addVisible = false;
this.getDate();
this.$message.success('User added successfully!');
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
} else {
this.$message.error('The two passwords are inconsistent!');
}
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 编辑用户弹出框
handleEdit(row) {
this.addForm = { id: row.id, password: '', repassword: '',user:row.user,email:row.email };
this.addVisible = true;
this.$nextTick(() => {
this.$refs.addTab.resetFields();
});
},
// 保存编辑用户
saveEdit() {},
// 编辑身份跳页面
// 拉黑弹窗
handleDark(row) {
this.blackForm = Object.assign({}, row);
this.blackVisible = true;
},
// 移除拉黑操作
handleBlack(blackForm) {
// 二次确认更改状态
this.$confirm('Are you sure you want ' + blackForm.realname + ' to join the blacklist', 'Tip', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/User/pushUserToBlack', this.blackForm)
.then((res) => {
if (res.code == 0) {
this.$message.success('Join the blacklist successful!');
this.blackForm.reason = '';
this.blackVisible = false;
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();
}
},
computed: {},
watch: {}
};
</script>
<style scoped >
.handle-box {
margin-bottom: 20px;
}
.el-button--primary.is-plain:hover {
background-color: #409eff !important;
color: #fff !important;
}
.ro_li_ku {
border: 1px solid #419fcf;
border-radius: 5px;
color: #419fcf;
display: inline-block;
margin: 5px;
padding: 0 5px;
white-space: nowrap;
}
/deep/.ipt {
.el-input__inner {
-webkit-text-security: disc !important;
}
}
::v-deep.no-autofill-pwd .el-input--suffix .el-input__inner {
-webkit-text-security: disc !important;
}
</style>

View File

@@ -886,6 +886,13 @@ export default new Router({
title: 'Mailbox template'
}
},
{
path: '/mailboxManagement', //被拒稿件汇总
component: () => import('../components/page/mailboxManagement'),
meta: {
title: 'Mailbox Management'
}
},
{
path: '/RejectedArticles', //被拒稿件汇总
component: () => import('../components/page/RejectedArticles'),

View File

@@ -72,8 +72,8 @@ module.exports = {
// target: 'https://www.tmrjournals.cn',
// target: 'http://www.tougao.com/public/index.php/',
// target: 'http://www.tougao.com/',
// target: 'http://192.168.110.110/tougao/public/index.php/',
target: 'https://submission.tmrjournals.com/',//正式
target: 'http://192.168.110.110/tougao/public/index.php/',
// target: 'https://submission.tmrjournals.com/',//正式
changeOrigin: true,
pathRewrite: {
'^/api': ''