diff --git a/src/views/biz/membershipPoint/index.vue b/src/views/biz/membershipPoint/index.vue index 417966b..4579cec 100644 --- a/src/views/biz/membershipPoint/index.vue +++ b/src/views/biz/membershipPoint/index.vue @@ -180,6 +180,7 @@ const columns: TableColumnList = [ label: "是否公司", prop: "isCompany", width: "100", + align: "center", formatter: row => { return row.isCompany ? "是" : "否"; } diff --git a/src/views/biz/subscribe/index.vue b/src/views/biz/subscribe/index.vue index b1c155b..bce4a83 100644 --- a/src/views/biz/subscribe/index.vue +++ b/src/views/biz/subscribe/index.vue @@ -78,7 +78,7 @@ const subTypeOptions = [ { value: 0, label: "未指定" }, { value: 1, label: "求购" }, { value: 2, label: "租赁" }, - { value: 3, label: "全订阅" } + { value: 9, label: "全订阅" } ]; // 订阅领域选项 @@ -86,7 +86,7 @@ const subFieldOptions = [ { value: 0, label: "未指定" }, { value: 1, label: "民航" }, { value: 2, label: "通航" }, - { value: 3, label: "全订阅" } + { value: 9, label: "全订阅" } ]; // 订阅对象选项 @@ -94,7 +94,8 @@ const subCategoryOptions = [ { value: 0, label: "未指定" }, { value: 1, label: "航材" }, { value: 2, label: "飞机" }, - { value: 3, label: "全订阅" } + { value: 3, label: "工具" }, + { value: 9, label: "全订阅" } ]; // 获取订阅列表 diff --git a/src/views/biz/sysSettings/index.vue b/src/views/biz/sysSettings/index.vue index 02c8cd3..2458041 100644 --- a/src/views/biz/sysSettings/index.vue +++ b/src/views/biz/sysSettings/index.vue @@ -32,6 +32,18 @@ const settingsData = ref({ }, area_config: { separator: " " + }, + email_config: { + smtpServer: "smtp.163.com", + smtpPort: "465", + auth: true, + sslEnable: true, + fromEmail: "silent3035@163.com", + fromEmailName: "Rocky", + fromEmailUser: "", + fromEmailPassword: "W0pPgIjQWMH0Tb2Y", + verifyEmail: "", + toEmails: ["silent3035@163.com", "zhanghuajun@rocky.com"] } }); @@ -54,6 +66,11 @@ const separatorOptions = [ { value: "_", label: "下划线" }, { value: ">", label: "大于号" } ]; +// 添加全局 loading 状态 +const fullscreenLoading = ref(false); +// 添加邮箱相关状态 +const showEmailInput = ref(false); +const newEmail = ref(""); // 加载设置数据 const loadSettings = async () => { @@ -76,6 +93,7 @@ const loadSettings = async () => { // 保存设置 const saveSettings = async (key: string) => { try { + fullscreenLoading.value = true; // 显示遮罩层 const params = { settingsKey: key, settingsContent: JSON.stringify(settingsData.value[key]) @@ -92,6 +110,95 @@ const saveSettings = async (key: string) => { } catch (error) { console.error("保存系统设置失败:", error); ElMessage.error("保存系统设置失败"); + } finally { + fullscreenLoading.value = false; // 隐藏遮罩层 + } +}; + +// 添加邮箱 +const handleAddEmail = () => { + const email = newEmail.value.trim(); + if (email && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { + if (!settingsData.value.email_config.toEmails.includes(email)) { + settingsData.value.email_config.toEmails.push(email); + } + newEmail.value = ""; + showEmailInput.value = false; + } else { + ElMessage.warning("请输入有效的邮箱地址"); + } +}; + +// 移除邮箱 +const handleRemoveEmail = (index: number) => { + settingsData.value.email_config.toEmails.splice(index, 1); +}; + +// 邮箱输入框失焦处理 +const handleEmailInputBlur = () => { + if (newEmail.value.trim()) { + handleAddEmail(); + } + showEmailInput.value = false; +}; + +// 邮箱格式校验函数 +const isValidEmail = (email: string): boolean => { + // 标准邮箱格式正则表达式 + const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; + return emailRegex.test(email); +}; + +// 发送测试邮件 +const handleTestEmail = async () => { + // 校验发件邮箱配置 + const { smtpServer, smtpPort, fromEmail, fromEmailPassword, fromEmailUser } = + settingsData.value.email_config; + if ( + !smtpServer || + !smtpPort || + !fromEmail || + !fromEmailPassword || + !fromEmailUser + ) { + ElMessage.warning("请先完成邮箱配置信息"); + return; + } + + // 校验发件邮箱格式 + if (!isValidEmail(fromEmail)) { + ElMessage.warning("发件邮箱格式不正确,请检查配置"); + return; + } + + const email = settingsData.value.email_config.verifyEmail.trim(); + + // 检查邮箱是否为空 + if (!email) { + ElMessage.warning("请输入测试邮箱地址"); + return; + } + + // 校验邮箱格式 + if (!isValidEmail(email)) { + ElMessage.warning("请输入有效的邮箱地址"); + return; + } + + try { + const res = await request(bizApi("testEmail"), { + method: "POST", + body: JSON.stringify(settingsData.value.email_config) + }); + + if (res.status === 200) { + ElMessage.success("测试邮件发送成功, 邮箱服务器配置无误。"); + } else { + ElMessage.error(res.msg || "测试邮件发送失败"); + } + } catch (error) { + console.error("发送测试邮件失败:", error); + ElMessage.error("发送测试邮件失败"); } }; @@ -102,6 +209,12 @@ onMounted(() => {