自主修改邮箱

This commit is contained in:
2026-04-29 12:49:55 +08:00
parent a4cbce2db7
commit 9234318139
7 changed files with 117 additions and 11 deletions

View File

@@ -2,14 +2,14 @@
//记得切换 //记得切换
//正式 //正式
const mediaUrl = '/public/'; // const mediaUrl = '/public/';
const baseUrl = '/'; // const baseUrl = '/';
//正式环境 //正式环境
// const mediaUrl = 'https://submission.tmrjournals.com/public/'; const mediaUrl = 'https://submission.tmrjournals.com/public/';
// // const mediaUrl = 'http://zmzm.tougao.dev.com/public/'; // const mediaUrl = 'http://zmzm.tougao.dev.com/public/';
// const baseUrl = '/api' const baseUrl = '/api'
//测试环境 //测试环境

View File

@@ -20,6 +20,13 @@ const en = {
info: { info: {
realname: 'English names can only contain uppercase and lowercase letters, "-", and spaces' realname: 'English names can only contain uppercase and lowercase letters, "-", and spaces'
}, },
articleAdd: {
qqEmailAlertLine1: 'The publisher does not currently accept submissions from QQ Mail.',
qqEmailAlertLine2Before: 'Please go to',
qqEmailDashboardLink: 'Personal Center (Dashboard)',
qqEmailAlertLine2After: ' to change your registered email.',
qqEmailSubmitBlockedMsg: 'QQ Mail is not supported for submission. Please go to Personal Center (Dashboard) and change your email.'
},
total: { total: {
author: 'author', author: 'author',
editor: 'editor', editor: 'editor',

View File

@@ -19,6 +19,13 @@ const zh = {
}, info: { }, info: {
realname: '英文名字只能包含大小写英文字母、"-" 、和 空格' realname: '英文名字只能包含大小写英文字母、"-" 、和 空格'
}, },
articleAdd: {
qqEmailAlertLine1: '出版社暂不支持qq邮箱投稿。',
qqEmailAlertLine2Before: '请前往',
qqEmailDashboardLink: '个人中心Dashboard',
qqEmailAlertLine2After: '更换邮箱账号。',
qqEmailSubmitBlockedMsg: '出版社暂不支持qq邮箱投稿请去个人中心更换邮箱账号'
},
total: { total: {
author: '作者', author: '作者',
editor: '编辑', editor: '编辑',

View File

@@ -859,8 +859,8 @@
<el-form-item label="Account :" prop="account"> <el-form-item label="Account :" prop="account">
<span>{{ coreForm.account }}</span> <span>{{ coreForm.account }}</span>
</el-form-item> </el-form-item>
<el-form-item label="Email :"> <el-form-item label="Email :" prop="email">
<span>{{ coreForm.email }}</span> <el-input type="text" placeholder="Please enter email..." v-model="coreForm.email" style="width: 320px" clearable />
</el-form-item> </el-form-item>
<el-form-item label="Real name :" prop="realname"> <el-form-item label="Real name :" prop="realname">
@@ -1610,6 +1610,14 @@ this.applyCvitaTable = data;
.then((res) => { .then((res) => {
if (res.code == 0) { if (res.code == 0) {
this.coreTable = res.data.baseInfo; this.coreTable = res.data.baseInfo;
try {
if (this.coreTable && this.coreTable.email != null && this.coreTable.email !== undefined) {
localStorage.setItem('U_email', String(this.coreTable.email));
}
if (this.coreTable && this.coreTable.realname != null && this.coreTable.realname !== undefined) {
localStorage.setItem('U_relname', String(this.coreTable.realname));
}
} catch (e) {}
this.majorsList=res.data.baseInfo.majors; this.majorsList=res.data.baseInfo.majors;
this.cvitaForm.user_id = res.data.baseInfo.user_id; this.cvitaForm.user_id = res.data.baseInfo.user_id;
this.reviewForm.user_id = res.data.baseInfo.user_id; this.reviewForm.user_id = res.data.baseInfo.user_id;
@@ -1901,6 +1909,14 @@ this.applyCvitaTable = data;
.then((res) => { .then((res) => {
if (res.code == 0) { if (res.code == 0) {
this.$message.success('Personal information modified successfully!'); this.$message.success('Personal information modified successfully!');
try {
if (this.coreForm.email != null && this.coreForm.email !== undefined) {
localStorage.setItem('U_email', String(this.coreForm.email));
}
if (this.coreForm.realname != null && this.coreForm.realname !== undefined) {
localStorage.setItem('U_relname', String(this.coreForm.realname));
}
} catch (e) {}
this.coreVisible = false; this.coreVisible = false;
this.tipVisible = false; this.tipVisible = false;
this.getPersonData(); this.getPersonData();

View File

@@ -810,9 +810,37 @@
> >
</div> </div>
<el-alert
v-if="articleAddQqEmailSubmitBlocked"
type="warning"
:closable="false"
show-icon
style="max-width: 720px; margin: 24px auto 0"
>
<template slot="title">
<div class="qq-email-alert-body">
<div class="qq-email-alert-line1">{{ $t('articleAdd.qqEmailAlertLine1') }}</div>
<div class="qq-email-alert-line2">
<span>{{ $t('articleAdd.qqEmailAlertLine2Before') }}</span>
<router-link to="/dashboard" class="qq-email-dashboard-link">
<i class="el-icon-user-solid"></i>
{{ $t('articleAdd.qqEmailDashboardLink') }}
</router-link>
<span>{{ $t('articleAdd.qqEmailAlertLine2After') }}</span>
</div>
</div>
</template>
</el-alert>
<div style="text-align: center; margin: 40px 0 0 0"> <div style="text-align: center; margin: 40px 0 0 0">
<el-button type="warning" @click="onStagingSave(4)" class="pro_stage">Save as draft </el-button> <el-button type="warning" @click="onStagingSave(4)" class="pro_stage">Save as draft </el-button>
<el-button type="primary" @click="onSubmit(1)" class="pro_ceed">Confirm Submit </el-button> <el-button
type="primary"
@click="onSubmit(1)"
class="pro_ceed"
:disabled="articleAddQqEmailSubmitBlocked"
>
Confirm Submit
</el-button>
</div> </div>
</div> </div>
</div> </div>
@@ -1612,6 +1640,17 @@ export default {
}, },
upload_qualifications: function () { upload_qualifications: function () {
return this.baseUrl + 'api/Admin/up_file'; return this.baseUrl + 'api/Admin/up_file';
},
/** 投稿页第四步:登录邮箱为 QQ 邮箱时不允许正式提交 */
articleAddQqEmailSubmitBlocked() {
try {
const raw = localStorage.getItem('U_email') || '';
const email = String(raw).trim().toLowerCase();
if (!email || !email.includes('@')) return false;
return /@qq\.com$/i.test(email) || /@vip\.qq\.com$/i.test(email);
} catch (e) {
return false;
}
} }
}, },
methods: { methods: {
@@ -1907,6 +1946,10 @@ export default {
} }
}, },
async onSubmit() { async onSubmit() {
if (this.articleAddQqEmailSubmitBlocked) {
this.$message.warning(this.$t('articleAdd.qqEmailSubmitBlockedMsg'));
return false;
}
// 1. 校验协议勾选 // 1. 校验协议勾选
if (!this.agreechecked) { if (!this.agreechecked) {
this.$message.error( this.$message.error(
@@ -4063,6 +4106,28 @@ export default {
</script> </script>
<style scoped> <style scoped>
.qq-email-alert-body {
line-height: 1.55;
}
.qq-email-alert-line1 {
display: block;
margin-bottom: 6px;
}
.qq-email-alert-line2 {
display: block;
}
.qq-email-dashboard-link {
display: inline-flex;
align-items: center;
gap: 4px;
margin: 0 4px;
font-weight: 600;
color: #cf9236;
text-decoration: underline;
}
.qq-email-dashboard-link:hover {
color: #b8822f;
}
/deep/.apc_content a{ /deep/.apc_content a{
color: rgb(81, 127, 213) !important; cursor: pointer !important; text-decoration: underline !important; color: rgb(81, 127, 213) !important; cursor: pointer !important; text-decoration: underline !important;
} }

View File

@@ -198,8 +198,8 @@
<el-form-item label="Account :" prop="account"> <el-form-item label="Account :" prop="account">
<span>{{coreForm.account}}</span> <span>{{coreForm.account}}</span>
</el-form-item> </el-form-item>
<el-form-item label="Email :"> <el-form-item label="Email :" prop="email">
<span>{{coreForm.email}}</span> <el-input type="text" placeholder="Please enter email..." v-model="coreForm.email" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="head portrait :"> <el-form-item label="head portrait :">
<el-upload class="avatar-uploader" :action="baseUrl+'master/Journal/up_topic_file'" <el-upload class="avatar-uploader" :action="baseUrl+'master/Journal/up_topic_file'"

View File

@@ -43,7 +43,7 @@
<!-- <div class="mini-label">{{ $t('autoPromotion.factoryJournal') }}</div> --> <!-- <div class="mini-label">{{ $t('autoPromotion.factoryJournal') }}</div> -->
<div class="journal-grid-compact"> <div class="journal-grid-compact">
<div <div
v-for="j in journalList" v-for="j in journalListForDisplay"
:key="String(j.journal_id)" :key="String(j.journal_id)"
class="journal-card-mini" class="journal-card-mini"
:class="{ 'is-active': selectedJournalId === j.journal_id, 'is-disabled': isEditMode }" :class="{ 'is-active': selectedJournalId === j.journal_id, 'is-disabled': isEditMode }"
@@ -455,6 +455,17 @@
const current = String(this.expertType || '').trim(); const current = String(this.expertType || '').trim();
return this.expertOptions.filter((opt) => String(opt.value) === current); return this.expertOptions.filter((opt) => String(opt.value) === current);
}, },
/** 编辑任务时期刊不可切换:列表只展示当前任务所属期刊 */
journalListForDisplay() {
const list = Array.isArray(this.journalList) ? this.journalList : [];
if (!this.isEditMode) return list;
const id = this.selectedJournalId != null && this.selectedJournalId !== '' ? String(this.selectedJournalId) : '';
if (!id) return list;
const rows = list.filter(function (j) {
return String(j.journal_id) === id;
});
return rows.length ? rows : list;
},
isEditMode() { isEditMode() {
const task = this.initialTask; const task = this.initialTask;
return !!(task && typeof task === 'object' && Object.keys(task).length); return !!(task && typeof task === 'object' && Object.keys(task).length);