Files
zsglpt/static/admin/assets/EmailPage-CEtsoP5P.js
yuyx b0fe325154 feat: KDocs 上传增强 + 离线监控 + Bug修复
KDocs 上传功能增强:
- 搜索优化:只用姓名搜索 + C列验证,避免匹配到错误单元格
- 有效行范围:支持配置起始行/结束行,限制上传区域
- 图片覆盖:支持覆盖单元格已有图片(Escape + Delete)
- 配置持久化:kdocs_row_start/row_end 保存到数据库(v18迁移)

二次登录功能:
- 登录后立即再次登录,让"上次登录时间"显示为刚刚

KDocs 离线监控:
- 每5分钟检测金山文档登录状态
- 离线时发送邮件通知管理员(每次掉线只通知一次)
- 恢复在线后重置通知状态

Bug 修复:
- 任务日志搜索账号关键词报错500:添加异常处理

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 23:40:46 +08:00

2 lines
22 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{a as Ae,c as De,b as He,f as Ne,u as Fe}from"./email-C4xyG93p.js";import{a as L,_ as Ie,r as p,S as pe,T as ze,c as ce,o as Qe,f as c,I as je,g as T,h as _,j as o,J as O,m as l,w as n,q as r,B as M,p as d,n as C,F as ae,v as fe,K as U,L as f}from"./index-DKH_HvPt.js";async function Ke(){const{data:v}=await L.get("/smtp/configs");return v}async function Oe(v){const{data:b}=await L.post("/smtp/configs",v);return b}async function Ge(v,b){const{data:g}=await L.put(`/smtp/configs/${v}`,b);return g}async function Je(v){const{data:b}=await L.delete(`/smtp/configs/${v}`);return b}async function Re(v,b){const{data:g}=await L.post(`/smtp/configs/${v}/test`,{email:b});return g}async function We(v){const{data:b}=await L.post(`/smtp/configs/${v}/primary`);return b}async function Xe(){const{data:v}=await L.post("/smtp/configs/primary/clear");return v}const Ye={class:"page-stack"},Ze={class:"app-page-title"},el={class:"toolbar"},ll={class:"help app-muted"},tl={class:"section-head"},al={class:"table-wrap"},sl={class:"stat-value"},nl={class:"stat-value ok"},ol={class:"stat-value err"},il={class:"stat-value"},ul={class:"sub-stats"},dl={class:"help app-muted"},rl={class:"section-head"},ml={class:"toolbar"},pl={class:"table-wrap"},cl=["title"],fl=["title"],_l=["title"],vl={class:"pagination"},bl={class:"page-hint app-muted"},yl={style:{width:"100%"}},gl={key:0,class:"help"},hl={key:0},wl={key:0},kl={key:0},Vl={class:"dialog-actions"},_e=15,Sl={__name:"EmailPage",setup(v){const b=p(!1),g=p(!1),u=pe({enabled:!1,failover_enabled:!0,register_verify_enabled:!1,login_alert_enabled:!0,task_notify_enabled:!1,base_url:"",updated_at:null});let E=null;async function se(){b.value=!0;try{const s=await He();u.enabled=!!s.enabled,u.failover_enabled=!!s.failover_enabled,u.register_verify_enabled=!!s.register_verify_enabled,u.login_alert_enabled=s.login_alert_enabled===void 0?!0:!!s.login_alert_enabled,u.task_notify_enabled=!!s.task_notify_enabled,u.base_url=s.base_url||"",u.updated_at=s.updated_at||null}catch{}finally{b.value=!1}}async function ve(){if(!b.value){g.value=!0;try{const s=await Fe({enabled:u.enabled,failover_enabled:u.failover_enabled,register_verify_enabled:u.register_verify_enabled,login_alert_enabled:u.login_alert_enabled,task_notify_enabled:u.task_notify_enabled,base_url:(u.base_url||"").trim()});if(!s?.success){f.error(s?.error||"更新失败");return}f.success("邮件设置已更新"),await se()}catch{}finally{g.value=!1}}}function q(){E&&window.clearTimeout(E),E=window.setTimeout(ve,300)}ze(()=>{E&&window.clearTimeout(E),E=null});const G=p(!1),J=p([]),x=p(!1),h=p(!1),R=p(!1),N=p(!1),a=pe({id:null,name:"默认配置",enabled:!0,host:"",port:465,username:"",password:"",use_ssl:!0,use_tls:!1,sender_name:"自动化学习",sender_email:"",daily_limit:0,priority:0}),F=[{key:"custom",label:"自定义(手动填写)",defaults:null,note:"适用于其他邮箱/自建SMTP",links:[]},{key:"gmail",label:"Gmail",defaults:{host:"smtp.gmail.com",port:465,use_ssl:!0,use_tls:!1},note:"通常需要开启两步验证并创建应用专用密码App Password",links:[{label:"SMTP 设置说明",url:"https://support.google.com/mail/answer/7126229?hl=zh-Hans"},{label:"App Password",url:"https://myaccount.google.com/apppasswords"}]},{key:"qq",label:"QQ 邮箱",defaults:{host:"smtp.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并获取授权码不是QQ登录密码",links:[{label:"QQ邮箱 SMTP 帮助",url:"https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256"}]},{key:"163",label:"163 邮箱",defaults:{host:"smtp.163.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱 SMTP 帮助",url:"https://help.mail.163.com/faqDetail.do?code=d7a5dc8471a22b76"}]},{key:"126",label:"126 邮箱",defaults:{host:"smtp.126.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱帮助",url:"https://help.mail.163.com/"}]},{key:"outlook",label:"Outlook/Hotmail",defaults:{host:"smtp-mail.outlook.com",port:587,use_ssl:!1,use_tls:!0},note:"建议使用 TLS 587部分账号需开启 SMTP AUTH",links:[{label:"微软 SMTP 设置",url:"https://support.microsoft.com/office/pop-imap-and-smtp-settings-for-outlook-com-d088b0b7-0d38-4f9a-bc5d-509f9e4c6d3d"}]},{key:"office365",label:"Microsoft 365/Exchange",defaults:{host:"smtp.office365.com",port:587,use_ssl:!1,use_tls:!0},note:"企业邮箱常用配置(需启用 SMTP AUTH",links:[{label:"微软官方说明",url:"https://learn.microsoft.com/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission"}]},{key:"icloud",label:"iCloud",defaults:{host:"smtp.mail.me.com",port:587,use_ssl:!1,use_tls:!0},note:"需要在 Apple ID 中生成“App 专用密码”",links:[{label:"Apple 邮件服务器设置",url:"https://support.apple.com/zh-cn/HT202304"}]},{key:"tencent_exmail",label:"腾讯企业邮箱",defaults:{host:"smtp.exmail.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"腾讯企业邮箱帮助",url:"https://service.exmail.qq.com/cgi-bin/help?subtype=1&id=23&no=1001068"}]},{key:"aliyun_exmail",label:"阿里企业邮箱",defaults:{host:"smtp.mxhichina.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"阿里云文档",url:"https://help.aliyun.com/document_detail/50652.html"}]}],$=p("custom"),V=ce(()=>F.find(s=>s.key===$.value)||F[0]),be=ce(()=>h.value&&R.value?"留空保持不变":"SMTP密码或授权码");function ye(s){const e=String(s?.host||"").trim().toLowerCase();return e&&{"smtp.gmail.com":"gmail","smtp.qq.com":"qq","smtp.163.com":"163","smtp.126.com":"126","smtp-mail.outlook.com":"outlook","smtp.office365.com":"office365","smtp.mail.me.com":"icloud","smtp.exmail.qq.com":"tencent_exmail","smtp.mxhichina.com":"aliyun_exmail"}[e]||"custom"}function ge(s){const e=F.find(i=>i.key===s);!e||!e.defaults||(a.host=e.defaults.host,a.port=e.defaults.port,a.use_ssl=e.defaults.use_ssl,a.use_tls=e.defaults.use_tls)}function ne(){a.id=null,a.name="默认配置",a.enabled=!0,a.host="",a.port=465,a.username="",a.password="",a.use_ssl=!0,a.use_tls=!1,a.sender_name="自动化学习",a.sender_email="",a.daily_limit=0,a.priority=0,R.value=!1,N.value=!1,$.value="custom"}async function A(){G.value=!0;try{J.value=await Ke()}catch{J.value=[]}finally{G.value=!1}}function he(){h.value=!1,ne(),$.value="custom",x.value=!0}function we(s){h.value=!0,ne(),a.id=s.id,a.name=s.name||"默认配置",a.enabled=!!s.enabled,a.host=s.host||"",a.port=s.port||465,a.username=s.username||"",a.password="",a.use_ssl=!!s.use_ssl,a.use_tls=!!s.use_tls,a.sender_name=s.sender_name||"自动化学习",a.sender_email=s.sender_email||"",a.daily_limit=s.daily_limit??0,a.priority=s.priority??0,R.value=!!s.has_password,N.value=!!s.is_primary,$.value=ye(s),x.value=!0}function oe(s){return s.is_primary?{label:"主",type:"warning"}:s.enabled?{label:"备用",type:"success"}:{label:"禁用",type:"info"}}function ke(s){return s.daily_limit&&s.daily_limit>0?`${s.daily_sent}/${s.daily_limit}`:`${s.daily_sent}/∞`}async function Ve(){if(!a.host.trim()){f.error("SMTP服务器地址不能为空");return}if(!a.username.trim()){f.error("SMTP用户名不能为空");return}const s={name:a.name.trim()||"默认配置",enabled:!!a.enabled,priority:Number(a.priority)||0,host:a.host.trim(),port:Number(a.port)||465,username:a.username.trim(),use_ssl:!!a.use_ssl,use_tls:!!a.use_tls,sender_name:(a.sender_name||"").trim(),sender_email:(a.sender_email||"").trim(),daily_limit:Number(a.daily_limit)||0};try{if(h.value){const e={...s};a.password&&(e.password=a.password);const i=await Ge(a.id,e);if(!i?.success){f.error(i?.error||"更新失败");return}f.success("保存成功")}else{const e={...s};a.password&&(e.password=a.password);const i=await Oe(e);if(!i?.success){f.error(i?.error||"创建失败");return}f.success("创建成功")}x.value=!1,await A()}catch{}}async function Se(){if(!h.value||!a.id){f.error("请先保存配置后再测试");return}let s;try{const e=await U.prompt("请输入测试收件邮箱","测试连接",{inputPlaceholder:"name@example.com",confirmButtonText:"发送测试邮件",cancelButtonText:"取消",inputValidator:i=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(i||"").trim()),inputErrorMessage:"邮箱格式不正确"});s=String(e.value||"").trim()}catch{return}try{const e=await Re(a.id,s);e?.success?(f.success("测试成功,邮件已发送"),await A()):await U.alert(e?.error||"测试失败","测试失败",{confirmButtonText:"知道了"})}catch{}}async function xe(){if(!(!h.value||!a.id)){try{await U.confirm("确定将该配置设为主配置吗?","设为主配置",{confirmButtonText:"设为主配置",cancelButtonText:"取消",type:"warning"})}catch{return}try{const s=await We(a.id);if(!s?.success){f.error(s?.error||"设置失败");return}f.success("已设为主配置"),x.value=!1,await A()}catch{}}}async function Te(){if(h.value){try{await U.confirm("确定取消主配置吗取消后将按优先级选择可用SMTP。","取消主配置",{confirmButtonText:"取消主配置",cancelButtonText:"保留",type:"warning"})}catch{return}try{const s=await Xe();if(!s?.success){f.error(s?.error||"操作失败");return}f.success("已取消主配置"),x.value=!1,await A()}catch{}}}async function Pe(){if(!(!h.value||!a.id)){try{await U.confirm("确定删除该SMTP配置吗此操作不可恢复。","删除配置",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const s=await Je(a.id);if(!s?.success){f.error(s?.error||"删除失败");return}f.success("已删除"),x.value=!1,await A()}catch{}}}const W=p(!1),w=p({}),X=p(!1),I=p(""),z=p(""),Q=p(1),Y=p([]),Z=p(0),ee=p(1);function Ce(s){return{register:"注册验证",reset:"密码重置",bind:"邮箱绑定",task_complete:"任务完成",security_alert:"安全告警"}[s]||s}function ie(s){return s?.username&&s?.user_id?`${s.username} (#${s.user_id})`:s?.user_id?`用户#${s.user_id}`:"系统"}async function Be(){W.value=!0;try{w.value=await Ne()}catch{w.value={}}finally{W.value=!1}}async function H(s=1){X.value=!0;try{const e={page:s,page_size:_e};I.value&&(e.type=I.value),z.value&&(e.status=z.value);const i=await Ae(e);Y.value=i?.logs||[],Z.value=i?.total||0,Q.value=i?.page||s,ee.value=i?.total_pages||1}catch{Y.value=[],Z.value=0,ee.value=1}finally{X.value=!1}}async function Me(){let s;try{const e=await U.prompt("请输入保留天数(将删除该天数之前的日志)","清理日志",{inputValue:"30",confirmButtonText:"清理",cancelButtonText:"取消",inputValidator:i=>{const k=parseInt(String(i),10);return Number.isFinite(k)&&k>=7},inputErrorMessage:"天数必须大于等于7"});s=parseInt(String(e.value),10)}catch{return}try{await U.confirm(`确定删除 ${s} 天之前的邮件日志吗?`,"二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await De(s);if(!e?.success){f.error(e?.error||"清理失败");return}f.success(`已清理 ${e.deleted} 条日志`),await H(1)}catch{}}async function ue(){await Promise.all([se(),A(),Be(),H(1)])}return Qe(ue),(s,e)=>{const i=c("el-button"),k=c("el-switch"),m=c("el-form-item"),Ue=c("el-divider"),B=c("el-input"),de=c("el-form"),P=c("el-card"),D=c("el-tag"),y=c("el-table-column"),re=c("el-table"),j=c("el-col"),Le=c("el-row"),S=c("el-option"),le=c("el-select"),Ee=c("el-pagination"),qe=c("el-link"),te=c("el-input-number"),$e=c("el-dialog"),K=je("loading");return _(),T("div",Ye,[o("div",Ze,[e[27]||(e[27]=o("h2",null,"邮件配置",-1)),o("div",el,[l(i,{onClick:ue},{default:n(()=>[...e[26]||(e[26]=[r("刷新",-1)])]),_:1})])]),O((_(),M(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[31]||(e[31]=o("h3",{class:"section-title"},"全局设置",-1)),l(de,{"label-width":"140px"},{default:n(()=>[l(m,{label:"启用邮件功能"},{default:n(()=>[l(k,{modelValue:u.enabled,"onUpdate:modelValue":e[0]||(e[0]=t=>u.enabled=t),disabled:g.value,onChange:q},null,8,["modelValue","disabled"])]),_:1}),l(m,{label:"启用故障转移"},{default:n(()=>[l(k,{modelValue:u.failover_enabled,"onUpdate:modelValue":e[1]||(e[1]=t=>u.failover_enabled=t),disabled:g.value,onChange:q},null,8,["modelValue","disabled"])]),_:1}),l(m,{label:"启用注册邮箱验证"},{default:n(()=>[l(k,{modelValue:u.register_verify_enabled,"onUpdate:modelValue":e[2]||(e[2]=t=>u.register_verify_enabled=t),disabled:g.value,onChange:q},null,8,["modelValue","disabled"])]),_:1}),l(Ue,{"content-position":"left"},{default:n(()=>[...e[28]||(e[28]=[r("通知设置",-1)])]),_:1}),l(m,{label:"启用任务完成通知"},{default:n(()=>[l(k,{modelValue:u.task_notify_enabled,"onUpdate:modelValue":e[3]||(e[3]=t=>u.task_notify_enabled=t),disabled:g.value,onChange:q},null,8,["modelValue","disabled"])]),_:1}),l(m,{label:"新设备登录提醒"},{default:n(()=>[l(k,{modelValue:u.login_alert_enabled,"onUpdate:modelValue":e[4]||(e[4]=t=>u.login_alert_enabled=t),disabled:g.value,onChange:q},null,8,["modelValue","disabled"]),e[29]||(e[29]=o("div",{class:"help"},"当检测到新设备或新IP登录时发送邮件提醒用户",-1))]),_:1}),l(m,{label:"网站基础URL"},{default:n(()=>[l(B,{modelValue:u.base_url,"onUpdate:modelValue":e[5]||(e[5]=t=>u.base_url=t),placeholder:"例如: https://example.com",disabled:g.value,onBlur:q},null,8,["modelValue","disabled"]),e[30]||(e[30]=o("div",{class:"help"},"用于生成邮件中的验证链接,留空则使用默认配置。",-1))]),_:1})]),_:1}),o("div",ll,"最近更新时间:"+d(u.updated_at||"-"),1)]),_:1})),[[K,b.value]]),l(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[o("div",tl,[e[33]||(e[33]=o("h3",{class:"section-title"},"SMTP配置列表",-1)),l(i,{type:"primary",onClick:he},{default:n(()=>[...e[32]||(e[32]=[r("+ 添加配置",-1)])]),_:1})]),o("div",al,[O((_(),M(re,{data:J.value,style:{width:"100%"}},{default:n(()=>[l(y,{label:"状态",width:"90"},{default:n(({row:t})=>[l(D,{type:oe(t).type,effect:"light"},{default:n(()=>[r(d(oe(t).label),1)]),_:2},1032,["type"])]),_:1}),l(y,{prop:"name",label:"名称","min-width":"160"}),l(y,{label:"服务器","min-width":"200"},{default:n(({row:t})=>[r(d(t.host)+":"+d(t.port),1)]),_:1}),l(y,{label:"今日/限额",width:"110"},{default:n(({row:t})=>[r(d(ke(t)),1)]),_:1}),l(y,{label:"成功率",width:"100"},{default:n(({row:t})=>[r(d(t.success_rate)+"%",1)]),_:1}),l(y,{label:"操作",width:"120",fixed:"right"},{default:n(({row:t})=>[l(i,{size:"small",onClick:me=>we(t)},{default:n(()=>[...e[34]||(e[34]=[r("编辑",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[K,G.value]])])]),_:1}),O((_(),M(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[39]||(e[39]=o("h3",{class:"section-title"},"邮件发送统计",-1)),l(Le,{gutter:12},{default:n(()=>[l(j,{xs:12,sm:6},{default:n(()=>[l(P,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:n(()=>[o("div",sl,d(w.value.total_sent||0),1),e[35]||(e[35]=o("div",{class:"stat-label"},"总发送",-1))]),_:1})]),_:1}),l(j,{xs:12,sm:6},{default:n(()=>[l(P,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:n(()=>[o("div",nl,d(w.value.total_success||0),1),e[36]||(e[36]=o("div",{class:"stat-label"},"成功",-1))]),_:1})]),_:1}),l(j,{xs:12,sm:6},{default:n(()=>[l(P,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:n(()=>[o("div",ol,d(w.value.total_failed||0),1),e[37]||(e[37]=o("div",{class:"stat-label"},"失败",-1))]),_:1})]),_:1}),l(j,{xs:12,sm:6},{default:n(()=>[l(P,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:n(()=>[o("div",il,d(w.value.success_rate||0)+"%",1),e[38]||(e[38]=o("div",{class:"stat-label"},"成功率",-1))]),_:1})]),_:1})]),_:1}),o("div",ul,[l(D,{effect:"light"},{default:n(()=>[r("注册验证 "+d(w.value.register_sent||0),1)]),_:1}),l(D,{effect:"light"},{default:n(()=>[r("密码重置 "+d(w.value.reset_sent||0),1)]),_:1}),l(D,{effect:"light"},{default:n(()=>[r("邮箱绑定 "+d(w.value.bind_sent||0),1)]),_:1}),l(D,{effect:"light"},{default:n(()=>[r("任务完成 "+d(w.value.task_complete_sent||0),1)]),_:1})]),o("div",dl,"最后更新:"+d(w.value.last_updated||"-"),1)]),_:1})),[[K,W.value]]),l(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[o("div",rl,[e[41]||(e[41]=o("h3",{class:"section-title"},"邮件发送日志",-1)),o("div",ml,[l(le,{modelValue:I.value,"onUpdate:modelValue":e[6]||(e[6]=t=>I.value=t),style:{width:"140px"},onChange:e[7]||(e[7]=t=>H(1))},{default:n(()=>[l(S,{label:"全部类型",value:""}),l(S,{label:"注册验证",value:"register"}),l(S,{label:"密码重置",value:"reset"}),l(S,{label:"邮箱绑定",value:"bind"}),l(S,{label:"任务完成",value:"task_complete"}),l(S,{label:"安全告警",value:"security_alert"})]),_:1},8,["modelValue"]),l(le,{modelValue:z.value,"onUpdate:modelValue":e[8]||(e[8]=t=>z.value=t),style:{width:"120px"},onChange:e[9]||(e[9]=t=>H(1))},{default:n(()=>[l(S,{label:"全部状态",value:""}),l(S,{label:"成功",value:"success"}),l(S,{label:"失败",value:"failed"})]),_:1},8,["modelValue"]),l(i,{type:"danger",plain:"",onClick:Me},{default:n(()=>[...e[40]||(e[40]=[r("清理日志",-1)])]),_:1})])]),o("div",pl,[O((_(),M(re,{data:Y.value,style:{width:"100%"}},{default:n(()=>[l(y,{prop:"created_at",label:"时间",width:"180"}),l(y,{prop:"email_to",label:"收件人","min-width":"180"}),l(y,{label:"来源用户","min-width":"160"},{default:n(({row:t})=>[o("span",{class:"ellipsis",title:ie(t)},d(ie(t)),9,cl)]),_:1}),l(y,{label:"类型",width:"120"},{default:n(({row:t})=>[r(d(Ce(t.email_type)),1)]),_:1}),l(y,{label:"主题","min-width":"220"},{default:n(({row:t})=>[o("span",{class:"ellipsis",title:t.subject},d(t.subject),9,fl)]),_:1}),l(y,{label:"状态",width:"90"},{default:n(({row:t})=>[l(D,{type:t.status==="success"?"success":"danger",effect:"light"},{default:n(()=>[r(d(t.status==="success"?"成功":"失败"),1)]),_:2},1032,["type"])]),_:1}),l(y,{label:"错误","min-width":"200"},{default:n(({row:t})=>[o("span",{class:"ellipsis",title:t.error_message||""},d(t.error_message||"-"),9,_l)]),_:1})]),_:1},8,["data"])),[[K,X.value]])]),o("div",vl,[l(Ee,{"current-page":Q.value,"onUpdate:currentPage":e[10]||(e[10]=t=>Q.value=t),"page-size":_e,total:Z.value,layout:"prev, pager, next, ->, total",onCurrentChange:H},null,8,["current-page","total"]),o("div",bl,"第 "+d(Q.value)+" / "+d(ee.value)+" 页",1)])]),_:1}),l($e,{modelValue:x.value,"onUpdate:modelValue":e[25]||(e[25]=t=>x.value=t),title:h.value?"编辑SMTP配置":"添加SMTP配置",width:"min(560px, 92vw)"},{footer:n(()=>[o("div",Vl,[l(i,{onClick:Se},{default:n(()=>[...e[42]||(e[42]=[r("测试连接",-1)])]),_:1}),h.value&&N.value?(_(),M(i,{key:0,type:"warning",plain:"",onClick:Te},{default:n(()=>[...e[43]||(e[43]=[r("取消主配置",-1)])]),_:1})):C("",!0),h.value&&!N.value?(_(),M(i,{key:1,onClick:xe},{default:n(()=>[...e[44]||(e[44]=[r("设为主配置",-1)])]),_:1})):C("",!0),h.value?(_(),M(i,{key:2,type:"danger",plain:"",onClick:Pe},{default:n(()=>[...e[45]||(e[45]=[r("删除配置",-1)])]),_:1})):C("",!0),e[48]||(e[48]=o("div",{class:"spacer"},null,-1)),l(i,{onClick:e[24]||(e[24]=t=>x.value=!1)},{default:n(()=>[...e[46]||(e[46]=[r("取消",-1)])]),_:1}),l(i,{type:"primary",onClick:Ve},{default:n(()=>[...e[47]||(e[47]=[r("保存",-1)])]),_:1})])]),default:n(()=>[l(de,{"label-width":"120px"},{default:n(()=>[l(m,{label:"名称"},{default:n(()=>[l(B,{modelValue:a.name,"onUpdate:modelValue":e[11]||(e[11]=t=>a.name=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"启用"},{default:n(()=>[l(k,{modelValue:a.enabled,"onUpdate:modelValue":e[12]||(e[12]=t=>a.enabled=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"邮箱模板"},{default:n(()=>[o("div",yl,[l(le,{modelValue:$.value,"onUpdate:modelValue":e[13]||(e[13]=t=>$.value=t),placeholder:"选择常用邮箱模板",style:{width:"100%"},onChange:ge},{default:n(()=>[(_(),T(ae,null,fe(F,t=>l(S,{key:t.key,label:t.label,value:t.key},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),V.value.note||V.value.links&&V.value.links.length?(_(),T("div",gl,[V.value.note?(_(),T("span",hl,d(V.value.note),1)):C("",!0),V.value.links&&V.value.links.length?(_(),T(ae,{key:1},[V.value.note?(_(),T("span",wl," · ")):C("",!0),(_(!0),T(ae,null,fe(V.value.links,(t,me)=>(_(),T("span",{key:t.url},[l(qe,{href:t.url,target:"_blank",type:"primary",underline:!1},{default:n(()=>[r(d(t.label),1)]),_:2},1032,["href"]),me<V.value.links.length-1?(_(),T("span",kl," · ")):C("",!0)]))),128))],64)):C("",!0)])):C("",!0)])]),_:1}),l(m,{label:"服务器"},{default:n(()=>[l(B,{modelValue:a.host,"onUpdate:modelValue":e[14]||(e[14]=t=>a.host=t),placeholder:"smtp.example.com"},null,8,["modelValue"])]),_:1}),l(m,{label:"端口"},{default:n(()=>[l(te,{modelValue:a.port,"onUpdate:modelValue":e[15]||(e[15]=t=>a.port=t),min:1,max:65535},null,8,["modelValue"])]),_:1}),l(m,{label:"用户名"},{default:n(()=>[l(B,{modelValue:a.username,"onUpdate:modelValue":e[16]||(e[16]=t=>a.username=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"密码"},{default:n(()=>[l(B,{modelValue:a.password,"onUpdate:modelValue":e[17]||(e[17]=t=>a.password=t),type:"password","show-password":"",placeholder:be.value},null,8,["modelValue","placeholder"])]),_:1}),l(m,{label:"SSL"},{default:n(()=>[l(k,{modelValue:a.use_ssl,"onUpdate:modelValue":e[18]||(e[18]=t=>a.use_ssl=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"TLS"},{default:n(()=>[l(k,{modelValue:a.use_tls,"onUpdate:modelValue":e[19]||(e[19]=t=>a.use_tls=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"发件人名称"},{default:n(()=>[l(B,{modelValue:a.sender_name,"onUpdate:modelValue":e[20]||(e[20]=t=>a.sender_name=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"发件人邮箱"},{default:n(()=>[l(B,{modelValue:a.sender_email,"onUpdate:modelValue":e[21]||(e[21]=t=>a.sender_email=t),placeholder:"可选"},null,8,["modelValue"])]),_:1}),l(m,{label:"每日限额"},{default:n(()=>[l(te,{modelValue:a.daily_limit,"onUpdate:modelValue":e[22]||(e[22]=t=>a.daily_limit=t),min:0,max:1e6},null,8,["modelValue"])]),_:1}),l(m,{label:"优先级"},{default:n(()=>[l(te,{modelValue:a.priority,"onUpdate:modelValue":e[23]||(e[23]=t=>a.priority=t),min:0,max:1e3},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"])])}}},Pl=Ie(Sl,[["__scopeId","data-v-7a7e1e9d"]]);export{Pl as default};