mirror of https://github.com/allinssl/allinssl
【调整】SSH地址支持域名形式
【新增】支持自定义监控端口 【新增】通知类型-企业微信 【新增】申请证书(Buypass)、自定义ACME服务器地址 【新增】授权API管理(namesilo、Bunny、Gcore、name.com、京东云)pull/236/head
parent
87ae1c9570
commit
f0d83d23c6
|
|
@ -5,8 +5,8 @@
|
|||
<link rel="icon" href="./favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>AllinSSL</title>
|
||||
<script type="module" crossorigin src="./static/js/main-8EQU3vkq.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="./static/css/style-DiZIyFa4.css">
|
||||
<script type="module" crossorigin src="./static/js/main-BDpNwYoq.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="./static/css/style-Bl7CD6Rg.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
import{u as s}from"./index-DuzXVHO8.js";import{d as t,c as o}from"./main-8EQU3vkq.js";import"./useStore-D25EZPuq.js";import"./index-DmFXBilk.js";import"./access-Yc3nMp5i.js";import"./index-BLQBOH3S.js";import"./throttle-DwTT6ee8.js";import"./index-C4C8o2au.js";import"./data-DKMNuQUU.js";import"./index-BkKKTGm9.js";import"./business-C0XjYveQ.js";import"./index-0ZfPVTfP.js";const r=t({name:"CAManageForm",setup(){const{CAForm:t}=s();return()=>o(t,{labelPlacement:"top"},null)}});export{r as default};
|
||||
|
|
@ -0,0 +1 @@
|
|||
import{u as s}from"./index-BlcQ5EX9.js";import{d as t,c as o}from"./main-BDpNwYoq.js";import"./useStore-BkPNjegu.js";import"./index-tKbXP7vZ.js";import"./access-DnkgYTNR.js";import"./index-DF_PW_bx.js";import"./throttle-ILlbNFLH.js";import"./index-jbhegxlH.js";import"./data-CdgEUQod.js";import"./index-BS6eeb8S.js";import"./business-C8cf7OIR.js";import"./index-DxNQwyVP.js";const r=t({name:"CAManageForm",setup(){const{CAForm:t}=s();return()=>o(t,{labelPlacement:"top"},null)}});export{r as default};
|
||||
|
|
@ -1 +1 @@
|
|||
import{d as a,Y as l,Z as n,_ as r}from"./main-8EQU3vkq.js";const t={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 20 20"},o=a({name:"Certificate20Regular",render:function(a,o){return n(),l("svg",t,o[0]||(o[0]=[r("g",{fill:"none"},[r("path",{d:"M2 5a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v3.146a4.508 4.508 0 0 0-1-.678V5a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h7.258c.076.113.157.223.242.329V15H4a2 2 0 0 1-2-2V5zm16.5 6.5c0 .954-.381 1.818-1 2.45V18a.5.5 0 0 1-.8.4l-1.4-1.05a.5.5 0 0 0-.6 0l-1.4 1.05a.5.5 0 0 1-.8-.4v-4.05a3.5 3.5 0 1 1 6-2.45zM15 15c-.537 0-1.045-.12-1.5-.337v2.087l1.243-.746a.5.5 0 0 1 .514 0l1.243.746v-2.087A3.486 3.486 0 0 1 15 15zm0-1a2.5 2.5 0 1 0 0-5a2.5 2.5 0 0 0 0 5zM5 6.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm.5 4.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1h-4z",fill:"currentColor"})],-1)]))}}),h={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},w=a({name:"CloudMonitoring",render:function(a,t){return n(),l("svg",h,t[0]||(t[0]=[r("path",{d:"M28 16v6H4V6h7V4H4a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h8v4H8v2h16v-2h-4v-4h8a2 2 0 0 0 2-2v-6zM18 28h-4v-4h4z",fill:"currentColor"},null,-1),r("path",{d:"M18 18h-.01a1 1 0 0 1-.951-.725L15.246 11H11V9h5a1 1 0 0 1 .962.725l1.074 3.76l3.009-9.78A1.014 1.014 0 0 1 22 3a.98.98 0 0 1 .949.684L24.72 9H30v2h-6a1 1 0 0 1-.949-.684l-1.013-3.04l-3.082 10.018A1 1 0 0 1 18 18z",fill:"currentColor"},null,-1)]))}}),v={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},e=a({name:"Flow",render:function(a,t){return n(),l("svg",v,t[0]||(t[0]=[r("path",{d:"M27 22.14V17a2 2 0 0 0-2-2h-8V9.86a4 4 0 1 0-2 0V15H7a2 2 0 0 0-2 2v5.14a4 4 0 1 0 2 0V17h18v5.14a4 4 0 1 0 2 0zM8 26a2 2 0 1 1-2-2a2 2 0 0 1 2 2zm6-20a2 2 0 1 1 2 2a2 2 0 0 1-2-2zm12 22a2 2 0 1 1 2-2a2 2 0 0 1-2 2z",fill:"currentColor"},null,-1)]))}});export{o as C,e as F,w as a};
|
||||
import{d as a,Y as l,Z as n,_ as r}from"./main-BDpNwYoq.js";const t={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 20 20"},o=a({name:"Certificate20Regular",render:function(a,o){return n(),l("svg",t,o[0]||(o[0]=[r("g",{fill:"none"},[r("path",{d:"M2 5a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v3.146a4.508 4.508 0 0 0-1-.678V5a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h7.258c.076.113.157.223.242.329V15H4a2 2 0 0 1-2-2V5zm16.5 6.5c0 .954-.381 1.818-1 2.45V18a.5.5 0 0 1-.8.4l-1.4-1.05a.5.5 0 0 0-.6 0l-1.4 1.05a.5.5 0 0 1-.8-.4v-4.05a3.5 3.5 0 1 1 6-2.45zM15 15c-.537 0-1.045-.12-1.5-.337v2.087l1.243-.746a.5.5 0 0 1 .514 0l1.243.746v-2.087A3.486 3.486 0 0 1 15 15zm0-1a2.5 2.5 0 1 0 0-5a2.5 2.5 0 0 0 0 5zM5 6.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm.5 4.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1h-4z",fill:"currentColor"})],-1)]))}}),h={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},w=a({name:"CloudMonitoring",render:function(a,t){return n(),l("svg",h,t[0]||(t[0]=[r("path",{d:"M28 16v6H4V6h7V4H4a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h8v4H8v2h16v-2h-4v-4h8a2 2 0 0 0 2-2v-6zM18 28h-4v-4h4z",fill:"currentColor"},null,-1),r("path",{d:"M18 18h-.01a1 1 0 0 1-.951-.725L15.246 11H11V9h5a1 1 0 0 1 .962.725l1.074 3.76l3.009-9.78A1.014 1.014 0 0 1 22 3a.98.98 0 0 1 .949.684L24.72 9H30v2h-6a1 1 0 0 1-.949-.684l-1.013-3.04l-3.082 10.018A1 1 0 0 1 18 18z",fill:"currentColor"},null,-1)]))}}),v={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},e=a({name:"Flow",render:function(a,t){return n(),l("svg",v,t[0]||(t[0]=[r("path",{d:"M27 22.14V17a2 2 0 0 0-2-2h-8V9.86a4 4 0 1 0-2 0V15H7a2 2 0 0 0-2 2v5.14a4 4 0 1 0 2 0V17h18v5.14a4 4 0 1 0 2 0zM8 26a2 2 0 1 1-2-2a2 2 0 0 1 2 2zm6-20a2 2 0 1 1 2 2a2 2 0 0 1-2-2zm12 22a2 2 0 1 1 2-2a2 2 0 0 1-2 2z",fill:"currentColor"},null,-1)]))}});export{o as C,e as F,w as a};
|
||||
|
|
@ -1 +1 @@
|
|||
import{d as c,Y as n,Z as r,_ as t}from"./main-8EQU3vkq.js";const o={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 1024 1024"},s=c({name:"LockOutlined",render:function(c,s){return r(),n("svg",o,s[0]||(s[0]=[t("path",{d:"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z",fill:"currentColor"},null,-1)]))}});export{s as L};
|
||||
import{d as c,Y as n,Z as r,_ as t}from"./main-BDpNwYoq.js";const o={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 1024 1024"},s=c({name:"LockOutlined",render:function(c,s){return r(),n("svg",o,s[0]||(s[0]=[t("path",{d:"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z",fill:"currentColor"},null,-1)]))}});export{s as L};
|
||||
|
|
@ -0,0 +1 @@
|
|||
import{d as c,Y as a,Z as n,_ as o}from"./main-BDpNwYoq.js";const r={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 512 512"},t=c({name:"LogoGithub",render:function(c,t){return n(),a("svg",r,t[0]||(t[0]=[o("path",{d:"M256 32C132.3 32 32 134.9 32 261.7c0 101.5 64.2 187.5 153.2 217.9a17.56 17.56 0 0 0 3.8.4c8.3 0 11.5-6.1 11.5-11.4c0-5.5-.2-19.9-.3-39.1a102.4 102.4 0 0 1-22.6 2.7c-43.1 0-52.9-33.5-52.9-33.5c-10.2-26.5-24.9-33.6-24.9-33.6c-19.5-13.7-.1-14.1 1.4-14.1h.1c22.5 2 34.3 23.8 34.3 23.8c11.2 19.6 26.2 25.1 39.6 25.1a63 63 0 0 0 25.6-6c2-14.8 7.8-24.9 14.2-30.7c-49.7-5.8-102-25.5-102-113.5c0-25.1 8.7-45.6 23-61.6c-2.3-5.8-10-29.2 2.2-60.8a18.64 18.64 0 0 1 5-.5c8.1 0 26.4 3.1 56.6 24.1a208.21 208.21 0 0 1 112.2 0c30.2-21 48.5-24.1 56.6-24.1a18.64 18.64 0 0 1 5 .5c12.2 31.6 4.5 55 2.2 60.8c14.3 16.1 23 36.6 23 61.6c0 88.2-52.4 107.6-102.3 113.3c8 7.1 15.2 21.1 15.2 42.5c0 30.7-.3 55.5-.3 63c0 5.4 3.1 11.5 11.4 11.5a19.35 19.35 0 0 0 4-.4C415.9 449.2 480 363.1 480 261.7C480 134.9 379.7 32 256 32z",fill:"currentColor"},null,-1)]))}});export{t as L};
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{c as s}from"./index-DmFXBilk.js";const a=a=>s("/v1/access/get_list",a),c=a=>s("/v1/access/add_access",a),e=a=>s("/v1/access/upd_access",a),t=a=>s("/v1/access/del_access",a),_=a=>s("/v1/access/get_all",a),v=a=>s("/v1/access/get_eab_list",a),d=a=>s("/v1/access/add_eab",a),l=a=>s("/v1/access/del_eab",a),g=a=>s("/v1/access/get_all_eab",a),i=a=>s("/v1/access/test_access",a),b=a=>s("/v1/access/get_sites",a);export{c as a,v as b,d as c,t as d,l as e,g as f,a as g,b as h,_ as i,i as t,e as u};
|
||||
import{c as s}from"./index-tKbXP7vZ.js";const a=a=>s("/v1/access/get_list",a),c=a=>s("/v1/access/add_access",a),e=a=>s("/v1/access/upd_access",a),t=a=>s("/v1/access/del_access",a),_=a=>s("/v1/access/get_all",a),v=a=>s("/v1/access/get_eab_list",a),d=a=>s("/v1/access/add_eab",a),l=a=>s("/v1/access/del_eab",a),g=a=>s("/v1/access/get_all_eab",a),i=a=>s("/v1/access/test_access",a),b=a=>s("/v1/access/get_sites",a);export{c as a,v as b,d as c,t as d,l as e,g as f,a as g,b as h,_ as i,i as t,e as u};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{c as t}from"./index-DmFXBilk.js";const e=e=>t("/v1/cert/get_list",e),r=e=>t("/v1/cert/upload_cert",e),c=e=>t("/v1/cert/del_cert",e);export{c as d,e as g,r as u};
|
||||
import{c as t}from"./index-tKbXP7vZ.js";const e=e=>t("/v1/cert/get_list",e),r=e=>t("/v1/cert/upload_cert",e),c=e=>t("/v1/cert/del_cert",e);export{c as d,e as g,r as u};
|
||||
|
|
@ -1 +1 @@
|
|||
import{$ as e}from"./main-8EQU3vkq.js";const t={mail:{name:e("t_68_1745289354676"),type:"mail"},wecom:{name:e("t_33_1746773350932"),type:"wecom"},dingtalk:{name:e("t_32_1746773348993"),type:"dingtalk"},feishu:{name:e("t_34_1746773350153"),type:"feishu"},webhook:{name:"WebHook",type:"webhook"}},n={zerossl:{name:"ZeroSSL",type:"zerossl"},google:{name:"Google",type:"google"},sslcom:{name:"SSL.COM",type:"sslcom"}},a={localhost:{name:e("t_4_1744958838951"),icon:"ssh",type:["host"],notApi:!1,hostRelated:{default:{name:e("t_4_1744958838951")}},sort:1},ssh:{name:"SSH",icon:"ssh",type:["host"],hostRelated:{default:{name:"SSH"}},sort:2},btpanel:{name:e("t_10_1745735765165"),icon:"btpanel",hostRelated:{default:{name:e("t_10_1745735765165")},site:{name:e("t_1_1747886307276")},dockersite:{name:e("t_0_1747994891459")},singlesite:{name:e("t_1_1747886307276")+"\r\n(Win/Linux 9.4前)"}},type:["host"],sort:3},btwaf:{name:e("t_3_1747886302848"),icon:"btwaf",hostRelated:{site:{name:e("t_4_1747886303229")}},type:["host"],sort:4},"1panel":{name:"1Panel",icon:"1panel",hostRelated:{default:{name:"1Panel"},site:{name:e("t_2_1747886302053")}},type:["host"],sort:5},aliyun:{name:e("t_2_1747019616224"),icon:"aliyun",type:["host","dns"],hostRelated:{cdn:{name:e("t_16_1745735766712")},oss:{name:e("t_2_1746697487164")},waf:{name:e("t_10_1744958860078")}},sort:6},tencentcloud:{name:e("t_3_1747019616129"),icon:"tencentcloud",type:["host","dns"],hostRelated:{cdn:{name:e("t_14_1745735766121")},cos:{name:e("t_15_1745735768976")},waf:{name:e("t_9_1744958840634")},teo:{name:e("t_5_1747886301427")}},sort:7},huaweicloud:{name:e("t_9_1747886301128"),icon:"huaweicloud",type:["host","dns"],hostRelated:{cdn:{name:e("t_9_1747886301128")+"CDN"}},sort:10},baidu:{name:e("t_10_1747886300958"),icon:"baidu",type:["host","dns"],hostRelated:{cdn:{name:"百度云CDN"}},sort:11},volcengine:{name:e("t_13_1747886301689"),icon:"volcengine",type:["host","dns"],hostRelated:{cdn:{name:e("t_13_1747886301689")+"CDN"},dcdn:{name:e("t_13_1747886301689")+"DCDN"}},sort:13},safeline:{name:e("t_11_1747886301986"),icon:"safeline",type:["host"],hostRelated:{panel:{name:e("t_1_1747298114192")},site:{name:e("t_12_1747886302725")}},sort:8},qiniu:{name:e("t_6_1747886301844"),icon:"qiniu",type:["host"],hostRelated:{cdn:{name:e("t_7_1747886302395")},oss:{name:e("t_8_1747886304014")}},sort:9},cloudflare:{name:"Cloudflare",icon:"cloudflare",type:["dns"],sort:12},westcn:{name:e("t_14_1747886301884"),icon:"westcn",type:["dns"],sort:14},godaddy:{name:"GoDaddy",icon:"godaddy",type:["dns"],sort:15},namecheap:{name:"Namecheap",icon:"namecheap",type:["dns"],sort:16},ns1:{name:"NS1",icon:"ns1",type:["dns"],sort:17},cloudns:{name:"ClouDNS",icon:"cloudns",type:["dns"],sort:18},aws:{name:"AWS",icon:"aws",type:["dns"],sort:19},azure:{name:"Azure",icon:"azure",type:["dns"],sort:20}};export{a as A,n as C,t as M};
|
||||
import{$ as e}from"./main-BDpNwYoq.js";const t={mail:{name:e("t_68_1745289354676"),type:"mail"},wecom:{name:e("t_33_1746773350932"),type:"wecom"},dingtalk:{name:e("t_32_1746773348993"),type:"dingtalk"},feishu:{name:e("t_34_1746773350153"),type:"feishu"},webhook:{name:"WebHook",type:"webhook"}},n={zerossl:{name:"ZeroSSL",type:"zerossl"},google:{name:"Google",type:"google"},sslcom:{name:"SSL.COM",type:"sslcom"}},o={localhost:{name:e("t_4_1744958838951"),icon:"ssh",type:["host"],notApi:!1,hostRelated:{default:{name:e("t_4_1744958838951")}},sort:1},ssh:{name:"SSH",icon:"ssh",type:["host"],hostRelated:{default:{name:"SSH"}},sort:2},btpanel:{name:e("t_10_1745735765165"),icon:"btpanel",hostRelated:{default:{name:e("t_10_1745735765165")},site:{name:e("t_1_1747886307276")},dockersite:{name:e("t_0_1747994891459")},singlesite:{name:e("t_1_1747886307276")+"\r\n(Win/Linux 9.4前)"}},type:["host"],sort:3},btwaf:{name:e("t_3_1747886302848"),icon:"btwaf",hostRelated:{site:{name:e("t_4_1747886303229")}},type:["host"],sort:4},"1panel":{name:"1Panel",icon:"1panel",hostRelated:{default:{name:"1Panel"},site:{name:e("t_2_1747886302053")}},type:["host"],sort:5},aliyun:{name:e("t_2_1747019616224"),icon:"aliyun",type:["host","dns"],hostRelated:{cdn:{name:e("t_16_1745735766712")},oss:{name:e("t_2_1746697487164")},waf:{name:e("t_10_1744958860078")}},sort:6},tencentcloud:{name:e("t_3_1747019616129"),icon:"tencentcloud",type:["host","dns"],hostRelated:{cdn:{name:e("t_14_1745735766121")},cos:{name:e("t_15_1745735768976")},waf:{name:e("t_9_1744958840634")},teo:{name:e("t_5_1747886301427")}},sort:7},huaweicloud:{name:e("t_9_1747886301128"),icon:"huaweicloud",type:["host","dns"],hostRelated:{cdn:{name:e("t_9_1747886301128")+"CDN"}},sort:10},baidu:{name:e("t_10_1747886300958"),icon:"baidu",type:["host","dns"],hostRelated:{cdn:{name:"百度云CDN"}},sort:11},volcengine:{name:e("t_13_1747886301689"),icon:"volcengine",type:["host","dns"],hostRelated:{cdn:{name:e("t_13_1747886301689")+"CDN"},dcdn:{name:e("t_13_1747886301689")+"DCDN"}},sort:13},safeline:{name:e("t_11_1747886301986"),icon:"safeline",type:["host"],hostRelated:{panel:{name:e("t_1_1747298114192")},site:{name:e("t_12_1747886302725")}},sort:8},qiniu:{name:e("t_6_1747886301844"),icon:"qiniu",type:["host"],hostRelated:{cdn:{name:e("t_7_1747886302395")},oss:{name:e("t_8_1747886304014")}},sort:9},cloudflare:{name:"Cloudflare",icon:"cloudflare",type:["dns"],sort:12},westcn:{name:e("t_14_1747886301884"),icon:"westcn",type:["dns"],sort:14},godaddy:{name:"GoDaddy",icon:"godaddy",type:["dns"],sort:15},namecheap:{name:"Namecheap",icon:"namecheap",type:["dns"],sort:16},ns1:{name:"NS1",icon:"ns1",type:["dns"],sort:17},cloudns:{name:"ClouDNS",icon:"cloudns",type:["dns"],sort:18},aws:{name:"AWS",icon:"aws",type:["dns"],sort:19},azure:{name:"Azure",icon:"azure",type:["dns"],sort:20},namesilo:{name:"Namesilo",icon:"namesilo",type:["dns"],sort:21},namedotcom:{name:"Name.com",icon:"namedotcom",type:["dns"],sort:22},bunny:{name:"Bunny",icon:"bunny",type:["dns"],sort:23},gcore:{name:"Gcore",icon:"gcore",type:["dns"],sort:24},jdcloud:{name:"京东云",icon:"jdcloud",type:["dns"],sort:25}};export{o as A,n as C,t as M};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{S as e}from"./index-BkKKTGm9.js";import{r as t,l,x as a,d as u,c as n,w as i,q as o,$ as s,n as r,b2 as d,bu as p,B as v,i as f}from"./main-8EQU3vkq.js";import{u as c}from"./useStore-CqTywDu_.js";import{M as y}from"./data-DKMNuQUU.js";import{a as m,N as b}from"./business-C0XjYveQ.js";function h(e){return"function"==typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!f(e)}const g=u({name:"NotifyProviderSelect",props:{path:{type:String,default:""},value:{type:String,default:""},valueType:{type:String,default:"value",validator:e=>["value","type"].includes(e)},isAddMode:{type:Boolean,default:!1}},emits:{"update:value":e=>"object"==typeof e&&null!==e&&"label"in e&&"value"in e&&"type"in e},setup(u,{emit:f}){const{selectOptions:g,goToAddNotifyProvider:_,handleSelectUpdate:j,fetchNotifyProviderData:x}=function(e,u){const{fetchNotifyProvider:n,notifyProvider:i}=c(),o=t({label:"",value:"",type:""}),s=t([]),r=l((()=>Object.entries(y).map((([t,l])=>({label:l.name,value:"value"===e.valueType?t:l.type,type:l.type}))))),d=e=>{if(!e)return void(o.value={label:"",value:"",type:""});const t=s.value.find((t=>t.value===e));if(t)return void(o.value={...t});const l=r.value.find((t=>t.value===e));o.value=l?{...l}:{label:e,value:e,type:""}},p=()=>{n()};return a((()=>e.value),(e=>{0===s.value.length&&e&&p(),d(e)}),{immediate:!0}),a((()=>i.value),(t=>{t&&t.length>0?s.value=t.map((t=>({label:t.label,value:"value"===e.valueType?t.value:t.type,type:t.type}))):s.value=r.value,d(e.value)}),{immediate:!0,deep:!0}),i.value&&0!==i.value.length||(s.value=r.value,p()),{selectedOptionFull:o,selectOptions:s,goToAddNotifyProvider:()=>{window.open("/settings?tab=notification","_blank")},handleSelectUpdate:e=>{d(e),u("update:value",{...o.value})},fetchNotifyProviderData:p}}(u,f),S=({option:t})=>{let l;const a=t;return n("div",{class:"flex items-center"},[a.label?n(b,{align:"center",size:"small"},{default:()=>[n(e,{icon:`notify-${a.type||""}`,size:"1.6rem"},null),n(m,null,{default:()=>[a.label]})]}):n(m,{depth:"3"},h(l=s("t_0_1745887835267"))?l:{default:()=>[l]})])},N=t=>{const l=t;return n(b,{align:"center",size:"small"},{default:()=>[n(e,{icon:`notify-${l.type||""}`,size:"1.6rem"},null),n(m,null,{default:()=>[l.label]})]})},P=l((()=>g.value.map((e=>({...e})))));return()=>{let e,t;return n(i,{cols:24},{default:()=>[n(o,{span:u.isAddMode?13:24,label:s("t_1_1745887832941"),path:u.path},{default:()=>[n(r,{class:"flex-1 w-full",options:P.value,renderLabel:N,renderTag:S,filterable:!0,clearable:!0,placeholder:s("t_0_1745887835267"),value:u.value,onUpdateValue:j},{empty:()=>n("div",{class:"text-center py-4"},[n(m,{depth:"3",class:"text-[1.4rem]"},{default:()=>[0===g.value.length?s("t_0_1745887835267"):"暂无匹配的通知渠道"]})])})]}),u.isAddMode&&n(d,{span:11},{default:()=>[n("div",{class:"flex items-center h-full"},[n(p,{vertical:!0},null),n(v,{class:"mx-[8px]",onClick:_,ghost:!0},h(e=s("t_2_1745887834248"))?e:{default:()=>[e]}),n(v,{onClick:x,ghost:!0},h(t=s("t_0_1746497662220"))?t:{default:()=>[t]})])]})]})}}});export{g as N};
|
||||
import{S as e}from"./index-BS6eeb8S.js";import{r as t,l,x as a,d as u,c as n,w as i,q as o,$ as s,n as r,b2 as d,bC as p,B as v,i as f}from"./main-BDpNwYoq.js";import{u as c}from"./useStore--5QSg69L.js";import{M as y}from"./data-CdgEUQod.js";import{a as m,N as b}from"./business-C8cf7OIR.js";function h(e){return"function"==typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!f(e)}const g=u({name:"NotifyProviderSelect",props:{path:{type:String,default:""},value:{type:String,default:""},valueType:{type:String,default:"value",validator:e=>["value","type"].includes(e)},isAddMode:{type:Boolean,default:!1}},emits:{"update:value":e=>"object"==typeof e&&null!==e&&"label"in e&&"value"in e&&"type"in e},setup(u,{emit:f}){const{selectOptions:g,goToAddNotifyProvider:_,handleSelectUpdate:j,fetchNotifyProviderData:x}=function(e,u){const{fetchNotifyProvider:n,notifyProvider:i}=c(),o=t({label:"",value:"",type:""}),s=t([]),r=l((()=>Object.entries(y).map((([t,l])=>({label:l.name,value:"value"===e.valueType?t:l.type,type:l.type}))))),d=e=>{if(!e)return void(o.value={label:"",value:"",type:""});const t=s.value.find((t=>t.value===e));if(t)return void(o.value={...t});const l=r.value.find((t=>t.value===e));o.value=l?{...l}:{label:e,value:e,type:""}},p=()=>{n()};return a((()=>e.value),(e=>{0===s.value.length&&e&&p(),d(e)}),{immediate:!0}),a((()=>i.value),(t=>{t&&t.length>0?s.value=t.map((t=>({label:t.label,value:"value"===e.valueType?t.value:t.type,type:t.type}))):s.value=r.value,d(e.value)}),{immediate:!0,deep:!0}),i.value&&0!==i.value.length||(s.value=r.value,p()),{selectedOptionFull:o,selectOptions:s,goToAddNotifyProvider:()=>{window.open("/settings?tab=notification","_blank")},handleSelectUpdate:e=>{d(e),u("update:value",{...o.value})},fetchNotifyProviderData:p}}(u,f),S=({option:t})=>{let l;const a=t;return n("div",{class:"flex items-center"},[a.label?n(b,{align:"center",size:"small"},{default:()=>[n(e,{icon:`notify-${a.type||""}`,size:"1.6rem"},null),n(m,null,{default:()=>[a.label]})]}):n(m,{depth:"3"},h(l=s("t_0_1745887835267"))?l:{default:()=>[l]})])},N=t=>{const l=t;return n(b,{align:"center",size:"small"},{default:()=>[n(e,{icon:`notify-${l.type||""}`,size:"1.6rem"},null),n(m,null,{default:()=>[l.label]})]})},P=l((()=>g.value.map((e=>({...e})))));return()=>{let e,t;return n(i,{cols:24},{default:()=>[n(o,{span:u.isAddMode?13:24,label:s("t_1_1745887832941"),path:u.path},{default:()=>[n(r,{class:"flex-1 w-full",options:P.value,renderLabel:N,renderTag:S,filterable:!0,clearable:!0,placeholder:s("t_0_1745887835267"),value:u.value,onUpdateValue:j},{empty:()=>n("div",{class:"text-center py-4"},[n(m,{depth:"3",class:"text-[1.4rem]"},{default:()=>[0===g.value.length?s("t_0_1745887835267"):"暂无匹配的通知渠道"]})])})]}),u.isAddMode&&n(d,{span:11},{default:()=>[n("div",{class:"flex items-center h-full"},[n(p,{vertical:!0},null),n(v,{class:"mx-[8px]",onClick:_,ghost:!0},h(e=s("t_2_1745887834248"))?e:{default:()=>[e]}),n(v,{onClick:x,ghost:!0},h(t=s("t_0_1746497662220"))?t:{default:()=>[t]})])]})]})}}});export{g as N};
|
||||
|
|
@ -1 +1 @@
|
|||
import{d as e,l as i,c as r}from"./main-8EQU3vkq.js";const t=e({name:"SvgIcon",props:{icon:{type:String,required:!0},color:{type:String,default:""},size:{type:String,default:"1.8rem"}},setup(e){const t=i((()=>`#icon-${e.icon}`));return()=>r("svg",{class:"relative inline-block align-[-0.2rem]",style:{width:e.size,height:e.size},"aria-hidden":"true"},[r("use",{"xlink:href":t.value,fill:e.color},null)])}});export{t as S};
|
||||
import{d as e,l as i,c as r}from"./main-BDpNwYoq.js";const t=e({name:"SvgIcon",props:{icon:{type:String,required:!0},color:{type:String,default:""},size:{type:String,default:"1.8rem"}},setup(e){const t=i((()=>`#icon-${e.icon}`));return()=>r("svg",{class:"relative inline-block align-[-0.2rem]",style:{width:e.size,height:e.size},"aria-hidden":"true"},[r("use",{"xlink:href":t.value,fill:e.color},null)])}});export{t as S};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{u as e}from"./useStore-CqTywDu_.js";import{u as a,N as l}from"./index-DmFXBilk.js";import{r as u,x as t,o as s,aV as v,$ as d,d as o,c as r,w as n,q as i,n as p,B as y,i as c}from"./main-8EQU3vkq.js";import{S as f}from"./index-BkKKTGm9.js";import{a as m,N as b}from"./business-C0XjYveQ.js";const _=o({name:"DnsProviderSelect",props:{type:{type:String,required:!0},path:{type:String,required:!0},value:{type:String,required:!0},valueType:{type:String,default:"value"},isAddMode:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},customClass:{type:String,default:""}},emits:["update:value"],setup(o,{emit:_}){const g=function(l,o){const{handleError:r}=a(),{fetchDnsProvider:n,resetDnsProvider:i,dnsProvider:p}=e(),y=u({label:"",value:"",type:""}),c=u([]),f=u(!1),m=u(""),b=()=>{var e,a,u,t,s;const v=p.value.find((e=>("value"===l.valueType?e.value:e.type)===y.value.value));v?(y.value={label:v.label,value:"value"===l.valueType?v.value:v.type,type:"value"===l.valueType?v.type:v.value},o("update:value",{...y.value})):""===y.value.value&&p.value.length>0&&(y.value={label:(null==(e=p.value[0])?void 0:e.label)||"",value:"value"===l.valueType?(null==(a=p.value[0])?void 0:a.value)||"":(null==(u=p.value[0])?void 0:u.type)||"",type:"value"===l.valueType?(null==(t=p.value[0])?void 0:t.type)||"":(null==(s=p.value[0])?void 0:s.value)||""},o("update:value",{...y.value}))},_=e=>{y.value.value=e,b()},g=async(e=l.type)=>{f.value=!0,m.value="";try{await n(e),l.value?(y.value.value=l.value,b()):b()}catch(a){m.value="string"==typeof a?a:d("t_0_1746760933542"),r(a)}finally{f.value=!1}};return t((()=>p.value),(e=>{var a;c.value=e.map((e=>({label:e.label,value:"value"===l.valueType?e.value:e.type,type:"value"===l.valueType?e.type:e.value})))||[],c.value.some((e=>e.value===y.value.value))?b():l.value&&c.value.some((e=>e.value===l.value))?(y.value.value=l.value,b()):""===y.value.value&&c.value.length>0&&(y.value.value=(null==(a=c.value[0])?void 0:a.value)||"",b())}),{deep:!0}),t((()=>l.value),(e=>{e!==y.value.value&&_(e)}),{immediate:!0}),t((()=>l.type),(e=>{g(e)})),s((async()=>{await g(l.type)})),v((()=>{i()})),{param:y,dnsProviderRef:c,isLoading:f,errorMessage:m,goToAddDnsProvider:()=>{window.open("/auth-api-manage","_blank")},handleUpdateValue:_,loadDnsProviders:g,handleFilter:(e,a)=>a.label.toLowerCase().includes(e.toLowerCase())}}(o,_),h=e=>r(b,{align:"center"},{default:()=>[r(f,{icon:`resources-${e.type}`,size:"2rem"},null),r(m,null,{default:()=>[e.label]})]});return()=>{let e;return r(l,{show:g.isLoading.value},{default:()=>[r(n,{cols:24,class:o.customClass},{default:()=>[r(i,{span:o.isAddMode?13:24,label:"dns"===o.type?d("t_3_1745735765112"):d("t_0_1746754500246"),path:o.path},{default:()=>[r(p,{class:"flex-1 w-full",filterable:!0,options:g.dnsProviderRef.value,renderLabel:h,renderTag:({option:e})=>(({option:e})=>r("div",{class:"flex items-center"},[e.label?h(e):r(m,{class:"text-[#aaa]"},{default:()=>["dns"===o.type?d("t_0_1747019621052"):d("t_0_1746858920894")]})]))({option:e}),filter:(e,a)=>g.handleFilter(e,a),placeholder:"dns"===o.type?d("t_3_1745490735059"):d("t_0_1746858920894"),value:g.param.value.value,onUpdateValue:g.handleUpdateValue,disabled:o.disabled},{empty:()=>r("span",{class:"text-[1.4rem]"},[g.errorMessage.value||("dns"===o.type?d("t_1_1746858922914"):d("t_2_1746858923964"))])})]}),o.isAddMode&&r(i,{span:11},{default:()=>{return[r(y,{class:"mx-[8px]",onClick:g.goToAddDnsProvider,disabled:o.disabled},{default:()=>["dns"===o.type?d("t_1_1746004861166"):d("t_3_1746858920060")]}),r(y,{onClick:()=>g.loadDnsProviders(o.type),loading:g.isLoading.value,disabled:o.disabled},(a=e=d("t_0_1746497662220"),"function"==typeof a||"[object Object]"===Object.prototype.toString.call(a)&&!c(a)?e:{default:()=>[e]}))];var a}})]})]})}}});export{_ as D};
|
||||
import{u as e}from"./useStore--5QSg69L.js";import{u as a,N as l}from"./index-tKbXP7vZ.js";import{r as u,x as t,o as s,aG as v,$ as d,d as o,c as r,w as n,q as i,n as p,B as y,i as c}from"./main-BDpNwYoq.js";import{S as f}from"./index-BS6eeb8S.js";import{a as m,N as b}from"./business-C8cf7OIR.js";const _=o({name:"DnsProviderSelect",props:{type:{type:String,required:!0},path:{type:String,required:!0},value:{type:String,required:!0},valueType:{type:String,default:"value"},isAddMode:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},customClass:{type:String,default:""}},emits:["update:value"],setup(o,{emit:_}){const g=function(l,o){const{handleError:r}=a(),{fetchDnsProvider:n,resetDnsProvider:i,dnsProvider:p}=e(),y=u({label:"",value:"",type:""}),c=u([]),f=u(!1),m=u(""),b=()=>{var e,a,u,t,s;const v=p.value.find((e=>("value"===l.valueType?e.value:e.type)===y.value.value));v?(y.value={label:v.label,value:"value"===l.valueType?v.value:v.type,type:"value"===l.valueType?v.type:v.value},o("update:value",{...y.value})):""===y.value.value&&p.value.length>0&&(y.value={label:(null==(e=p.value[0])?void 0:e.label)||"",value:"value"===l.valueType?(null==(a=p.value[0])?void 0:a.value)||"":(null==(u=p.value[0])?void 0:u.type)||"",type:"value"===l.valueType?(null==(t=p.value[0])?void 0:t.type)||"":(null==(s=p.value[0])?void 0:s.value)||""},o("update:value",{...y.value}))},_=e=>{y.value.value=e,b()},g=async(e=l.type)=>{f.value=!0,m.value="";try{await n(e),l.value?(y.value.value=l.value,b()):b()}catch(a){m.value="string"==typeof a?a:d("t_0_1746760933542"),r(a)}finally{f.value=!1}};return t((()=>p.value),(e=>{var a;c.value=e.map((e=>({label:e.label,value:"value"===l.valueType?e.value:e.type,type:"value"===l.valueType?e.type:e.value})))||[],c.value.some((e=>e.value===y.value.value))?b():l.value&&c.value.some((e=>e.value===l.value))?(y.value.value=l.value,b()):""===y.value.value&&c.value.length>0&&(y.value.value=(null==(a=c.value[0])?void 0:a.value)||"",b())}),{deep:!0}),t((()=>l.value),(e=>{e!==y.value.value&&_(e)}),{immediate:!0}),t((()=>l.type),(e=>{g(e)})),s((async()=>{await g(l.type)})),v((()=>{i()})),{param:y,dnsProviderRef:c,isLoading:f,errorMessage:m,goToAddDnsProvider:()=>{window.open("/auth-api-manage","_blank")},handleUpdateValue:_,loadDnsProviders:g,handleFilter:(e,a)=>a.label.toLowerCase().includes(e.toLowerCase())}}(o,_),h=e=>r(b,{align:"center"},{default:()=>[r(f,{icon:`resources-${e.type}`,size:"2rem"},null),r(m,null,{default:()=>[e.label]})]});return()=>{let e;return r(l,{show:g.isLoading.value},{default:()=>[r(n,{cols:24,class:o.customClass},{default:()=>[r(i,{span:o.isAddMode?13:24,label:"dns"===o.type?d("t_3_1745735765112"):d("t_0_1746754500246"),path:o.path},{default:()=>[r(p,{class:"flex-1 w-full",filterable:!0,options:g.dnsProviderRef.value,renderLabel:h,renderTag:({option:e})=>(({option:e})=>r("div",{class:"flex items-center"},[e.label?h(e):r(m,{class:"text-[#aaa]"},{default:()=>["dns"===o.type?d("t_0_1747019621052"):d("t_0_1746858920894")]})]))({option:e}),filter:(e,a)=>g.handleFilter(e,a),placeholder:"dns"===o.type?d("t_3_1745490735059"):d("t_0_1746858920894"),value:g.param.value.value,onUpdateValue:g.handleUpdateValue,disabled:o.disabled},{empty:()=>r("span",{class:"text-[1.4rem]"},[g.errorMessage.value||("dns"===o.type?d("t_1_1746858922914"):d("t_2_1746858923964"))])})]}),o.isAddMode&&r(i,{span:11},{default:()=>{return[r(y,{class:"mx-[8px]",onClick:g.goToAddDnsProvider,disabled:o.disabled},{default:()=>["dns"===o.type?d("t_1_1746004861166"):d("t_3_1746858920060")]}),r(y,{onClick:()=>g.loadDnsProviders(o.type),loading:g.isLoading.value,disabled:o.disabled},(a=e=d("t_0_1746497662220"),"function"==typeof a||"[object Object]"===Object.prototype.toString.call(a)&&!c(a)?e:{default:()=>[e]}))];var a}})]})]})}}});export{_ as D};
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{d as e,c as s}from"./main-8EQU3vkq.js";const l=e({name:"BaseComponent",setup(e,{slots:l}){const t=l["header-left"]||l.headerLeft,f=l["header-right"]||l.headerRight,r=l.header,o=l["footer-left"]||l.footerLeft,a=l["footer-right"]||l.footerRight,i=l.footer;return()=>s("div",{class:"flex flex-col"},[r?s("div",{class:"flex justify-between flex-wrap w-full"},[r()]):(t||f)&&s("div",{class:"flex justify-between flex-wrap",style:{rowGap:"0.8rem"}},[s("div",{class:"flex flex-shrink-0"},[t&&t()]),s("div",{class:"flex flex-shrink-0"},[f&&f()])]),s("div",{class:`w-full content ${r||t||f?"mt-[1.2rem]":""} ${i||o||a?"mb-[1.2rem]":""}`},[l.content&&l.content()]),i?s("div",{class:"flex justify-between w-full"},[i()]):(o||a)&&s("div",{class:"flex justify-between"},[s("div",{class:"flex flex-shrink-0"},[o&&o()]),s("div",{class:"flex flex-shrink-0"},[a&&a()])]),l.popup&&l.popup()])}});export{l as B};
|
||||
import{d as e,c as s}from"./main-BDpNwYoq.js";const l=e({name:"BaseComponent",setup(e,{slots:l}){const t=l["header-left"]||l.headerLeft,f=l["header-right"]||l.headerRight,r=l.header,o=l["footer-left"]||l.footerLeft,a=l["footer-right"]||l.footerRight,i=l.footer;return()=>s("div",{class:"flex flex-col"},[r?s("div",{class:"flex justify-between flex-wrap w-full"},[r()]):(t||f)&&s("div",{class:"flex justify-between flex-wrap",style:{rowGap:"0.8rem"}},[s("div",{class:"flex flex-shrink-0"},[t&&t()]),s("div",{class:"flex flex-shrink-0"},[f&&f()])]),s("div",{class:`w-full content ${r||t||f?"mt-[1.2rem]":""} ${i||o||a?"mb-[1.2rem]":""}`},[l.content&&l.content()]),i?s("div",{class:"flex justify-between w-full"},[i()]):(o||a)&&s("div",{class:"flex justify-between"},[s("div",{class:"flex flex-shrink-0"},[o&&o()]),s("div",{class:"flex flex-shrink-0"},[a&&a()])]),l.popup&&l.popup()])}});export{l as B};
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{d as e,u as t,a as o,c as r,b as s,$ as l,B as a,i as c}from"./main-8EQU3vkq.js";const m=(e=16,t)=>r("svg",{width:e,height:e,viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg",fill:t},[r("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M8.6 1c1.6.1 3.1.9 4.2 2 1.3 1.4 2 3.1 2 5.1 0 1.6-.6 3.1-1.6 4.4-1 1.2-2.4 2.1-4 2.4-1.6.3-3.2.1-4.6-.7-1.4-.8-2.5-2-3.1-3.5C.9 9.2.8 7.5 1.3 6c.5-1.6 1.4-2.9 2.8-3.8C5.4 1.3 7 .9 8.6 1zm.5 12.9c1.3-.3 2.5-1 3.4-2.1.8-1.1 1.3-2.4 1.2-3.8 0-1.6-.6-3.2-1.7-4.3-1-1-2.2-1.6-3.6-1.7-1.3-.1-2.7.2-3.8 1-1.1.8-1.9 1.9-2.3 3.3-.4 1.3-.4 2.7.2 4 .6 1.3 1.5 2.3 2.7 3 1.2.7 2.6.9 3.9.6zM7.9 7.5L10.3 5l.7.7-2.4 2.5 2.4 2.5-.7.7-2.4-2.5-2.4 2.5-.7-.7 2.4-2.5-2.4-2.5.7-.7 2.4 2.5z"},null)]),n=e({setup(){const e=t(),n=o(["baseColor","textColorBase","textColorSecondary","textColorDisabled"]);return()=>{let t;return r("div",{class:"flex flex-col items-center justify-center min-h-screen p-4",style:n.value},[r("div",{class:"text-center px-4 sm:px-8 max-w-[60rem] mx-auto"},[r("div",{class:"text-[4.5rem] sm:text-[6rem] md:text-[8rem] font-bold leading-none mb-2 sm:mb-4",style:{color:"var(--n-text-color-base)",textShadow:"2px 2px 8px rgba(0,0,0,0.25)"}},[s("404")]),r("div",{class:"flex items-center justify-center mb-4 sm:mb-8"},[m(60,"var(--n-text-color-base)")]),r("div",{class:"text-[1.2rem] sm:text-[1.5rem] md:text-[1.8rem] mb-4 sm:mb-8",style:{color:"var(--n-text-color-secondary)"}},[l("t_0_1744098811152")]),r(a,{style:{backgroundColor:"var(--n-text-color-base)",color:"var(--n-base-color)",border:"none"},onClick:()=>e.push("/")},(o=t=l("t_1_1744098801860"),"function"==typeof o||"[object Object]"===Object.prototype.toString.call(o)&&!c(o)?t:{default:()=>[t]})),r("div",{class:"mt-4 sm:mt-8 text-[1rem] sm:text-[1.1rem] md:text-[1.3rem]",style:{color:"var(--n-text-color-disabled)"}},[l("t_2_1744098804908")])])]);var o}}});export{n as default};
|
||||
import{d as e,u as t,a as o,c as r,b as s,$ as l,B as a,i as c}from"./main-BDpNwYoq.js";const m=(e=16,t)=>r("svg",{width:e,height:e,viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg",fill:t},[r("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M8.6 1c1.6.1 3.1.9 4.2 2 1.3 1.4 2 3.1 2 5.1 0 1.6-.6 3.1-1.6 4.4-1 1.2-2.4 2.1-4 2.4-1.6.3-3.2.1-4.6-.7-1.4-.8-2.5-2-3.1-3.5C.9 9.2.8 7.5 1.3 6c.5-1.6 1.4-2.9 2.8-3.8C5.4 1.3 7 .9 8.6 1zm.5 12.9c1.3-.3 2.5-1 3.4-2.1.8-1.1 1.3-2.4 1.2-3.8 0-1.6-.6-3.2-1.7-4.3-1-1-2.2-1.6-3.6-1.7-1.3-.1-2.7.2-3.8 1-1.1.8-1.9 1.9-2.3 3.3-.4 1.3-.4 2.7.2 4 .6 1.3 1.5 2.3 2.7 3 1.2.7 2.6.9 3.9.6zM7.9 7.5L10.3 5l.7.7-2.4 2.5 2.4 2.5-.7.7-2.4-2.5-2.4 2.5-.7-.7 2.4-2.5-2.4-2.5.7-.7 2.4 2.5z"},null)]),n=e({setup(){const e=t(),n=o(["baseColor","textColorBase","textColorSecondary","textColorDisabled"]);return()=>{let t;return r("div",{class:"flex flex-col items-center justify-center min-h-screen p-4",style:n.value},[r("div",{class:"text-center px-4 sm:px-8 max-w-[60rem] mx-auto"},[r("div",{class:"text-[4.5rem] sm:text-[6rem] md:text-[8rem] font-bold leading-none mb-2 sm:mb-4",style:{color:"var(--n-text-color-base)",textShadow:"2px 2px 8px rgba(0,0,0,0.25)"}},[s("404")]),r("div",{class:"flex items-center justify-center mb-4 sm:mb-8"},[m(60,"var(--n-text-color-base)")]),r("div",{class:"text-[1.2rem] sm:text-[1.5rem] md:text-[1.8rem] mb-4 sm:mb-8",style:{color:"var(--n-text-color-secondary)"}},[l("t_0_1744098811152")]),r(a,{style:{backgroundColor:"var(--n-text-color-base)",color:"var(--n-base-color)",border:"none"},onClick:()=>e.push("/")},(o=t=l("t_1_1744098801860"),"function"==typeof o||"[object Object]"===Object.prototype.toString.call(o)&&!c(o)?t:{default:()=>[t]})),r("div",{class:"mt-4 sm:mt-8 text-[1rem] sm:text-[1.1rem] md:text-[1.3rem]",style:{color:"var(--n-text-color-disabled)"}},[l("t_2_1744098804908")])])]);var o}}});export{n as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{bI as e,bN as t,bO as n,bJ as a,bP as i,aS as o,bL as r,bK as s,A as u,x as c,o as l,V as f,J as m,r as p,bQ as v}from"./main-8EQU3vkq.js";function b(e){return!!i()&&(o(e),!0)}const d=new WeakMap,w=(...e)=>{var t;const n=e[0],a=null==(t=r())?void 0:t.proxy;if(null==a&&!s())throw new Error("injectLocal must be called in setup");return a&&d.has(a)&&n in d.get(a)?d.get(a)[n]:u(...e)},g="undefined"!=typeof window&&"undefined"!=typeof document;"undefined"!=typeof WorkerGlobalScope&&(globalThis,WorkerGlobalScope);const h=Object.prototype.toString,y=e=>"[object Object]"===h.call(e),j=()=>{};function A(e,t){return function(...n){return new Promise(((a,i)=>{Promise.resolve(e((()=>t.apply(this,n)),{fn:t,thisArg:this,args:n})).then(a).catch(i)}))}}const F=e=>e();function S(e=F,n={}){const{initialState:a="active"}=n,i=function(...e){if(1!==e.length)return m(...e);const n=e[0];return"function"==typeof n?t(v((()=>({get:n,set:j})))):p(n)}("active"===a);return{isActive:t(i),pause:function(){i.value=!1},resume:function(){i.value=!0},eventFilter:(...t)=>{i.value&&e(...t)}}}function T(e){return e.endsWith("rem")?16*Number.parseFloat(e):Number.parseFloat(e)}function P(e){return Array.isArray(e)?e:[e]}function k(e,t=200,i=!1,o=!0,r=!1){return A(function(...e){let t,i,o,r,s,u,c=0,l=!0,f=j;n(e[0])||"object"!=typeof e[0]?[o,r=!0,s=!0,u=!1]=e:({delay:o,trailing:r=!0,leading:s=!0,rejectOnCancel:u=!1}=e[0]);const m=()=>{t&&(clearTimeout(t),t=void 0,f(),f=j)};return e=>{const n=a(o),p=Date.now()-c,v=()=>i=e();return m(),n<=0?(c=Date.now(),v()):(p>n&&(s||!l)?(c=Date.now(),v()):r&&(i=new Promise(((e,a)=>{f=u?a:e,t=setTimeout((()=>{c=Date.now(),l=!0,e(v()),m()}),Math.max(0,n-p))}))),s||t||(t=setTimeout((()=>l=!0),n)),l=!1,i)}}(t,i,o,r),e)}function x(e,t,n={}){const{eventFilter:a,initialState:i="active",...o}=n,{eventFilter:r,pause:s,resume:u,isActive:l}=S(a,{initialState:i}),f=function(e,t,n={}){const{eventFilter:a=F,...i}=n;return c(e,A(a,t),i)}(e,t,{...o,eventFilter:r});return{stop:f,pause:s,resume:u,isActive:l}}function D(e,t=!0,n){r()?l(e,n):t?e():f(e)}function O(n,i,o={}){const{immediate:r=!0,immediateCallback:s=!1}=o,u=e(!1);let c=null;function l(){c&&(clearTimeout(c),c=null)}function f(){u.value=!1,l()}function m(...e){s&&n(),l(),u.value=!0,c=setTimeout((()=>{u.value=!1,c=null,n(...e)}),a(i))}return r&&(u.value=!0,g&&m()),b(f),{isPending:t(u),start:m,stop:f}}function W(e,t,n){return c(e,t,{...n,immediate:!0})}export{k as a,g as b,b as c,y as d,x as e,D as f,w as i,T as p,P as t,O as u,W as w};
|
||||
import{bQ as e,bV as t,bW as n,bR as a,bX as i,aI as o,bT as r,bS as s,A as u,x as c,o as l,V as f,J as m,r as p,bY as v}from"./main-BDpNwYoq.js";function b(e){return!!i()&&(o(e),!0)}const d=new WeakMap,w=(...e)=>{var t;const n=e[0],a=null==(t=r())?void 0:t.proxy;if(null==a&&!s())throw new Error("injectLocal must be called in setup");return a&&d.has(a)&&n in d.get(a)?d.get(a)[n]:u(...e)},g="undefined"!=typeof window&&"undefined"!=typeof document;"undefined"!=typeof WorkerGlobalScope&&(globalThis,WorkerGlobalScope);const h=Object.prototype.toString,y=e=>"[object Object]"===h.call(e),j=()=>{};function A(e,t){return function(...n){return new Promise(((a,i)=>{Promise.resolve(e((()=>t.apply(this,n)),{fn:t,thisArg:this,args:n})).then(a).catch(i)}))}}const F=e=>e();function S(e=F,n={}){const{initialState:a="active"}=n,i=function(...e){if(1!==e.length)return m(...e);const n=e[0];return"function"==typeof n?t(v((()=>({get:n,set:j})))):p(n)}("active"===a);return{isActive:t(i),pause:function(){i.value=!1},resume:function(){i.value=!0},eventFilter:(...t)=>{i.value&&e(...t)}}}function T(e){return e.endsWith("rem")?16*Number.parseFloat(e):Number.parseFloat(e)}function W(e){return Array.isArray(e)?e:[e]}function k(e,t=200,i=!1,o=!0,r=!1){return A(function(...e){let t,i,o,r,s,u,c=0,l=!0,f=j;n(e[0])||"object"!=typeof e[0]?[o,r=!0,s=!0,u=!1]=e:({delay:o,trailing:r=!0,leading:s=!0,rejectOnCancel:u=!1}=e[0]);const m=()=>{t&&(clearTimeout(t),t=void 0,f(),f=j)};return e=>{const n=a(o),p=Date.now()-c,v=()=>i=e();return m(),n<=0?(c=Date.now(),v()):(p>n&&(s||!l)?(c=Date.now(),v()):r&&(i=new Promise(((e,a)=>{f=u?a:e,t=setTimeout((()=>{c=Date.now(),l=!0,e(v()),m()}),Math.max(0,n-p))}))),s||t||(t=setTimeout((()=>l=!0),n)),l=!1,i)}}(t,i,o,r),e)}function x(e,t,n={}){const{eventFilter:a,initialState:i="active",...o}=n,{eventFilter:r,pause:s,resume:u,isActive:l}=S(a,{initialState:i}),f=function(e,t,n={}){const{eventFilter:a=F,...i}=n;return c(e,A(a,t),i)}(e,t,{...o,eventFilter:r});return{stop:f,pause:s,resume:u,isActive:l}}function D(e,t=!0,n){r()?l(e,n):t?e():f(e)}function P(n,i,o={}){const{immediate:r=!0,immediateCallback:s=!1}=o,u=e(!1);let c=null;function l(){c&&(clearTimeout(c),c=null)}function f(){u.value=!1,l()}function m(...e){s&&n(),l(),u.value=!0,c=setTimeout((()=>{u.value=!1,c=null,n(...e)}),a(i))}return r&&(u.value=!0,g&&m()),b(f),{isPending:t(u),start:m,stop:f}}function O(e,t,n){return c(e,t,{...n,immediate:!0})}export{k as a,g as b,b as c,y as d,x as e,D as f,w as i,T as p,W as t,P as u,O as w};
|
||||
|
|
@ -1 +1 @@
|
|||
var t;import{S as e}from"./index-BkKKTGm9.js";import{A as o,M as a}from"./data-DKMNuQUU.js";import{l as n,d as s,c as l,N as r}from"./main-8EQU3vkq.js";const i={},p={},c=new Set;for(const d in o)if(Object.prototype.hasOwnProperty.call(o,d)){const e=o[d];if(i[d]=e.name,p[d]=e.icon,null==e?void 0:e.hostRelated)for(const o in e.hostRelated)if(Object.prototype.hasOwnProperty.call(e.hostRelated,o)){const a=e.hostRelated[o],n=`${d}-${o}`;n&&(i[n]=(null==(t=null==a?void 0:a.name)?void 0:t.toString())??"",p[n]=e.icon)}}for(const d in a)if(Object.prototype.hasOwnProperty.call(a,d)){const t=a[d];i[d]=t.name,p[d]=t.type,c.add(d)}o.btwaf&&(p.btwaf="btpanel");const u=s({name:"AuthApiTypeIcon",props:{icon:{type:String,required:!0},type:{type:String,default:"default"},text:{type:Boolean,default:!0}},setup(t){const{iconPath:o,typeName:a}=function(t){return{iconPath:n((()=>(c.has(t.icon)?"notify-":"resources-")+(p[t.icon]||"default"))),typeName:n((()=>i[t.icon]||t.icon))}}(t);return()=>l(r,{type:t.type,size:"small",class:"w-auto text-ellipsis overflow-hidden whitespace-normal p-[.6rem] h-auto"},{default:()=>[l(e,{icon:o.value,size:"1.2rem",class:"mr-[0.4rem]"},null),l("span",null,[t.text&&l("span",{class:"text-[12px]"},[a.value])])]})}});export{u as T};
|
||||
var t;import{S as e}from"./index-BS6eeb8S.js";import{A as o,M as a}from"./data-CdgEUQod.js";import{l as n,d as s,c as l,N as r}from"./main-BDpNwYoq.js";const i={},p={},c=new Set;for(const d in o)if(Object.prototype.hasOwnProperty.call(o,d)){const e=o[d];if(i[d]=e.name,p[d]=e.icon,null==e?void 0:e.hostRelated)for(const o in e.hostRelated)if(Object.prototype.hasOwnProperty.call(e.hostRelated,o)){const a=e.hostRelated[o],n=`${d}-${o}`;n&&(i[n]=(null==(t=null==a?void 0:a.name)?void 0:t.toString())??"",p[n]=e.icon)}}for(const d in a)if(Object.prototype.hasOwnProperty.call(a,d)){const t=a[d];i[d]=t.name,p[d]=t.type,c.add(d)}o.btwaf&&(p.btwaf="btpanel");const u=s({name:"AuthApiTypeIcon",props:{icon:{type:String,required:!0},type:{type:String,default:"default"},text:{type:Boolean,default:!0}},setup(t){const{iconPath:o,typeName:a}=function(t){return{iconPath:n((()=>(c.has(t.icon)?"notify-":"resources-")+(p[t.icon]||"default"))),typeName:n((()=>i[t.icon]||t.icon))}}(t);return()=>l(r,{type:t.type,size:"small",class:"w-auto text-ellipsis overflow-hidden whitespace-normal p-[.6rem] h-auto"},{default:()=>[l(e,{icon:o.value,size:"1.2rem",class:"mr-[0.4rem]"},null),l("span",null,[t.text&&l("span",{class:"text-[12px]"},[a.value])])]})}});export{u as T};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{d as t,Y as a,Z as e,_ as s,c as l,aa as r,$ as n,b as i,B as p}from"./main-8EQU3vkq.js";const u={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},o=t({name:"Search",render:function(t,l){return e(),a("svg",u,l[0]||(l[0]=[s("path",{d:"M29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29zM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9z",fill:"currentColor"},null,-1)]))}}),d=t({name:"TableEmptyState",props:{addButtonText:{type:String,required:!0},onAddClick:{type:Function,required:!0}},setup:t=>()=>l("div",{class:"flex justify-center items-center h-full"},[l(r,{class:"px-[4rem]"},{default:()=>[n("t_1_1747754231838"),l(p,{text:!0,type:"primary",size:"small",onClick:t.onAddClick},{default:()=>[t.addButtonText]}),i(","),n("t_2_1747754234999"),l(p,{text:!0,tag:"a",target:"_blank",type:"primary",href:"https://github.com/allinssl/allinssl/issues"},{default:()=>[i("Issues")]}),i(","),n("t_3_1747754232000"),l(p,{text:!0,tag:"a",target:"_blank",type:"primary",href:"https://github.com/allinssl/allinssl"},{default:()=>[i("Star")]}),i(","),n("t_4_1747754235407")]})])});export{d as E,o as S};
|
||||
import{d as t,Y as a,Z as e,_ as s,c as l,aa as r,$ as n,b as i,B as p}from"./main-BDpNwYoq.js";const u={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},o=t({name:"Search",render:function(t,l){return e(),a("svg",u,l[0]||(l[0]=[s("path",{d:"M29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29zM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9z",fill:"currentColor"},null,-1)]))}}),d=t({name:"TableEmptyState",props:{addButtonText:{type:String,required:!0},onAddClick:{type:Function,required:!0}},setup:t=>()=>l("div",{class:"flex justify-center items-center h-full"},[l(r,{class:"px-[4rem]"},{default:()=>[n("t_1_1747754231838"),l(p,{text:!0,type:"primary",size:"small",onClick:t.onAddClick},{default:()=>[t.addButtonText]}),i(","),n("t_2_1747754234999"),l(p,{text:!0,tag:"a",target:"_blank",type:"primary",href:"https://github.com/allinssl/allinssl/issues"},{default:()=>[i("Issues")]}),i(","),n("t_3_1747754232000"),l(p,{text:!0,tag:"a",target:"_blank",type:"primary",href:"https://github.com/allinssl/allinssl"},{default:()=>[i("Star")]}),i(","),n("t_4_1747754235407")]})])});export{d as E,o as S};
|
||||
|
|
@ -1 +1 @@
|
|||
import{p as e,i as t,b as n,t as a,w as r,c as o,d as l,e as s,f as i}from"./index-0ZfPVTfP.js";import{bI as u,ay as f,bJ as c,l as d,bK as v,o as g,bL as p,bM as w,r as m,x as y,V as h}from"./main-8EQU3vkq.js";const b=n?window:void 0;function S(...e){const t=[],n=()=>{t.forEach((e=>e())),t.length=0},s=d((()=>{const t=a(c(e[0])).filter((e=>null!=e));return t.every((e=>"string"!=typeof e))?t:void 0})),i=r((()=>{var t,n;return[null!=(n=null==(t=s.value)?void 0:t.map((e=>function(e){var t;const n=c(e);return null!=(t=null==n?void 0:n.$el)?t:n}(e))))?n:[b].filter((e=>null!=e)),a(c(s.value?e[1]:e[0])),a(w(s.value?e[2]:e[1])),c(s.value?e[3]:e[2])]}),(([e,a,r,o])=>{if(n(),!(null==e?void 0:e.length)||!(null==a?void 0:a.length)||!(null==r?void 0:r.length))return;const s=l(o)?{...o}:o;t.push(...e.flatMap((e=>a.flatMap((t=>r.map((n=>((e,t,n,a)=>(e.addEventListener(t,n,a),()=>e.removeEventListener(t,n,a)))(e,t,n,s))))))))}),{flush:"post"});return o(n),()=>{i(),n()}}function N(e){const t=function(){const e=u(!1),t=p();return t&&g((()=>{e.value=!0}),t),e}();return d((()=>(t.value,Boolean(e()))))}const M=Symbol("vueuse-ssr-width");function O(){const e=v()?t(M,null):null;return"number"==typeof e?e:void 0}function E(t,n={}){const{window:a=b,ssrWidth:r=O()}=n,o=N((()=>a&&"matchMedia"in a&&"function"==typeof a.matchMedia)),l=u("number"==typeof r),s=u(),i=u(!1);return f((()=>{if(l.value){l.value=!o.value;const n=c(t).split(",");i.value=n.some((t=>{const n=t.includes("not all"),a=t.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),o=t.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let l=Boolean(a||o);return a&&l&&(l=r>=e(a[1])),o&&l&&(l=r<=e(o[1])),n?!l:l}))}else o.value&&(s.value=a.matchMedia(c(t)),i.value=s.value.matches)})),S(s,"change",(e=>{i.value=e.matches}),{passive:!0}),d((()=>i.value))}const I="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},J="__vueuse_ssr_handlers__",j=A();function A(){return J in I||(I[J]=I[J]||{}),I[J]}const _={boolean:{read:e=>"true"===e,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},x="vueuse-storage";function D(e,t,n,a={}){var r;const{flush:o="pre",deep:l=!0,listenToStorageChanges:f=!0,writeDefaults:v=!0,mergeDefaults:g=!1,shallow:p,window:w=b,eventFilter:N,onError:M=e=>{},initOnMounted:O}=a,E=(p?u:m)("function"==typeof t?t():t),I=d((()=>c(e)));if(!n)try{n=function(e,t){return j[e]||t}("getDefaultStorage",(()=>{var e;return null==(e=b)?void 0:e.localStorage}))()}catch(T){M(T)}if(!n)return E;const J=c(t),A=function(e){return null==e?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":"boolean"==typeof e?"boolean":"string"==typeof e?"string":"object"==typeof e?"object":Number.isNaN(e)?"any":"number"}(J),D=null!=(r=a.serializer)?r:_[A],{pause:V,resume:k}=s(E,(()=>function(e){try{const t=n.getItem(I.value);if(null==e)z(t,null),n.removeItem(I.value);else{const a=D.write(e);t!==a&&(n.setItem(I.value,a),z(t,a))}}catch(T){M(T)}}(E.value)),{flush:o,deep:l,eventFilter:N});function z(e,t){if(w){const a={key:I.value,oldValue:e,newValue:t,storageArea:n};w.dispatchEvent(n instanceof Storage?new StorageEvent("storage",a):new CustomEvent(x,{detail:a}))}}function F(e){if(!e||e.storageArea===n)if(e&&null==e.key)E.value=J;else if(!e||e.key===I.value){V();try{(null==e?void 0:e.newValue)!==D.write(E.value)&&(E.value=function(e){const t=e?e.newValue:n.getItem(I.value);if(null==t)return v&&null!=J&&n.setItem(I.value,D.write(J)),J;if(!e&&g){const e=D.read(t);return"function"==typeof g?g(e,J):"object"!==A||Array.isArray(e)?e:{...J,...e}}return"string"!=typeof t?t:D.read(t)}(e))}catch(T){M(T)}finally{e?h(k):k()}}}function L(e){F(e.detail)}return y(I,(()=>F()),{flush:o}),w&&f&&i((()=>{n instanceof Storage?S(w,"storage",F,{passive:!0}):S(w,x,L),O&&F()})),O||F(),E}function V(e,t,n={}){const{window:a=b}=n;return D(e,t,null==a?void 0:a.localStorage,n)}function k(e,t,n={}){const{window:a=b}=n;return D(e,t,null==a?void 0:a.sessionStorage,n)}export{V as a,k as b,E as u};
|
||||
import{p as e,i as t,b as n,t as a,w as r,c as o,d as l,e as s,f as i}from"./index-DxNQwyVP.js";import{bQ as u,ay as f,bR as c,l as d,bS as v,o as g,bT as p,bU as w,r as m,x as y,V as h}from"./main-BDpNwYoq.js";const b=n?window:void 0;function S(...e){const t=[],n=()=>{t.forEach((e=>e())),t.length=0},s=d((()=>{const t=a(c(e[0])).filter((e=>null!=e));return t.every((e=>"string"!=typeof e))?t:void 0})),i=r((()=>{var t,n;return[null!=(n=null==(t=s.value)?void 0:t.map((e=>function(e){var t;const n=c(e);return null!=(t=null==n?void 0:n.$el)?t:n}(e))))?n:[b].filter((e=>null!=e)),a(c(s.value?e[1]:e[0])),a(w(s.value?e[2]:e[1])),c(s.value?e[3]:e[2])]}),(([e,a,r,o])=>{if(n(),!(null==e?void 0:e.length)||!(null==a?void 0:a.length)||!(null==r?void 0:r.length))return;const s=l(o)?{...o}:o;t.push(...e.flatMap((e=>a.flatMap((t=>r.map((n=>((e,t,n,a)=>(e.addEventListener(t,n,a),()=>e.removeEventListener(t,n,a)))(e,t,n,s))))))))}),{flush:"post"});return o(n),()=>{i(),n()}}function N(e){const t=function(){const e=u(!1),t=p();return t&&g((()=>{e.value=!0}),t),e}();return d((()=>(t.value,Boolean(e()))))}const M=Symbol("vueuse-ssr-width");function O(){const e=v()?t(M,null):null;return"number"==typeof e?e:void 0}function E(t,n={}){const{window:a=b,ssrWidth:r=O()}=n,o=N((()=>a&&"matchMedia"in a&&"function"==typeof a.matchMedia)),l=u("number"==typeof r),s=u(),i=u(!1);return f((()=>{if(l.value){l.value=!o.value;const n=c(t).split(",");i.value=n.some((t=>{const n=t.includes("not all"),a=t.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),o=t.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let l=Boolean(a||o);return a&&l&&(l=r>=e(a[1])),o&&l&&(l=r<=e(o[1])),n?!l:l}))}else o.value&&(s.value=a.matchMedia(c(t)),i.value=s.value.matches)})),S(s,"change",(e=>{i.value=e.matches}),{passive:!0}),d((()=>i.value))}const j="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},A="__vueuse_ssr_handlers__",I=J();function J(){return A in j||(j[A]=j[A]||{}),j[A]}const _={boolean:{read:e=>"true"===e,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},x="vueuse-storage";function D(e,t,n,a={}){var r;const{flush:o="pre",deep:l=!0,listenToStorageChanges:f=!0,writeDefaults:v=!0,mergeDefaults:g=!1,shallow:p,window:w=b,eventFilter:N,onError:M=e=>{},initOnMounted:O}=a,E=(p?u:m)("function"==typeof t?t():t),j=d((()=>c(e)));if(!n)try{n=function(e,t){return I[e]||t}("getDefaultStorage",(()=>{var e;return null==(e=b)?void 0:e.localStorage}))()}catch(B){M(B)}if(!n)return E;const A=c(t),J=function(e){return null==e?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":"boolean"==typeof e?"boolean":"string"==typeof e?"string":"object"==typeof e?"object":Number.isNaN(e)?"any":"number"}(A),D=null!=(r=a.serializer)?r:_[J],{pause:V,resume:T}=s(E,(()=>function(e){try{const t=n.getItem(j.value);if(null==e)k(t,null),n.removeItem(j.value);else{const a=D.write(e);t!==a&&(n.setItem(j.value,a),k(t,a))}}catch(B){M(B)}}(E.value)),{flush:o,deep:l,eventFilter:N});function k(e,t){if(w){const a={key:j.value,oldValue:e,newValue:t,storageArea:n};w.dispatchEvent(n instanceof Storage?new StorageEvent("storage",a):new CustomEvent(x,{detail:a}))}}function z(e){if(!e||e.storageArea===n)if(e&&null==e.key)E.value=A;else if(!e||e.key===j.value){V();try{(null==e?void 0:e.newValue)!==D.write(E.value)&&(E.value=function(e){const t=e?e.newValue:n.getItem(j.value);if(null==t)return v&&null!=A&&n.setItem(j.value,D.write(A)),A;if(!e&&g){const e=D.read(t);return"function"==typeof g?g(e,A):"object"!==J||Array.isArray(e)?e:{...A,...e}}return"string"!=typeof t?t:D.read(t)}(e))}catch(B){M(B)}finally{e?h(T):T()}}}function F(e){z(e.detail)}return y(j,(()=>z()),{flush:o}),w&&f&&i((()=>{n instanceof Storage?S(w,"storage",z,{passive:!0}):S(w,x,F),O&&z()})),O||z(),E}function V(e,t,n={}){const{window:a=b}=n;return D(e,t,null==a?void 0:a.localStorage,n)}function T(e,t,n={}){const{window:a=b}=n;return D(e,t,null==a?void 0:a.sessionStorage,n)}export{V as a,T as b,E as u};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{c as o,d as s}from"./index-DmFXBilk.js";const e=s=>o("/v1/login/sign",s),g=()=>s.get("/v1/login/get_code"),i=()=>o("/v1/login/sign-out",{}),v=s=>o("/v1/overview/get_overviews",s);export{g as a,v as g,e as l,i as s};
|
||||
import{c as o,d as s}from"./index-tKbXP7vZ.js";const e=s=>o("/v1/login/sign",s),g=()=>s.get("/v1/login/get_code"),i=()=>o("/v1/login/sign-out",{}),v=s=>o("/v1/overview/get_overviews",s);export{g as a,v as g,e as l,i as s};
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
import{c as t}from"./index-DmFXBilk.js";const e=e=>t("/v1/setting/get_setting",e),r=e=>t("/v1/setting/save_setting",e),s=e=>t("/v1/report/add_report",e),o=e=>t("/v1/report/upd_report",e),a=e=>t("/v1/report/del_report",e),p=e=>t("/v1/report/notify_test",e),i=e=>t("/v1/report/get_list",e);export{i as a,s as b,a as d,e as g,r as s,p as t,o as u};
|
||||
|
|
@ -0,0 +1 @@
|
|||
import{c as t}from"./index-tKbXP7vZ.js";const e=e=>t("/v1/setting/get_setting",e),s=e=>t("/v1/setting/save_setting",e),r=e=>t("/v1/report/add_report",e),o=e=>t("/v1/report/upd_report",e),a=e=>t("/v1/report/del_report",e),p=e=>t("/v1/report/notify_test",e),i=e=>t("/v1/report/get_list",e),v=e=>t("/v1/setting/get_version",e);export{e as a,i as b,r as c,a as d,v as g,s,p as t,o as u};
|
||||
|
|
@ -1 +1 @@
|
|||
import{c1 as t,c2 as n,c3 as i}from"./main-8EQU3vkq.js";var r=/\s/;var e=/^\s+/;function a(t){return t?t.slice(0,function(t){for(var n=t.length;n--&&r.test(t.charAt(n)););return n}(t)+1).replace(e,""):t}var o=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,f=/^0o[0-7]+$/i,c=parseInt;function v(i){if("number"==typeof i)return i;if(t(i))return NaN;if(n(i)){var r="function"==typeof i.valueOf?i.valueOf():i;i=n(r)?r+"":r}if("string"!=typeof i)return 0===i?i:+i;i=a(i);var e=u.test(i);return e||f.test(i)?c(i.slice(2),e?2:8):o.test(i)?NaN:+i}var s=function(){return i.Date.now()},l=Math.max,d=Math.min;function m(t,i,r){var e,a,o,u,f,c,m=0,p=!1,g=!1,h=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function x(n){var i=e,r=a;return e=a=void 0,m=n,u=t.apply(r,i)}function y(t){var n=t-c;return void 0===c||n>=i||n<0||g&&t-m>=o}function T(){var t=s();if(y(t))return w(t);f=setTimeout(T,function(t){var n=i-(t-c);return g?d(n,o-(t-m)):n}(t))}function w(t){return f=void 0,h&&e?x(t):(e=a=void 0,u)}function E(){var t=s(),n=y(t);if(e=arguments,a=this,c=t,n){if(void 0===f)return function(t){return m=t,f=setTimeout(T,i),p?x(t):u}(c);if(g)return clearTimeout(f),f=setTimeout(T,i),x(c)}return void 0===f&&(f=setTimeout(T,i)),u}return i=v(i)||0,n(r)&&(p=!!r.leading,o=(g="maxWait"in r)?l(v(r.maxWait)||0,i):o,h="trailing"in r?!!r.trailing:h),E.cancel=function(){void 0!==f&&clearTimeout(f),m=0,e=c=a=f=void 0},E.flush=function(){return void 0===f?u:w(s())},E}function p(t,i,r){var e=!0,a=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return n(r)&&(e="leading"in r?!!r.leading:e,a="trailing"in r?!!r.trailing:a),m(t,i,{leading:e,maxWait:i,trailing:a})}export{p as t};
|
||||
import{c7 as t,c8 as n,c9 as i}from"./main-BDpNwYoq.js";var r=/\s/;var e=/^\s+/;function a(t){return t?t.slice(0,function(t){for(var n=t.length;n--&&r.test(t.charAt(n)););return n}(t)+1).replace(e,""):t}var o=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,f=/^0o[0-7]+$/i,c=parseInt;function v(i){if("number"==typeof i)return i;if(t(i))return NaN;if(n(i)){var r="function"==typeof i.valueOf?i.valueOf():i;i=n(r)?r+"":r}if("string"!=typeof i)return 0===i?i:+i;i=a(i);var e=u.test(i);return e||f.test(i)?c(i.slice(2),e?2:8):o.test(i)?NaN:+i}var s=function(){return i.Date.now()},l=Math.max,d=Math.min;function m(t,i,r){var e,a,o,u,f,c,m=0,p=!1,g=!1,h=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function x(n){var i=e,r=a;return e=a=void 0,m=n,u=t.apply(r,i)}function y(t){var n=t-c;return void 0===c||n>=i||n<0||g&&t-m>=o}function T(){var t=s();if(y(t))return w(t);f=setTimeout(T,function(t){var n=i-(t-c);return g?d(n,o-(t-m)):n}(t))}function w(t){return f=void 0,h&&e?x(t):(e=a=void 0,u)}function E(){var t=s(),n=y(t);if(e=arguments,a=this,c=t,n){if(void 0===f)return function(t){return m=t,f=setTimeout(T,i),p?x(t):u}(c);if(g)return clearTimeout(f),f=setTimeout(T,i),x(c)}return void 0===f&&(f=setTimeout(T,i)),u}return i=v(i)||0,n(r)&&(p=!!r.leading,o=(g="maxWait"in r)?l(v(r.maxWait)||0,i):o,h="trailing"in r?!!r.trailing:h),E.cancel=function(){void 0!==f&&clearTimeout(f),m=0,e=c=a=f=void 0},E.flush=function(){return void 0===f?u:w(s())},E}function p(t,i,r){var e=!0,a=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return n(r)&&(e="leading"in r?!!r.leading:e,a="trailing"in r?!!r.trailing:a),m(t,i,{leading:e,maxWait:i,trailing:a})}export{p as t};
|
||||
|
|
@ -1 +1 @@
|
|||
import{e,s as a,r as t,l as o,$ as l}from"./main-8EQU3vkq.js";import{a as s,b as n}from"./index-zwGx0-tj.js";import{u as r}from"./index-DmFXBilk.js";import{a as i}from"./setting-B2E69T0V.js";import{i as u}from"./access-Yc3nMp5i.js";const m=e("layout-store",(()=>{const{handleError:e}=r(),a=s("layout-collapsed",!1),m=t([]),c=t([]),v=n("menu-active","home"),d=o((()=>"home"!==v.value?"var(--n-content-padding)":"0")),p=s("locales-active","zhCN"),h=t({mail:{name:l("t_68_1745289354676")},dingtalk:{name:l("t_32_1746773348993")},wecom:{name:l("t_33_1746773350932")},feishu:{name:l("t_34_1746773350153")},webhook:{name:"WebHook"}});return{isCollapsed:a,notifyProvider:m,dnsProvider:c,menuActive:v,layoutPadding:d,locales:p,pushSourceType:h,toggleCollapse:()=>{a.value=!a.value},handleCollapse:()=>{a.value=!0},handleExpand:()=>{a.value=!1},updateMenuActive:e=>{"logout"!==e&&(v.value=e)},resetDataInfo:()=>{v.value="home",sessionStorage.removeItem("menu-active")},fetchNotifyProvider:async()=>{try{m.value=[];const{data:e}=await i({p:1,search:"",limit:1e3}).fetch();m.value=(null==e?void 0:e.map((e=>({label:e.name,value:e.id.toString(),type:e.type}))))||[]}catch(a){e(a)}},fetchDnsProvider:async(a="")=>{try{c.value=[];const{data:e}=await u({type:a}).fetch();c.value=(null==e?void 0:e.map((e=>({label:e.name,value:e.id.toString(),type:e.type}))))||[]}catch(t){c.value=[],e(t)}},resetDnsProvider:()=>{c.value=[]}}})),c=()=>{const e=m();return{...e,...a(e)}};export{c as u};
|
||||
import{e,s as a,r as t,l as o,$ as l}from"./main-BDpNwYoq.js";import{a as s,b as n}from"./index-ljV2JH1b.js";import{u as r}from"./index-tKbXP7vZ.js";import{b as i}from"./setting-CUXc7rMj.js";import{i as u}from"./access-DnkgYTNR.js";const m=e("layout-store",(()=>{const{handleError:e}=r(),a=s("layout-collapsed",!1),m=t([]),c=t([]),v=n("menu-active","home"),d=o((()=>"home"!==v.value?"var(--n-content-padding)":"0")),p=s("locales-active","zhCN"),h=t({mail:{name:l("t_68_1745289354676")},dingtalk:{name:l("t_32_1746773348993")},wecom:{name:l("t_33_1746773350932")},feishu:{name:l("t_34_1746773350153")},webhook:{name:"WebHook"}});return{isCollapsed:a,notifyProvider:m,dnsProvider:c,menuActive:v,layoutPadding:d,locales:p,pushSourceType:h,toggleCollapse:()=>{a.value=!a.value},handleCollapse:()=>{a.value=!0},handleExpand:()=>{a.value=!1},updateMenuActive:e=>{"logout"!==e&&(v.value=e)},resetDataInfo:()=>{v.value="home",sessionStorage.removeItem("menu-active")},fetchNotifyProvider:async()=>{try{m.value=[];const{data:e}=await i({p:1,search:"",limit:1e3}).fetch();m.value=(null==e?void 0:e.map((e=>({label:e.name,value:e.id.toString(),type:e.type}))))||[]}catch(a){e(a)}},fetchDnsProvider:async(a="")=>{try{c.value=[];const{data:e}=await u({type:a}).fetch();c.value=(null==e?void 0:e.map((e=>({label:e.name,value:e.id.toString(),type:e.type}))))||[]}catch(t){c.value=[],e(t)}},resetDnsProvider:()=>{c.value=[]}}})),c=()=>{const e=m();return{...e,...a(e)}};export{c as u};
|
||||
|
|
@ -0,0 +1 @@
|
|||
import{c as e,u as a}from"./index-tKbXP7vZ.js";import{e as o,s as t,r as l,$ as r}from"./main-BDpNwYoq.js";const w=a=>e("/v1/workflow/get_list",a),s=a=>e("/v1/workflow/del_workflow",a),c=a=>e("/v1/workflow/get_workflow_history",a),f=a=>e("/v1/workflow/get_exec_log",a),n=a=>e("/v1/workflow/execute_workflow",a),d=a=>e("/v1/workflow/exec_type",a),i=a=>e("/v1/workflow/active",a),k=a=>e("/v1/workflow/stop",a),u=o("work-edit-view-store",(()=>{const{handleError:o}=a(),t=l(!1),w=l(!1),s=l({id:"",name:"",content:"",active:"1",exec_type:"manual"}),c=l("quick"),f=l({id:"",name:"",childNode:{id:"start-1",name:"开始",type:"start",config:{exec_type:"manual"},childNode:null}});return{isEdit:t,detectionRefresh:w,workflowData:s,workflowType:c,workDefalutNodeData:f,resetWorkflowData:()=>{s.value={id:"",name:"",content:"",active:"1",exec_type:"manual"},f.value={id:"",name:"",childNode:{id:"start-1",name:"开始",type:"start",config:{exec_type:"manual"},childNode:null}},c.value="quick",t.value=!1},addNewWorkflow:async a=>{try{const{message:o,fetch:t}=(a=>e("/v1/workflow/add_workflow",a))(a);o.value=!0,await t()}catch(t){o(t).default(r("t_10_1745457486451"))}},updateWorkflowData:async a=>{try{const{message:o,fetch:t}=e("/v1/workflow/upd_workflow",a);o.value=!0,await t()}catch(t){o(t).default(r("t_11_1745457488256"))}}}})),v=()=>{const e=u();return{...e,...t(e)}};export{c as a,n as b,f as c,s as d,i as e,v as f,w as g,k as s,d as u};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{c as e,u as a}from"./index-DmFXBilk.js";import{e as o,s as t,r as l,$ as r}from"./main-8EQU3vkq.js";const w=a=>e("/v1/workflow/get_list",a),s=a=>e("/v1/workflow/del_workflow",a),c=a=>e("/v1/workflow/get_workflow_history",a),n=a=>e("/v1/workflow/get_exec_log",a),d=a=>e("/v1/workflow/execute_workflow",a),f=a=>e("/v1/workflow/exec_type",a),i=a=>e("/v1/workflow/active",a),u=o("work-edit-view-store",(()=>{const{handleError:o}=a(),t=l(!1),w=l(!1),s=l({id:"",name:"",content:"",active:"1",exec_type:"manual"}),c=l("quick"),n=l({id:"",name:"",childNode:{id:"start-1",name:"开始",type:"start",config:{exec_type:"manual"},childNode:null}});return{isEdit:t,detectionRefresh:w,workflowData:s,workflowType:c,workDefalutNodeData:n,resetWorkflowData:()=>{s.value={id:"",name:"",content:"",active:"1",exec_type:"manual"},n.value={id:"",name:"",childNode:{id:"start-1",name:"开始",type:"start",config:{exec_type:"manual"},childNode:null}},c.value="quick",t.value=!1},addNewWorkflow:async a=>{try{const{message:o,fetch:t}=(a=>e("/v1/workflow/add_workflow",a))(a);o.value=!0,await t()}catch(t){o(t).default(r("t_10_1745457486451"))}},updateWorkflowData:async a=>{try{const{message:o,fetch:t}=e("/v1/workflow/upd_workflow",a);o.value=!0,await t()}catch(t){o(t).default(r("t_11_1745457488256"))}}}})),k=()=>{const e=u();return{...e,...t(e)}};export{c as a,d as b,n as c,s as d,i as e,k as f,w as g,f as u};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -10792,5 +10792,192 @@
|
|||
"arDZ": "إرسال رسالة اختبار إلى، التكوين الحالي {type} إشعار، هل تتابع؟"
|
||||
},
|
||||
"timestamp": "2025-05-30T07:54:29.194Z"
|
||||
},
|
||||
"服务器IP地址或域名格式错误": {
|
||||
"text": "服务器IP地址或域名格式错误",
|
||||
"key": "t_0_1749119980577",
|
||||
"translations": {
|
||||
"zhCN": "服务器IP地址或域名格式错误",
|
||||
"zhTW": "伺服器IP位址或網域名稱格式錯誤",
|
||||
"enUS": "Server IP address or domain name format error",
|
||||
"jaJP": "サーバーのIPアドレスまたはドメイン名の形式が正しくありません",
|
||||
"koKR": "서버 IP 주소 또는 도메인 이름 형식 오류",
|
||||
"ruRU": "Ошибка формата IP-адреса сервера или доменного имени",
|
||||
"ptBR": "Erro de formato de endereço IP ou nome de domínio do servidor",
|
||||
"frFR": "Erreur de format d'adresse IP ou de nom de domaine du serveur",
|
||||
"esAR": "Error de formato de dirección IP o nombre de dominio del servidor",
|
||||
"arDZ": "خطأ في تنسيق عنوان IP الخادم أو اسم النطاق"
|
||||
},
|
||||
"timestamp": "2025-06-05T10:39:40.577Z"
|
||||
},
|
||||
"停止执行": {
|
||||
"text": "停止执行",
|
||||
"key": "t_0_1749204565782",
|
||||
"translations": {
|
||||
"zhCN": "停止执行",
|
||||
"zhTW": "停止執行",
|
||||
"enUS": "Stop execution",
|
||||
"jaJP": "実行を停止",
|
||||
"koKR": "실행 중지",
|
||||
"ruRU": "Остановить выполнение",
|
||||
"ptBR": "Parar execução",
|
||||
"frFR": "Arrêter l'exécution",
|
||||
"esAR": "Detener ejecución",
|
||||
"arDZ": "إيقاف التنفيذ"
|
||||
},
|
||||
"timestamp": "2025-06-06T10:09:30.473Z"
|
||||
},
|
||||
"确定要停止当前工作流的执行吗?": {
|
||||
"text": "确定要停止当前工作流的执行吗?",
|
||||
"key": "t_1_1749204570473",
|
||||
"translations": {
|
||||
"zhCN": "确定要停止当前工作流的执行吗?",
|
||||
"zhTW": "確定要停止當前工作流的執行嗎?",
|
||||
"enUS": "Are you sure you want to stop the execution of the current workflow?",
|
||||
"jaJP": "現在のワークフローの実行を停止しますか?",
|
||||
"koKR": "현재 워크플로우 실행을 중지하시겠습니까?",
|
||||
"ruRU": "Вы уверены, что хотите остановить выполнение текущего рабочего процесса?",
|
||||
"ptBR": "Tem certeza de que deseja interromper a execução do fluxo de trabalho atual?",
|
||||
"frFR": "Êtes-vous sûr de vouloir arrêter l'exécution du workflow actuel ?",
|
||||
"esAR": "¿Estás seguro de que quieres detener la ejecución del flujo de trabajo actual?",
|
||||
"arDZ": "هل أنت متأكد أنك تريد إيقاف تنفيذ سير العمل الحالي؟"
|
||||
},
|
||||
"timestamp": "2025-06-06T10:09:30.474Z"
|
||||
},
|
||||
"禁用CNAME支持": {
|
||||
"text": "禁用CNAME支持",
|
||||
"key": "t_2_1749204567193",
|
||||
"translations": {
|
||||
"zhCN": "禁用CNAME支持",
|
||||
"zhTW": "禁用CNAME支援",
|
||||
"enUS": "Disable CNAME support",
|
||||
"jaJP": "CNAMEサポートを無効にする",
|
||||
"koKR": "CNAME 지원 비활성화",
|
||||
"ruRU": "Отключить поддержку CNAME",
|
||||
"ptBR": "Desativar suporte CNAME",
|
||||
"frFR": "Désactiver la prise en charge CNAME",
|
||||
"esAR": "Deshabilitar soporte CNAME",
|
||||
"arDZ": "تعطيل دعم CNAME"
|
||||
},
|
||||
"timestamp": "2025-06-06T10:09:30.474Z"
|
||||
},
|
||||
"预检查超时时间(秒)": {
|
||||
"text": "预检查超时时间(秒)",
|
||||
"key": "t_0_1749263105073",
|
||||
"translations": {
|
||||
"zhCN": "预检查超时时间(秒)",
|
||||
"zhTW": "預檢查超時時間(秒)",
|
||||
"enUS": "Pre-check timeout (seconds)",
|
||||
"jaJP": "事前チェックのタイムアウト時間(秒)",
|
||||
"koKR": "사전 점검 시간 초과 (초)",
|
||||
"ruRU": "Таймаут предварительной проверки (секунды)",
|
||||
"ptBR": "Tempo limite de pré-verificação (segundos)",
|
||||
"frFR": "Délai d'expiration de la pré-vérification (secondes)",
|
||||
"esAR": "Tiempo de espera de la preverificación (segundos)",
|
||||
"arDZ": "وقت انتهاء الفحص المسبق (ثانية)"
|
||||
},
|
||||
"timestamp": "2025-06-07T02:25:05.074Z"
|
||||
},
|
||||
"请输入预检查超时时间": {
|
||||
"text": "请输入预检查超时时间",
|
||||
"key": "t_1_1749263104936",
|
||||
"translations": {
|
||||
"zhCN": "请输入预检查超时时间",
|
||||
"zhTW": "請輸入預檢查超時時間",
|
||||
"enUS": "Please enter the pre-check timeout",
|
||||
"jaJP": "事前チェックのタイムアウト時間を入力してください",
|
||||
"koKR": "사전 검사 시간 초과 시간을 입력하십시오",
|
||||
"ruRU": "Введите время ожидания предварительной проверки",
|
||||
"ptBR": "Insira o tempo limite de pré-verificação",
|
||||
"frFR": "Veuillez entrer le délai d'attente de pré-vérification",
|
||||
"esAR": "Introduce el tiempo de espera de la comprobación previa",
|
||||
"arDZ": "الرجاء إدخال مهلة التحقق المسبق"
|
||||
},
|
||||
"timestamp": "2025-06-07T02:25:05.074Z"
|
||||
},
|
||||
"忽略预检查结果": {
|
||||
"text": "忽略预检查结果",
|
||||
"key": "t_2_1749263103765",
|
||||
"translations": {
|
||||
"zhCN": "忽略预检查结果",
|
||||
"zhTW": "忽略預檢查結果",
|
||||
"enUS": "Ignore pre-check results",
|
||||
"jaJP": "事前チェック結果を無視",
|
||||
"koKR": "사전 점검 결과 무시",
|
||||
"ruRU": "Игнорировать результаты предварительной проверки",
|
||||
"ptBR": "Ignorar resultados de pré-verificação",
|
||||
"frFR": "Ignorer les résultats de la pré-vérification",
|
||||
"esAR": "Ignorar los resultados de la verificación previa",
|
||||
"arDZ": "تجاهل نتائج الفحص المسبق"
|
||||
},
|
||||
"timestamp": "2025-06-07T02:25:05.074Z"
|
||||
},
|
||||
"当预检查失败时": {
|
||||
"text": "当预检查失败时",
|
||||
"key": "t_3_1749263104237",
|
||||
"translations": {
|
||||
"zhCN": "当预检查失败时",
|
||||
"zhTW": "當預檢查失敗時",
|
||||
"enUS": "When the pre-check fails",
|
||||
"jaJP": "事前チェックが失敗した場合",
|
||||
"koKR": "사전 점검이 실패했을 때",
|
||||
"ruRU": "Когда предварительная проверка не удалась",
|
||||
"ptBR": "Quando a pré-verificação falha",
|
||||
"frFR": "Lorsque la pré-vérification échoue",
|
||||
"esAR": "Cuando falla la verificación previa",
|
||||
"arDZ": "عندما تفشل الفحص المسبق"
|
||||
},
|
||||
"timestamp": "2025-06-07T02:25:05.074Z"
|
||||
},
|
||||
"继续": {
|
||||
"text": "继续",
|
||||
"key": "t_4_1749263101853",
|
||||
"translations": {
|
||||
"zhCN": "继续",
|
||||
"zhTW": "繼續",
|
||||
"enUS": "Continue",
|
||||
"jaJP": "続ける",
|
||||
"koKR": "계속하다",
|
||||
"ruRU": "Продолжить",
|
||||
"ptBR": "Continuar",
|
||||
"frFR": "Continuer",
|
||||
"esAR": "Continuar",
|
||||
"arDZ": "استمر"
|
||||
},
|
||||
"timestamp": "2025-06-07T02:25:05.074Z"
|
||||
},
|
||||
"停止": {
|
||||
"text": "停止",
|
||||
"key": "t_5_1749263101934",
|
||||
"translations": {
|
||||
"zhCN": "停止",
|
||||
"zhTW": "停止",
|
||||
"enUS": "Stop",
|
||||
"jaJP": "停止",
|
||||
"koKR": "중지",
|
||||
"ruRU": "Остановить",
|
||||
"ptBR": "Parar",
|
||||
"frFR": "Arrêter",
|
||||
"esAR": "Detener",
|
||||
"arDZ": "توقف"
|
||||
},
|
||||
"timestamp": "2025-06-07T02:25:05.074Z"
|
||||
},
|
||||
"向ca发起验证请求": {
|
||||
"text": "向ca发起验证请求",
|
||||
"key": "t_6_1749263103891",
|
||||
"translations": {
|
||||
"zhCN": "向CA发起验证请求",
|
||||
"zhTW": "向CA發起驗證請求",
|
||||
"enUS": "Initiate verification request to CA",
|
||||
"jaJP": "CAに検証リクエストを送信する",
|
||||
"koKR": "CA에 검증 요청 시작",
|
||||
"ruRU": "Отправить запрос на проверку в CA",
|
||||
"ptBR": "Enviar solicitação de verificação para CA",
|
||||
"frFR": "Envoyer une demande de vérification à CA",
|
||||
"esAR": "Enviar solicitud de verificación a CA",
|
||||
"arDZ": "إرسال طلب التحقق إلى CA"
|
||||
},
|
||||
"timestamp": "2025-06-07T02:25:05.074Z"
|
||||
}
|
||||
}
|
||||
|
|
@ -8,6 +8,8 @@ import type {
|
|||
GetReportListResponse,
|
||||
GetSettingParams,
|
||||
GetSettingResponse,
|
||||
GetVersionParams,
|
||||
GetVersionResponse,
|
||||
SaveSettingParams,
|
||||
TestReportParams,
|
||||
UpdateReportParams,
|
||||
|
|
@ -69,5 +71,15 @@ export const testReport = (params?: TestReportParams): useAxiosReturn<AxiosRespo
|
|||
* @param {GetReportListParams} [params] 请求参数
|
||||
* @returns {useAxiosReturn<GetReportListResponse, GetReportListParams>} 获取告警类型列表的组合式 API 调用封装。包含响应数据、加载状态及执行函数。
|
||||
*/
|
||||
export const getReportList = (params?: GetReportListParams): useAxiosReturn<GetReportListResponse, GetReportListParams> =>
|
||||
export const getReportList = (
|
||||
params?: GetReportListParams,
|
||||
): useAxiosReturn<GetReportListResponse, GetReportListParams> =>
|
||||
useApi<GetReportListResponse, GetReportListParams>('/v1/report/get_list', params)
|
||||
|
||||
/**
|
||||
* @description 获取版本信息
|
||||
* @param {GetVersionParams} [params] 请求参数
|
||||
* @returns {useAxiosReturn<GetVersionResponse, GetVersionParams>} 获取版本信息的组合式 API 调用封装。包含响应数据、加载状态及执行函数。
|
||||
*/
|
||||
export const getVersion = (params?: GetVersionParams): useAxiosReturn<GetVersionResponse, GetVersionParams> =>
|
||||
useApi<GetVersionResponse, GetVersionParams>('/v1/setting/get_version', params)
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import type {
|
|||
DeleteWorkflowParams,
|
||||
EnableWorkflowParams,
|
||||
ExecuteWorkflowParams,
|
||||
StopWorkflowParams,
|
||||
UpdateWorkflowExecTypeParams,
|
||||
UpdateWorkflowParams,
|
||||
WorkflowHistoryDetailParams,
|
||||
|
|
@ -23,7 +24,9 @@ import { useApi } from '@api/index'
|
|||
* @param {WorkflowListParams} [params] 请求参数
|
||||
* @returns {useAxiosReturn<WorkflowListResponse, WorkflowListParams>} 获取工作流列表的组合式 API 调用封装。包含响应数据、加载状态及执行函数。
|
||||
*/
|
||||
export const getWorkflowList = (params?: WorkflowListParams): useAxiosReturn<WorkflowListResponse, WorkflowListParams> =>
|
||||
export const getWorkflowList = (
|
||||
params?: WorkflowListParams,
|
||||
): useAxiosReturn<WorkflowListResponse, WorkflowListParams> =>
|
||||
useApi<WorkflowListResponse, WorkflowListParams>('/v1/workflow/get_list', params)
|
||||
|
||||
/**
|
||||
|
|
@ -39,7 +42,9 @@ export const addWorkflow = (params?: AddWorkflowParams): useAxiosReturn<AxiosRes
|
|||
* @param {UpdateWorkflowParams} [params] 请求参数
|
||||
* @returns {useAxiosReturn<AxiosResponseData, UpdateWorkflowParams>} 修改工作流的组合式 API 调用封装。包含响应数据、加载状态及执行函数。
|
||||
*/
|
||||
export const updateWorkflow = (params?: UpdateWorkflowParams): useAxiosReturn<AxiosResponseData, UpdateWorkflowParams> =>
|
||||
export const updateWorkflow = (
|
||||
params?: UpdateWorkflowParams,
|
||||
): useAxiosReturn<AxiosResponseData, UpdateWorkflowParams> =>
|
||||
useApi<AxiosResponseData, UpdateWorkflowParams>('/v1/workflow/upd_workflow', params)
|
||||
|
||||
/**
|
||||
|
|
@ -47,7 +52,9 @@ export const updateWorkflow = (params?: UpdateWorkflowParams): useAxiosReturn<Ax
|
|||
* @param {DeleteWorkflowParams} [params] 请求参数
|
||||
* @returns {useAxiosReturn<AxiosResponseData, DeleteWorkflowParams>} 删除工作流的组合式 API 调用封装。包含响应数据、加载状态及执行函数。
|
||||
*/
|
||||
export const deleteWorkflow = (params?: DeleteWorkflowParams): useAxiosReturn<AxiosResponseData, DeleteWorkflowParams> =>
|
||||
export const deleteWorkflow = (
|
||||
params?: DeleteWorkflowParams,
|
||||
): useAxiosReturn<AxiosResponseData, DeleteWorkflowParams> =>
|
||||
useApi<AxiosResponseData, DeleteWorkflowParams>('/v1/workflow/del_workflow', params)
|
||||
|
||||
/**
|
||||
|
|
@ -75,7 +82,9 @@ export const getWorkflowHistoryDetail = (
|
|||
* @param {ExecuteWorkflowParams} [params] 请求参数
|
||||
* @returns {useAxiosReturn<AxiosResponseData, ExecuteWorkflowParams>} 手动执行工作流的组合式 API 调用封装。包含响应数据、加载状态及执行函数。
|
||||
*/
|
||||
export const executeWorkflow = (params?: ExecuteWorkflowParams): useAxiosReturn<AxiosResponseData, ExecuteWorkflowParams> =>
|
||||
export const executeWorkflow = (
|
||||
params?: ExecuteWorkflowParams,
|
||||
): useAxiosReturn<AxiosResponseData, ExecuteWorkflowParams> =>
|
||||
useApi<AxiosResponseData, ExecuteWorkflowParams>('/v1/workflow/execute_workflow', params)
|
||||
|
||||
/**
|
||||
|
|
@ -93,5 +102,15 @@ export const updateWorkflowExecType = (
|
|||
* @param {EnableWorkflowParams} [params] 请求参数
|
||||
* @returns {useAxiosReturn<AxiosResponseData, EnableWorkflowParams>} 启用或禁用工作流的组合式 API 调用封装。包含响应数据、加载状态及执行函数。
|
||||
*/
|
||||
export const enableWorkflow = (params?: EnableWorkflowParams): useAxiosReturn<AxiosResponseData, EnableWorkflowParams> =>
|
||||
export const enableWorkflow = (
|
||||
params?: EnableWorkflowParams,
|
||||
): useAxiosReturn<AxiosResponseData, EnableWorkflowParams> =>
|
||||
useApi<AxiosResponseData, EnableWorkflowParams>('/v1/workflow/active', params)
|
||||
|
||||
/**
|
||||
* @description 停止工作流执行
|
||||
* @param {StopWorkflowParams} [params] 请求参数
|
||||
* @returns {useAxiosReturn<AxiosResponseData, StopWorkflowParams>} 停止工作流执行的组合式 API 调用封装。包含响应数据、加载状态及执行函数。
|
||||
*/
|
||||
export const stopWorkflow = (params?: StopWorkflowParams): useAxiosReturn<AxiosResponseData, StopWorkflowParams> =>
|
||||
useApi<AxiosResponseData, StopWorkflowParams>('/v1/workflow/stop', params)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,79 @@
|
|||
<svg width="64.000000pt" height="64.000000pt" viewBox="0 0 64.000000 64.000000" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(0.000000,64.000000) scale(0.100000,-0.100000)" fill="#fefefe" stroke="none">
|
||||
<path d="M0 320 l0 -320 320 0 320 0 0 320 0 320 -320 0 -320 0 0 -320z m205
|
||||
184 c-11 -9 -27 -21 -35 -27 -9 -7 -26 -25 -38 -41 l-22 -29 0 -55 0 -55 34
|
||||
-31 c39 -37 94 -56 162 -56 l49 0 42 19 c64 30 82 82 42 122 l-22 22 -74 -7
|
||||
-75 -6 -29 29 -29 29 9 24 c4 13 26 33 47 45 l39 23 47 0 47 0 56 -21 56 -21
|
||||
34 -33 c18 -19 38 -49 45 -69 l11 -35 -11 -43 -12 -43 -48 -46 -47 -47 -54
|
||||
-17 c-108 -36 -230 -16 -308 51 -45 39 -81 100 -81 136 1 35 34 100 66 129 25
|
||||
23 100 68 114 68 3 0 -4 -7 -15 -15z" />
|
||||
</g>
|
||||
<g transform="translate(0.000000,64.000000) scale(0.100000,-0.100000)" fill="#2470f0" stroke="none">
|
||||
<path d="M267 498 c-42 -21 -63 -55 -54 -90 10 -38 95 -75 111 -49 5 7 50 8
|
||||
98 2 4 -1 15 -12 23 -25 l16 -25 -11 -23 c-17 -32 -51 -58 -77 -58 -13 0 -23
|
||||
-4 -23 -10 l0 -10 -44 0 c-25 0 -48 5 -51 10 -3 6 -15 10 -26 10 -29 0 -87 41
|
||||
-98 70 -12 29 -14 44 -12 82 l1 27 30 34 c17 19 30 40 30 46 0 40 -99 -37
|
||||
-130 -101 l-18 -38 5 -42 6 -43 26 -35 c27 -36 71 -79 82 -80 4 0 24 -7 45
|
||||
-16 l39 -17 88 -1 c48 -1 87 2 87 7 0 4 8 7 18 7 27 0 117 56 135 84 9 14 23
|
||||
44 32 68 l14 43 -11 35 c-7 19 -23 50 -36 69 l-25 33 -46 22 c-25 11 -50 21
|
||||
-56 22 -5 1 -12 3 -15 4 -3 1 -30 3 -60 4 l-55 2 -38 -18z" />
|
||||
</g>
|
||||
<g transform="translate(0.000000,64.000000) scale(0.100000,-0.100000)" fill="#2573f7" stroke="none">
|
||||
<path d="M159 505 c-25 -13 -60 -40 -77 -59 -30 -34 -52 -90 -52 -131 1 -38
|
||||
37 -101 81 -138 l43 -37 50 -15 c64 -19 169 -19 233 0 l50 15 45 40 c48 41 73
|
||||
86 65 117 l-4 18 -7 -20 c-4 -11 -15 -35 -24 -54 l-17 -35 -45 -28 c-25 -16
|
||||
-57 -32 -72 -35 -16 -3 -28 -8 -28 -12 0 -3 -35 -5 -78 -4 l-77 1 -45 18 c-25
|
||||
10 -46 17 -47 16 -6 -5 -103 105 -98 110 2 2 0 19 -4 38 l-7 35 14 30 c17 35
|
||||
69 92 97 107 l20 11 -26 -29 c-35 -38 -52 -72 -43 -85 l7 -12 13 29 c17 38 31
|
||||
54 77 88 20 16 37 32 37 37 0 16 -33 9 -81 -16z" />
|
||||
<path d="M277 506 c-49 -18 -67 -34 -67 -60 l0 -21 23 27 c12 15 36 33 52 39
|
||||
33 12 101 15 127 4 9 -4 22 -4 28 0 5 3 10 2 10 -2 0 -8 41 -27 63 -31 14 -1
|
||||
66 -76 67 -94 0 -9 5 -20 10 -23 l10 -6 0 23 c0 13 -11 40 -25 60 l-25 36 -53
|
||||
26 -53 26 -64 5 -65 5 -38 -14z" />
|
||||
<path d="M210 409 c0 -23 32 -48 65 -51 53 -3 95 2 95 12 0 13 -47 13 -54 1
|
||||
-4 -5 -12 -8 -19 -7 -20 3 -61 28 -74 45 l-12 16 -1 -16z" />
|
||||
<path d="M380 371 c0 -5 11 -12 25 -15 13 -3 30 -16 36 -27 l11 -22 -11 -23
|
||||
c-5 -13 -28 -32 -50 -44 l-40 -20 -51 0 -50 0 -45 21 c-48 22 -85 61 -85 87
|
||||
l0 16 -13 -13 -12 -13 13 -5 c6 -3 10 -8 7 -13 -5 -9 51 -67 60 -62 3 1 13 -4
|
||||
22 -13 8 -9 22 -14 29 -11 7 3 16 1 19 -4 4 -6 31 -10 61 -10 l54 0 0 11 c0 5
|
||||
5 7 10 4 16 -10 75 31 88 60 17 38 15 53 -13 80 -23 24 -65 34 -65 16z" />
|
||||
</g>
|
||||
<g transform="translate(0.000000,64.000000) scale(0.100000,-0.100000)" fill="#2a74f0" stroke="none">
|
||||
<path d="M164 504 l-19 -15 24 7 24 6 -7 -11 c-4 -6 -3 -11 3 -11 5 0 13 5 16
|
||||
10 3 6 1 10 -5 10 -6 0 -8 5 -5 10 9 15 -9 12 -31 -6z" />
|
||||
<path d="M290 510 c0 -5 4 -10 9 -10 6 0 13 5 16 10 l6 10 -15 0 c-9 0 -16 -4
|
||||
-16 -10z" />
|
||||
<path d="M395 510 c3 -5 10 -10 16 -10 5 0 9 5 9 10 0 6 -7 10 -16 10 l-15 0
|
||||
6 -10z" />
|
||||
<path d="M474 485 c11 -8 25 -15 30 -15 6 0 2 7 -8 15 -11 8 -25 15 -30 15 -6
|
||||
0 -2 -7 8 -15z" />
|
||||
<path d="M70 428 c-16 -22 -30 -46 -29 -52 0 -6 6 -2 12 8 7 11 25 34 41 53
|
||||
15 18 23 33 17 33 -6 0 -24 -19 -41 -42z" />
|
||||
<path d="M205 437 c-4 -10 -5 -21 -1 -24 10 -10 18 4 13 24 l-4 18 -8 -18z" />
|
||||
<path d="M120 420 c-6 -12 -9 -24 -7 -27 3 -2 11 5 17 17 6 12 9 24 7 27 -3 2
|
||||
-11 -5 -17 -17z" />
|
||||
<path d="M260 360 c0 -5 7 -10 16 -10 l15 0 -6 10 c-3 6 -10 10 -16 10 -5 0
|
||||
-9 -4 -9 -10z" />
|
||||
<path d="M100 351 c0 -6 5 -13 10 -16 l10 -6 0 15 c0 9 -4 16 -10 16 -5 0 -10
|
||||
-4 -10 -9z" />
|
||||
<path d="M592 330 c1 -16 5 -30 10 -30 4 0 8 14 8 30 0 17 -4 30 -9 30 -5 0
|
||||
-9 -13 -9 -30z" />
|
||||
<path d="M30 296 c0 -9 5 -16 10 -16 6 0 10 4 10 9 0 6 -4 13 -10 16 l-10 6 0
|
||||
-15z" />
|
||||
<path d="M130 282 c0 -12 19 -26 26 -19 2 2 -2 10 -11 17 l-15 12 0 -10z" />
|
||||
<path d="M425 260 c-10 -11 -13 -20 -8 -20 13 0 38 29 31 35 -3 3 -13 -4 -23
|
||||
-15z" />
|
||||
<path d="M566 234 c-10 -14 -16 -28 -13 -30 2 -3 12 7 21 22 10 14 16 28 13
|
||||
30 -2 3 -12 -7 -21 -22z" />
|
||||
<path d="M70 221 c0 -5 5 -13 10 -16 6 -3 10 -2 10 4 0 5 -4 13 -10 16 -5 3
|
||||
-10 2 -10 -4z" />
|
||||
<path d="M105 180 c3 -5 11 -10 16 -10 6 0 7 5 4 10 -3 6 -11 10 -16 10 -6 0
|
||||
-7 -4 -4 -10z" />
|
||||
<path d="M515 180 c-3 -5 -2 -10 4 -10 5 0 13 5 16 10 3 6 2 10 -4 10 -5 0
|
||||
-13 -4 -16 -10z" />
|
||||
<path d="M195 130 c3 -5 11 -10 16 -10 6 0 7 5 4 10 -3 6 -11 10 -16 10 -6 0
|
||||
-7 -4 -4 -10z" />
|
||||
<path d="M425 130 c-3 -5 -2 -10 4 -10 5 0 13 5 16 10 3 6 2 10 -4 10 -5 0
|
||||
-13 -4 -16 -10z" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
|
|
@ -0,0 +1 @@
|
|||
<svg class="icon" width="30" height="30" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg"><path d="M803.6 859.2c0 26.6-20.4 49.2-48.4 51.8-21.2 2-48.6-11-54.8-39.8-5.6-26-13.2-50.8-29-72.4-6-8.2-12.8-16-20-23.4-7.6-8-9.4-14-4.4-19.8 5-5.8 12.8-5 20.8 3.2 20.8 21 45.4 35.2 73.6 43.6 7.2 2.2 14.8 3.4 22.2 5.2 24.6 6.2 40 26.2 40 51.6z" fill="#FC6401"/><path d="M698.2 549.8c.2-28.4 20.8-50.2 49.6-52.6 25.6-2.2 50.6 17.6 55 45.2 6 36.2 22.8 66.2 48.4 92 3.2 3.2 5.6 9.2 5.2 13.8-.4 7.2-9.8 10.6-16.2 6.4-3.4-2.2-6.2-5-9-7.8-25.4-24.6-55.6-39.4-90.4-45.4-24.8-4.6-42.6-26.2-42.6-51.6z" fill="#2DBD00"/><path d="M595.4 765.2c-26.6 0-49.2-20.4-51.8-48.4-2-21.2 11-48.6 39.8-54.8 26-5.6 50.8-13.2 72.4-29 8.2-6 16-12.8 23.4-20 8-7.6 14-9.4 19.8-4.4 5.8 5 5 12.8-3.2 20.8-21 20.8-35.2 45.4-43.6 73.6-2.2 7.2-3.4 14.8-5.2 22.2-6.2 24.6-26.2 40-51.6 40z" fill="#FFCD00"/><path d="M898.8 650c28.4.2 50.2 20.8 52.6 49.6 2.2 25.6-17.6 50.6-45.2 55-36.2 6-66.2 22.8-92 48.4-3.2 3.2-9.2 5.6-13.8 5.2-7.2-.4-10.6-9.8-6.4-16.2 2.2-3.4 5-6.2 7.8-9 24.6-25.4 39.4-55.6 45.4-90.4 4.6-25 26.2-42.8 51.6-42.6z" fill="#0084F0"/><path d="M734 208.6c-110.4-108.4-244.8-139.8-392.4-100-260 70.2-340.4 340.6-209 517 6.4 8.6 7.6 24.4 5.2 35.4-7 32.4-17.4 64.2-26 96.2-4.6 17.2-7.4 34.6 8 48.4 16.6 14.8 34.2 11.8 52.2 2.6 29.6-15 59.8-29.2 89-45 19-10.4 36.2-10.8 57.6-4.8 42.8 11.8 87.2 18.4 109.6 23 43.8-.8 83.6-5.2 120.2-13.6-13.8-12-23-29.2-24.8-49-.4-5.4-.2-10.8.6-16.2C466.4 715 405 710 341 688.6c-42.2-14.2-76.8-17.8-113.4 7-3.4 2.2-7.8 2.8-24.6 8.2 33.8-58.4 8.8-95-19.6-136.6-63.4-92-50.4-210.8 24.6-296.4C330.8 131 571 131 693.8 271c52.8 60.2 73.6 135.2 61.8 206.2 28 1.6 52.8 20.6 63 47.2 32-108.8 4-228.8-84.6-315.8z" fill="#0083EF"/></svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
|
|
@ -114,9 +114,11 @@ export default defineComponent<CAProviderSelectProps>({
|
|||
class="flex-1 w-full"
|
||||
options={caProviderRef.value}
|
||||
renderLabel={renderLabel}
|
||||
renderTag={({ option }: { option: any }) => renderSingleSelectTag({ option: option as CAProviderOption })}
|
||||
renderTag={({ option }: { option: unknown }) =>
|
||||
renderSingleSelectTag({ option: option as CAProviderOption })
|
||||
}
|
||||
filterable
|
||||
filter={(pattern: string, option: any) => handleFilter(pattern, option as CAProviderOption)}
|
||||
filter={(pattern: string, option: unknown) => handleFilter(pattern, option as CAProviderOption)}
|
||||
placeholder={$t('t_0_1747990228780')}
|
||||
value={param.value.value} // 使用 controller 中的 param.value.value
|
||||
onUpdateValue={handleUpdateValue}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ export interface CAProviderSelectProps {
|
|||
ca: string
|
||||
/**
|
||||
* @property email
|
||||
* @description 邮箱地址,当 value 不为空时会被赋值
|
||||
* @description 邮箱地址,编辑时从工作流content中传入,新建时为空
|
||||
*/
|
||||
email: string
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -44,26 +44,36 @@ export function useCAProviderSelectController(props: CAProviderSelectProps, emit
|
|||
const selectedProvider = caProviderRef.value.find((item) => item.value === param.value.value)
|
||||
|
||||
if (selectedProvider) {
|
||||
// 对于 Let's Encrypt 和 Buypass,使用传入的工作流邮件
|
||||
let email = selectedProvider.email
|
||||
if (selectedProvider.ca === 'letsencrypt' || selectedProvider.ca === 'buypass') {
|
||||
email = props.email || selectedProvider.email
|
||||
}
|
||||
|
||||
param.value = {
|
||||
label: selectedProvider.label,
|
||||
value: selectedProvider.value,
|
||||
ca: selectedProvider.ca,
|
||||
email: selectedProvider.email,
|
||||
email: email,
|
||||
}
|
||||
} else if (caProviderRef.value.length > 0 && param.value.value === '') {
|
||||
// 如果 param.value 为空(例如初始状态或清空后),且 caProviderRef 列表不为空,则默认选中第一个
|
||||
const firstProvider = caProviderRef.value[0]
|
||||
let email = firstProvider?.email || ''
|
||||
if (firstProvider && (firstProvider.ca === 'letsencrypt' || firstProvider.ca === 'buypass')) {
|
||||
email = props.email || firstProvider.email
|
||||
}
|
||||
|
||||
param.value = {
|
||||
label: caProviderRef.value[0]?.label || '',
|
||||
value: caProviderRef.value[0]?.value || '',
|
||||
ca: caProviderRef.value[0]?.ca || '',
|
||||
email: caProviderRef.value[0]?.email || '',
|
||||
label: firstProvider?.label || '',
|
||||
value: firstProvider?.value || '',
|
||||
ca: firstProvider?.ca || '',
|
||||
email: email,
|
||||
}
|
||||
}
|
||||
|
||||
// 当 value 不为空时,将其赋值给 email 字段
|
||||
if (param.value.value !== '') {
|
||||
// 始终触发邮件更新事件,确保邮件字段能正确渲染
|
||||
emit('update:email', param.value.email)
|
||||
}
|
||||
|
||||
emit('update:value', { value: param.value.value, ca: param.value.ca, email: param.value.email })
|
||||
}
|
||||
|
|
@ -86,15 +96,23 @@ export function useCAProviderSelectController(props: CAProviderSelectProps, emit
|
|||
isLoading.value = true
|
||||
errorMessage.value = ''
|
||||
try {
|
||||
// 添加Let's Encrypt作为首选项
|
||||
// 添加Let's Encrypt作为首选项,使用传入的工作流邮件
|
||||
const letsEncryptOption: CAProviderOption = {
|
||||
label: "Let's Encrypt",
|
||||
value: '',
|
||||
ca: 'letsencrypt',
|
||||
email: '',
|
||||
email: props.email || '',
|
||||
}
|
||||
|
||||
// 获取其他CA授权列表
|
||||
// 添加Buypass作为第二选项,使用传入的工作流邮件
|
||||
const buypassOption: CAProviderOption = {
|
||||
label: 'Buypass',
|
||||
value: 'buypass',
|
||||
ca: 'buypass',
|
||||
email: props.email || '',
|
||||
}
|
||||
|
||||
// 获取其他CA授权列表,使用接口返回的邮件
|
||||
const { data } = await getAllEabList({ ca: '' }).fetch()
|
||||
const eabOptions: CAProviderOption[] = (data || []).map((item) => ({
|
||||
label: item.name,
|
||||
|
|
@ -103,8 +121,8 @@ export function useCAProviderSelectController(props: CAProviderSelectProps, emit
|
|||
email: item.mail,
|
||||
}))
|
||||
|
||||
// 合并选项,Let's Encrypt在首位
|
||||
caProviderRef.value = [letsEncryptOption, ...eabOptions]
|
||||
// 合并选项,Let's Encrypt在首位,Buypass在第二位
|
||||
caProviderRef.value = [letsEncryptOption, buypassOption, ...eabOptions]
|
||||
|
||||
// 数据加载后,如果 props.value 有值,尝试根据 props.value 初始化 param
|
||||
if (props.value) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,115 @@
|
|||
// External Libraries
|
||||
import { defineComponent } from 'vue'
|
||||
import { NModal, NButton, NSpace, NScrollbar, NIcon } from 'naive-ui'
|
||||
import { LogoGithub } from '@vicons/ionicons5'
|
||||
|
||||
// Type Imports
|
||||
import type { PropType } from 'vue'
|
||||
import type { UpdateLogModalProps } from './types'
|
||||
import type { VersionData } from '@/types/setting'
|
||||
|
||||
// Relative Internal Imports - Controller
|
||||
import { useUpdateLogModalController } from './useController'
|
||||
|
||||
/**
|
||||
* @description 更新日志弹窗组件。显示版本更新信息和更新日志。
|
||||
* @example
|
||||
* <UpdateLogModal
|
||||
* v-model:show="showModal"
|
||||
* :versionData="versionData"
|
||||
* />
|
||||
*/
|
||||
export default defineComponent({
|
||||
name: 'UpdateLogModal',
|
||||
props: {
|
||||
/**
|
||||
* 是否显示弹窗
|
||||
* @default false
|
||||
*/
|
||||
show: {
|
||||
type: Boolean as PropType<UpdateLogModalProps['show']>,
|
||||
default: false,
|
||||
},
|
||||
/**
|
||||
* 版本数据
|
||||
* @default null
|
||||
*/
|
||||
versionData: {
|
||||
type: Object as PropType<VersionData | null>,
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
/**
|
||||
* @event update:show - 当弹窗显示状态更新时触发
|
||||
* @param {boolean} show - 弹窗显示状态
|
||||
*/
|
||||
emits: {
|
||||
'update:show': (payload: boolean) => typeof payload === 'boolean',
|
||||
},
|
||||
setup(props: UpdateLogModalProps, { emit }) {
|
||||
const { formattedLog, goToGitHub, handleClose } = useUpdateLogModalController(props, emit)
|
||||
|
||||
return () => (
|
||||
<NModal
|
||||
show={props.show}
|
||||
onUpdateShow={(show: boolean) => emit('update:show', show)}
|
||||
preset="card"
|
||||
title="发现新版本"
|
||||
style={{ width: '600px', maxWidth: '90vw' }}
|
||||
maskClosable={false}
|
||||
closable={true}
|
||||
onClose={handleClose}
|
||||
>
|
||||
{props.versionData && (
|
||||
<div class="update-log-content">
|
||||
{/* 版本信息 */}
|
||||
<div class="mb-[1.6rem]">
|
||||
<div class="flex items-center justify-between mb-[.8rem]">
|
||||
<span class="text-[1.5rem] font-medium">当前版本: {props.versionData.version}</span>
|
||||
<span class="text-[1.5rem] font-medium text-primary">最新版本: {props.versionData.new_version}</span>
|
||||
</div>
|
||||
<div class="text-[1.4rem] text-gray-500">发布日期: {props.versionData.date}</div>
|
||||
</div>
|
||||
|
||||
{/* 更新日志 */}
|
||||
<div class="mb-[2.4rem]">
|
||||
<h3 class="text-[1.6rem] font-medium mb-[1.2rem]">更新日志</h3>
|
||||
<NScrollbar style={{ maxHeight: '300px' }}>
|
||||
<div class="update-log-list">
|
||||
{formattedLog.value.map((line, index) => (
|
||||
<div key={index} class="mb-[.8rem]">
|
||||
{line.startsWith('■') ? (
|
||||
<div class="text-[1.4rem] font-medium text-primary mb-[.4rem]">{line}</div>
|
||||
) : line.startsWith('新增:') || line.startsWith('调整:') ? (
|
||||
<div class="ml-[1.6rem] text-[1.3rem] text-green-600">{line}</div>
|
||||
) : (
|
||||
<div class="ml-[1.6rem] text-[1.3rem] text-gray-700">{line}</div>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</NScrollbar>
|
||||
</div>
|
||||
|
||||
{/* 操作按钮 */}
|
||||
<div class="flex justify-end">
|
||||
<NSpace size="medium">
|
||||
<NButton size="medium" onClick={handleClose}>
|
||||
<span class="text-[1.4rem]">稍后更新</span>
|
||||
</NButton>
|
||||
<NButton size="medium" type="primary" onClick={goToGitHub}>
|
||||
<div class="flex items-center">
|
||||
<NIcon size="18" class="mr-[.8rem]">
|
||||
<LogoGithub />
|
||||
</NIcon>
|
||||
<span class="text-[1.4rem]">前往GitHub下载</span>
|
||||
</div>
|
||||
</NButton>
|
||||
</NSpace>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</NModal>
|
||||
)
|
||||
},
|
||||
})
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
// Type Imports
|
||||
import type { Ref } from 'vue'
|
||||
import type { VersionData } from '@/types/setting'
|
||||
|
||||
/**
|
||||
* @description 更新日志弹窗组件的 Props 定义
|
||||
*/
|
||||
export interface UpdateLogModalProps {
|
||||
/**
|
||||
* 是否显示弹窗
|
||||
* @default false
|
||||
*/
|
||||
show: boolean
|
||||
/**
|
||||
* 版本数据
|
||||
* @default null
|
||||
*/
|
||||
versionData: VersionData | null
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 更新日志弹窗组件的 Emits 定义
|
||||
*/
|
||||
export interface UpdateLogModalEmits {
|
||||
(e: 'update:show', show: boolean): void
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 更新日志弹窗控制器暴露给视图的数据和方法
|
||||
*/
|
||||
export interface UpdateLogModalControllerExposes {
|
||||
/**
|
||||
* 格式化后的更新日志行数组
|
||||
*/
|
||||
formattedLog: Ref<string[]>
|
||||
/**
|
||||
* 跳转到GitHub的方法
|
||||
*/
|
||||
goToGitHub: () => void
|
||||
/**
|
||||
* 关闭弹窗的方法
|
||||
*/
|
||||
handleClose: () => void
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
// External Libraries
|
||||
import { computed } from 'vue'
|
||||
|
||||
// Type Imports
|
||||
import type { UpdateLogModalProps, UpdateLogModalEmits, UpdateLogModalControllerExposes } from './types'
|
||||
|
||||
/**
|
||||
* @description 更新日志弹窗组件的控制器逻辑
|
||||
* @param props - 组件的 props
|
||||
* @param emit - 组件的 emit 函数
|
||||
* @returns {UpdateLogModalControllerExposes} 暴露给视图的响应式数据和方法
|
||||
*/
|
||||
export function useUpdateLogModalController(
|
||||
props: UpdateLogModalProps,
|
||||
emit: (event: 'update:show', payload: boolean) => void,
|
||||
): UpdateLogModalControllerExposes {
|
||||
|
||||
/**
|
||||
* @description 处理更新日志文本,将 \r\n 和 \n 转换为换行
|
||||
*/
|
||||
const formattedLog = computed(() => {
|
||||
if (!props.versionData?.log) return []
|
||||
return props.versionData.log
|
||||
.replace(/\\r\\n/g, '\n')
|
||||
.replace(/\\n/g, '\n')
|
||||
.split('\n')
|
||||
.filter(line => line.trim() !== '')
|
||||
})
|
||||
|
||||
/**
|
||||
* @description 跳转到GitHub
|
||||
*/
|
||||
const goToGitHub = (): void => {
|
||||
window.open('https://github.com/allinssl/allinssl', '_blank')
|
||||
emit('update:show', false)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 关闭弹窗
|
||||
*/
|
||||
const handleClose = (): void => {
|
||||
emit('update:show', false)
|
||||
}
|
||||
|
||||
return {
|
||||
formattedLog,
|
||||
goToGitHub,
|
||||
handleClose,
|
||||
}
|
||||
}
|
||||
|
|
@ -114,6 +114,9 @@ nodeOptions[APPLY] = () =>
|
|||
provider_id: '',
|
||||
algorithm: 'RSA2048',
|
||||
skip_check: 0,
|
||||
close_cname: 0,
|
||||
max_wait: undefined,
|
||||
ignore_check: 0,
|
||||
},
|
||||
childNode: null,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -217,6 +217,9 @@ export interface ApplyNodeConfig {
|
|||
name_server: string // DNS递归服务器
|
||||
skip_check: number // 跳过检查
|
||||
algorithm: string // 数字证书算法
|
||||
close_cname: number // 禁用CNAME支持,0关闭1开启,默认0
|
||||
max_wait?: number // 预检查超时时间,单位秒(可选)
|
||||
ignore_check: number // 忽略预检查结果,1继续,0停止,默认0
|
||||
// 高级功能
|
||||
// algorithm: 'RSA2048' | 'RSA3072' | 'RSA4096' | 'RSA8192' | 'EC256' | 'EC384' // 数字证书算法
|
||||
// dnsServer?: string // 指定DNS解析服务器
|
||||
|
|
|
|||
|
|
@ -191,6 +191,36 @@ export const ApiProjectConfig: Record<string, ApiProjectType> = {
|
|||
type: ['dns'],
|
||||
sort: 20,
|
||||
},
|
||||
namesilo: {
|
||||
name: 'Namesilo',
|
||||
icon: 'namesilo',
|
||||
type: ['dns'],
|
||||
sort: 21,
|
||||
},
|
||||
namedotcom: {
|
||||
name: 'Name.com',
|
||||
icon: 'namedotcom',
|
||||
type: ['dns'],
|
||||
sort: 22,
|
||||
},
|
||||
bunny: {
|
||||
name: 'Bunny',
|
||||
icon: 'bunny',
|
||||
type: ['dns'],
|
||||
sort: 23,
|
||||
},
|
||||
gcore: {
|
||||
name: 'Gcore',
|
||||
icon: 'gcore',
|
||||
type: ['dns'],
|
||||
sort: 24,
|
||||
},
|
||||
jdcloud: {
|
||||
name: '京东云',
|
||||
icon: 'jdcloud',
|
||||
type: ['dns'],
|
||||
sort: 25,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -633,5 +633,16 @@
|
|||
"t_3_1748591484673": "Webhook",
|
||||
"t_4_1748591492587": "جارٍ اختبار إشعار {type}",
|
||||
"t_5_1748591491370": "اختبار{type}",
|
||||
"t_0_1748591669194": "إرسال رسالة اختبار إلى، التكوين الحالي {type} إشعار، هل تتابع؟"
|
||||
"t_0_1748591669194": "إرسال رسالة اختبار إلى، التكوين الحالي {type} إشعار، هل تتابع؟",
|
||||
"t_0_1749119980577": "خطأ في تنسيق عنوان IP الخادم أو اسم النطاق",
|
||||
"t_0_1749204565782": "إيقاف التنفيذ",
|
||||
"t_1_1749204570473": "هل أنت متأكد أنك تريد إيقاف تنفيذ سير العمل الحالي؟",
|
||||
"t_2_1749204567193": "تعطيل دعم CNAME",
|
||||
"t_0_1749263105073": "وقت انتهاء الفحص المسبق (ثانية)",
|
||||
"t_1_1749263104936": "الرجاء إدخال مهلة التحقق المسبق",
|
||||
"t_2_1749263103765": "تجاهل نتائج الفحص المسبق",
|
||||
"t_3_1749263104237": "عندما تفشل الفحص المسبق",
|
||||
"t_4_1749263101853": "استمر",
|
||||
"t_5_1749263101934": "توقف",
|
||||
"t_6_1749263103891": "إرسال طلب التحقق إلى CA"
|
||||
}
|
||||
|
|
@ -633,5 +633,16 @@
|
|||
"t_3_1748591484673": "Webhook",
|
||||
"t_4_1748591492587": "Testing {type} notification",
|
||||
"t_5_1748591491370": "Test{type}",
|
||||
"t_0_1748591669194": "Send test message to, current configuration {type} notification, continue?"
|
||||
"t_0_1748591669194": "Send test message to, current configuration {type} notification, continue?",
|
||||
"t_0_1749119980577": "Server IP address or domain name format error",
|
||||
"t_0_1749204565782": "Stop execution",
|
||||
"t_1_1749204570473": "Are you sure you want to stop the execution of the current workflow?",
|
||||
"t_2_1749204567193": "Disable CNAME support",
|
||||
"t_0_1749263105073": "Pre-check timeout (seconds)",
|
||||
"t_1_1749263104936": "Please enter the pre-check timeout",
|
||||
"t_2_1749263103765": "Ignore pre-check results",
|
||||
"t_3_1749263104237": "When the pre-check fails",
|
||||
"t_4_1749263101853": "Continue",
|
||||
"t_5_1749263101934": "Stop",
|
||||
"t_6_1749263103891": "Initiate verification request to CA"
|
||||
}
|
||||
|
|
@ -633,5 +633,16 @@
|
|||
"t_3_1748591484673": "Webhook",
|
||||
"t_4_1748591492587": "Probando notificación {type}",
|
||||
"t_5_1748591491370": "Prueba{type}",
|
||||
"t_0_1748591669194": "Enviar mensaje de prueba a, configuración actual {type} notificación, ¿continuar?"
|
||||
"t_0_1748591669194": "Enviar mensaje de prueba a, configuración actual {type} notificación, ¿continuar?",
|
||||
"t_0_1749119980577": "Error de formato de dirección IP o nombre de dominio del servidor",
|
||||
"t_0_1749204565782": "Detener ejecución",
|
||||
"t_1_1749204570473": "¿Estás seguro de que quieres detener la ejecución del flujo de trabajo actual?",
|
||||
"t_2_1749204567193": "Deshabilitar soporte CNAME",
|
||||
"t_0_1749263105073": "Tiempo de espera de la preverificación (segundos)",
|
||||
"t_1_1749263104936": "Introduce el tiempo de espera de la comprobación previa",
|
||||
"t_2_1749263103765": "Ignorar los resultados de la verificación previa",
|
||||
"t_3_1749263104237": "Cuando falla la verificación previa",
|
||||
"t_4_1749263101853": "Continuar",
|
||||
"t_5_1749263101934": "Detener",
|
||||
"t_6_1749263103891": "Enviar solicitud de verificación a CA"
|
||||
}
|
||||
|
|
@ -633,5 +633,16 @@
|
|||
"t_3_1748591484673": "Webhook",
|
||||
"t_4_1748591492587": "Test de la notification {type}",
|
||||
"t_5_1748591491370": "Test{type}",
|
||||
"t_0_1748591669194": "Envoyer un message test à, configuration actuelle {type} notification, continuer ?"
|
||||
"t_0_1748591669194": "Envoyer un message test à, configuration actuelle {type} notification, continuer ?",
|
||||
"t_0_1749119980577": "Erreur de format d'adresse IP ou de nom de domaine du serveur",
|
||||
"t_0_1749204565782": "Arrêter l'exécution",
|
||||
"t_1_1749204570473": "Êtes-vous sûr de vouloir arrêter l'exécution du workflow actuel ?",
|
||||
"t_2_1749204567193": "Désactiver la prise en charge CNAME",
|
||||
"t_0_1749263105073": "Délai d'expiration de la pré-vérification (secondes)",
|
||||
"t_1_1749263104936": "Veuillez entrer le délai d'attente de pré-vérification",
|
||||
"t_2_1749263103765": "Ignorer les résultats de la pré-vérification",
|
||||
"t_3_1749263104237": "Lorsque la pré-vérification échoue",
|
||||
"t_4_1749263101853": "Continuer",
|
||||
"t_5_1749263101934": "Arrêter",
|
||||
"t_6_1749263103891": "Envoyer une demande de vérification à CA"
|
||||
}
|
||||
|
|
@ -633,5 +633,16 @@
|
|||
"t_3_1748591484673": "Webhook",
|
||||
"t_4_1748591492587": "{type}通知をテスト中",
|
||||
"t_5_1748591491370": "テスト{type}",
|
||||
"t_0_1748591669194": "テストメッセージを送信します、現在の設定 {type} 通知、続行しますか?"
|
||||
"t_0_1748591669194": "テストメッセージを送信します、現在の設定 {type} 通知、続行しますか?",
|
||||
"t_0_1749119980577": "サーバーのIPアドレスまたはドメイン名の形式が正しくありません",
|
||||
"t_0_1749204565782": "実行を停止",
|
||||
"t_1_1749204570473": "現在のワークフローの実行を停止しますか?",
|
||||
"t_2_1749204567193": "CNAMEサポートを無効にする",
|
||||
"t_0_1749263105073": "事前チェックのタイムアウト時間(秒)",
|
||||
"t_1_1749263104936": "事前チェックのタイムアウト時間を入力してください",
|
||||
"t_2_1749263103765": "事前チェック結果を無視",
|
||||
"t_3_1749263104237": "事前チェックが失敗した場合",
|
||||
"t_4_1749263101853": "続ける",
|
||||
"t_5_1749263101934": "停止",
|
||||
"t_6_1749263103891": "CAに検証リクエストを送信する"
|
||||
}
|
||||
|
|
@ -633,5 +633,16 @@
|
|||
"t_3_1748591484673": "Webhook",
|
||||
"t_4_1748591492587": "{type} 알림 테스트 중",
|
||||
"t_5_1748591491370": "테스트{type}",
|
||||
"t_0_1748591669194": "테스트 메시지를 보냅니다, 현재 구성 {type} 알림, 계속하시겠습니까?"
|
||||
"t_0_1748591669194": "테스트 메시지를 보냅니다, 현재 구성 {type} 알림, 계속하시겠습니까?",
|
||||
"t_0_1749119980577": "서버 IP 주소 또는 도메인 이름 형식 오류",
|
||||
"t_0_1749204565782": "실행 중지",
|
||||
"t_1_1749204570473": "현재 워크플로우 실행을 중지하시겠습니까?",
|
||||
"t_2_1749204567193": "CNAME 지원 비활성화",
|
||||
"t_0_1749263105073": "사전 점검 시간 초과 (초)",
|
||||
"t_1_1749263104936": "사전 검사 시간 초과 시간을 입력하십시오",
|
||||
"t_2_1749263103765": "사전 점검 결과 무시",
|
||||
"t_3_1749263104237": "사전 점검이 실패했을 때",
|
||||
"t_4_1749263101853": "계속하다",
|
||||
"t_5_1749263101934": "중지",
|
||||
"t_6_1749263103891": "CA에 검증 요청 시작"
|
||||
}
|
||||
|
|
@ -633,5 +633,16 @@
|
|||
"t_3_1748591484673": "Webhook",
|
||||
"t_4_1748591492587": "Testando notificação {type}",
|
||||
"t_5_1748591491370": "Teste{type}",
|
||||
"t_0_1748591669194": "Enviar mensagem de teste para, configuração atual {type} notificação, continuar?"
|
||||
"t_0_1748591669194": "Enviar mensagem de teste para, configuração atual {type} notificação, continuar?",
|
||||
"t_0_1749119980577": "Erro de formato de endereço IP ou nome de domínio do servidor",
|
||||
"t_0_1749204565782": "Parar execução",
|
||||
"t_1_1749204570473": "Tem certeza de que deseja interromper a execução do fluxo de trabalho atual?",
|
||||
"t_2_1749204567193": "Desativar suporte CNAME",
|
||||
"t_0_1749263105073": "Tempo limite de pré-verificação (segundos)",
|
||||
"t_1_1749263104936": "Insira o tempo limite de pré-verificação",
|
||||
"t_2_1749263103765": "Ignorar resultados de pré-verificação",
|
||||
"t_3_1749263104237": "Quando a pré-verificação falha",
|
||||
"t_4_1749263101853": "Continuar",
|
||||
"t_5_1749263101934": "Parar",
|
||||
"t_6_1749263103891": "Enviar solicitação de verificação para CA"
|
||||
}
|
||||
|
|
@ -633,5 +633,16 @@
|
|||
"t_3_1748591484673": "Webhook",
|
||||
"t_4_1748591492587": "Тестирование уведомления {type}",
|
||||
"t_5_1748591491370": "Тест{type}",
|
||||
"t_0_1748591669194": "Отправить тестовое сообщение, текущая конфигурация {type} уведомления, продолжить?"
|
||||
"t_0_1748591669194": "Отправить тестовое сообщение, текущая конфигурация {type} уведомления, продолжить?",
|
||||
"t_0_1749119980577": "Ошибка формата IP-адреса сервера или доменного имени",
|
||||
"t_0_1749204565782": "Остановить выполнение",
|
||||
"t_1_1749204570473": "Вы уверены, что хотите остановить выполнение текущего рабочего процесса?",
|
||||
"t_2_1749204567193": "Отключить поддержку CNAME",
|
||||
"t_0_1749263105073": "Таймаут предварительной проверки (секунды)",
|
||||
"t_1_1749263104936": "Введите время ожидания предварительной проверки",
|
||||
"t_2_1749263103765": "Игнорировать результаты предварительной проверки",
|
||||
"t_3_1749263104237": "Когда предварительная проверка не удалась",
|
||||
"t_4_1749263101853": "Продолжить",
|
||||
"t_5_1749263101934": "Остановить",
|
||||
"t_6_1749263103891": "Отправить запрос на проверку в CA"
|
||||
}
|
||||
|
|
@ -633,5 +633,16 @@
|
|||
"t_3_1748591484673": "Webhook",
|
||||
"t_4_1748591492587": "正在测试{type}通知",
|
||||
"t_5_1748591491370": "测试{type}",
|
||||
"t_0_1748591669194": "发送测试信息到,当前配置{type}通知,是否继续?"
|
||||
"t_0_1748591669194": "发送测试信息到,当前配置{type}通知,是否继续?",
|
||||
"t_0_1749119980577": "服务器IP地址或域名格式错误",
|
||||
"t_0_1749204565782": "停止执行",
|
||||
"t_1_1749204570473": "确定要停止当前工作流的执行吗?",
|
||||
"t_2_1749204567193": "禁用CNAME支持",
|
||||
"t_0_1749263105073": "预检查超时时间(秒)",
|
||||
"t_1_1749263104936": "请输入预检查超时时间",
|
||||
"t_2_1749263103765": "忽略预检查结果",
|
||||
"t_3_1749263104237": "当预检查失败时",
|
||||
"t_4_1749263101853": "继续",
|
||||
"t_5_1749263101934": "停止",
|
||||
"t_6_1749263103891": "向CA发起验证请求"
|
||||
}
|
||||
|
|
@ -632,5 +632,16 @@
|
|||
"t_3_1748591484673": "Webhook",
|
||||
"t_4_1748591492587": "正在測試{type}通知",
|
||||
"t_5_1748591491370": "測試{type}",
|
||||
"t_0_1748591669194": "發送測試信息到,當前配置{type}通知,是否繼續?"
|
||||
"t_0_1748591669194": "發送測試信息到,當前配置{type}通知,是否繼續?",
|
||||
"t_0_1749119980577": "伺服器IP位址或網域名稱格式錯誤",
|
||||
"t_0_1749204565782": "停止執行",
|
||||
"t_1_1749204570473": "確定要停止當前工作流的執行嗎?",
|
||||
"t_2_1749204567193": "禁用CNAME支援",
|
||||
"t_0_1749263105073": "預檢查超時時間(秒)",
|
||||
"t_1_1749263104936": "請輸入預檢查超時時間",
|
||||
"t_2_1749263103765": "忽略預檢查結果",
|
||||
"t_3_1749263104237": "當預檢查失敗時",
|
||||
"t_4_1749263101853": "繼續",
|
||||
"t_5_1749263101934": "停止",
|
||||
"t_6_1749263103891": "向CA發起驗證請求"
|
||||
}
|
||||
|
|
@ -53,7 +53,12 @@ export interface AddAccessParams<
|
|||
| NS1AccessConfig
|
||||
| CloudnsAccessConfig
|
||||
| AwsAccessConfig
|
||||
| AzureAccessConfig,
|
||||
| AzureAccessConfig
|
||||
| NamesiloAccessConfig
|
||||
| NamedotcomAccessConfig
|
||||
| BunnyAccessConfig
|
||||
| GcoreAccessConfig
|
||||
| JdcloudAccessConfig,
|
||||
> {
|
||||
name: string
|
||||
type: string
|
||||
|
|
@ -79,7 +84,12 @@ export interface UpdateAccessParams<
|
|||
| NS1AccessConfig
|
||||
| CloudnsAccessConfig
|
||||
| AwsAccessConfig
|
||||
| AzureAccessConfig,
|
||||
| AzureAccessConfig
|
||||
| NamesiloAccessConfig
|
||||
| NamedotcomAccessConfig
|
||||
| BunnyAccessConfig
|
||||
| GcoreAccessConfig
|
||||
| JdcloudAccessConfig,
|
||||
> extends AddAccessParams<T> {
|
||||
id: string
|
||||
}
|
||||
|
|
@ -213,6 +223,43 @@ export interface AzureAccessConfig {
|
|||
environment: string
|
||||
}
|
||||
|
||||
/**
|
||||
* Namesilo授权配置
|
||||
*/
|
||||
export interface NamesiloAccessConfig {
|
||||
api_key: string
|
||||
}
|
||||
|
||||
/**
|
||||
* Name.com授权配置
|
||||
*/
|
||||
export interface NamedotcomAccessConfig {
|
||||
username: string
|
||||
api_token: string
|
||||
}
|
||||
|
||||
/**
|
||||
* Bunny授权配置
|
||||
*/
|
||||
export interface BunnyAccessConfig {
|
||||
api_key: string
|
||||
}
|
||||
|
||||
/**
|
||||
* Gcore授权配置
|
||||
*/
|
||||
export interface GcoreAccessConfig {
|
||||
api_token: string
|
||||
}
|
||||
|
||||
/**
|
||||
* 京东云授权配置
|
||||
*/
|
||||
export interface JdcloudAccessConfig {
|
||||
access_key_id: string
|
||||
secret_access_key: string
|
||||
}
|
||||
|
||||
/** 删除授权请求参数 */
|
||||
export interface DeleteAccessParams {
|
||||
id: string
|
||||
|
|
|
|||
|
|
@ -87,6 +87,14 @@ export interface ReportWebhook {
|
|||
ignore_ssl: boolean
|
||||
}
|
||||
|
||||
/** 企业微信通知配置 */
|
||||
export interface ReportWecom {
|
||||
name?: string
|
||||
enabled: string
|
||||
url: string
|
||||
data: string
|
||||
}
|
||||
|
||||
/** 添加告警请求参数 */
|
||||
export interface AddReportParams<T = string> {
|
||||
name: string
|
||||
|
|
@ -109,6 +117,25 @@ export interface TestReportParams {
|
|||
id: number
|
||||
}
|
||||
|
||||
/** 获取版本信息请求参数 */
|
||||
export interface GetVersionParams {
|
||||
// 无参数
|
||||
}
|
||||
|
||||
/** 版本信息数据 */
|
||||
export interface VersionData {
|
||||
date: string // 版本日期
|
||||
log: string // 更新日志
|
||||
new_version: string // 新版本号
|
||||
update: string // 是否有更新 "1" 表示有更新,"0" 表示无更新
|
||||
version: string // 当前版本号
|
||||
}
|
||||
|
||||
/** 获取版本信息响应 */
|
||||
export interface GetVersionResponse extends AxiosResponseData {
|
||||
data: VersionData
|
||||
}
|
||||
|
||||
/** 消息通知选项 */
|
||||
export interface NotifyProviderOption {
|
||||
label: string
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ export interface WorkflowHistoryItem {
|
|||
create_time: number
|
||||
end_time: string
|
||||
exec_type: 'auto' | 'manual'
|
||||
status: 'success' | 'failed' | 'pending'
|
||||
status: 'success' | 'failed' | 'running'
|
||||
workflow_id: string
|
||||
}
|
||||
|
||||
|
|
@ -112,3 +112,8 @@ export interface EnableWorkflowParams {
|
|||
active: string
|
||||
}
|
||||
|
||||
/** 停止工作流请求参数 */
|
||||
export interface StopWorkflowParams {
|
||||
id: string
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ import {
|
|||
useLoadingMask,
|
||||
} from '@baota/naive-ui/hooks'
|
||||
import { useError } from '@baota/hooks/error'
|
||||
import { isEmail, isIp, isPort, isUrl } from '@baota/utils/business'
|
||||
import { isEmail, isIp, isPort, isUrl, isDomain } from '@baota/utils/business'
|
||||
import { $t } from '@locales/index'
|
||||
import { useStore } from './useStore'
|
||||
import { ApiProjectConfig } from '@config/data'
|
||||
|
|
@ -42,6 +42,11 @@ import type {
|
|||
CloudnsAccessConfig,
|
||||
AwsAccessConfig,
|
||||
AzureAccessConfig,
|
||||
NamesiloAccessConfig,
|
||||
NamedotcomAccessConfig,
|
||||
BunnyAccessConfig,
|
||||
GcoreAccessConfig,
|
||||
JdcloudAccessConfig,
|
||||
} from '@/types/access'
|
||||
import type { VNode, Ref } from 'vue'
|
||||
import { testAccess } from '@/api/access'
|
||||
|
|
@ -306,8 +311,8 @@ export const useApiFormController = (props: ApiFormControllerProps): ApiFormCont
|
|||
required: true,
|
||||
trigger: 'input',
|
||||
validator: (rule: FormItemRule, value: string, callback: (error?: Error) => void) => {
|
||||
if (!isIp(value)) {
|
||||
return callback(new Error($t('t_0_1745317313835')))
|
||||
if (!isIp(value) && !isDomain(value)) {
|
||||
return callback(new Error($t('t_0_1749119980577')))
|
||||
}
|
||||
callback()
|
||||
},
|
||||
|
|
@ -663,6 +668,27 @@ export const useApiFormController = (props: ApiFormControllerProps): ApiFormCont
|
|||
useFormInput('Environment', 'config.environment', { allowInput: noSideSpace, placeholder: 'public' }),
|
||||
)
|
||||
break
|
||||
case 'namesilo':
|
||||
items.push(useFormInput('API Key', 'config.api_key', { allowInput: noSideSpace }))
|
||||
break
|
||||
case 'namedotcom':
|
||||
items.push(
|
||||
useFormInput('Username', 'config.username', { allowInput: noSideSpace }),
|
||||
useFormInput('API Token', 'config.api_token', { allowInput: noSideSpace }),
|
||||
)
|
||||
break
|
||||
case 'bunny':
|
||||
items.push(useFormInput('API Key', 'config.api_key', { allowInput: noSideSpace }))
|
||||
break
|
||||
case 'gcore':
|
||||
items.push(useFormInput('API Token', 'config.api_token', { allowInput: noSideSpace }))
|
||||
break
|
||||
case 'jdcloud':
|
||||
items.push(
|
||||
useFormInput('Access Key ID', 'config.access_key_id', { allowInput: noSideSpace }),
|
||||
useFormInput('Secret Access Key', 'config.secret_access_key', { allowInput: noSideSpace }),
|
||||
)
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
|
@ -760,6 +786,33 @@ export const useApiFormController = (props: ApiFormControllerProps): ApiFormCont
|
|||
environment: '',
|
||||
} as AzureAccessConfig
|
||||
break
|
||||
case 'namesilo':
|
||||
param.value.config = {
|
||||
api_key: '',
|
||||
} as NamesiloAccessConfig
|
||||
break
|
||||
case 'namedotcom':
|
||||
param.value.config = {
|
||||
username: '',
|
||||
api_token: '',
|
||||
} as NamedotcomAccessConfig
|
||||
break
|
||||
case 'bunny':
|
||||
param.value.config = {
|
||||
api_key: '',
|
||||
} as BunnyAccessConfig
|
||||
break
|
||||
case 'gcore':
|
||||
param.value.config = {
|
||||
api_token: '',
|
||||
} as GcoreAccessConfig
|
||||
break
|
||||
case 'jdcloud':
|
||||
param.value.config = {
|
||||
access_key_id: '',
|
||||
secret_access_key: '',
|
||||
} as JdcloudAccessConfig
|
||||
break
|
||||
}
|
||||
},
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { NFormItem, NInputNumber } from 'naive-ui'
|
||||
import { NFormItem, NInputNumber, NSwitch } from 'naive-ui'
|
||||
import { useForm, useFormHooks, useModalHooks } from '@baota/naive-ui/hooks'
|
||||
import { useStore } from '@components/FlowChart/useStore'
|
||||
import { $t } from '@locales/index'
|
||||
|
|
@ -29,6 +29,9 @@ export default defineComponent({
|
|||
name_server: '',
|
||||
skip_check: 0,
|
||||
algorithm: 'RSA2048',
|
||||
close_cname: 0,
|
||||
max_wait: undefined,
|
||||
ignore_check: 0,
|
||||
},
|
||||
}),
|
||||
},
|
||||
|
|
@ -86,7 +89,8 @@ export default defineComponent({
|
|||
'onUpdate:value': (val: { value: string; ca: string; email: string }) => {
|
||||
param.value.eabId = val.value
|
||||
param.value.ca = val.ca
|
||||
if (val.value) param.value.email = val.email
|
||||
// 始终更新邮件,确保 Let's Encrypt 和 Buypass 的邮件能正确显示
|
||||
param.value.email = val.email
|
||||
},
|
||||
}}
|
||||
/>
|
||||
|
|
@ -138,15 +142,12 @@ export default defineComponent({
|
|||
},
|
||||
{ showRequireMark: false },
|
||||
),
|
||||
useFormInput(
|
||||
$t('t_0_1747106957037'),
|
||||
'name_server',
|
||||
useFormSwitch(
|
||||
$t('t_2_1749204567193'),
|
||||
'close_cname',
|
||||
{
|
||||
placeholder: $t('t_1_1747106961747'),
|
||||
allowInput: noSideSpace,
|
||||
onInput: (val: string) => {
|
||||
param.value.name_server = val.replace(/,/g, ',').replace(/;/g, ',') // 中文逗号分隔
|
||||
},
|
||||
checkedValue: 1,
|
||||
uncheckedValue: 0,
|
||||
},
|
||||
{ showRequireMark: false },
|
||||
),
|
||||
|
|
@ -159,6 +160,62 @@ export default defineComponent({
|
|||
},
|
||||
{ showRequireMark: false },
|
||||
),
|
||||
// 只有在跳过预检查关闭时才显示DNS递归服务器、预检查超时时间和忽略预检查结果
|
||||
...(param.value.skip_check === 0
|
||||
? [
|
||||
useFormInput(
|
||||
$t('t_0_1747106957037'),
|
||||
'name_server',
|
||||
{
|
||||
placeholder: $t('t_1_1747106961747'),
|
||||
allowInput: noSideSpace,
|
||||
onInput: (val: string) => {
|
||||
param.value.name_server = val.replace(/,/g, ',').replace(/;/g, ',') // 中文逗号分隔
|
||||
},
|
||||
},
|
||||
{ showRequireMark: false },
|
||||
),
|
||||
{
|
||||
type: 'custom' as const,
|
||||
render: () => {
|
||||
return (
|
||||
<NFormItem label={$t('t_0_1749263105073')} path="max_wait">
|
||||
<NInputNumber
|
||||
v-model:value={(param.value as ApplyNodeConfig & { max_wait?: number }).max_wait}
|
||||
showButton={false}
|
||||
min={1}
|
||||
class="w-full"
|
||||
placeholder={$t('t_1_1749263104936')}
|
||||
/>
|
||||
</NFormItem>
|
||||
)
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'custom' as const,
|
||||
render: () => {
|
||||
return (
|
||||
<NFormItem label={$t('t_2_1749263103765')} path="ignore_check">
|
||||
<div class="flex items-center">
|
||||
<span class="text-[1.4rem] mr-[1.2rem]">{$t('t_3_1749263104237')}</span>
|
||||
<NSwitch
|
||||
v-model:value={param.value.ignore_check}
|
||||
checkedValue={1}
|
||||
uncheckedValue={0}
|
||||
class="mx-[.5rem]"
|
||||
v-slots={{
|
||||
checked: () => $t('t_4_1749263101853'),
|
||||
unchecked: () => $t('t_5_1749263101934'),
|
||||
}}
|
||||
/>
|
||||
<span class="text-[1.4rem] ml-[1.2rem]">{$t('t_6_1749263103891')}</span>
|
||||
</div>
|
||||
</NFormItem>
|
||||
)
|
||||
},
|
||||
},
|
||||
]
|
||||
: []),
|
||||
]
|
||||
: []),
|
||||
useFormHelp([
|
||||
|
|
@ -183,6 +240,7 @@ export default defineComponent({
|
|||
confirm(async (close) => {
|
||||
try {
|
||||
await example.value?.validate()
|
||||
|
||||
updateNodeConfig(props.node.id, data.value) // 更新节点配置
|
||||
isRefreshNode.value = props.node.id // 刷新节点
|
||||
close()
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ const {
|
|||
workflowFormData,
|
||||
deleteExistingWorkflow,
|
||||
executeExistingWorkflow,
|
||||
stopExistingWorkflow,
|
||||
setWorkflowActive,
|
||||
setWorkflowExecType,
|
||||
caFormData,
|
||||
|
|
@ -220,7 +221,7 @@ export const useController = () => {
|
|||
useModal({
|
||||
title: workflow ? `【${workflow.name}】 - ${$t('t_9_1745215914666')}` : $t('t_9_1745215914666'),
|
||||
component: HistoryModal,
|
||||
area: 800,
|
||||
area: 850,
|
||||
componentProps: { id: workflow.id.toString() },
|
||||
})
|
||||
}
|
||||
|
|
@ -422,6 +423,23 @@ export const useHistoryController = (id: string) => {
|
|||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 停止工作流执行
|
||||
* @param {WorkflowHistoryItem} historyItem - 工作流历史记录项
|
||||
*/
|
||||
const handleStopWorkflow = async (historyItem: WorkflowHistoryItem) => {
|
||||
useDialog({
|
||||
title: $t('t_0_1749204565782'),
|
||||
content: $t('t_1_1749204570473'),
|
||||
onPositiveClick: async () => {
|
||||
await stopExistingWorkflow(historyItem.id)
|
||||
await fetch() // 刷新历史记录表格
|
||||
// 触发外部主表格刷新
|
||||
refreshTable.value = true
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 创建历史记录表格列配置
|
||||
* @returns {DataTableColumn<WorkflowHistoryItem>[]} 返回表格列配置数组
|
||||
|
|
@ -430,7 +448,7 @@ export const useHistoryController = (id: string) => {
|
|||
{
|
||||
title: $t('t_4_1745227838558'),
|
||||
key: 'create_time',
|
||||
width: 230,
|
||||
width: 200,
|
||||
render: (row: WorkflowHistoryItem) => {
|
||||
// 处理数字类型的时间戳
|
||||
return row.create_time ? row.create_time : '-'
|
||||
|
|
@ -439,7 +457,7 @@ export const useHistoryController = (id: string) => {
|
|||
{
|
||||
title: $t('t_5_1745227839906'),
|
||||
key: 'end_time',
|
||||
width: 230,
|
||||
width: 200,
|
||||
render: (row: WorkflowHistoryItem) => {
|
||||
// 处理数字类型的时间戳
|
||||
return row.end_time ? row.end_time : '-'
|
||||
|
|
@ -448,7 +466,7 @@ export const useHistoryController = (id: string) => {
|
|||
{
|
||||
title: $t('t_6_1745227838798'),
|
||||
key: 'exec_type',
|
||||
width: 110,
|
||||
width: 120,
|
||||
render: (row: WorkflowHistoryItem) => (
|
||||
<NTag type={row.exec_type === 'auto' ? 'info' : 'default'} size="small" bordered={false}>
|
||||
{row.exec_type === 'auto' ? $t('t_2_1745215915397') : $t('t_3_1745215914237')}
|
||||
|
|
@ -461,9 +479,14 @@ export const useHistoryController = (id: string) => {
|
|||
key: 'actions',
|
||||
fixed: 'right',
|
||||
align: 'right',
|
||||
width: 80,
|
||||
width: 180,
|
||||
render: (row: WorkflowHistoryItem) => (
|
||||
<NSpace justify="end">
|
||||
<NSpace justify="end" size="small">
|
||||
{row.status === 'running' && (
|
||||
<NButton size="tiny" strong secondary type="error" onClick={() => handleStopWorkflow(row)}>
|
||||
{$t('t_0_1749204565782')}
|
||||
</NButton>
|
||||
)}
|
||||
<NButton
|
||||
size="tiny"
|
||||
strong
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import {
|
|||
executeWorkflow,
|
||||
updateWorkflowExecType,
|
||||
enableWorkflow,
|
||||
stopWorkflow,
|
||||
} from '@/api/workflow'
|
||||
import { getEabList, addEab, deleteEab } from '@/api/access'
|
||||
import { useError } from '@baota/hooks/error'
|
||||
|
|
@ -17,6 +18,7 @@ import type {
|
|||
WorkflowItem,
|
||||
UpdateWorkflowExecTypeParams,
|
||||
EnableWorkflowParams,
|
||||
StopWorkflowParams,
|
||||
} from '@/types/workflow'
|
||||
import type { EabItem, EabListParams, EabAddParams } from '@/types/access'
|
||||
import type { TableResponse } from '@baota/naive-ui/types/table'
|
||||
|
|
@ -148,6 +150,22 @@ export const useWorkflowStore = defineStore('workflow-store', () => {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止工作流执行
|
||||
* @description 停止指定工作流的执行
|
||||
* @param {string} id - 工作流ID
|
||||
* @returns {Promise<void>} 停止执行结果
|
||||
*/
|
||||
const stopExistingWorkflow = async (id: string) => {
|
||||
try {
|
||||
const { message, fetch } = stopWorkflow({ id })
|
||||
message.value = true
|
||||
await fetch()
|
||||
} catch (error) {
|
||||
handleError(error).default($t('t_1_1747895712756'))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取CA授权列表
|
||||
* @param {EabListParams} params - 请求参数
|
||||
|
|
@ -217,6 +235,7 @@ export const useWorkflowStore = defineStore('workflow-store', () => {
|
|||
fetchWorkflowHistory,
|
||||
deleteExistingWorkflow,
|
||||
executeExistingWorkflow,
|
||||
stopExistingWorkflow,
|
||||
setWorkflowActive,
|
||||
setWorkflowExecType,
|
||||
fetchEabList,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
// 外部库依赖
|
||||
import { Transition, type Component as ComponentType, h, defineComponent, ref, onMounted, computed, watch } from 'vue' // 添加 watch
|
||||
import {
|
||||
Transition,
|
||||
type Component as ComponentType,
|
||||
h,
|
||||
defineComponent,
|
||||
ref,
|
||||
onMounted,
|
||||
computed,
|
||||
watch,
|
||||
onUnmounted,
|
||||
} from 'vue' // 添加 watch, onUnmounted
|
||||
import { NBadge, NIcon, NLayout, NLayoutContent, NLayoutHeader, NLayoutSider, NMenu, NTooltip } from 'naive-ui'
|
||||
import { RouterView } from 'vue-router'
|
||||
import { MenuFoldOutlined, MenuUnfoldOutlined } from '@vicons/antd'
|
||||
|
|
@ -12,7 +22,12 @@ import { useController } from './useController'
|
|||
import { $t } from '@locales/index'
|
||||
// 内部模块导入 - 样式
|
||||
import styles from './index.module.css'
|
||||
|
||||
// 内部模块导入 - API
|
||||
import { getVersion } from '@api/setting'
|
||||
// 内部模块导入 - 组件
|
||||
import UpdateLogModal from '@/components/UpdateLogModal'
|
||||
// 内部模块导入 - 类型
|
||||
import type { VersionData } from '@/types/setting'
|
||||
|
||||
/**
|
||||
* @description 基础布局组件,包含侧边栏导航、头部信息和内容区域。
|
||||
|
|
@ -35,9 +50,39 @@ export default defineComponent({
|
|||
'actionColor',
|
||||
'layoutContentBackgroundColor',
|
||||
'siderLoginHeight', // 确保这个变量在 Naive UI 主题中存在或已自定义
|
||||
'contentPadding'
|
||||
'contentPadding',
|
||||
])
|
||||
|
||||
// 版本检查相关状态
|
||||
const hasUpdate = ref(false)
|
||||
const versionData = ref<VersionData | null>(null)
|
||||
const showUpdateModal = ref(false)
|
||||
const checkTimer = ref<NodeJS.Timeout | null>(null)
|
||||
|
||||
// 版本检查API
|
||||
const versionApi = getVersion()
|
||||
|
||||
// 检查版本更新
|
||||
const checkVersion = async () => {
|
||||
try {
|
||||
await versionApi.fetch()
|
||||
if (versionApi.data.value && versionApi.data.value.data) {
|
||||
const data = versionApi.data.value.data
|
||||
versionData.value = data
|
||||
hasUpdate.value = data.update === '1'
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('检查版本更新失败:', error)
|
||||
}
|
||||
}
|
||||
|
||||
// 点击版本号
|
||||
const handleVersionClick = () => {
|
||||
if (hasUpdate.value && versionData.value) {
|
||||
showUpdateModal.value = true
|
||||
}
|
||||
}
|
||||
|
||||
const siderWidth = ref(200)
|
||||
const siderCollapsedWidth = ref(60)
|
||||
|
||||
|
|
@ -50,13 +95,28 @@ export default defineComponent({
|
|||
if (isMobile.value || isNarrowScreen.value) {
|
||||
isCollapsed.value = true
|
||||
}
|
||||
|
||||
// 初始检查版本
|
||||
checkVersion()
|
||||
|
||||
// 设置定时检查版本更新(每30分钟检查一次)
|
||||
checkTimer.value = setInterval(checkVersion, 30 * 60 * 1000)
|
||||
})
|
||||
|
||||
// 组件卸载时清理定时器
|
||||
onUnmounted(() => {
|
||||
if (checkTimer.value) {
|
||||
clearInterval(checkTimer.value)
|
||||
}
|
||||
})
|
||||
|
||||
// 监听屏幕宽度变化,自动折叠/展开菜单
|
||||
watch(isNarrowScreen, (newValue) => {
|
||||
if (newValue && !isMobile.value) { // 仅在非移动设备且宽度小于1100px时处理
|
||||
if (newValue && !isMobile.value) {
|
||||
// 仅在非移动设备且宽度小于1100px时处理
|
||||
isCollapsed.value = true
|
||||
} else if (!newValue && !isMobile.value) { // 宽度大于1100px且非移动设备时
|
||||
} else if (!newValue && !isMobile.value) {
|
||||
// 宽度大于1100px且非移动设备时
|
||||
isCollapsed.value = false
|
||||
}
|
||||
})
|
||||
|
|
@ -109,13 +169,13 @@ export default defineComponent({
|
|||
class={[styles.sider, siderDynamicClass.value].join(' ')}
|
||||
bordered
|
||||
>
|
||||
<div class={`${styles.logoContainer} ${
|
||||
<div
|
||||
class={`${styles.logoContainer} ${
|
||||
// Logo 容器的 'active' 状态 (仅在桌面端且折叠时应用)
|
||||
// 在移动端,由于 NLayoutSider 自身宽度不变,不应用 active 样式来改变 Logo 区域布局
|
||||
(isMobile.value ? false : isCollapsed.value)
|
||||
? styles.logoContainerActive
|
||||
: ''
|
||||
}`}>
|
||||
(isMobile.value ? false : isCollapsed.value) ? styles.logoContainerActive : ''
|
||||
}`}
|
||||
>
|
||||
{/* Logo 显示逻辑 */}
|
||||
{(isMobile.value ? false : isCollapsed.value) ? (
|
||||
// 折叠时的 Logo (仅桌面端)
|
||||
|
|
@ -134,11 +194,11 @@ export default defineComponent({
|
|||
<NTooltip placement="right" trigger="hover">
|
||||
{{
|
||||
trigger: () => (
|
||||
<div
|
||||
class={styles.menuToggleButton}
|
||||
onClick={() => toggleCollapse()}
|
||||
>
|
||||
<NIcon size={20}><MenuFoldOutlined /></NIcon> {/* 图标大小调整为 20 */}
|
||||
<div class={styles.menuToggleButton} onClick={() => toggleCollapse()}>
|
||||
<NIcon size={20}>
|
||||
<MenuFoldOutlined />
|
||||
</NIcon>{' '}
|
||||
{/* 图标大小调整为 20 */}
|
||||
</div>
|
||||
),
|
||||
default: () => <span>{$t('t_4_1744098802046')}</span>,
|
||||
|
|
@ -172,9 +232,7 @@ export default defineComponent({
|
|||
{{
|
||||
trigger: () => (
|
||||
<div class={styles.headerMenuToggleButton} onClick={() => toggleCollapse()}>
|
||||
<NIcon size={20}>
|
||||
{isCollapsed.value ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}
|
||||
</NIcon>
|
||||
<NIcon size={20}>{isCollapsed.value ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}</NIcon>
|
||||
</div>
|
||||
),
|
||||
default: () => <span>展开主菜单</span>,
|
||||
|
|
@ -183,8 +241,13 @@ export default defineComponent({
|
|||
</div>
|
||||
)}
|
||||
<div class={styles.systemInfo}>
|
||||
<NBadge value={1} show={false} dot>
|
||||
<span class="px-1 sm:px-[.5rem] cursor-pointer">v1.0.4</span>
|
||||
<NBadge value={1} show={hasUpdate.value} dot>
|
||||
<span
|
||||
class="px-[.8rem] sm:px-[.5rem] py-[.4rem] cursor-pointer hover:text-primary transition-colors text-[1.4rem] font-medium"
|
||||
onClick={handleVersionClick}
|
||||
>
|
||||
v1.0.4
|
||||
</span>
|
||||
</NBadge>
|
||||
</div>
|
||||
</NLayoutHeader>
|
||||
|
|
@ -199,9 +262,10 @@ export default defineComponent({
|
|||
</NLayoutContent>
|
||||
</NLayout>
|
||||
{/* 移动端菜单展开时的背景遮罩 */}
|
||||
{showBackdrop.value && (
|
||||
<div class={styles.mobileMenuBackdrop} onClick={() => toggleCollapse()}></div>
|
||||
)}
|
||||
{showBackdrop.value && <div class={styles.mobileMenuBackdrop} onClick={() => toggleCollapse()}></div>}
|
||||
|
||||
{/* 更新日志弹窗 */}
|
||||
<UpdateLogModal v-model:show={showUpdateModal.value} versionData={versionData.value} />
|
||||
</NLayout>
|
||||
)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import {
|
|||
useLoadingMask,
|
||||
} from '@baota/naive-ui/hooks'
|
||||
import { useError } from '@baota/hooks/error'
|
||||
import { isDomain } from '@baota/utils/business'
|
||||
import { isDomain, isPort, isIp } from '@baota/utils/business'
|
||||
import { $t } from '@locales/index'
|
||||
|
||||
// Store和组件
|
||||
|
|
@ -64,6 +64,31 @@ const {
|
|||
// 错误处理
|
||||
const { handleError } = useError()
|
||||
|
||||
/**
|
||||
* 验证域名(或IP)+端口格式
|
||||
* @param value - 要验证的值
|
||||
* @returns {boolean} 如果是有效的域名、IP地址或它们加端口的格式,则返回 true
|
||||
*/
|
||||
const isDomainWithPort = (value: string): boolean => {
|
||||
if (!value) return false
|
||||
|
||||
// 检查是否包含端口号
|
||||
const parts = value.split(':')
|
||||
|
||||
if (parts.length === 1) {
|
||||
// 只有域名或IP,验证域名或IP地址
|
||||
return isDomain(value) || isIp(value)
|
||||
} else if (parts.length === 2) {
|
||||
// 域名/IP+端口格式
|
||||
const [host, port] = parts
|
||||
if (!host || !port) return false
|
||||
return (isDomain(host) || isIp(host)) && isPort(port)
|
||||
}
|
||||
|
||||
// 超过一个冒号,格式不正确(IPv6除外,但这里暂不处理IPv6+端口的复杂情况)
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* 监控管理业务逻辑控制器
|
||||
* @description 处理监控列表页面的业务逻辑,包括表格展示、添加、编辑、删除等操作
|
||||
|
|
@ -318,7 +343,7 @@ export const useMonitorFormController = (data: UpdateSiteMonitorParams | null =
|
|||
*/
|
||||
const config = computed(() => [
|
||||
useFormInput('名称', 'name'),
|
||||
useFormInput('域名', 'domain'),
|
||||
useFormInput('域名/IP地址', 'domain'),
|
||||
useFormInputNumber('周期(分钟)', 'cycle', { class: 'w-full' }),
|
||||
useFormCustom(() => {
|
||||
return (
|
||||
|
|
@ -342,11 +367,11 @@ export const useMonitorFormController = (data: UpdateSiteMonitorParams | null =
|
|||
name: { required: true, message: '请输入名称', trigger: 'input' },
|
||||
domain: {
|
||||
required: true,
|
||||
message: '请输入正确的域名',
|
||||
message: '请输入正确的域名或IP地址',
|
||||
trigger: 'input',
|
||||
validator: (rule: any, value: any, callback: any) => {
|
||||
if (!isDomain(value)) {
|
||||
callback(new Error('请输入正确的域名'))
|
||||
if (!isDomainWithPort(value)) {
|
||||
callback(new Error('请输入正确的域名或IP地址(支持域名:端口或IP:端口格式)'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,65 @@
|
|||
import { NCard, NSpace, NDescriptions, NDescriptionsItem, NIcon, NButton } from 'naive-ui'
|
||||
import { NCard, NSpace, NDescriptions, NDescriptionsItem, NIcon, NButton, NBadge, NAlert } from 'naive-ui'
|
||||
import { $t } from '@locales/index'
|
||||
import { LogoGithub } from '@vicons/ionicons5'
|
||||
import { getVersion } from '@api/setting'
|
||||
import type { VersionData } from '@/types/setting'
|
||||
/**
|
||||
* 关于我们标签页组件
|
||||
*/
|
||||
export default defineComponent({
|
||||
name: 'AboutSettings',
|
||||
setup() {
|
||||
// 版本检查相关状态
|
||||
const versionData = ref<VersionData | null>(null)
|
||||
const hasUpdate = ref(false)
|
||||
|
||||
// 版本检查API
|
||||
const versionApi = getVersion()
|
||||
|
||||
// 检查版本更新
|
||||
const checkVersion = async () => {
|
||||
try {
|
||||
await versionApi.fetch()
|
||||
if (versionApi.data.value && versionApi.data.value.data) {
|
||||
const data = versionApi.data.value.data
|
||||
versionData.value = data
|
||||
hasUpdate.value = data.update === '1'
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('检查版本更新失败:', error)
|
||||
}
|
||||
}
|
||||
|
||||
// 跳转到GitHub
|
||||
const goToGitHub = () => {
|
||||
window.open('https://github.com/allinssl/allinssl', '_blank')
|
||||
}
|
||||
|
||||
// 组件挂载时检查版本
|
||||
onMounted(() => {
|
||||
checkVersion()
|
||||
})
|
||||
|
||||
return () => (
|
||||
<div class="about-settings">
|
||||
<NCard title={$t('t_4_1745833932780')} class="mb-4">
|
||||
<NSpace vertical size={24}>
|
||||
<NDescriptions bordered>
|
||||
<NDescriptionsItem label={$t('t_5_1745833933241')}>
|
||||
<div class="flex items-center">
|
||||
<span class="text-[2rem] font-medium">v1.0.4</span>
|
||||
<div class="flex items-center space-x-[1.2rem]">
|
||||
<span class="text-[2.0rem] font-medium">v1.0.4</span>
|
||||
{hasUpdate.value && versionData.value && (
|
||||
<div class="relative">
|
||||
<NBadge value="NEW" type="success" offset={[4, -3]}>
|
||||
<span
|
||||
class="text-[1.4rem] text-primary cursor-pointer font-medium inline-block px-[.8rem] py-[.4rem]"
|
||||
onClick={goToGitHub}
|
||||
>
|
||||
{versionData.value.new_version} 可用
|
||||
</span>
|
||||
</NBadge>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</NDescriptionsItem>
|
||||
<NDescriptionsItem label={$t('t_29_1746667589773')}>
|
||||
|
|
@ -22,7 +67,7 @@ export default defineComponent({
|
|||
<NIcon size="20" class="text-gray-600">
|
||||
<LogoGithub />
|
||||
</NIcon>
|
||||
<NButton text tag="a" href="https://github.com/allinssl/allinssl" target="_blank" type="primary">
|
||||
<NButton text onClick={goToGitHub} type="primary">
|
||||
https://github.com/allinssl/allinssl
|
||||
</NButton>
|
||||
</div>
|
||||
|
|
@ -31,6 +76,33 @@ export default defineComponent({
|
|||
</NSpace>
|
||||
</NCard>
|
||||
|
||||
{/* 新版本信息卡片 */}
|
||||
{hasUpdate.value && versionData.value && (
|
||||
<NCard title="发现新版本" class="mb-4">
|
||||
<NAlert type="info" title={`新版本 ${versionData.value.new_version} 已发布`} class="mb-[1.6rem]">
|
||||
<div class="text-[1.4rem]">
|
||||
<div class="mb-[1.2rem] text-[1.4rem]">发布日期: {versionData.value.date}</div>
|
||||
<div class="mb-[1.2rem] text-[1.4rem]">
|
||||
<strong>更新内容:</strong>
|
||||
</div>
|
||||
<div class="whitespace-pre-line text-gray-700 text-[1.3rem] leading-relaxed">
|
||||
{versionData.value.log.replace(/\\r\\n/g, '\n').replace(/\\n/g, '\n')}
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<NButton size="medium" type="primary" onClick={goToGitHub}>
|
||||
<div class="flex items-center">
|
||||
<NIcon size="18" class="mr-2">
|
||||
<LogoGithub />
|
||||
</NIcon>
|
||||
前往GitHub下载
|
||||
</div>
|
||||
</NButton>
|
||||
</div>
|
||||
</div>
|
||||
</NAlert>
|
||||
</NCard>
|
||||
)}
|
||||
|
||||
<NCard title={$t('t_13_1745833933630')} class="mb-4">
|
||||
<div class="about-content">
|
||||
<p class="text-gray-700 leading-relaxed">
|
||||
|
|
|
|||
|
|
@ -65,6 +65,19 @@ export default defineComponent({
|
|||
return () => (
|
||||
<div class="webhook-channel-form">
|
||||
<WebhookForm labelPlacement="top"></WebhookForm>
|
||||
|
||||
{/* 模板变量说明 */}
|
||||
<div class="mt-4 p-4 bg-gray-50 rounded-md">
|
||||
<div class="font-medium text-gray-700 mb-3 text-xl">模板变量将在发送时替换成实际值:</div>
|
||||
<div class="text-gray-600 space-y-3 text-lg">
|
||||
<div>
|
||||
<code class="px-2 py-1 bg-gray-200 rounded text-lg font-mono">__subject__</code>:通知主题
|
||||
</div>
|
||||
<div>
|
||||
<code class="px-2 py-1 bg-gray-200 rounded text-lg font-mono">__body__</code>:通知内容
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -0,0 +1,94 @@
|
|||
import { useForm, useModalHooks } from '@baota/naive-ui/hooks'
|
||||
import { useError } from '@baota/hooks/error'
|
||||
import { useWecomChannelFormController } from './useController'
|
||||
import { useStore } from '@settings/useStore'
|
||||
|
||||
import type { ReportWecom, ReportType } from '@/types/setting'
|
||||
|
||||
/**
|
||||
* 企业微信通知渠道表单组件
|
||||
*/
|
||||
export default defineComponent({
|
||||
name: 'WecomChannelModel',
|
||||
props: {
|
||||
data: {
|
||||
type: Object as PropType<ReportType<ReportWecom> | null>,
|
||||
default: () => null,
|
||||
},
|
||||
},
|
||||
setup(props: { data: ReportType<ReportWecom> | null }) {
|
||||
const { handleError } = useError()
|
||||
const { confirm } = useModalHooks()
|
||||
const { fetchNotifyChannels } = useStore()
|
||||
const { config, rules, wecomChannelForm, submitForm } = useWecomChannelFormController()
|
||||
|
||||
if (props.data) {
|
||||
const { name, config } = props.data
|
||||
wecomChannelForm.value = {
|
||||
name,
|
||||
...config,
|
||||
}
|
||||
}
|
||||
// 使用表单hooks
|
||||
const {
|
||||
component: WecomForm,
|
||||
example,
|
||||
data,
|
||||
} = useForm({
|
||||
config,
|
||||
defaultValue: wecomChannelForm,
|
||||
rules,
|
||||
})
|
||||
|
||||
// 关联确认按钮
|
||||
confirm(async (close) => {
|
||||
try {
|
||||
const { name, ...other } = data.value
|
||||
await example.value?.validate()
|
||||
const res = await submitForm(
|
||||
{
|
||||
type: 'workwx',
|
||||
name: name || '',
|
||||
config: other,
|
||||
},
|
||||
example,
|
||||
props.data?.id,
|
||||
)
|
||||
|
||||
fetchNotifyChannels()
|
||||
if (res) close()
|
||||
} catch (error) {
|
||||
handleError(error)
|
||||
}
|
||||
})
|
||||
|
||||
return () => (
|
||||
<div class="wecom-channel-form">
|
||||
<WecomForm labelPlacement="top"></WecomForm>
|
||||
|
||||
{/* 模板变量说明 */}
|
||||
<div class="mt-4 p-4 bg-gray-50 rounded-md">
|
||||
<div class="font-medium text-gray-700 mb-3 text-xl">模板变量将在发送时替换成实际值:</div>
|
||||
<div class="text-gray-600 space-y-3 text-lg">
|
||||
<div>
|
||||
<code class="px-2 py-1 bg-gray-200 rounded text-lg font-mono">__subject__</code>:通知主题
|
||||
</div>
|
||||
<div>
|
||||
<code class="px-2 py-1 bg-gray-200 rounded text-lg font-mono">__body__</code>:通知内容
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-4 pt-3 border-t border-gray-200">
|
||||
<a
|
||||
href="https://developer.work.weixin.qq.com/document/path/91770"
|
||||
target="_blank"
|
||||
class="hover:opacity-80 text-xl"
|
||||
style="color: #20a50a"
|
||||
>
|
||||
📖 查看企业微信机器人消息格式教程
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
},
|
||||
})
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue