feat: 邮箱管理

This commit is contained in:
puhui999
2025-04-04 12:54:03 +08:00
parent 28d1df74ad
commit 3d692a583d
13 changed files with 150 additions and 154 deletions

View File

@@ -64,7 +64,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
}
/** 列表的字段 */
export function useGridColumns<T = SystemMailLogApi.MailLogVO>(
export function useGridColumns<T = SystemMailLogApi.MailLog>(
onActionClick: OnActionClickFn<T>,
): VxeTableGridOptions['columns'] {
return [

View File

@@ -26,12 +26,12 @@ function onRefresh() {
}
/** 查看邮件日志详情 */
function onView(row: SystemMailLogApi.MailLogVO) {
function onView(row: SystemMailLogApi.MailLog) {
formModalApi.setData(row).open();
}
/** 重新发送邮件 */
async function onResend(row: SystemMailLogApi.MailLogVO) {
async function onResend(row: SystemMailLogApi.MailLog) {
const hideLoading = message.loading({
content: '重新发送邮件中...',
duration: 0,
@@ -53,7 +53,7 @@ async function onResend(row: SystemMailLogApi.MailLogVO) {
function onActionClick({
code,
row,
}: OnActionClickParams<SystemMailLogApi.MailLogVO>) {
}: OnActionClickParams<SystemMailLogApi.MailLog>) {
switch (code) {
case 'resend': {
onResend(row);
@@ -92,7 +92,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<SystemMailLogApi.MailLogVO>,
} as VxeTableGridOptions<SystemMailLogApi.MailLog>,
});
</script>
<template>

View File

@@ -4,8 +4,13 @@ import type { SystemMailLogApi } from '#/api/system/mail/log';
import { computed, ref } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { formatDateTime } from '@vben/utils';
const formData = ref<SystemMailLogApi.MailLogVO>();
import { Descriptions, Tag } from 'ant-design-vue';
import { DICT_TYPE, getDictLabel } from '#/utils/dict';
const formData = ref<SystemMailLogApi.MailLog>();
const getTitle = computed(() => {
return '邮件日志详情';
});
@@ -16,7 +21,7 @@ const [Modal, modalApi] = useVbenModal({
return;
}
// 加载数据
const data = modalApi.getData<SystemMailLogApi.MailLogVO>();
const data = modalApi.getData<SystemMailLogApi.MailLog>();
if (!data || !data.id) {
return;
}
@@ -33,79 +38,56 @@ const [Modal, modalApi] = useVbenModal({
<template>
<Modal :title="getTitle">
<div class="p-4">
<div class="grid grid-cols-1 gap-4 md:grid-cols-2">
<div class="form-item">
<div class="form-label">编号</div>
<div>{{ formData?.id }}</div>
</div>
<div class="form-item">
<div class="form-label">创建时间</div>
<div>{{ formData?.createTime }}</div>
</div>
<div class="form-item">
<div class="form-label">收件邮箱</div>
<div>{{ formData?.toMail }}</div>
</div>
<div class="form-item">
<div class="form-label">发送邮箱</div>
<div>{{ formData?.fromMail }}</div>
</div>
<div class="form-item">
<div class="form-label">用户编号</div>
<div>{{ formData?.userId }}</div>
</div>
<div class="form-item">
<div class="form-label">用户类型</div>
<div>{{ formData?.userType }}</div>
</div>
<div class="form-item">
<div class="form-label">模板编号</div>
<div>{{ formData?.templateId }}</div>
</div>
<div class="form-item">
<div class="form-label">模板编码</div>
<div>{{ formData?.templateCode }}</div>
</div>
</div>
<div class="mt-4">
<div class="form-label">邮件标题</div>
<div>{{ formData?.templateTitle }}</div>
</div>
<div class="mt-4">
<div class="form-label">邮件内容</div>
<div v-html="formData?.templateContent"></div>
</div>
<div class="mt-4 grid grid-cols-1 gap-4 md:grid-cols-2">
<div class="form-item">
<div class="form-label">发送状态</div>
<div>{{ formData?.sendStatus }}</div>
</div>
<div class="form-item">
<div class="form-label">发送时间</div>
<div>{{ formData?.sendTime }}</div>
</div>
<div class="form-item">
<div class="form-label">发送消息编号</div>
<div>{{ formData?.sendMessageId }}</div>
</div>
<div class="form-item">
<div class="form-label">发送异常</div>
<div>{{ formData?.sendException }}</div>
</div>
</div>
<Descriptions :column="2" bordered>
<Descriptions.Item label="编号">{{ formData?.id }}</Descriptions.Item>
<Descriptions.Item label="创建时间">
{{ formatDateTime(formData?.createTime || '') }}
</Descriptions.Item>
<Descriptions.Item label="收件邮箱">
{{ formData?.toMail }}
</Descriptions.Item>
<Descriptions.Item label="发送邮箱">
{{ formData?.fromMail }}
</Descriptions.Item>
<Descriptions.Item label="用户编号">
{{ formData?.userId }}
</Descriptions.Item>
<Descriptions.Item label="用户类型">
{{ formData?.userType }}
</Descriptions.Item>
<Descriptions.Item label="模板编号">
{{ formData?.templateId }}
</Descriptions.Item>
<Descriptions.Item label="模板编码">
{{ formData?.templateCode }}
</Descriptions.Item>
<Descriptions.Item label="邮件标题" :span="2">
{{ formData?.templateTitle }}
</Descriptions.Item>
<Descriptions.Item label="邮件内容" :span="2">
<div v-html="formData?.templateContent"></div>
</Descriptions.Item>
<Descriptions.Item label="发送状态">
<!-- TODO @芋艿: 数据字典-->
<Tag color="processing">
{{
getDictLabel(
DICT_TYPE.SYSTEM_MAIL_SEND_STATUS,
formData?.sendStatus,
)
}}
</Tag>
</Descriptions.Item>
<Descriptions.Item label="发送时间">
{{ formatDateTime(formData?.sendTime || '') }}
</Descriptions.Item>
<Descriptions.Item label="发送消息编号">
{{ formData?.sendMessageId }}
</Descriptions.Item>
<Descriptions.Item label="发送异常">
{{ formData?.sendException }}
</Descriptions.Item>
</Descriptions>
</div>
</Modal>
</template>
<style scoped>
.form-item {
@apply mb-2;
}
.form-label {
@apply font-medium;
}
</style>