#feature: add test mail generator

This commit is contained in:
2026-05-22 10:10:16 +08:00
parent 3c628eb391
commit 787a69c207
15 changed files with 2367 additions and 4 deletions
@@ -16,12 +16,25 @@
ref="weeklyReport"
/>
<!-- 提测邮件生成页面 -->
<test-mail-generator
v-else-if="currentPage === 'test-mail'"
ref="testMailGenerator"
:is-admin="isAdmin"
/>
<!-- SQL 生成页面 -->
<sql-generator
v-else-if="currentPage === 'sql-generator'"
ref="sqlGenerator"
/>
<!-- 进产诊断页面 -->
<production-diagnosis
v-else-if="currentPage === 'production-diagnosis'"
ref="productionDiagnosis"
/>
<!-- JIRA 工时查询页面 -->
<jira-worklog
v-else-if="currentPage === 'worklog'"
@@ -73,7 +86,9 @@
import AdminLayout from './AdminLayout.vue';
import EnvManagement from '../env/EnvManagement.vue';
import WeeklyReport from '../jira/WeeklyReport.vue';
import TestMailGenerator from '../jira/TestMailGenerator.vue';
import SqlGenerator from '../tools/SqlGenerator.vue';
import ProductionDiagnosis from '../tools/ProductionDiagnosis.vue';
import JiraWorklog from '../jira/JiraWorklog.vue';
import MessageSync from '../message-sync/MessageSync.vue';
import EventConsumerSync from '../message-sync/EventConsumerSync.vue';
@@ -91,7 +106,9 @@ export default {
AdminLayout,
EnvManagement,
WeeklyReport,
TestMailGenerator,
SqlGenerator,
ProductionDiagnosis,
JiraWorklog,
MessageSync,
EventConsumerSync,
@@ -142,7 +159,9 @@ export default {
const titles = {
'env': '环境配置管理',
'weekly-report': '生成周报',
'test-mail': '生成提测邮件',
'sql-generator': '生成SQL',
'production-diagnosis': '进产诊断',
'worklog': 'JIRA 工时查询',
'message-sync': '消息同步',
'event-consumer-sync': '事件消费者同步对比',
@@ -166,8 +185,12 @@ export default {
page = 'env';
} else if (path === '/sql-generator') {
page = 'sql-generator';
} else if (path === '/production-diagnosis') {
page = 'production-diagnosis';
} else if (path === '/weekly-report') {
page = 'weekly-report';
} else if (path === '/test-mail') {
page = 'test-mail';
} else if (path === '/worklog') {
page = 'worklog';
} else if (path === '/message-sync') {
@@ -120,6 +120,31 @@
生成SQL
</a>
<a
href="#"
@click.prevent="setActiveMenu('production-diagnosis')"
:class="[
'group flex items-center px-3 py-2 text-sm font-medium rounded-lg transition-colors duration-200',
activeMenu === 'production-diagnosis'
? 'bg-blue-50 text-blue-700 border-r-2 border-blue-700'
: 'text-gray-700 hover:bg-gray-50 hover:text-gray-900'
]"
>
<svg
:class="[
'mr-3 h-5 w-5 transition-colors duration-200',
activeMenu === 'production-diagnosis' ? 'text-blue-500' : 'text-gray-400 group-hover:text-gray-500'
]"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6M5 5h14a2 2 0 012 2v10a2 2 0 01-2 2H5a2 2 0 01-2-2V7a2 2 0 012-2z"/>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4m0 4h.01"/>
</svg>
进产诊断
</a>
<!-- JIRA 相关菜单项 -->
<a
@@ -146,6 +171,30 @@
生成周报
</a>
<a
href="#"
@click.prevent="setActiveMenu('test-mail')"
:class="[
'group flex items-center px-3 py-2 text-sm font-medium rounded-lg transition-colors duration-200',
activeMenu === 'test-mail'
? 'bg-blue-50 text-blue-700 border-r-2 border-blue-700'
: 'text-gray-700 hover:bg-gray-50 hover:text-gray-900'
]"
>
<svg
:class="[
'mr-3 h-5 w-5 transition-colors duration-200',
activeMenu === 'test-mail' ? 'text-blue-500' : 'text-gray-400 group-hover:text-gray-500'
]"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 4.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/>
</svg>
生成提测邮件
</a>
<a
href="#"
@click.prevent="setActiveMenu('worklog')"
@@ -417,8 +466,12 @@ export default {
menu = 'env';
} else if (path === '/sql-generator') {
menu = 'sql-generator';
} else if (path === '/production-diagnosis') {
menu = 'production-diagnosis';
} else if (path === '/weekly-report') {
menu = 'weekly-report';
} else if (path === '/test-mail') {
menu = 'test-mail';
} else if (path === '/worklog') {
menu = 'worklog';
} else if (path === '/message-sync') {