diff --git a/CLAUDE.md b/CLAUDE.md index 7a492d28..0eb1e307 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -120,6 +120,7 @@ admin/console 的 `prod-deploy.sh` 已改为**多生产环境档案**(`env_pro - ⚠️ 调用时 `method` **不要带 `api_` 前缀**,否则变成 `api_api_xxx` → `code:11`。 - 方法名以 `get/list/load/query/fetch/search/count/stat/export/check` 开头视为只读,不弹全屏遮罩;其余(add/update/del/save/create…)视为写操作,请求期间套遮罩防重复提交。 - 选中应用通过请求头 `X-App-Id` 传给后端。 +- **应用下拉统一走 `api_getmyapps`**(超管/管理员例外,仍用 `console/api/apps/list`):后端按账号绑定下发可选部署。品牌商/渠道商账号的可见应用**不靠手工勾选**,而是由「名下产品绑定的应用」推导——产品的应用归属存 `DBProduct.appnames`(应用名 CSV,产品管理页多选),见 [scope_app.go](apps/services/modules/console/scope_app.go)。 - **后端返回常多包一层**:如 `getfactorys → {factorys}`、`getproducts → {products}`、`getproduct → {product}`;保存 payload 也常包一层(厂家 `{Factory:{...}}`、产品 `{product:{...}}`);统计 trend 日期字段是 `stat_day`。列表 ID 多以十六进制展示(`id.toString(16).toUpperCase()`)。 - 样式:`app/assets/css/console.css` 由 nuxt.config 引用;DaisyUI 固定 4.x。 diff --git a/apps/admin/.output/nitro.json b/apps/admin/.output/nitro.json index f193cc79..d8445bd3 100644 --- a/apps/admin/.output/nitro.json +++ b/apps/admin/.output/nitro.json @@ -1,5 +1,5 @@ { - "date": "2026-08-14T08:52:12.283Z", + "date": "2026-08-15T09:07:22.851Z", "preset": "node-server", "framework": { "name": "nuxt", diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CUR2rcGX.js b/apps/admin/.output/public/_nuxt/0CGOegeu.js similarity index 99% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CUR2rcGX.js rename to apps/admin/.output/public/_nuxt/0CGOegeu.js index 22cfdeca..4ae26c59 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CUR2rcGX.js +++ b/apps/admin/.output/public/_nuxt/0CGOegeu.js @@ -1,4 +1,4 @@ -import{g as me,j as Te,k as _e,o as a,c as o,a as e,d as v,l as k,F as M,r as J,n as O,t as i,m as de,p as ye,q as h,v as A,s as pe,x as ke,y as N,z as ee,A as Z,B as Me,_ as ge,C as he,D as Ne,E as Ie,G as De,H as Se,b as Ue,I as Ve}from"./DSy_gLdM.js";import{u as be}from"./NtXZuCUg.js";import{u as ve}from"./EeX3zgoF.js";import{r as ce,n as fe,R as Oe}from"./7m3DvxFn.js";const Ae={class:"card"},Ee={class:"card-head"},Re={key:0,class:"py-14 text-center text-slate-400 text-sm"},je={class:"min-w-0"},Le={class:"dep-name"},ze={class:"truncate"},Be={key:0,class:"chip chip-warn"},Pe={key:1,class:"chip chip-ok"},qe={key:2,class:"chip"},Fe={class:"dep-sub"},He=["title"],Je={class:"flex items-center gap-1.5"},Ge={key:0,class:"text-[10.5px] text-amber-700",title:"latest 是可变 tag,升级后无法从列表看出实际版本"},Ye={class:"min-w-0"},Ke={class:"dep-acts"},Qe=["onClick"],We=["onClick"],Xe=["disabled","title","onClick"],Ze=["onClick"],et=["disabled","onClick"],tt=["disabled","onClick"],st=["onClick"],lt={class:"modal-box max-w-3xl"},nt={class:"font-bold text-lg"},at={key:0,class:"tabs tabs-boxed bg-slate-100 w-fit my-3"},ot={class:"grid grid-cols-2 gap-3"},it={class:"form-control"},dt=["value"],rt={class:"form-control"},ut=["placeholder"],pt={class:"grid grid-cols-2 gap-3"},ct={class:"form-control"},mt=["value"],gt={class:"form-control"},bt={class:"label py-1"},vt={class:"label-text text-sm font-medium"},xt={value:0},ft=["value"],_t={class:"grid grid-cols-3 gap-3"},yt={class:"form-control"},kt={class:"form-control"},ht=["placeholder"],$t={class:"form-control"},wt={class:"form-control"},Ct={class:"label py-1"},Tt={class:"label-text text-sm font-medium"},Mt={class:"form-control"},Nt={key:0,class:"text-sm space-y-0.5"},It={class:"form-control"},Dt={class:"flex items-center gap-2 cursor-pointer"},St={class:"modal-action"},Ut=["disabled"],Vt=["disabled"],Ot={key:1,class:"text-[11px] text-slate-400 text-right"},At={class:"modal-box max-w-2xl"},Et={class:"text-sm text-slate-500 mt-1"},Rt={class:"grid grid-cols-[76px_1fr] gap-x-3 gap-y-1 text-xs mt-4"},jt={class:"mt-3"},Lt={class:"flex items-center justify-between mb-1"},zt=["disabled"],Bt={key:0,class:"flex gap-2"},Pt=["disabled"],qt={value:""},Ft=["value"],Ht=["value"],Jt=["disabled"],Gt=["disabled"],Yt={key:2,class:"text-xs text-amber-600 mt-1"},Kt={key:3,class:"text-xs text-amber-600 mt-1"},Qt={key:0,class:"mt-3"},Wt={class:"flex items-center gap-2 text-xs mb-1"},Xt={key:0,class:"loading loading-spinner loading-xs text-amber-500"},Zt={key:1,class:"text-green-600 font-semibold"},es={key:2,class:"text-red-600 font-semibold"},ts={class:"text-slate-400"},ss={class:"modal-action"},ls=["disabled"],ns=["disabled"],as={method:"dialog",class:"modal-backdrop"},os=["disabled"],is={class:"modal-box"},ds={class:"text-sm text-slate-500 mt-1"},rs={class:"grid grid-cols-2 gap-3 mt-4"},us={key:0,class:"text-sm mt-3"},ps={key:0,class:"bg-slate-50 border border-slate-200 rounded-lg p-3"},cs={class:"flex justify-between items-center text-xs mb-1.5"},ms={class:"text-slate-600"},gs={class:"font-mono text-slate-400"},bs=["value"],vs={class:"mt-2 text-xs space-y-0.5"},xs={key:1,class:"text-red-600"},fs={key:2,class:"bg-green-50 border border-green-100 rounded-lg p-3"},_s={class:"grid grid-cols-2 gap-x-4 gap-y-1 text-xs text-slate-600 mb-2"},ys={class:"border-t border-green-100 pt-2 text-xs"},ks={class:"text-slate-500"},hs={class:"font-mono text-slate-700"},$s={class:"modal-action"},ws=["disabled"],Cs=["disabled"],Ts={method:"dialog",class:"modal-backdrop"},Ms=["disabled"],Ns=me({__name:"AppDeployTab",props:{appName:{},defaultImage:{},deployments:{},envs:{}},emits:["refresh","configure"],setup(P,{expose:E,emit:G}){const Y=P,B=G,{consoleApi:S}=be(),{success:$,error:g}=ve(),x=Te(),K=_e();function Q(d){const t=(d||"").match(/\/([^/?]+)\?/);return t?t[1]:d?"(自定义)":"未配置"}function I(d){const t=(d||"").trim();return!!t&&t!=="latest"}function f(d){return d?Y.envs.find(t=>t.id===d)?.name??"#"+d:""}function q(d){let t=(d.base_url||"").trim().replace(/\/+$/,"");if(!t){g("该部署未配置对外地址(base_url)");return}/^https?:\/\//i.test(t)||(t="https://"+t),window.open(t+"/swagger/index.html","_blank","noopener")}function R(d){window.confirm(`向部署 #${d} 发送一条配置 reload 事件?`)&&S("config/notify",{app_id:d,type:"all",action:"reload"}).then(t=>$("已发送 → "+(t&&t.subject))).catch(t=>g(t?.message??"发送失败"))}function V(d){window.confirm(`删除部署「${d.name||"#"+d.id}」?(不影响应用自身的库)`)&&S("apps/del",{id:d.id}).then(()=>{$("已删除"),B("refresh")}).catch(t=>g(t?.message??"删除失败"))}const W=N(null),j=N(!1),y=N("existing"),m=ee({id:0,name:"",region:"",env_id:0,base_url:"",service_dsn:"",deploy_dir:"",image_name:"",image_tag:"",remark:"",enabled:!0}),L=N(!1),_=N(!1),D=ee({show:!1,apiOk:!1,apiMsg:"",dbOk:!1,dbMsg:""}),ne=Z(()=>{const d=new Set(Y.deployments.filter(t=>t.id!==m.id).map(t=>fe(t.region)).filter(Boolean));return Oe.filter(t=>!d.has(t.value)||t.value===m.region)});function b(){L.value=!1,D.show=!1}function s(d){y.value=d,b()}function c(){j.value=!1,y.value="existing",Object.assign(m,{id:0,name:"",region:"",env_id:0,base_url:"",service_dsn:"",deploy_dir:"",image_name:Y.defaultImage,image_tag:"",remark:"",enabled:!0}),b(),W.value?.showModal()}function r(d){j.value=!0,y.value=d.status==="pending"?"deploy":"existing",Object.assign(m,{id:d.id,name:d.name||"",region:fe(d.region),env_id:d.env_id||0,base_url:d.base_url||"",service_dsn:d.service_dsn||"",deploy_dir:d.deploy_dir||"",image_name:d.image_name||"",image_tag:d.image_tag||"",remark:d.remark||"",enabled:!!d.enabled}),b(),W.value?.showModal()}async function u(){const d=m.base_url.trim(),t=m.service_dsn.trim();if(!d||!t){g("请先填应用地址和业务库 DSN");return}_.value=!0;try{const l=await S("apps/test",{base_url:d,service_dsn:t});D.apiOk=!!l.api_ok,D.apiMsg=l.api_msg,D.dbOk=!!l.db_ok,D.dbMsg=l.db_msg,D.show=!0,L.value=!!l.ok,L.value?$("检测通过,可以保存"):g("检测未通过")}catch(l){g(l?.message??"测试失败")}finally{_.value=!1}}async function te(){if(!m.name.trim()){g("请填部署名称");return}if(!j.value&&y.value==="existing"&&!L.value){g("请先「测试连接」通过再保存");return}if(y.value==="deploy"&&!m.env_id){g("请选择部署目标环境");return}const d={app_name:Y.appName,status:y.value==="deploy"?"pending":"existing",name:m.name,region:m.region,env_id:Number(m.env_id)||0,base_url:y.value==="deploy"?"":m.base_url,service_dsn:m.service_dsn,deploy_dir:m.deploy_dir,image_name:m.image_name,image_tag:m.image_tag,remark:m.remark,enabled:m.enabled};let t="apps/add";j.value&&m.id&&(d.id=Number(m.id),t="apps/update");try{await S(t,d),$("保存成功"),W.value?.close(),B("refresh")}catch(l){g(l?.message??"保存失败")}}const ae=N(null),X=N(null),n=ee({id:0,label:"",envName:"",deployDir:"",tag:"",tags:[],tagMode:"list",tagsLoading:!1,tagsError:"",log:"",show:!1,running:!1,ok:!1,canRun:!1,btnText:"开始升级"});function re(d){n.id=d.id,n.label="部署:"+(d.name||"部署#"+d.id)+(d.region?" · "+ce(d.region):""),n.envName=f(d.env_id),n.deployDir=d.deploy_dir||"",n.tag=d.image_tag||"",n.tags=[],n.tagMode="list",n.tagsError="",n.log="",n.show=!1,n.running=!1,n.ok=!1,n.canRun=!!(d.env_id&&(d.deploy_dir||"").trim()),n.btnText="开始升级",ae.value?.showModal(),n.canRun&&z()}async function z(){if(n.id){n.tagsLoading=!0,n.tagsError="";try{const d=await S("apps/tags",{id:n.id});n.tags=d.tags||[],n.tagMode="list",(!n.tag||!n.tags.includes(n.tag))&&(n.tag=n.tags.find(t=>t!=="latest")||n.tag||"")}catch(d){n.tagsError=d?.message??"拉取失败"}finally{n.tagsLoading=!1}}}async function F(){if(n.running)return;if(!n.canRun){const U=[];n.envName||U.push("绑定环境节点"),n.deployDir||U.push("填写部署目录"),window.alert(`无法升级:请先关闭本弹窗,点该部署的「编辑」完成 —— ${U.join("、")},保存后再来升级。`);return}const d=(n.tag||"").trim();if(!I(d)&&!window.confirm(`未选择明确版本号(当前 = ${d||"空 → 后端回退 latest"})。 +import{g as me,j as Te,k as _e,o as a,c as o,a as e,d as v,l as k,F as M,r as J,n as O,t as i,m as de,p as ye,q as h,v as A,s as pe,x as ke,y as N,z as ee,A as Z,B as Me,_ as ge,C as he,D as Ne,E as Ie,G as De,H as Se,b as Ue,I as Ve}from"./6O01ZZML.js";import{u as be}from"./BgasD__e.js";import{u as ve}from"./xsgK-Nup.js";import{r as ce,n as fe,R as Oe}from"./7m3DvxFn.js";const Ae={class:"card"},Ee={class:"card-head"},Re={key:0,class:"py-14 text-center text-slate-400 text-sm"},je={class:"min-w-0"},Le={class:"dep-name"},ze={class:"truncate"},Be={key:0,class:"chip chip-warn"},Pe={key:1,class:"chip chip-ok"},qe={key:2,class:"chip"},Fe={class:"dep-sub"},He=["title"],Je={class:"flex items-center gap-1.5"},Ge={key:0,class:"text-[10.5px] text-amber-700",title:"latest 是可变 tag,升级后无法从列表看出实际版本"},Ye={class:"min-w-0"},Ke={class:"dep-acts"},Qe=["onClick"],We=["onClick"],Xe=["disabled","title","onClick"],Ze=["onClick"],et=["disabled","onClick"],tt=["disabled","onClick"],st=["onClick"],lt={class:"modal-box max-w-3xl"},nt={class:"font-bold text-lg"},at={key:0,class:"tabs tabs-boxed bg-slate-100 w-fit my-3"},ot={class:"grid grid-cols-2 gap-3"},it={class:"form-control"},dt=["value"],rt={class:"form-control"},ut=["placeholder"],pt={class:"grid grid-cols-2 gap-3"},ct={class:"form-control"},mt=["value"],gt={class:"form-control"},bt={class:"label py-1"},vt={class:"label-text text-sm font-medium"},xt={value:0},ft=["value"],_t={class:"grid grid-cols-3 gap-3"},yt={class:"form-control"},kt={class:"form-control"},ht=["placeholder"],$t={class:"form-control"},wt={class:"form-control"},Ct={class:"label py-1"},Tt={class:"label-text text-sm font-medium"},Mt={class:"form-control"},Nt={key:0,class:"text-sm space-y-0.5"},It={class:"form-control"},Dt={class:"flex items-center gap-2 cursor-pointer"},St={class:"modal-action"},Ut=["disabled"],Vt=["disabled"],Ot={key:1,class:"text-[11px] text-slate-400 text-right"},At={class:"modal-box max-w-2xl"},Et={class:"text-sm text-slate-500 mt-1"},Rt={class:"grid grid-cols-[76px_1fr] gap-x-3 gap-y-1 text-xs mt-4"},jt={class:"mt-3"},Lt={class:"flex items-center justify-between mb-1"},zt=["disabled"],Bt={key:0,class:"flex gap-2"},Pt=["disabled"],qt={value:""},Ft=["value"],Ht=["value"],Jt=["disabled"],Gt=["disabled"],Yt={key:2,class:"text-xs text-amber-600 mt-1"},Kt={key:3,class:"text-xs text-amber-600 mt-1"},Qt={key:0,class:"mt-3"},Wt={class:"flex items-center gap-2 text-xs mb-1"},Xt={key:0,class:"loading loading-spinner loading-xs text-amber-500"},Zt={key:1,class:"text-green-600 font-semibold"},es={key:2,class:"text-red-600 font-semibold"},ts={class:"text-slate-400"},ss={class:"modal-action"},ls=["disabled"],ns=["disabled"],as={method:"dialog",class:"modal-backdrop"},os=["disabled"],is={class:"modal-box"},ds={class:"text-sm text-slate-500 mt-1"},rs={class:"grid grid-cols-2 gap-3 mt-4"},us={key:0,class:"text-sm mt-3"},ps={key:0,class:"bg-slate-50 border border-slate-200 rounded-lg p-3"},cs={class:"flex justify-between items-center text-xs mb-1.5"},ms={class:"text-slate-600"},gs={class:"font-mono text-slate-400"},bs=["value"],vs={class:"mt-2 text-xs space-y-0.5"},xs={key:1,class:"text-red-600"},fs={key:2,class:"bg-green-50 border border-green-100 rounded-lg p-3"},_s={class:"grid grid-cols-2 gap-x-4 gap-y-1 text-xs text-slate-600 mb-2"},ys={class:"border-t border-green-100 pt-2 text-xs"},ks={class:"text-slate-500"},hs={class:"font-mono text-slate-700"},$s={class:"modal-action"},ws=["disabled"],Cs=["disabled"],Ts={method:"dialog",class:"modal-backdrop"},Ms=["disabled"],Ns=me({__name:"AppDeployTab",props:{appName:{},defaultImage:{},deployments:{},envs:{}},emits:["refresh","configure"],setup(P,{expose:E,emit:G}){const Y=P,B=G,{consoleApi:S}=be(),{success:$,error:g}=ve(),x=Te(),K=_e();function Q(d){const t=(d||"").match(/\/([^/?]+)\?/);return t?t[1]:d?"(自定义)":"未配置"}function I(d){const t=(d||"").trim();return!!t&&t!=="latest"}function f(d){return d?Y.envs.find(t=>t.id===d)?.name??"#"+d:""}function q(d){let t=(d.base_url||"").trim().replace(/\/+$/,"");if(!t){g("该部署未配置对外地址(base_url)");return}/^https?:\/\//i.test(t)||(t="https://"+t),window.open(t+"/swagger/index.html","_blank","noopener")}function R(d){window.confirm(`向部署 #${d} 发送一条配置 reload 事件?`)&&S("config/notify",{app_id:d,type:"all",action:"reload"}).then(t=>$("已发送 → "+(t&&t.subject))).catch(t=>g(t?.message??"发送失败"))}function V(d){window.confirm(`删除部署「${d.name||"#"+d.id}」?(不影响应用自身的库)`)&&S("apps/del",{id:d.id}).then(()=>{$("已删除"),B("refresh")}).catch(t=>g(t?.message??"删除失败"))}const W=N(null),j=N(!1),y=N("existing"),m=ee({id:0,name:"",region:"",env_id:0,base_url:"",service_dsn:"",deploy_dir:"",image_name:"",image_tag:"",remark:"",enabled:!0}),L=N(!1),_=N(!1),D=ee({show:!1,apiOk:!1,apiMsg:"",dbOk:!1,dbMsg:""}),ne=Z(()=>{const d=new Set(Y.deployments.filter(t=>t.id!==m.id).map(t=>fe(t.region)).filter(Boolean));return Oe.filter(t=>!d.has(t.value)||t.value===m.region)});function b(){L.value=!1,D.show=!1}function s(d){y.value=d,b()}function c(){j.value=!1,y.value="existing",Object.assign(m,{id:0,name:"",region:"",env_id:0,base_url:"",service_dsn:"",deploy_dir:"",image_name:Y.defaultImage,image_tag:"",remark:"",enabled:!0}),b(),W.value?.showModal()}function r(d){j.value=!0,y.value=d.status==="pending"?"deploy":"existing",Object.assign(m,{id:d.id,name:d.name||"",region:fe(d.region),env_id:d.env_id||0,base_url:d.base_url||"",service_dsn:d.service_dsn||"",deploy_dir:d.deploy_dir||"",image_name:d.image_name||"",image_tag:d.image_tag||"",remark:d.remark||"",enabled:!!d.enabled}),b(),W.value?.showModal()}async function u(){const d=m.base_url.trim(),t=m.service_dsn.trim();if(!d||!t){g("请先填应用地址和业务库 DSN");return}_.value=!0;try{const l=await S("apps/test",{base_url:d,service_dsn:t});D.apiOk=!!l.api_ok,D.apiMsg=l.api_msg,D.dbOk=!!l.db_ok,D.dbMsg=l.db_msg,D.show=!0,L.value=!!l.ok,L.value?$("检测通过,可以保存"):g("检测未通过")}catch(l){g(l?.message??"测试失败")}finally{_.value=!1}}async function te(){if(!m.name.trim()){g("请填部署名称");return}if(!j.value&&y.value==="existing"&&!L.value){g("请先「测试连接」通过再保存");return}if(y.value==="deploy"&&!m.env_id){g("请选择部署目标环境");return}const d={app_name:Y.appName,status:y.value==="deploy"?"pending":"existing",name:m.name,region:m.region,env_id:Number(m.env_id)||0,base_url:y.value==="deploy"?"":m.base_url,service_dsn:m.service_dsn,deploy_dir:m.deploy_dir,image_name:m.image_name,image_tag:m.image_tag,remark:m.remark,enabled:m.enabled};let t="apps/add";j.value&&m.id&&(d.id=Number(m.id),t="apps/update");try{await S(t,d),$("保存成功"),W.value?.close(),B("refresh")}catch(l){g(l?.message??"保存失败")}}const ae=N(null),X=N(null),n=ee({id:0,label:"",envName:"",deployDir:"",tag:"",tags:[],tagMode:"list",tagsLoading:!1,tagsError:"",log:"",show:!1,running:!1,ok:!1,canRun:!1,btnText:"开始升级"});function re(d){n.id=d.id,n.label="部署:"+(d.name||"部署#"+d.id)+(d.region?" · "+ce(d.region):""),n.envName=f(d.env_id),n.deployDir=d.deploy_dir||"",n.tag=d.image_tag||"",n.tags=[],n.tagMode="list",n.tagsError="",n.log="",n.show=!1,n.running=!1,n.ok=!1,n.canRun=!!(d.env_id&&(d.deploy_dir||"").trim()),n.btnText="开始升级",ae.value?.showModal(),n.canRun&&z()}async function z(){if(n.id){n.tagsLoading=!0,n.tagsError="";try{const d=await S("apps/tags",{id:n.id});n.tags=d.tags||[],n.tagMode="list",(!n.tag||!n.tags.includes(n.tag))&&(n.tag=n.tags.find(t=>t!=="latest")||n.tag||"")}catch(d){n.tagsError=d?.message??"拉取失败"}finally{n.tagsLoading=!1}}}async function F(){if(n.running)return;if(!n.canRun){const U=[];n.envName||U.push("绑定环境节点"),n.deployDir||U.push("填写部署目录"),window.alert(`无法升级:请先关闭本弹窗,点该部署的「编辑」完成 —— ${U.join("、")},保存后再来升级。`);return}const d=(n.tag||"").trim();if(!I(d)&&!window.confirm(`未选择明确版本号(当前 = ${d||"空 → 后端回退 latest"})。 latest 是可变 tag,升级后列表无法体现具体版本号,确定继续?`)||!window.confirm(`确认升级【${n.label}】? 目标版本:${d||"latest"} 将 SSH 连到「${n.envName}」,在 ${n.deployDir} 执行 docker compose 拉新镜像并重启容器。`))return;n.running=!0,n.show=!0,n.ok=!1,n.log="",n.btnText="升级中…";let t=null,l=!1;function w(U){n.log+=(n.log?` diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/ChqjEN2N.js b/apps/admin/.output/public/_nuxt/32XpWsQL.js similarity index 55% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/ChqjEN2N.js rename to apps/admin/.output/public/_nuxt/32XpWsQL.js index 076029f3..8f3606a6 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/ChqjEN2N.js +++ b/apps/admin/.output/public/_nuxt/32XpWsQL.js @@ -1 +1 @@ -import{_ as Ot}from"./32rNuZwS.js";import{u as dt}from"./NtXZuCUg.js";import{h as Vt,R as Tt,a as zt}from"./PN667bHc.js";import{g as _t,C as vt,o,c as l,a,t as r,l as f,m as pt,b as Q,w as it,d as q,F as k,r as E,n as G,y as _,A as F,_ as mt,j as It,q as H,s as P,z as ct,L as U}from"./DSy_gLdM.js";import{n as qt,R as ut}from"./7m3DvxFn.js";const Ht={class:"ab-head"},Pt={class:"ab-ico"},Ut={class:"ab-title"},Gt={key:0,class:"ab-sub"},jt={class:"ab-sub"},Yt={key:0,class:"ab-list"},Wt={class:"ab-name"},Jt={key:0,class:"ab-chip"},Zt={class:"ab-chip ab-chip-scope"},Kt={class:"ab-msg"},Qt={key:1,class:"ab-streak"},Xt={key:0,class:"ab-more"},te=12,ee=_t({__name:"SvcAlertBanner",setup(ft,{expose:y}){const{webApi:D}=dt(),x=_([]),m=_(0),b=_(0),A=_(0),g=_(!1),w=_(!1),S=F(()=>Vt(A.value));function j(u){const p=u.app_name?u.app_name:"全局";return u.region?`${p} · ${Tt[u.region]||"区域"+u.region}`:p}function R(u){return zt(u)}async function M(){try{const u=await D("getsvcalerts",{limit:te});x.value=u.alerts||[],m.value=u.error_count||0,b.value=u.warn_count||0,A.value=u.last_run||0,w.value=m.value+b.value>x.value.length,g.value=m.value>0}catch{x.value=[],m.value=0,b.value=0}}return vt(M),y({load:M}),(u,p)=>{const O=Ot;return m.value+b.value>0?(o(),l("div",{key:0,class:G(["alert-banner",m.value>0?"lv-error":"lv-warn"])},[a("div",Ht,[a("span",Pt,r(m.value>0?"🚨":"⚠️"),1),a("div",Ut,[a("strong",null,r(m.value>0?`${m.value} 项第三方服务不可用`:`${b.value} 项第三方服务存在隐患`),1),m.value>0&&b.value>0?(o(),l("span",Gt,",另有 "+r(b.value)+" 项隐患",1)):f("",!0),a("span",jt," · 最近巡检 "+r(pt(S)),1)]),a("button",{class:"ab-btn",onClick:p[0]||(p[0]=d=>g.value=!g.value)},r(g.value?"收起":"展开详情"),1),Q(O,{to:"/svcinspect",class:"ab-btn ab-btn-primary"},{default:it(()=>[...p[1]||(p[1]=[q("前往巡检",-1)])]),_:1})]),g.value?(o(),l("div",Yt,[(o(!0),l(k,null,E(x.value,d=>(o(),l("div",{key:`${d.app_name}/${d.svc_id}/${d.region}`,class:"ab-item"},[a("span",{class:G(["ab-dot",d.status==="error"?"d-error":"d-warn"])},null,2),a("span",Wt,r(d.name||d.svc_id),1),d.provider?(o(),l("span",Jt,r(d.provider),1)):f("",!0),a("span",Zt,r(j(d)),1),a("span",Kt,r(R(d)),1),d.fail_streak>1?(o(),l("span",Qt,"连续失败 "+r(d.fail_streak)+" 次",1)):f("",!0)]))),128)),w.value?(o(),l("div",Xt,[q(" 仅显示前 "+r(x.value.length)+" 条,其余请到",1),Q(O,{to:"/svcinspect",class:"ab-link"},{default:it(()=>[...p[2]||(p[2]=[q("服务巡检",-1)])]),_:1}),p[3]||(p[3]=q("查看 ",-1))])):f("",!0)])):f("",!0)],2)):f("",!0)}}}),se=Object.assign(mt(ee,[["__scopeId","data-v-3dd2fb7c"]]),{__name:"SvcAlertBanner"}),ae={class:"panel p-4 mb-5"},ne={class:"flex flex-wrap items-end gap-3"},oe={key:0,class:"form-control"},le=["value"],re={key:1,class:"form-control"},ie=["value"],ce={class:"form-control"},ue=["value"],de={key:2,class:"form-control"},_e=["value"],ve={class:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-8"},pe={class:"body"},me={class:"lbl"},fe={class:"val"},ye={class:"today-wrap mb-8"},be={class:"sec-title hero",style:{"margin-bottom":"16px"}},ge={class:"tag",style:{color:"#0369a1",background:"#dbeafe"}},he={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},ke={class:"today-card-top"},Ee={class:"lbl"},Fe={class:"val"},we={class:"foot"},xe={key:0,class:"delta up"},Ce={class:"grid grid-cols-1 xl:grid-cols-2 gap-6"},De={class:"panel-head"},Ae=["stroke"],Se=["d"],Me={class:"font-semibold text-slate-700 text-sm"},Be={key:0,class:"ml-auto text-xs text-slate-400"},Ne={key:1,class:"ml-auto flex items-center gap-1"},Le=["onClick"],$e={class:"px-5 py-4"},Re={class:"grid grid-cols-2 sm:grid-cols-3 gap-2.5"},Oe={class:"stat-label"},Ve={class:"stat-val"},Te={key:0,style:{height:"170px","margin-top":"1rem"}},ze=_t({__name:"dashboard",setup(ft){const y=It(),{webApi:D,consoleApi:x}=dt(),m={new_user_count:["👥","#EEF2FF","#6366F1"],active_user_count:["🟢","#ECFDF5","#10B981"],bind_device_count:["📱","#E0F2FE","#0EA5E9"],qr_active_count:["🔳","#FCE7F3","#EC4899"],order_paid_count:["🧾","#FEF3C7","#F59E0B"],order_paid_amount:["💰","#FEE2E2","#EF4444"],pay_user_count:["⭐","#FFF7ED","#F97316"],meet_second:["🎙️","#CFFAFE","#22D3EE"],trade_second:["🌐","#F3E8FF","#8B5CF6"]},b=[["new_user_count","累计用户",!1],["bind_device_count","累计绑定设备",!1],["qr_active_count","累计二维码激活",!1],["order_paid_count","累计支付订单",!1],["order_paid_amount","累计支付金额",!0],["meet_second","累计会议时长",!1],["trade_second","累计翻译时长",!1]],A=[["new_user_count","新增用户",!1],["active_user_count","活跃用户",!1],["qr_active_count","二维码激活",!1],["order_paid_count","支付订单",!1],["order_paid_amount","支付金额",!0],["pay_user_count","付费用户",!1],["meet_second","会议时长",!1,!0],["trade_second","翻译时长",!1,!0]],g=[{key:"user",title:"用户增长",color:"#6366F1",tint:"#EEF2FF",icon:"M17 20h5v-2a4 4 0 00-3-3.87M9 20H4v-2a4 4 0 013-3.87m6-1.13a4 4 0 10-4-4 4 4 0 004 4z",stats:[["new_user_count","新增用户"],["active_user_count","活跃用户"],["login_user_count","登录用户"],["login_count","登录次数"]],lines:[["new_user_count","新增用户","#6366F1"],["active_user_count","活跃用户","#34D399"]]},{key:"device",title:"设备激活绑定",color:"#0EA5E9",tint:"#E0F2FE",icon:"M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z",stats:[["active_device_count","已激活"],["bind_device_count","已绑定"]],lines:[["active_device_count","已激活","#0EA5E9"],["bind_device_count","已绑定","#818CF8"]]},{key:"qrcode",title:"二维码激活",color:"#EC4899",tint:"#FCE7F3",icon:"M12 4v1m6 11h2m-6 0h-1v4m-6-4H5m14 0h-2m-6-7H5m0 0V5m0 4v6m14-6V5h-4M5 5h4M5 19h4m6 0h4v-4M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6z",stats:[["qr_active_count","二维码激活次数"]],lines:[["qr_active_count","二维码激活","#EC4899"]]},{key:"order",title:"订单支付",color:"#F59E0B",tint:"#FEF3C7",icon:"M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z",stats:[["order_create_count","创建订单"],["order_paid_count","支付订单"],["order_failed_count","失败订单"],["pay_user_count","付费用户"],["order_paid_amount","支付金额",!0],["order_create_amount","创建金额",!0]],lines:[["order_paid_count","支付订单","#F59E0B"],["order_create_count","创建订单","#FCD34D"]]},{key:"meeting",title:"会议",color:"#22D3EE",tint:"#CFFAFE",icon:"M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z",stats:[["meet_count","会议次数"],["meet_second","会议时长",!1,!0],["grant_meet_second","发放会议时长",!1,!0]],lines:[["meet_count","会议次数","#22D3EE"],["meet_second","会议时长(秒)","#0EA5E9"]]},{key:"translate",title:"翻译",color:"#8B5CF6",tint:"#F3E8FF",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129",stats:[["trade_count","翻译次数"],["trade_second","翻译时长",!1,!0],["trade_words","翻译字数"],["grant_trade_second","发放翻译时长",!1,!0]],lines:[["trade_count","翻译次数","#8B5CF6"],["trade_second","翻译时长(秒)","#A78BFA"]]}],w=F(()=>y.identity===3&&!y.brandid),S=F(()=>y.isBrandAccount||y.isDealer),j=F(()=>y.apps),R=F(()=>y.regions),M=F(()=>y.products.map(t=>parseInt(t)).filter(t=>!isNaN(t))),u=["new_user_count","active_user_count","qr_active_count"],p=F(()=>w.value?b.filter(t=>!u.includes(t[0])):b),O=F(()=>w.value?A.filter(t=>!u.includes(t[0])):A),d=F(()=>w.value?g.filter(t=>t.key!=="user"&&t.key!=="qrcode"):g),yt=[[7,"7天"],[30,"30天"],[90,"90天"],[0,"全部"]],c=ct({app:"",region:"",product:"",channel:""}),B=_([]),Y=_([]),W=_([]),bt=F(()=>{if(w.value&&R.value.length){const t=new Set(R.value.map(e=>qt(e)));return ut.filter(e=>t.has(e.value))}return ut}),X=_({}),tt=_({}),J=_({}),et=_({}),st=_("实时"),Z=_({}),V=ct({});g.forEach(t=>{V[t.key]=30});function T(t){const e=t.getFullYear(),n=("0"+(t.getMonth()+1)).slice(-2),s=("0"+t.getDate()).slice(-2);return parseInt(e+n+s)}function gt(t){if(!t)return{start:0,end:0};const e=new Date,n=new Date;return n.setDate(n.getDate()-(t-1)),{start:T(n),end:T(e)}}function ht(t,e){return t=Number(t)||0,e?"¥"+(t/100).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}):t.toLocaleString()}function kt(t){t=Math.max(0,Math.floor(Number(t)||0));const e=Math.floor(t/3600),n=Math.floor(t%3600/60),s=t%60;return e>0?e+"时"+n+"分":n>0?n+"分"+s+"秒":s+"秒"}function K(t,e,n){return n?kt(t):ht(t,e)}function Et(t){const e=String(t);return e.length===8?e.slice(4,6)+"-"+e.slice(6,8):e}function Ft(t,e){return t=Number(t)||0,e=Number(e)||0,e===0?t>0?null:0:(t-e)/e*100}function N(t){return m[t]||["📊","#f1f5f9","#94a3b8"]}function wt(t){const e=t[0]==="bind_device_count"||t[0]==="active_device_count"?tt.value:X.value,n=t[0]==="meet_second"||t[0]==="trade_second";return K(e[t[0]],t[2],n)}function xt(t){return K(J.value[t[0]],t[2],!!t[3])}function L(t){const e=Ft(J.value[t[0]],et.value[t[0]]);if(e===null)return{type:"new",arrow:"",abs:""};const n=e>0?"up":e<0?"down":"flat",s=e>0?"▲":e<0?"▼":"—";return{type:n,arrow:s,abs:Math.abs(e).toFixed(1)}}function Ct(t,e){return K((Z.value[t.key]||{})[e[0]],e[2],e[3])}function z(){const t={};return c.app!==""&&(t.app_id=c.app),c.region!==""&&(t.region=c.region),c.product!==""&&(t.product_id=parseInt(String(c.product))),nt(t),t}function at(){const t={};return c.product!==""&&(t.product_id=parseInt(String(c.product))),nt(t),t}function nt(t){c.channel!==""&&(t.channel_id=c.channel==="__none__"?"":c.channel)}async function C(t,e){try{return{code:0,data:await D(t,e)??{}}}catch{return null}}async function Dt(){const t=await C("getstatssummary",z());X.value=t&&t.code===0&&t.data?t.data:{};const e=await C("getstatssummary",at());tt.value=e&&e.code===0&&e.data?e.data:{}}async function At(){const t=T(new Date),e=new Date;e.setDate(e.getDate()-1);const n=T(e),s=z();s.start_day=t,s.end_day=t;const i=z();i.start_day=n,i.end_day=n;const h=await C("getstatssummary",s);J.value=h&&h.code===0&&h.data?h.data:{};const v=await C("getstatssummary",i);et.value=v&&v.code===0&&v.data?v.data:{};const I=new Date,$t=("0"+(I.getMonth()+1)).slice(-2),Rt=("0"+I.getDate()).slice(-2);st.value=$t+"-"+Rt+" 实时"}async function ot(t){let e;if(t.key==="device")e=at();else{const v=gt(V[t.key]);e=z(),e.start_day=v.start,e.end_day=v.end}const n=await C("getstatssummary",e),s=n&&n.code===0&&n.data?n.data:{};if(Z.value={...Z.value,[t.key]:s},t.key==="device")return;const i=await C("getstatstrend",e),h=i&&i.code===0?i.data||[]:[];Bt(t,h)}function St(t,e){V[t]=e;const n=g.find(s=>s.key===t);n&&ot(n)}function lt(){Dt(),At(),d.value.forEach(t=>ot(t))}const rt={},$={};function Mt(t,e){e&&(rt[t]=e)}function Bt(t,e){const n=window.Chart,s=rt[t.key];if(!n||!s)return;const i=e.map(v=>Et(v.stat_day)),h=t.lines.map(v=>({label:v[1],data:e.map(I=>Number(I[v[0]])||0),borderColor:v[2],backgroundColor:v[2]+"22",tension:.35,fill:!0,pointRadius:0,borderWidth:2}));if($[t.key]){$[t.key].data.labels=i,$[t.key].data.datasets=h,$[t.key].update();return}$[t.key]=new n(s,{type:"line",data:{labels:i,datasets:h},options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{boxWidth:10,padding:12,font:{size:11}}}},scales:{x:{ticks:{maxTicksLimit:8,font:{size:10},color:"#94a3b8"},grid:{display:!1}},y:{beginAtZero:!0,ticks:{precision:0,maxTicksLimit:5,font:{size:10},color:"#94a3b8"},grid:{color:"#f1f5f9"}}},interaction:{mode:"index",intersect:!1}}})}async function Nt(){if(S.value)B.value=[];else if(w.value)B.value=j.value.map(t=>({value:t,label:t}));else try{const t=await x("apps/list",{}),e=Array.isArray(t)?t:[],n=[...new Set(e.map(s=>s.app_name||s.name||"").filter(Boolean))];B.value=n.map(s=>({value:s,label:s}))}catch{B.value=[]}try{const t=await D("getproducts",{});let e=t&&t.products?t.products:[];w.value&&M.value.length&&(e=e.filter(n=>M.value.includes(n.id))),W.value=e.map(n=>({value:n.id,label:(n.devicename||"产品#"+n.id)+" (#"+n.id+")"}))}catch{W.value=[]}try{const t=await D("getchannels",{status:-1}),e=t&&t.channels?t.channels:[];Y.value=e.map(n=>({value:n.id,label:(n.name||"渠道商")+" ("+n.id+")"}))}catch{Y.value=[]}}function Lt(){return new Promise(t=>{if(window.Chart)return t();const e=document.createElement("script");e.src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js",e.onload=()=>t(),e.onerror=()=>t(),document.head.appendChild(e)})}return vt(async()=>{await Lt(),await Nt(),lt()}),(t,e)=>{const n=se;return o(),l("div",null,[Q(n),a("div",ae,[a("div",ne,[S.value?f("",!0):(o(),l("div",oe,[e[5]||(e[5]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"应用")],-1)),H(a("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>c.app=s),class:"select select-bordered select-sm w-40"},[e[4]||(e[4]=a("option",{value:""},"全部应用",-1)),(o(!0),l(k,null,E(B.value,s=>(o(),l("option",{key:s.value,value:s.value},r(s.label),9,le))),128))],512),[[P,c.app]])])),S.value?f("",!0):(o(),l("div",re,[e[7]||(e[7]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"区域")],-1)),H(a("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>c.region=s),class:"select select-bordered select-sm w-32"},[e[6]||(e[6]=a("option",{value:""},"全部区域",-1)),(o(!0),l(k,null,E(bt.value,s=>(o(),l("option",{key:s.value,value:s.value},r(s.label),9,ie))),128))],512),[[P,c.region]])])),a("div",ce,[e[9]||(e[9]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"产品")],-1)),H(a("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>c.product=s),class:"select select-bordered select-sm w-48"},[e[8]||(e[8]=a("option",{value:""},"全部产品",-1)),(o(!0),l(k,null,E(W.value,s=>(o(),l("option",{key:s.value,value:s.value},r(s.label),9,ue))),128))],512),[[P,c.product]])]),pt(y).isDealer?f("",!0):(o(),l("div",de,[e[12]||(e[12]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"渠道商")],-1)),H(a("select",{"onUpdate:modelValue":e[3]||(e[3]=s=>c.channel=s),class:"select select-bordered select-sm w-48"},[e[10]||(e[10]=a("option",{value:""},"全部渠道商",-1)),e[11]||(e[11]=a("option",{value:"__none__"},"未分配渠道",-1)),(o(!0),l(k,null,E(Y.value,s=>(o(),l("option",{key:s.value,value:s.value},r(s.label),9,_e))),128))],512),[[P,c.channel]])])),a("button",{class:"btn btn-primary btn-sm text-white",onClick:lt},"查询"),e[13]||(e[13]=a("span",{class:"text-xs text-slate-400 ml-auto self-center"},"顶部为全量总览;各版面右上角可单独选时间周期",-1))])]),e[18]||(e[18]=a("div",{class:"sec-title muted"},[a("span",{class:"bar",style:{background:"#cbd5e1"}}),a("h2",null,"累计数据"),a("span",{class:"sub"},"全量累计 · 随筛选条件变化")],-1)),a("div",ve,[(o(!0),l(k,null,E(p.value,s=>(o(),l("div",{key:s[0],class:"cum-card"},[a("span",{class:"ico",style:U({background:N(s[0])[1]})},r(N(s[0])[0]),5),a("div",pe,[a("div",me,r(s[1]),1),a("div",fe,r(wt(s)),1)])]))),128))]),a("div",ye,[a("div",be,[e[14]||(e[14]=a("span",{class:"bar",style:{background:"linear-gradient(180deg,#0EA5E9,#22D3EE)"}},null,-1)),e[15]||(e[15]=a("h2",null,"今日数据",-1)),a("span",ge,r(st.value),1),e[16]||(e[16]=a("span",{class:"sub"},"今日 0 点至现在 · 含较昨日同比(设备类无日期维度,仅见累计)",-1))]),a("div",he,[(o(!0),l(k,null,E(O.value,s=>(o(),l("div",{key:s[0],class:"today-card"},[a("span",{class:"accent",style:U({background:N(s[0])[2]})},null,4),a("div",ke,[a("span",Ee,r(s[1]),1),a("span",{class:"ico",style:U({background:N(s[0])[1]})},r(N(s[0])[0]),5)]),a("div",Fe,r(xt(s)),1),a("div",we,[L(s).type==="new"?(o(),l("span",xe,"新")):L(s).type!=="none"?(o(),l("span",{key:1,class:G(["delta",L(s).type])},r(L(s).arrow)+" "+r(L(s).abs)+"%",3)):f("",!0),e[17]||(e[17]=a("span",null,"较昨日",-1))])]))),128))])]),e[19]||(e[19]=a("div",{class:"sec-title"},[a("span",{class:"bar",style:{background:"linear-gradient(180deg,#10B981,#22D3EE)"}}),a("h2",null,"趋势分析"),a("span",{class:"sub"},"各版面右上角可独立选择时间周期")],-1)),a("div",Ce,[(o(!0),l(k,null,E(d.value,s=>(o(),l("div",{key:s.key,class:"panel"},[a("div",De,[a("span",{class:"panel-dot",style:U({background:s.tint})},[(o(),l("svg",{width:"17",height:"17",fill:"none",viewBox:"0 0 24 24",stroke:s.color},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:s.icon},null,8,Se)],8,Ae))],4),a("span",Me,r(s.title),1),s.key==="device"?(o(),l("span",Be,"当前累计 · 无日期维度")):(o(),l("div",Ne,[(o(),l(k,null,E(yt,i=>a("button",{key:i[0],class:G(["tbtn",{"tbtn-on":i[0]===V[s.key]}]),onClick:h=>St(s.key,Number(i[0]))},r(i[1]),11,Le)),64))]))]),a("div",$e,[a("div",Re,[(o(!0),l(k,null,E(s.stats,i=>(o(),l("div",{key:i[0],class:"stat-box"},[a("div",Oe,r(i[1]),1),a("div",Ve,r(Ct(s,i)),1)]))),128))]),s.key!=="device"?(o(),l("div",Te,[a("canvas",{ref_for:!0,ref:i=>Mt(s.key,i)},null,512)])):f("",!0)])]))),128))])])}}}),Ge=mt(ze,[["__scopeId","data-v-fb791e6a"]]);export{Ge as default}; +import{_ as Ot}from"./CDB8L8go.js";import{u as dt}from"./BgasD__e.js";import{h as Vt,R as Tt,a as zt}from"./PN667bHc.js";import{g as _t,C as vt,o,c as l,a,t as r,l as f,m as pt,b as Q,w as it,d as q,F as k,r as E,n as G,y as _,A as w,_ as mt,j as It,q as H,s as P,z as ct,L as U}from"./6O01ZZML.js";import{n as qt,R as ut}from"./7m3DvxFn.js";const Ht={class:"ab-head"},Pt={class:"ab-ico"},Ut={class:"ab-title"},Gt={key:0,class:"ab-sub"},jt={class:"ab-sub"},Yt={key:0,class:"ab-list"},Wt={class:"ab-name"},Jt={key:0,class:"ab-chip"},Zt={class:"ab-chip ab-chip-scope"},Kt={class:"ab-msg"},Qt={key:1,class:"ab-streak"},Xt={key:0,class:"ab-more"},te=12,ee=_t({__name:"SvcAlertBanner",setup(ft,{expose:y}){const{webApi:D}=dt(),x=_([]),m=_(0),b=_(0),S=_(0),g=_(!1),F=_(!1),M=w(()=>Vt(S.value));function j(u){const p=u.app_name?u.app_name:"全局";return u.region?`${p} · ${Tt[u.region]||"区域"+u.region}`:p}function R(u){return zt(u)}async function B(){try{const u=await D("getsvcalerts",{limit:te});x.value=u.alerts||[],m.value=u.error_count||0,b.value=u.warn_count||0,S.value=u.last_run||0,F.value=m.value+b.value>x.value.length,g.value=m.value>0}catch{x.value=[],m.value=0,b.value=0}}return vt(B),y({load:B}),(u,p)=>{const O=Ot;return m.value+b.value>0?(o(),l("div",{key:0,class:G(["alert-banner",m.value>0?"lv-error":"lv-warn"])},[a("div",Ht,[a("span",Pt,r(m.value>0?"🚨":"⚠️"),1),a("div",Ut,[a("strong",null,r(m.value>0?`${m.value} 项第三方服务不可用`:`${b.value} 项第三方服务存在隐患`),1),m.value>0&&b.value>0?(o(),l("span",Gt,",另有 "+r(b.value)+" 项隐患",1)):f("",!0),a("span",jt," · 最近巡检 "+r(pt(M)),1)]),a("button",{class:"ab-btn",onClick:p[0]||(p[0]=d=>g.value=!g.value)},r(g.value?"收起":"展开详情"),1),Q(O,{to:"/svcinspect",class:"ab-btn ab-btn-primary"},{default:it(()=>[...p[1]||(p[1]=[q("前往巡检",-1)])]),_:1})]),g.value?(o(),l("div",Yt,[(o(!0),l(k,null,E(x.value,d=>(o(),l("div",{key:`${d.app_name}/${d.svc_id}/${d.region}`,class:"ab-item"},[a("span",{class:G(["ab-dot",d.status==="error"?"d-error":"d-warn"])},null,2),a("span",Wt,r(d.name||d.svc_id),1),d.provider?(o(),l("span",Jt,r(d.provider),1)):f("",!0),a("span",Zt,r(j(d)),1),a("span",Kt,r(R(d)),1),d.fail_streak>1?(o(),l("span",Qt,"连续失败 "+r(d.fail_streak)+" 次",1)):f("",!0)]))),128)),F.value?(o(),l("div",Xt,[q(" 仅显示前 "+r(x.value.length)+" 条,其余请到",1),Q(O,{to:"/svcinspect",class:"ab-link"},{default:it(()=>[...p[2]||(p[2]=[q("服务巡检",-1)])]),_:1}),p[3]||(p[3]=q("查看 ",-1))])):f("",!0)])):f("",!0)],2)):f("",!0)}}}),se=Object.assign(mt(ee,[["__scopeId","data-v-3dd2fb7c"]]),{__name:"SvcAlertBanner"}),ae={class:"panel p-4 mb-5"},ne={class:"flex flex-wrap items-end gap-3"},oe={key:0,class:"form-control"},le=["value"],re={key:1,class:"form-control"},ie=["value"],ce={class:"form-control"},ue=["value"],de={key:2,class:"form-control"},_e=["value"],ve={class:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-8"},pe={class:"body"},me={class:"lbl"},fe={class:"val"},ye={class:"today-wrap mb-8"},be={class:"sec-title hero",style:{"margin-bottom":"16px"}},ge={class:"tag",style:{color:"#0369a1",background:"#dbeafe"}},he={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},ke={class:"today-card-top"},Ee={class:"lbl"},we={class:"val"},Fe={class:"foot"},xe={key:0,class:"delta up"},Ce={class:"grid grid-cols-1 xl:grid-cols-2 gap-6"},De={class:"panel-head"},Ae=["stroke"],Se=["d"],Me={class:"font-semibold text-slate-700 text-sm"},Be={key:0,class:"ml-auto text-xs text-slate-400"},Ne={key:1,class:"ml-auto flex items-center gap-1"},Le=["onClick"],$e={class:"px-5 py-4"},Re={class:"grid grid-cols-2 sm:grid-cols-3 gap-2.5"},Oe={class:"stat-label"},Ve={class:"stat-val"},Te={key:0,style:{height:"170px","margin-top":"1rem"}},ze=_t({__name:"dashboard",setup(ft){const y=It(),{webApi:D,consoleApi:x}=dt(),m={new_user_count:["👥","#EEF2FF","#6366F1"],active_user_count:["🟢","#ECFDF5","#10B981"],bind_device_count:["📱","#E0F2FE","#0EA5E9"],qr_active_count:["🔳","#FCE7F3","#EC4899"],order_paid_count:["🧾","#FEF3C7","#F59E0B"],order_paid_amount:["💰","#FEE2E2","#EF4444"],pay_user_count:["⭐","#FFF7ED","#F97316"],meet_second:["🎙️","#CFFAFE","#22D3EE"],trade_second:["🌐","#F3E8FF","#8B5CF6"]},b=[["new_user_count","累计用户",!1],["bind_device_count","累计绑定设备",!1],["qr_active_count","累计二维码激活",!1],["order_paid_count","累计支付订单",!1],["order_paid_amount","累计支付金额",!0],["meet_second","累计会议时长",!1],["trade_second","累计翻译时长",!1]],S=[["new_user_count","新增用户",!1],["active_user_count","活跃用户",!1],["qr_active_count","二维码激活",!1],["order_paid_count","支付订单",!1],["order_paid_amount","支付金额",!0],["pay_user_count","付费用户",!1],["meet_second","会议时长",!1,!0],["trade_second","翻译时长",!1,!0]],g=[{key:"user",title:"用户增长",color:"#6366F1",tint:"#EEF2FF",icon:"M17 20h5v-2a4 4 0 00-3-3.87M9 20H4v-2a4 4 0 013-3.87m6-1.13a4 4 0 10-4-4 4 4 0 004 4z",stats:[["new_user_count","新增用户"],["active_user_count","活跃用户"],["login_user_count","登录用户"],["login_count","登录次数"]],lines:[["new_user_count","新增用户","#6366F1"],["active_user_count","活跃用户","#34D399"]]},{key:"device",title:"设备激活绑定",color:"#0EA5E9",tint:"#E0F2FE",icon:"M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z",stats:[["active_device_count","已激活"],["bind_device_count","已绑定"]],lines:[["active_device_count","已激活","#0EA5E9"],["bind_device_count","已绑定","#818CF8"]]},{key:"qrcode",title:"二维码激活",color:"#EC4899",tint:"#FCE7F3",icon:"M12 4v1m6 11h2m-6 0h-1v4m-6-4H5m14 0h-2m-6-7H5m0 0V5m0 4v6m14-6V5h-4M5 5h4M5 19h4m6 0h4v-4M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6z",stats:[["qr_active_count","二维码激活次数"]],lines:[["qr_active_count","二维码激活","#EC4899"]]},{key:"order",title:"订单支付",color:"#F59E0B",tint:"#FEF3C7",icon:"M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z",stats:[["order_create_count","创建订单"],["order_paid_count","支付订单"],["order_failed_count","失败订单"],["pay_user_count","付费用户"],["order_paid_amount","支付金额",!0],["order_create_amount","创建金额",!0]],lines:[["order_paid_count","支付订单","#F59E0B"],["order_create_count","创建订单","#FCD34D"]]},{key:"meeting",title:"会议",color:"#22D3EE",tint:"#CFFAFE",icon:"M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z",stats:[["meet_count","会议次数"],["meet_second","会议时长",!1,!0],["grant_meet_second","发放会议时长",!1,!0]],lines:[["meet_count","会议次数","#22D3EE"],["meet_second","会议时长(秒)","#0EA5E9"]]},{key:"translate",title:"翻译",color:"#8B5CF6",tint:"#F3E8FF",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129",stats:[["trade_count","翻译次数"],["trade_second","翻译时长",!1,!0],["trade_words","翻译字数"],["grant_trade_second","发放翻译时长",!1,!0]],lines:[["trade_count","翻译次数","#8B5CF6"],["trade_second","翻译时长(秒)","#A78BFA"]]}],F=w(()=>y.identity===3&&!y.brandid),M=w(()=>y.isBrandAccount||y.isDealer),j=w(()=>y.apps),R=w(()=>y.regions),B=w(()=>y.products.map(t=>parseInt(t)).filter(t=>!isNaN(t))),u=["new_user_count","active_user_count","qr_active_count"],p=w(()=>F.value?b.filter(t=>!u.includes(t[0])):b),O=w(()=>F.value?S.filter(t=>!u.includes(t[0])):S),d=w(()=>F.value?g.filter(t=>t.key!=="user"&&t.key!=="qrcode"):g),yt=[[7,"7天"],[30,"30天"],[90,"90天"],[0,"全部"]],c=ct({app:"",region:"",product:"",channel:""}),C=_([]),Y=_([]),W=_([]),bt=w(()=>{if(F.value&&R.value.length){const t=new Set(R.value.map(e=>qt(e)));return ut.filter(e=>t.has(e.value))}return ut}),X=_({}),tt=_({}),J=_({}),et=_({}),st=_("实时"),Z=_({}),V=ct({});g.forEach(t=>{V[t.key]=30});function T(t){const e=t.getFullYear(),n=("0"+(t.getMonth()+1)).slice(-2),s=("0"+t.getDate()).slice(-2);return parseInt(e+n+s)}function gt(t){if(!t)return{start:0,end:0};const e=new Date,n=new Date;return n.setDate(n.getDate()-(t-1)),{start:T(n),end:T(e)}}function ht(t,e){return t=Number(t)||0,e?"¥"+(t/100).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}):t.toLocaleString()}function kt(t){t=Math.max(0,Math.floor(Number(t)||0));const e=Math.floor(t/3600),n=Math.floor(t%3600/60),s=t%60;return e>0?e+"时"+n+"分":n>0?n+"分"+s+"秒":s+"秒"}function K(t,e,n){return n?kt(t):ht(t,e)}function Et(t){const e=String(t);return e.length===8?e.slice(4,6)+"-"+e.slice(6,8):e}function wt(t,e){return t=Number(t)||0,e=Number(e)||0,e===0?t>0?null:0:(t-e)/e*100}function N(t){return m[t]||["📊","#f1f5f9","#94a3b8"]}function Ft(t){const e=t[0]==="bind_device_count"||t[0]==="active_device_count"?tt.value:X.value,n=t[0]==="meet_second"||t[0]==="trade_second";return K(e[t[0]],t[2],n)}function xt(t){return K(J.value[t[0]],t[2],!!t[3])}function L(t){const e=wt(J.value[t[0]],et.value[t[0]]);if(e===null)return{type:"new",arrow:"",abs:""};const n=e>0?"up":e<0?"down":"flat",s=e>0?"▲":e<0?"▼":"—";return{type:n,arrow:s,abs:Math.abs(e).toFixed(1)}}function Ct(t,e){return K((Z.value[t.key]||{})[e[0]],e[2],e[3])}function z(){const t={};return c.app!==""&&(t.app_id=c.app),c.region!==""&&(t.region=c.region),c.product!==""&&(t.product_id=parseInt(String(c.product))),nt(t),t}function at(){const t={};return c.product!==""&&(t.product_id=parseInt(String(c.product))),nt(t),t}function nt(t){c.channel!==""&&(t.channel_id=c.channel==="__none__"?"":c.channel)}async function A(t,e){try{return{code:0,data:await D(t,e)??{}}}catch{return null}}async function Dt(){const t=await A("getstatssummary",z());X.value=t&&t.code===0&&t.data?t.data:{};const e=await A("getstatssummary",at());tt.value=e&&e.code===0&&e.data?e.data:{}}async function At(){const t=T(new Date),e=new Date;e.setDate(e.getDate()-1);const n=T(e),s=z();s.start_day=t,s.end_day=t;const i=z();i.start_day=n,i.end_day=n;const h=await A("getstatssummary",s);J.value=h&&h.code===0&&h.data?h.data:{};const v=await A("getstatssummary",i);et.value=v&&v.code===0&&v.data?v.data:{};const I=new Date,$t=("0"+(I.getMonth()+1)).slice(-2),Rt=("0"+I.getDate()).slice(-2);st.value=$t+"-"+Rt+" 实时"}async function ot(t){let e;if(t.key==="device")e=at();else{const v=gt(V[t.key]);e=z(),e.start_day=v.start,e.end_day=v.end}const n=await A("getstatssummary",e),s=n&&n.code===0&&n.data?n.data:{};if(Z.value={...Z.value,[t.key]:s},t.key==="device")return;const i=await A("getstatstrend",e),h=i&&i.code===0?i.data||[]:[];Bt(t,h)}function St(t,e){V[t]=e;const n=g.find(s=>s.key===t);n&&ot(n)}function lt(){Dt(),At(),d.value.forEach(t=>ot(t))}const rt={},$={};function Mt(t,e){e&&(rt[t]=e)}function Bt(t,e){const n=window.Chart,s=rt[t.key];if(!n||!s)return;const i=e.map(v=>Et(v.stat_day)),h=t.lines.map(v=>({label:v[1],data:e.map(I=>Number(I[v[0]])||0),borderColor:v[2],backgroundColor:v[2]+"22",tension:.35,fill:!0,pointRadius:0,borderWidth:2}));if($[t.key]){$[t.key].data.labels=i,$[t.key].data.datasets=h,$[t.key].update();return}$[t.key]=new n(s,{type:"line",data:{labels:i,datasets:h},options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{boxWidth:10,padding:12,font:{size:11}}}},scales:{x:{ticks:{maxTicksLimit:8,font:{size:10},color:"#94a3b8"},grid:{display:!1}},y:{beginAtZero:!0,ticks:{precision:0,maxTicksLimit:5,font:{size:10},color:"#94a3b8"},grid:{color:"#f1f5f9"}}},interaction:{mode:"index",intersect:!1}}})}async function Nt(){if(M.value)try{const e=(await D("getmyapps",{}))?.apps??[],n=[...new Set(e.map(s=>s.app_name||s.name).filter(Boolean))];C.value=n.map(s=>({value:s,label:s}))}catch{C.value=[]}else if(F.value)C.value=j.value.map(t=>({value:t,label:t}));else try{const t=await x("apps/list",{}),e=Array.isArray(t)?t:[],n=[...new Set(e.map(s=>s.app_name||s.name||"").filter(Boolean))];C.value=n.map(s=>({value:s,label:s}))}catch{C.value=[]}try{const t=await D("getproducts",{});let e=t&&t.products?t.products:[];F.value&&B.value.length&&(e=e.filter(n=>B.value.includes(n.id))),W.value=e.map(n=>({value:n.id,label:(n.devicename||"产品#"+n.id)+" (#"+n.id+")"}))}catch{W.value=[]}try{const t=await D("getchannels",{status:-1}),e=t&&t.channels?t.channels:[];Y.value=e.map(n=>({value:n.id,label:(n.name||"渠道商")+" ("+n.id+")"}))}catch{Y.value=[]}}function Lt(){return new Promise(t=>{if(window.Chart)return t();const e=document.createElement("script");e.src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js",e.onload=()=>t(),e.onerror=()=>t(),document.head.appendChild(e)})}return vt(async()=>{await Lt(),await Nt(),lt()}),(t,e)=>{const n=se;return o(),l("div",null,[Q(n),a("div",ae,[a("div",ne,[!M.value||C.value.length?(o(),l("div",oe,[e[5]||(e[5]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"应用")],-1)),H(a("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>c.app=s),class:"select select-bordered select-sm w-40"},[e[4]||(e[4]=a("option",{value:""},"全部应用",-1)),(o(!0),l(k,null,E(C.value,s=>(o(),l("option",{key:s.value,value:s.value},r(s.label),9,le))),128))],512),[[P,c.app]])])):f("",!0),M.value?f("",!0):(o(),l("div",re,[e[7]||(e[7]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"区域")],-1)),H(a("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>c.region=s),class:"select select-bordered select-sm w-32"},[e[6]||(e[6]=a("option",{value:""},"全部区域",-1)),(o(!0),l(k,null,E(bt.value,s=>(o(),l("option",{key:s.value,value:s.value},r(s.label),9,ie))),128))],512),[[P,c.region]])])),a("div",ce,[e[9]||(e[9]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"产品")],-1)),H(a("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>c.product=s),class:"select select-bordered select-sm w-48"},[e[8]||(e[8]=a("option",{value:""},"全部产品",-1)),(o(!0),l(k,null,E(W.value,s=>(o(),l("option",{key:s.value,value:s.value},r(s.label),9,ue))),128))],512),[[P,c.product]])]),pt(y).isDealer?f("",!0):(o(),l("div",de,[e[12]||(e[12]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"渠道商")],-1)),H(a("select",{"onUpdate:modelValue":e[3]||(e[3]=s=>c.channel=s),class:"select select-bordered select-sm w-48"},[e[10]||(e[10]=a("option",{value:""},"全部渠道商",-1)),e[11]||(e[11]=a("option",{value:"__none__"},"未分配渠道",-1)),(o(!0),l(k,null,E(Y.value,s=>(o(),l("option",{key:s.value,value:s.value},r(s.label),9,_e))),128))],512),[[P,c.channel]])])),a("button",{class:"btn btn-primary btn-sm text-white",onClick:lt},"查询"),e[13]||(e[13]=a("span",{class:"text-xs text-slate-400 ml-auto self-center"},"顶部为全量总览;各版面右上角可单独选时间周期",-1))])]),e[18]||(e[18]=a("div",{class:"sec-title muted"},[a("span",{class:"bar",style:{background:"#cbd5e1"}}),a("h2",null,"累计数据"),a("span",{class:"sub"},"全量累计 · 随筛选条件变化")],-1)),a("div",ve,[(o(!0),l(k,null,E(p.value,s=>(o(),l("div",{key:s[0],class:"cum-card"},[a("span",{class:"ico",style:U({background:N(s[0])[1]})},r(N(s[0])[0]),5),a("div",pe,[a("div",me,r(s[1]),1),a("div",fe,r(Ft(s)),1)])]))),128))]),a("div",ye,[a("div",be,[e[14]||(e[14]=a("span",{class:"bar",style:{background:"linear-gradient(180deg,#0EA5E9,#22D3EE)"}},null,-1)),e[15]||(e[15]=a("h2",null,"今日数据",-1)),a("span",ge,r(st.value),1),e[16]||(e[16]=a("span",{class:"sub"},"今日 0 点至现在 · 含较昨日同比(设备类无日期维度,仅见累计)",-1))]),a("div",he,[(o(!0),l(k,null,E(O.value,s=>(o(),l("div",{key:s[0],class:"today-card"},[a("span",{class:"accent",style:U({background:N(s[0])[2]})},null,4),a("div",ke,[a("span",Ee,r(s[1]),1),a("span",{class:"ico",style:U({background:N(s[0])[1]})},r(N(s[0])[0]),5)]),a("div",we,r(xt(s)),1),a("div",Fe,[L(s).type==="new"?(o(),l("span",xe,"新")):L(s).type!=="none"?(o(),l("span",{key:1,class:G(["delta",L(s).type])},r(L(s).arrow)+" "+r(L(s).abs)+"%",3)):f("",!0),e[17]||(e[17]=a("span",null,"较昨日",-1))])]))),128))])]),e[19]||(e[19]=a("div",{class:"sec-title"},[a("span",{class:"bar",style:{background:"linear-gradient(180deg,#10B981,#22D3EE)"}}),a("h2",null,"趋势分析"),a("span",{class:"sub"},"各版面右上角可独立选择时间周期")],-1)),a("div",Ce,[(o(!0),l(k,null,E(d.value,s=>(o(),l("div",{key:s.key,class:"panel"},[a("div",De,[a("span",{class:"panel-dot",style:U({background:s.tint})},[(o(),l("svg",{width:"17",height:"17",fill:"none",viewBox:"0 0 24 24",stroke:s.color},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:s.icon},null,8,Se)],8,Ae))],4),a("span",Me,r(s.title),1),s.key==="device"?(o(),l("span",Be,"当前累计 · 无日期维度")):(o(),l("div",Ne,[(o(),l(k,null,E(yt,i=>a("button",{key:i[0],class:G(["tbtn",{"tbtn-on":i[0]===V[s.key]}]),onClick:h=>St(s.key,Number(i[0]))},r(i[1]),11,Le)),64))]))]),a("div",$e,[a("div",Re,[(o(!0),l(k,null,E(s.stats,i=>(o(),l("div",{key:i[0],class:"stat-box"},[a("div",Oe,r(i[1]),1),a("div",Ve,r(Ct(s,i)),1)]))),128))]),s.key!=="device"?(o(),l("div",Te,[a("canvas",{ref_for:!0,ref:i=>Mt(s.key,i)},null,512)])):f("",!0)])]))),128))])])}}}),Ge=mt(ze,[["__scopeId","data-v-449e8f97"]]);export{Ge as default}; diff --git a/apps/admin/.output/public/_nuxt/32rNuZwS.js b/apps/admin/.output/public/_nuxt/32rNuZwS.js deleted file mode 100644 index 7e9b3ee6..00000000 --- a/apps/admin/.output/public/_nuxt/32rNuZwS.js +++ /dev/null @@ -1 +0,0 @@ -import{g as E,k as L,e as q,C as U,S as j,U as N,Q as H,V as I,W as P,X as _,Y as F,Z as V,$ as D,y as W,a0 as O,a1 as z,m as f,P as M,A as x,a2 as $,a3 as B,a4 as Q,a5 as G,a6 as X,a7 as Y,a8 as Z}from"./DSy_gLdM.js";const J=(...t)=>t.find(r=>r!==void 0);function T(t){let r=t.replace(/[\u0000-\u001F\s]+/g,"");for(;r.toLowerCase().startsWith("view-source:");)r=r.slice(12);const c=r.indexOf(":");return c>0&&Q(r.slice(0,c+1))?null:t}function K(t){const r=t.componentName||"NuxtLink";function c(e){return typeof e=="string"&&e.startsWith("#")}function w(e,s,d){const a=d??t.trailingSlash;if(!e||a!=="append"&&a!=="remove")return e;if(typeof e=="string")return R(e,a);const i="path"in e&&e.path!==void 0?e.path:s(e).path;return{...e,name:void 0,path:R(i,a)}}function k(e){const s=L(),d=G(),a=x(()=>!!f(e.target)&&f(e.target)!=="_self"),i=x(()=>{const o=f(e.to)||f(e.href)||"";return typeof o=="string"&&B(o,{acceptRelative:!0})}),C=_("RouterLink"),y=typeof C!="string"?C.useLink:void 0,v=x(()=>{if(f(e.external))return!0;const o=f(e.to)||f(e.href)||"";return typeof o=="object"?!1:o===""||i.value}),l=x(()=>{const o=f(e.to)||f(e.href)||"";return v.value?o:w(o,s.resolve,f(e.trailingSlash))}),b=v.value?void 0:y?.({...e,to:l,viewTransition:f(e.viewTransition)}),m=x(()=>{const o=f(e.trailingSlash)??t.trailingSlash;if(!l.value||i.value||c(l.value)){const h=l.value;return typeof h=="string"?T(h):h}if(v.value){const h=typeof l.value=="object"&&"path"in l.value?O(l.value):l.value,p=typeof h=="object"?s.resolve(h).href:h,u=typeof p=="string"?T(p):p;return u===null?null:R(u,o)}return typeof l.value=="object"?s.resolve(l.value)?.href??null:R($(d.app.baseURL,l.value),o)});return{to:l,hasTarget:a,isAbsoluteUrl:i,isExternal:v,href:m,isActive:b?.isActive??x(()=>l.value===s.currentRoute.value.path),isExactActive:b?.isExactActive??x(()=>l.value===s.currentRoute.value.path),route:b?.route??x(()=>s.resolve(l.value)),async navigate(o){m.value!==null&&await M(m.value,{replace:f(e.replace),external:v.value||a.value})}}}return E({name:r,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},prefetchOn:{type:[String,Object],default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1},trailingSlash:{type:String,default:void 0,required:!1}},useLink:k,setup(e,{slots:s}){const d=L(),{to:a,href:i,navigate:C,isExternal:y,hasTarget:v,isAbsoluteUrl:l}=k(e),b=D(!1),m=W(null),o=u=>{m.value=e.custom?u?.$el?.nextElementSibling:u?.$el};function h(u){return!b.value&&(typeof e.prefetchOn=="string"?e.prefetchOn===u:e.prefetchOn?.[u]??t.prefetchOn?.[u])&&(e.prefetch??t.prefetch)!==!1&&e.noPrefetch!==!0&&e.target!=="_blank"&&!ae()}async function p(u=q()){if(b.value||i.value===null)return;b.value=!0;const g=typeof a.value=="string"?a.value:y.value?O(a.value):d.resolve(a.value).fullPath,n=y.value?new URL(g,window.location.href).href:g;await Promise.all([u.hooks.callHook("link:prefetch",n)?.catch(()=>{}),!y.value&&!v.value&&z(a.value,d).catch(()=>{})])}if(h("visibility")){const u=q();let g,n=null;U(()=>{const S=ee();j(()=>{g=N(()=>{m?.value?.tagName&&(n=S.observe(m.value,async()=>{n?.(),n=null,await p(u)}))})})}),H(()=>{g&&I(g),n?.(),n=null})}return()=>{if(!y.value&&!v.value&&!c(a.value)){const n={ref:o,to:a.value,activeClass:e.activeClass||t.activeClass,exactActiveClass:e.exactActiveClass||t.exactActiveClass,replace:e.replace,ariaCurrentValue:e.ariaCurrentValue,custom:e.custom};return e.custom||(h("interaction")&&(n.onPointerenter=p.bind(null,void 0),n.onFocus=p.bind(null,void 0)),b.value&&(n.class=e.prefetchedClass||t.prefetchedClass),n.rel=e.rel||void 0),P(_("RouterLink"),n,s.default)}const u=e.target||null,g=J(e.noRel?"":e.rel,t.externalRelAttribute,l.value||v.value?"noopener noreferrer":"")||null;return e.custom?s.default?s.default({href:i.value,navigate:C,prefetch:p,get route(){if(!i.value)return;const n=new URL(i.value,window.location.href);return{path:n.pathname,fullPath:n.pathname,get query(){return F(n.search)},hash:n.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:i.value}},rel:g,target:u,isExternal:y.value||v.value,isActive:!1,isExactActive:!1}):null:P("a",{ref:m,href:i.value||null,rel:g,target:u,onClick:async n=>{if(!(y.value||v.value)){n.preventDefault();try{const S=V(i.value??"");return await(e.replace?d.replace(S):d.push(S))}finally{if(c(a.value)){const S=a.value.slice(1);let A=S;try{A=decodeURIComponent(S)}catch{}document.getElementById(A)?.focus()}}}}},s.default?.())}}})}const le=K(Z);function R(t,r){const c=r==="append"?X:Y;return B(t)&&!t.startsWith("http")?t:c(t,!0)}function ee(){const t=q();if(t._observer)return t._observer;let r=null;const c=new Map,w=(e,s)=>(r||=new IntersectionObserver(d=>{for(const a of d){const i=c.get(a.target);(a.isIntersecting||a.intersectionRatio>0)&&i&&i()}}),c.set(e,s),r.observe(e),()=>{c.delete(e),r?.unobserve(e),c.size===0&&(r?.disconnect(),r=null)});return t._observer={observe:w}}const te=/2g/;function ae(){const t=navigator.connection;return!!(t&&(t.saveData||te.test(t.effectiveType)))}export{le as _}; diff --git a/apps/admin/.output/public/_nuxt/DSy_gLdM.js b/apps/admin/.output/public/_nuxt/6O01ZZML.js similarity index 59% rename from apps/admin/.output/public/_nuxt/DSy_gLdM.js rename to apps/admin/.output/public/_nuxt/6O01ZZML.js index 8dab27e8..55638477 100644 --- a/apps/admin/.output/public/_nuxt/DSy_gLdM.js +++ b/apps/admin/.output/public/_nuxt/6O01ZZML.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CUR2rcGX.js","./NtXZuCUg.js","./EeX3zgoF.js","./7m3DvxFn.js","./_name_.Dk1VjRtn.css","./BAkLwAvM.js","./accounts.maMJCEm_.css","./w_7nuVJ9.js","./DD3V9C6_.js","./D4Um3zt0.js","./LangSelect.Dkm6e8RK.css","./agents.DyZqnyeq.css","./BZKwWPxz.js","./DBzpctzV.js","./index.dJfvJhMb.css","./PbGQRI_R.js","./calltranslate.blzoinPN.css","./BDDumZok.js","./channels.DbnY_8Am.css","./Bs6lDwyi.js","./ChqjEN2N.js","./32rNuZwS.js","./PN667bHc.js","./dashboard.BgaEnlue.css","./BFjsaYIf.js","./DVest5s8.js","./CLee_yMD.js","./B8hrjpgL.js","./Bp86Q8ON.js","./Cy52Ecc0.js","./Bad2XFSd.js","./meetingsvc.DgYSEQUA.css","./B9UHsPCY.js","./meettemplates.DBfDdqB2.css","./C9zSjFPi.js","./D5EVRMZE.js","./DAaIRqev.js","./serviceconfig.UIJazB1z.css","./rUi_Q6ng.js","./DlgycG-C.js","./statlog.DNW5XZ2N.css","./BSO50kj0.js","./svcinspect.H9TdRqZ5.css","./yis2MfHE.js","./systemconfig.MaL8_AEr.css","./GUJrhX2S.js","./BKXYxnNU.js","./index.B6hNDrw5.css","./DhKR78CK.js","./default.miyQHb0v.css","./Bm2Gu08J.js","./obp34o1K.js","./error-404.Dm-MYrAh.css","./D8jvJLAX.js","./error-500.DM8oqBl3.css"])))=>i.map(i=>d[i]); -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();function po(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const de={},_n=[],pt=()=>{},ka=()=>!1,lr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Wr=e=>e.startsWith("onUpdate:"),Te=Object.assign,mo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},pu=Object.prototype.hasOwnProperty,ae=(e,t)=>pu.call(e,t),G=Array.isArray,bn=e=>In(e)==="[object Map]",Mn=e=>In(e)==="[object Set]",Jo=e=>In(e)==="[object Date]",mu=e=>In(e)==="[object RegExp]",X=e=>typeof e=="function",pe=e=>typeof e=="string",Ue=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",Oa=e=>(se(e)||X(e))&&X(e.then)&&X(e.catch),Ma=Object.prototype.toString,In=e=>Ma.call(e),gu=e=>In(e).slice(8,-1),go=e=>In(e)==="[object Object]",zr=e=>pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,en=po(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),qr=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},yu=/-\w/g,Le=qr(e=>e.replace(yu,t=>t.slice(1).toUpperCase())),_u=/\B([A-Z])/g,Kt=qr(e=>e.replace(_u,"-$1").toLowerCase()),Gr=qr(e=>e.charAt(0).toUpperCase()+e.slice(1)),ds=qr(e=>e?`on${Gr(e)}`:""),dt=(e,t)=>!Object.is(e,t),vn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Jr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},La=e=>{const t=pe(e)?Number(e):NaN;return isNaN(t)?e:t};let Yo;const Yr=()=>Yo||(Yo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Xr(e){if(G(e)){const t={};for(let n=0;n{if(n){const r=n.split(vu);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Qr(e){let t="";if(pe(e))t=e;else if(G(e))for(let n=0;nBt(n,t))}const Ha=e=>!!(e&&e.__v_isRef===!0),Au=e=>pe(e)?e:e==null?"":G(e)||se(e)&&(e.toString===Ma||!X(e.toString))?Ha(e)?Au(e.value):JSON.stringify(e,$a,2):String(e),$a=(e,t)=>Ha(t)?$a(e,t.value):bn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[hs(r,o)+" =>"]=s,n),{})}:Mn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>hs(n))}:Ue(t)?hs(t):se(t)&&!G(t)&&!go(t)?String(t):t,hs=(e,t="")=>{var n;return Ue(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Ee;class Na{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Ee&&(Ee.active?(this.parent=Ee,this.index=(Ee.scopes||(Ee.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0){if(Ee===this)Ee=this.prevScope;else{let t=Ee;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(qn){let t=qn;for(qn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;zn;){let t=zn;for(zn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Va(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ka(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),wo(r),Pu(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function Ds(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Wa(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Wa(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===tr)||(e.globalVersion=tr,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ds(e))))return;e.flags|=2;const t=e.dep,n=he,r=tt;he=e,tt=!0;try{Va(e);const s=e.fn(e._value);(t.version===0||dt(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{he=n,tt=r,Ka(e),e.flags&=-3}}function wo(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)wo(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Pu(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let tt=!0;const za=[];function At(){za.push(tt),tt=!1}function Pt(){const e=za.pop();tt=e===void 0?!0:e}function Xo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=he;he=void 0;try{t()}finally{he=n}}}let tr=0;class xu{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Eo{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!he||!tt||he===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==he)n=this.activeLink=new xu(he,this),he.deps?(n.prevDep=he.depsTail,he.depsTail.nextDep=n,he.depsTail=n):he.deps=he.depsTail=n,qa(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=he.depsTail,n.nextDep=void 0,he.depsTail.nextDep=n,he.depsTail=n,he.deps===n&&(he.deps=r)}return n}trigger(t){this.version++,tr++,this.notify(t)}notify(t){bo();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{vo()}}}function qa(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)qa(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Ar=new WeakMap,tn=Symbol(""),Hs=Symbol(""),nr=Symbol("");function xe(e,t,n){if(tt&&he){let r=Ar.get(e);r||Ar.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new Eo),s.map=r,s.key=n),s.track()}}function Et(e,t,n,r,s,o){const i=Ar.get(e);if(!i){tr++;return}const a=l=>{l&&l.trigger()};if(bo(),t==="clear")i.forEach(a);else{const l=G(e),f=l&&zr(n);if(l&&n==="length"){const c=Number(r);i.forEach((u,h)=>{(h==="length"||h===nr||!Ue(h)&&h>=c)&&a(u)})}else switch((n!==void 0||i.has(void 0))&&a(i.get(n)),f&&a(i.get(nr)),t){case"add":l?f&&a(i.get("length")):(a(i.get(tn)),bn(e)&&a(i.get(Hs)));break;case"delete":l||(a(i.get(tn)),bn(e)&&a(i.get(Hs)));break;case"set":bn(e)&&a(i.get(tn));break}}vo()}function ku(e,t){const n=Ar.get(e);return n&&n.get(t)}function un(e){const t=ne(e);return t===e?t:(xe(t,"iterate",nr),Be(e)?t:t.map(rt))}function es(e){return xe(e=ne(e),"iterate",nr),e}function ut(e,t){return gt(e)?Tn(mt(e)?rt(t):t):rt(t)}const Ou={__proto__:null,[Symbol.iterator](){return ms(this,Symbol.iterator,e=>ut(this,e))},concat(...e){return un(this).concat(...e.map(t=>G(t)?un(t):t))},entries(){return ms(this,"entries",e=>(e[1]=ut(this,e[1]),e))},every(e,t){return yt(this,"every",e,t,void 0,arguments)},filter(e,t){return yt(this,"filter",e,t,n=>n.map(r=>ut(this,r)),arguments)},find(e,t){return yt(this,"find",e,t,n=>ut(this,n),arguments)},findIndex(e,t){return yt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return yt(this,"findLast",e,t,n=>ut(this,n),arguments)},findLastIndex(e,t){return yt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return yt(this,"forEach",e,t,void 0,arguments)},includes(...e){return gs(this,"includes",e)},indexOf(...e){return gs(this,"indexOf",e)},join(e){return un(this).join(e)},lastIndexOf(...e){return gs(this,"lastIndexOf",e)},map(e,t){return yt(this,"map",e,t,void 0,arguments)},pop(){return $n(this,"pop")},push(...e){return $n(this,"push",e)},reduce(e,...t){return Qo(this,"reduce",e,t)},reduceRight(e,...t){return Qo(this,"reduceRight",e,t)},shift(){return $n(this,"shift")},some(e,t){return yt(this,"some",e,t,void 0,arguments)},splice(...e){return $n(this,"splice",e)},toReversed(){return un(this).toReversed()},toSorted(e){return un(this).toSorted(e)},toSpliced(...e){return un(this).toSpliced(...e)},unshift(...e){return $n(this,"unshift",e)},values(){return ms(this,"values",e=>ut(this,e))}};function ms(e,t,n){const r=es(e),s=r[t]();return r!==e&&!Be(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.done||(o.value=n(o.value)),o}),s}const Mu=Array.prototype;function yt(e,t,n,r,s,o){const i=es(e),a=i!==e&&!Be(e),l=i[t];if(l!==Mu[t]){const u=l.apply(e,o);return a?rt(u):u}let f=n;i!==e&&(a?f=function(u,h){return n.call(this,ut(e,u),h,e)}:n.length>2&&(f=function(u,h){return n.call(this,u,h,e)}));const c=l.call(i,f,r);return a&&s?s(c):c}function Qo(e,t,n,r){const s=es(e),o=s!==e&&!Be(e);let i=n,a=!1;s!==e&&(o?(a=r.length===0,i=function(f,c,u){return a&&(a=!1,f=ut(e,f)),n.call(this,f,ut(e,c),u,e)}):n.length>3&&(i=function(f,c,u){return n.call(this,f,c,u,e)}));const l=s[t](i,...r);return a?ut(e,l):l}function gs(e,t,n){const r=ne(e);xe(r,"iterate",nr);const s=r[t](...n);return(s===-1||s===!1)&&ts(n[0])?(n[0]=ne(n[0]),r[t](...n)):s}function $n(e,t,n=[]){At(),bo();const r=ne(e)[t].apply(e,n);return vo(),Pt(),r}const Iu=po("__proto__,__v_isRef,__isVue"),Ga=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ue));function Lu(e){Ue(e)||(e=String(e));const t=ne(this);return xe(t,"has",e),t.hasOwnProperty(e)}class Ja{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?Ku:Za:o?Qa:Xa).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=G(t);if(!s){let l;if(i&&(l=Ou[n]))return l;if(n==="hasOwnProperty")return Lu}const a=Reflect.get(t,n,me(t)?t:r);if((Ue(n)?Ga.has(n):Iu(n))||(s||xe(t,"get",n),o))return a;if(me(a)){const l=i&&zr(n)?a:a.value;return s&&se(l)?Ns(l):l}return se(a)?s?Ns(a):ot(a):a}}class Ya extends Ja{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];const i=G(t)&&zr(n);if(!this._isShallow){const f=gt(o);if(!Be(r)&&!gt(r)&&(o=ne(o),r=ne(r)),!i&&me(o)&&!me(r))return f||(o.value=r),!0}const a=i?Number(n)e,hr=e=>Reflect.getPrototypeOf(e);function ju(e,t,n){return function(...r){const s=this.__v_raw,o=ne(s),i=bn(o),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,f=s[e](...r),c=n?$s:t?Tn:rt;return!t&&xe(o,"iterate",l?Hs:tn),Te(Object.create(f),{next(){const{value:u,done:h}=f.next();return h?{value:u,done:h}:{value:a?[c(u[0]),c(u[1])]:c(u),done:h}}})}}function pr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Fu(e,t){const n={get(s){const o=this.__v_raw,i=ne(o),a=ne(s);e||(dt(s,a)&&xe(i,"get",s),xe(i,"get",a));const{has:l}=hr(i),f=t?$s:e?Tn:rt;if(l.call(i,s))return f(o.get(s));if(l.call(i,a))return f(o.get(a));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&xe(ne(s),"iterate",tn),s.size},has(s){const o=this.__v_raw,i=ne(o),a=ne(s);return e||(dt(s,a)&&xe(i,"has",s),xe(i,"has",a)),s===a?o.has(s):o.has(s)||o.has(a)},forEach(s,o){const i=this,a=i.__v_raw,l=ne(a),f=t?$s:e?Tn:rt;return!e&&xe(l,"iterate",tn),a.forEach((c,u)=>s.call(o,f(c),f(u),i))}};return Te(n,e?{add:pr("add"),set:pr("set"),delete:pr("delete"),clear:pr("clear")}:{add(s){const o=ne(this),i=hr(o),a=ne(s),l=!t&&!Be(s)&&!gt(s)?a:s;return i.has.call(o,l)||dt(s,l)&&i.has.call(o,s)||dt(a,l)&&i.has.call(o,a)||(o.add(l),Et(o,"add",l,l)),this},set(s,o){!t&&!Be(o)&&!gt(o)&&(o=ne(o));const i=ne(this),{has:a,get:l}=hr(i);let f=a.call(i,s);f||(s=ne(s),f=a.call(i,s));const c=l.call(i,s);return i.set(s,o),f?dt(o,c)&&Et(i,"set",s,o):Et(i,"add",s,o),this},delete(s){const o=ne(this),{has:i,get:a}=hr(o);let l=i.call(o,s);l||(s=ne(s),l=i.call(o,s)),a&&a.call(o,s);const f=o.delete(s);return l&&Et(o,"delete",s,void 0),f},clear(){const s=ne(this),o=s.size!==0,i=s.clear();return o&&Et(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=ju(s,e,t)}),n}function So(e,t){const n=Fu(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(ae(n,s)&&s in r?n:r,s,o)}const Bu={get:So(!1,!1)},Uu={get:So(!1,!0)},Vu={get:So(!0,!1)};const Xa=new WeakMap,Qa=new WeakMap,Za=new WeakMap,Ku=new WeakMap;function Wu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ot(e){return gt(e)?e:To(e,!1,Hu,Bu,Xa)}function Ze(e){return To(e,!1,Nu,Uu,Qa)}function Ns(e){return To(e,!0,$u,Vu,Za)}function To(e,t,n,r,s){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=s.get(e);if(o)return o;const i=Wu(gu(e));if(i===0)return e;const a=new Proxy(e,i===2?r:n);return s.set(e,a),a}function mt(e){return gt(e)?mt(e.__v_raw):!!(e&&e.__v_isReactive)}function gt(e){return!!(e&&e.__v_isReadonly)}function Be(e){return!!(e&&e.__v_isShallow)}function ts(e){return e?!!e.__v_raw:!1}function ne(e){const t=e&&e.__v_raw;return t?ne(t):e}function Ro(e){return!ae(e,"__v_skip")&&Object.isExtensible(e)&&Ia(e,"__v_skip",!0),e}const rt=e=>se(e)?ot(e):e,Tn=e=>se(e)?Ns(e):e;function me(e){return e?e.__v_isRef===!0:!1}function nt(e){return el(e,!1)}function Ut(e){return el(e,!0)}function el(e,t){return me(e)?e:new zu(e,t)}class zu{constructor(t,n){this.dep=new Eo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ne(t),this._value=n?t:rt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||Be(t)||gt(t);t=r?t:ne(t),dt(t,n)&&(this._rawValue=t,this._value=r?t:rt(t),this.dep.trigger())}}function le(e){return me(e)?e.value:e}function ft(e){return X(e)?e():le(e)}const qu={get:(e,t,n)=>t==="__v_raw"?e:le(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return me(s)&&!me(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function tl(e){return mt(e)?e:new Proxy(e,qu)}function Gu(e){const t=G(e)?new Array(e.length):{};for(const n in e)t[n]=rl(e,n);return t}class Ju{constructor(t,n,r){this._object=t,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0,this._key=Ue(n)?n:String(n),this._raw=ne(t);let s=!0,o=t;if(!G(t)||Ue(this._key)||!zr(this._key))do s=!ts(o)||Be(o);while(s&&(o=o.__v_raw));this._shallow=s}get value(){let t=this._object[this._key];return this._shallow&&(t=le(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&me(this._raw[this._key])){const n=this._object[this._key];if(me(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return ku(this._raw,this._key)}}class Yu{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function nl(e,t,n){return me(e)?e:X(e)?new Yu(e):se(e)&&arguments.length>1?rl(e,t,n):nt(e)}function rl(e,t,n){return new Ju(e,t,n)}class Xu{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Eo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=tr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&he!==this)return Ua(this,!0),!0}get value(){const t=this.dep.track();return Wa(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Qu(e,t,n=!1){let r,s;return X(e)?r=e:(r=e.get,s=e.set),new Xu(r,s,n)}const mr={},Pr=new WeakMap;let Qt;function Zu(e,t=!1,n=Qt){if(n){let r=Pr.get(n);r||Pr.set(n,r=[]),r.push(e)}}function ef(e,t,n=de){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:a,call:l}=n,f=_=>s?_:Be(_)||s===!1||s===0?St(_,1):St(_);let c,u,h,d,g=!1,y=!1;if(me(e)?(u=()=>e.value,g=Be(e)):mt(e)?(u=()=>f(e),g=!0):G(e)?(y=!0,g=e.some(_=>mt(_)||Be(_)),u=()=>e.map(_=>{if(me(_))return _.value;if(mt(_))return f(_);if(X(_))return l?l(_,2):_()})):X(e)?t?u=l?()=>l(e,2):e:u=()=>{if(h){At();try{h()}finally{Pt()}}const _=Qt;Qt=c;try{return l?l(e,3,[d]):e(d)}finally{Qt=_}}:u=pt,t&&s){const _=u,w=s===!0?1/0:s;u=()=>St(_(),w)}const C=Zr(),E=()=>{c.stop(),C&&C.active&&mo(C.effects,c)};if(o&&t){const _=t;t=(...w)=>{const k=_(...w);return E(),k}}let v=y?new Array(e.length).fill(mr):mr;const p=_=>{if(!(!(c.flags&1)||!c.dirty&&!_))if(t){const w=c.run();if(_||s||g||(y?w.some((k,P)=>dt(k,v[P])):dt(w,v))){h&&h();const k=Qt;Qt=c;try{const P=[w,v===mr?void 0:y&&v[0]===mr?[]:v,d];v=w,l?l(t,3,P):t(...P)}finally{Qt=k}}}else c.run()};return a&&a(p),c=new Fa(u),c.scheduler=i?()=>i(p,!1):p,d=_=>Zu(_,!1,c),h=c.onStop=()=>{const _=Pr.get(c);if(_){if(l)l(_,4);else for(const w of _)w();Pr.delete(c)}},t?r?p(!0):v=c.run():i?i(p.bind(null,!0),!0):c.run(),E.pause=c.pause.bind(c),E.resume=c.resume.bind(c),E.stop=E,E}function St(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,me(e))St(e.value,t,n);else if(G(e))for(let r=0;r{St(r,t,n)});else if(go(e)){for(const r in e)St(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&St(e[r],t,n)}return e}function cr(e,t,n,r){try{return r?e(...r):e()}catch(s){Ln(s,t,n)}}function Ye(e,t,n,r){if(X(e)){const s=cr(e,t,n,r);return s&&Oa(s)&&s.catch(o=>{Ln(o,t,n)}),s}if(G(e)){const s=[];for(let o=0;o>>1,s=Ie[r],o=sr(s);o=sr(n)?Ie.push(e):Ie.splice(nf(t),0,e),e.flags|=1,ol()}}function ol(){xr||(xr=sl.then(il))}function rr(e){G(e)?wn.push(...e):Ht&&e.id===-1?Ht.splice(hn+1,0,e):e.flags&1||(wn.push(e),e.flags|=1),ol()}function Zo(e,t,n=lt+1){for(;nsr(n)-sr(r));if(wn.length=0,Ht){Ht.push(...t);return}for(Ht=t,hn=0;hne.id==null?e.flags&2?-1:1/0:e.id;function il(e){try{for(lt=0;lt{r._d&&$r(-1);const o=Or(t);let i;try{i=e(...s)}finally{Or(o),r._d&&$r(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function h_(e,t){if(Pe===null)return e;const n=as(Pe),r=e.dirs||(e.dirs=[]);for(let s=0;s1)return n&&X(t)?t.call(r&&r.proxy):t}}function ns(){return!!(an()||nn)}const rf=Symbol.for("v-scx"),sf=()=>Ce(rf);function of(e,t){return Po(e,null,t)}function Rt(e,t,n){return Po(e,t,n)}function Po(e,t,n=de){const{immediate:r,deep:s,flush:o,once:i}=n,a=Te({},n),l=t&&r||!t&&o!=="post";let f;if(An){if(o==="sync"){const d=sf();f=d.__watcherHandles||(d.__watcherHandles=[])}else if(!l){const d=()=>{};return d.stop=pt,d.resume=pt,d.pause=pt,d}}const c=Ae;a.call=(d,g,y)=>Ye(d,c,g,y);let u=!1;o==="post"?a.scheduler=d=>{Se(d,c&&c.suspense)}:o!=="sync"&&(u=!0,a.scheduler=(d,g)=>{g?d():Co(d)}),a.augmentJob=d=>{t&&(d.flags|=4),u&&(d.flags|=2,c&&(d.id=c.uid,d.i=c))};const h=ef(e,t,a);return An&&(f?f.push(h):l&&h()),h}function af(e,t,n){const r=this.proxy,s=pe(e)?e.includes(".")?ll(r,e):()=>r[e]:e.bind(r,r);let o;X(t)?o=t:(o=t.handler,n=t);const i=dr(this),a=Po(s,o.bind(r),n);return i(),a}function ll(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;se.__isTeleport,qe=Symbol("_leaveCb"),Nn=Symbol("_enterCb");function cf(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return ko(()=>{e.isMounted=!0}),fr(()=>{e.isUnmounting=!0}),e}const We=[Function,Array],ul={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:We,onEnter:We,onAfterEnter:We,onEnterCancelled:We,onBeforeLeave:We,onLeave:We,onAfterLeave:We,onLeaveCancelled:We,onBeforeAppear:We,onAppear:We,onAfterAppear:We,onAppearCancelled:We},fl=e=>{const t=e.subTree;return t.component?fl(t.component):t},uf={name:"BaseTransition",props:ul,setup(e,{slots:t}){const n=an(),r=cf();return()=>{const s=t.default&&pl(t.default(),!0),o=s&&s.length?dl(s):n.subTree?rd():void 0;if(!o)return;const i=ne(e),{mode:a}=i;if(r.isLeaving)return ys(o);const l=ei(o);if(!l)return ys(o);let f=js(l,i,r,n,u=>f=u);l.type!==be&&Rn(l,f);let c=n.subTree&&ei(n.subTree);if(c&&c.type!==be&&!et(c,l)&&fl(n).type!==be){let u=js(c,i,r,n);if(Rn(c,u),a==="out-in"&&l.type!==be)return r.isLeaving=!0,u.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete u.afterLeave,c=void 0},ys(o);a==="in-out"&&l.type!==be?u.delayLeave=(h,d,g)=>{const y=hl(r,c);y[String(c.key)]=c,h[qe]=()=>{d(),h[qe]=void 0,delete f.delayedLeave,c=void 0},f.delayedLeave=()=>{g(),delete f.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return o}}};function dl(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==be){t=n;break}}return t}const ff=uf;function hl(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function js(e,t,n,r,s){const{appear:o,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:f,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:h,onLeave:d,onAfterLeave:g,onLeaveCancelled:y,onBeforeAppear:C,onAppear:E,onAfterAppear:v,onAppearCancelled:p}=t,_=String(e.key),w=hl(n,e),k=(R,T)=>{R&&Ye(R,r,9,T)},P=(R,T)=>{const $=T[1];k(R,T),G(R)?R.every(L=>L.length<=1)&&$():R.length<=1&&$()},D={mode:i,persisted:a,beforeEnter(R){let T=l;if(!n.isMounted)if(o)T=C||l;else return;R[qe]&&R[qe](!0);const $=w[_];$&&et(e,$)&&$.el[qe]&&$.el[qe](),k(T,[R])},enter(R){if(w[_]===e)return;let T=f,$=c,L=u;if(!n.isMounted)if(o)T=E||f,$=v||c,L=p||u;else return;let W=!1;R[Nn]=te=>{W||(W=!0,te?k(L,[R]):k($,[R]),D.delayedLeave&&D.delayedLeave(),R[Nn]=void 0)};const Z=R[Nn].bind(null,!1);T?P(T,[R,Z]):Z()},leave(R,T){const $=String(e.key);if(R[Nn]&&R[Nn](!0),n.isUnmounting)return T();k(h,[R]);let L=!1;R[qe]=Z=>{L||(L=!0,T(),Z?k(y,[R]):k(g,[R]),R[qe]=void 0,w[$]===e&&delete w[$])};const W=R[qe].bind(null,!1);w[$]=e,d?P(d,[R,W]):W()},clone(R){const T=js(R,t,n,r,s);return s&&s(T),T}};return D}function ys(e){if(ur(e))return e=kt(e),e.children=null,e}function ei(e){if(!ur(e))return cl(e.type)&&e.children?dl(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&X(n.default))return n.default()}}function Rn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Rn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function pl(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;oEn(y,t&&(G(t)?t[C]:t),n,r,s));return}if(Ct(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&En(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?as(r.component):r.el,i=s?null:o,{i:a,r:l}=e,f=t&&t.r,c=a.refs===de?a.refs={}:a.refs,u=a.setupState,h=ne(u),d=u===de?ka:y=>ti(c,y)?!1:ae(h,y),g=(y,C)=>!(C&&ti(c,C));if(f!=null&&f!==l){if(ni(t),pe(f))c[f]=null,d(f)&&(u[f]=null);else if(me(f)){const y=t;g(f,y.k)&&(f.value=null),y.k&&(c[y.k]=null)}}if(X(l))cr(l,a,12,[i,c]);else{const y=pe(l),C=me(l);if(y||C){const E=()=>{if(e.f){const v=y?d(l)?u[l]:c[l]:g()||!e.k?l.value:c[e.k];if(s)G(v)&&mo(v,o);else if(G(v))v.includes(o)||v.push(o);else if(y)c[l]=[o],d(l)&&(u[l]=c[l]);else{const p=[o];g(l,e.k)&&(l.value=p),e.k&&(c[e.k]=p)}}else y?(c[l]=i,d(l)&&(u[l]=i)):C&&(g(l,e.k)&&(l.value=i),e.k&&(c[e.k]=i))};if(i){const v=()=>{E(),Mr.delete(e)};v.id=-1,Mr.set(e,v),Se(v,n)}else ni(e),E()}}}function ni(e){const t=Mr.get(e);t&&(t.flags|=8,Mr.delete(e))}let ri=!1;const fn=()=>{ri||(console.error("Hydration completed but contains mismatches."),ri=!0)},df=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",hf=e=>e.namespaceURI.includes("MathML"),gr=e=>{if(e.nodeType===1){if(df(e))return"svg";if(hf(e))return"mathml"}},gn=e=>e.nodeType===8;function pf(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:a,insert:l,createComment:f}}=e,c=(p,_)=>{if(!_.hasChildNodes()){n(null,p,_),kr(),_._vnode=p;return}u(_.firstChild,p,null,null,null),kr(),_._vnode=p},u=(p,_,w,k,P,D=!1)=>{D=D||!!_.dynamicChildren;const R=gn(p)&&p.data==="[",T=()=>y(p,_,w,k,P,R),{type:$,ref:L,shapeFlag:W,patchFlag:Z}=_;let te=p.nodeType;_.el=p,Z===-2&&(D=!1,_.dynamicChildren=null);let F=null;switch($){case rn:te!==3?_.children===""?(l(_.el=s(""),i(p),p),F=p):F=T():(p.data!==_.children&&(fn(),p.data=_.children),F=o(p));break;case be:v(p)?(F=o(p),E(_.el=p.content.firstChild,p,w)):te!==8||R?F=T():F=o(p);break;case Jn:if(R&&(p=o(p),te=p.nodeType),te===1||te===3){F=p;const z=!_.children.length;for(let V=0;V<_.staticCount;V++)z&&(_.children+=F.nodeType===1?F.outerHTML:F.data),V===_.staticCount-1&&(_.anchor=F),F=o(F);return R?o(F):F}else T();break;case ke:R?F=g(p,_,w,k,P,D):F=T();break;default:if(W&1)(te!==1||_.type.toLowerCase()!==p.tagName.toLowerCase())&&!v(p)?F=T():F=h(p,_,w,k,P,D);else if(W&6){_.slotScopeIds=P;const z=i(p);if(R?F=C(p):gn(p)&&p.data==="teleport start"?F=C(p,p.data,"teleport end"):F=o(p),t(_,z,null,w,k,gr(z),D),Ct(_)&&!_.type.__asyncResolved){let V;R?(V=ye(ke),V.anchor=F?F.previousSibling:z.lastChild):V=p.nodeType===3?Yl(""):ye("div"),V.el=p,_.component.subTree=V}}else W&64?te!==8?F=T():F=_.type.hydrate(p,_,w,k,P,D,e,d):W&128&&(F=_.type.hydrate(p,_,w,k,gr(i(p)),P,D,e,u))}return L!=null&&En(L,null,k,_),F},h=(p,_,w,k,P,D)=>{D=D||!!_.dynamicChildren;const{type:R,props:T,patchFlag:$,shapeFlag:L,dirs:W,transition:Z}=_,te=R==="input"||R==="option";if(te||$!==-1){W&&ct(_,null,w,"created");let F=!1;if(v(p)){F=jl(null,Z)&&w&&w.vnode.props&&w.vnode.props.appear;const V=p.content.firstChild;if(F){const ce=V.getAttribute("class");ce&&(V.$cls=ce),Z.beforeEnter(V)}E(V,p,w),_.el=p=V}if(L&16&&!(T&&(T.innerHTML||T.textContent))){let V=d(p.firstChild,_,p,w,k,P,D);for(V&&!yr(p,1)&&fn();V;){const ce=V;V=V.nextSibling,a(ce)}}else if(L&8){let V=_.children;V[0]===` +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./0CGOegeu.js","./BgasD__e.js","./xsgK-Nup.js","./7m3DvxFn.js","./_name_.Dk1VjRtn.css","./BNW9rRgN.js","./accounts.B-g1r2A7.css","./C8kc9IUa.js","./DD3V9C6_.js","./BrJ9pewm.js","./LangSelect.Dkm6e8RK.css","./agents.DyZqnyeq.css","./Dehik56a.js","./CEFq2Pq9.js","./index.dJfvJhMb.css","./DlMn1R4f.js","./calltranslate.blzoinPN.css","./DC2vBYza.js","./channels.DbnY_8Am.css","./DZfr_EfO.js","./32XpWsQL.js","./CDB8L8go.js","./PN667bHc.js","./dashboard.CuNO2Lt5.css","./DQ6zmqs4.js","./DPKLCcBs.js","./DRVBzPRY.js","./BSXoR6Yx.js","./AeilnnXP.js","./CasIUDzx.js","./BZR1IKC1.js","./meetingsvc.DgYSEQUA.css","./q-Oqovwl.js","./meettemplates.DBfDdqB2.css","./DTVoyhwb.js","./CPoAe5lL.js","./VxS1tujf.js","./serviceconfig.UIJazB1z.css","./CS9TbzfM.js","./CAhwHUW5.js","./statlog.DNW5XZ2N.css","./B-G7qD0T.js","./svcinspect.H9TdRqZ5.css","./BqBJfKQo.js","./systemconfig.MaL8_AEr.css","./DT3lD2sm.js","./DDe4k6KN.js","./index.B6hNDrw5.css","./BCmMvQNl.js","./default.miyQHb0v.css","./oWVa2rll.js","./BvvkbLjV.js","./error-404.Dm-MYrAh.css","./CkLfApYf.js","./error-500.DM8oqBl3.css"])))=>i.map(i=>d[i]); +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();function po(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const de={},_n=[],pt=()=>{},Pa=()=>!1,lr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Wr=e=>e.startsWith("onUpdate:"),Te=Object.assign,mo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},du=Object.prototype.hasOwnProperty,ae=(e,t)=>du.call(e,t),G=Array.isArray,bn=e=>In(e)==="[object Map]",Mn=e=>In(e)==="[object Set]",Jo=e=>In(e)==="[object Date]",hu=e=>In(e)==="[object RegExp]",X=e=>typeof e=="function",pe=e=>typeof e=="string",Ue=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",xa=e=>(se(e)||X(e))&&X(e.then)&&X(e.catch),ka=Object.prototype.toString,In=e=>ka.call(e),pu=e=>In(e).slice(8,-1),go=e=>In(e)==="[object Object]",zr=e=>pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,en=po(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),qr=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},mu=/-\w/g,Le=qr(e=>e.replace(mu,t=>t.slice(1).toUpperCase())),gu=/\B([A-Z])/g,Kt=qr(e=>e.replace(gu,"-$1").toLowerCase()),Gr=qr(e=>e.charAt(0).toUpperCase()+e.slice(1)),ds=qr(e=>e?`on${Gr(e)}`:""),dt=(e,t)=>!Object.is(e,t),vn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Jr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ma=e=>{const t=pe(e)?Number(e):NaN;return isNaN(t)?e:t};let Yo;const Yr=()=>Yo||(Yo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Xr(e){if(G(e)){const t={};for(let n=0;n{if(n){const r=n.split(_u);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Qr(e){let t="";if(pe(e))t=e;else if(G(e))for(let n=0;nBt(n,t))}const La=e=>!!(e&&e.__v_isRef===!0),Ru=e=>pe(e)?e:e==null?"":G(e)||se(e)&&(e.toString===ka||!X(e.toString))?La(e)?Ru(e.value):JSON.stringify(e,Da,2):String(e),Da=(e,t)=>La(t)?Da(e,t.value):bn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[hs(r,o)+" =>"]=s,n),{})}:Mn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>hs(n))}:Ue(t)?hs(t):se(t)&&!G(t)&&!go(t)?String(t):t,hs=(e,t="")=>{var n;return Ue(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Ee;class Ha{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Ee&&(Ee.active?(this.parent=Ee,this.index=(Ee.scopes||(Ee.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0){if(Ee===this)Ee=this.prevScope;else{let t=Ee;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(qn){let t=qn;for(qn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;zn;){let t=zn;for(zn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Ba(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ua(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),wo(r),Cu(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function Ds(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Va(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Va(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===tr)||(e.globalVersion=tr,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ds(e))))return;e.flags|=2;const t=e.dep,n=he,r=tt;he=e,tt=!0;try{Ba(e);const s=e.fn(e._value);(t.version===0||dt(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{he=n,tt=r,Ua(e),e.flags&=-3}}function wo(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)wo(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Cu(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let tt=!0;const Ka=[];function At(){Ka.push(tt),tt=!1}function Pt(){const e=Ka.pop();tt=e===void 0?!0:e}function Xo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=he;he=void 0;try{t()}finally{he=n}}}let tr=0;class Au{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Eo{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!he||!tt||he===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==he)n=this.activeLink=new Au(he,this),he.deps?(n.prevDep=he.depsTail,he.depsTail.nextDep=n,he.depsTail=n):he.deps=he.depsTail=n,Wa(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=he.depsTail,n.nextDep=void 0,he.depsTail.nextDep=n,he.depsTail=n,he.deps===n&&(he.deps=r)}return n}trigger(t){this.version++,tr++,this.notify(t)}notify(t){bo();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{vo()}}}function Wa(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Wa(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Ar=new WeakMap,tn=Symbol(""),Hs=Symbol(""),nr=Symbol("");function xe(e,t,n){if(tt&&he){let r=Ar.get(e);r||Ar.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new Eo),s.map=r,s.key=n),s.track()}}function Et(e,t,n,r,s,o){const i=Ar.get(e);if(!i){tr++;return}const a=l=>{l&&l.trigger()};if(bo(),t==="clear")i.forEach(a);else{const l=G(e),f=l&&zr(n);if(l&&n==="length"){const c=Number(r);i.forEach((u,h)=>{(h==="length"||h===nr||!Ue(h)&&h>=c)&&a(u)})}else switch((n!==void 0||i.has(void 0))&&a(i.get(n)),f&&a(i.get(nr)),t){case"add":l?f&&a(i.get("length")):(a(i.get(tn)),bn(e)&&a(i.get(Hs)));break;case"delete":l||(a(i.get(tn)),bn(e)&&a(i.get(Hs)));break;case"set":bn(e)&&a(i.get(tn));break}}vo()}function Pu(e,t){const n=Ar.get(e);return n&&n.get(t)}function un(e){const t=ne(e);return t===e?t:(xe(t,"iterate",nr),Be(e)?t:t.map(rt))}function es(e){return xe(e=ne(e),"iterate",nr),e}function ut(e,t){return gt(e)?Tn(mt(e)?rt(t):t):rt(t)}const xu={__proto__:null,[Symbol.iterator](){return ms(this,Symbol.iterator,e=>ut(this,e))},concat(...e){return un(this).concat(...e.map(t=>G(t)?un(t):t))},entries(){return ms(this,"entries",e=>(e[1]=ut(this,e[1]),e))},every(e,t){return yt(this,"every",e,t,void 0,arguments)},filter(e,t){return yt(this,"filter",e,t,n=>n.map(r=>ut(this,r)),arguments)},find(e,t){return yt(this,"find",e,t,n=>ut(this,n),arguments)},findIndex(e,t){return yt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return yt(this,"findLast",e,t,n=>ut(this,n),arguments)},findLastIndex(e,t){return yt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return yt(this,"forEach",e,t,void 0,arguments)},includes(...e){return gs(this,"includes",e)},indexOf(...e){return gs(this,"indexOf",e)},join(e){return un(this).join(e)},lastIndexOf(...e){return gs(this,"lastIndexOf",e)},map(e,t){return yt(this,"map",e,t,void 0,arguments)},pop(){return $n(this,"pop")},push(...e){return $n(this,"push",e)},reduce(e,...t){return Qo(this,"reduce",e,t)},reduceRight(e,...t){return Qo(this,"reduceRight",e,t)},shift(){return $n(this,"shift")},some(e,t){return yt(this,"some",e,t,void 0,arguments)},splice(...e){return $n(this,"splice",e)},toReversed(){return un(this).toReversed()},toSorted(e){return un(this).toSorted(e)},toSpliced(...e){return un(this).toSpliced(...e)},unshift(...e){return $n(this,"unshift",e)},values(){return ms(this,"values",e=>ut(this,e))}};function ms(e,t,n){const r=es(e),s=r[t]();return r!==e&&!Be(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.done||(o.value=n(o.value)),o}),s}const ku=Array.prototype;function yt(e,t,n,r,s,o){const i=es(e),a=i!==e&&!Be(e),l=i[t];if(l!==ku[t]){const u=l.apply(e,o);return a?rt(u):u}let f=n;i!==e&&(a?f=function(u,h){return n.call(this,ut(e,u),h,e)}:n.length>2&&(f=function(u,h){return n.call(this,u,h,e)}));const c=l.call(i,f,r);return a&&s?s(c):c}function Qo(e,t,n,r){const s=es(e),o=s!==e&&!Be(e);let i=n,a=!1;s!==e&&(o?(a=r.length===0,i=function(f,c,u){return a&&(a=!1,f=ut(e,f)),n.call(this,f,ut(e,c),u,e)}):n.length>3&&(i=function(f,c,u){return n.call(this,f,c,u,e)}));const l=s[t](i,...r);return a?ut(e,l):l}function gs(e,t,n){const r=ne(e);xe(r,"iterate",nr);const s=r[t](...n);return(s===-1||s===!1)&&ts(n[0])?(n[0]=ne(n[0]),r[t](...n)):s}function $n(e,t,n=[]){At(),bo();const r=ne(e)[t].apply(e,n);return vo(),Pt(),r}const Ou=po("__proto__,__v_isRef,__isVue"),za=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ue));function Mu(e){Ue(e)||(e=String(e));const t=ne(this);return xe(t,"has",e),t.hasOwnProperty(e)}class qa{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?Uu:Xa:o?Ya:Ja).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=G(t);if(!s){let l;if(i&&(l=xu[n]))return l;if(n==="hasOwnProperty")return Mu}const a=Reflect.get(t,n,me(t)?t:r);if((Ue(n)?za.has(n):Ou(n))||(s||xe(t,"get",n),o))return a;if(me(a)){const l=i&&zr(n)?a:a.value;return s&&se(l)?Ns(l):l}return se(a)?s?Ns(a):ot(a):a}}class Ga extends qa{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];const i=G(t)&&zr(n);if(!this._isShallow){const f=gt(o);if(!Be(r)&&!gt(r)&&(o=ne(o),r=ne(r)),!i&&me(o)&&!me(r))return f||(o.value=r),!0}const a=i?Number(n)e,hr=e=>Reflect.getPrototypeOf(e);function $u(e,t,n){return function(...r){const s=this.__v_raw,o=ne(s),i=bn(o),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,f=s[e](...r),c=n?$s:t?Tn:rt;return!t&&xe(o,"iterate",l?Hs:tn),Te(Object.create(f),{next(){const{value:u,done:h}=f.next();return h?{value:u,done:h}:{value:a?[c(u[0]),c(u[1])]:c(u),done:h}}})}}function pr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Nu(e,t){const n={get(s){const o=this.__v_raw,i=ne(o),a=ne(s);e||(dt(s,a)&&xe(i,"get",s),xe(i,"get",a));const{has:l}=hr(i),f=t?$s:e?Tn:rt;if(l.call(i,s))return f(o.get(s));if(l.call(i,a))return f(o.get(a));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&xe(ne(s),"iterate",tn),s.size},has(s){const o=this.__v_raw,i=ne(o),a=ne(s);return e||(dt(s,a)&&xe(i,"has",s),xe(i,"has",a)),s===a?o.has(s):o.has(s)||o.has(a)},forEach(s,o){const i=this,a=i.__v_raw,l=ne(a),f=t?$s:e?Tn:rt;return!e&&xe(l,"iterate",tn),a.forEach((c,u)=>s.call(o,f(c),f(u),i))}};return Te(n,e?{add:pr("add"),set:pr("set"),delete:pr("delete"),clear:pr("clear")}:{add(s){const o=ne(this),i=hr(o),a=ne(s),l=!t&&!Be(s)&&!gt(s)?a:s;return i.has.call(o,l)||dt(s,l)&&i.has.call(o,s)||dt(a,l)&&i.has.call(o,a)||(o.add(l),Et(o,"add",l,l)),this},set(s,o){!t&&!Be(o)&&!gt(o)&&(o=ne(o));const i=ne(this),{has:a,get:l}=hr(i);let f=a.call(i,s);f||(s=ne(s),f=a.call(i,s));const c=l.call(i,s);return i.set(s,o),f?dt(o,c)&&Et(i,"set",s,o):Et(i,"add",s,o),this},delete(s){const o=ne(this),{has:i,get:a}=hr(o);let l=i.call(o,s);l||(s=ne(s),l=i.call(o,s)),a&&a.call(o,s);const f=o.delete(s);return l&&Et(o,"delete",s,void 0),f},clear(){const s=ne(this),o=s.size!==0,i=s.clear();return o&&Et(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=$u(s,e,t)}),n}function So(e,t){const n=Nu(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(ae(n,s)&&s in r?n:r,s,o)}const ju={get:So(!1,!1)},Fu={get:So(!1,!0)},Bu={get:So(!0,!1)};const Ja=new WeakMap,Ya=new WeakMap,Xa=new WeakMap,Uu=new WeakMap;function Vu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ot(e){return gt(e)?e:To(e,!1,Lu,ju,Ja)}function Ze(e){return To(e,!1,Hu,Fu,Ya)}function Ns(e){return To(e,!0,Du,Bu,Xa)}function To(e,t,n,r,s){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=s.get(e);if(o)return o;const i=Vu(pu(e));if(i===0)return e;const a=new Proxy(e,i===2?r:n);return s.set(e,a),a}function mt(e){return gt(e)?mt(e.__v_raw):!!(e&&e.__v_isReactive)}function gt(e){return!!(e&&e.__v_isReadonly)}function Be(e){return!!(e&&e.__v_isShallow)}function ts(e){return e?!!e.__v_raw:!1}function ne(e){const t=e&&e.__v_raw;return t?ne(t):e}function Ro(e){return!ae(e,"__v_skip")&&Object.isExtensible(e)&&Oa(e,"__v_skip",!0),e}const rt=e=>se(e)?ot(e):e,Tn=e=>se(e)?Ns(e):e;function me(e){return e?e.__v_isRef===!0:!1}function nt(e){return Qa(e,!1)}function Ut(e){return Qa(e,!0)}function Qa(e,t){return me(e)?e:new Ku(e,t)}class Ku{constructor(t,n){this.dep=new Eo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ne(t),this._value=n?t:rt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||Be(t)||gt(t);t=r?t:ne(t),dt(t,n)&&(this._rawValue=t,this._value=r?t:rt(t),this.dep.trigger())}}function le(e){return me(e)?e.value:e}function ft(e){return X(e)?e():le(e)}const Wu={get:(e,t,n)=>t==="__v_raw"?e:le(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return me(s)&&!me(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Za(e){return mt(e)?e:new Proxy(e,Wu)}function zu(e){const t=G(e)?new Array(e.length):{};for(const n in e)t[n]=tl(e,n);return t}class qu{constructor(t,n,r){this._object=t,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0,this._key=Ue(n)?n:String(n),this._raw=ne(t);let s=!0,o=t;if(!G(t)||Ue(this._key)||!zr(this._key))do s=!ts(o)||Be(o);while(s&&(o=o.__v_raw));this._shallow=s}get value(){let t=this._object[this._key];return this._shallow&&(t=le(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&me(this._raw[this._key])){const n=this._object[this._key];if(me(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Pu(this._raw,this._key)}}class Gu{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function el(e,t,n){return me(e)?e:X(e)?new Gu(e):se(e)&&arguments.length>1?tl(e,t,n):nt(e)}function tl(e,t,n){return new qu(e,t,n)}class Ju{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Eo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=tr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&he!==this)return Fa(this,!0),!0}get value(){const t=this.dep.track();return Va(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Yu(e,t,n=!1){let r,s;return X(e)?r=e:(r=e.get,s=e.set),new Ju(r,s,n)}const mr={},Pr=new WeakMap;let Qt;function Xu(e,t=!1,n=Qt){if(n){let r=Pr.get(n);r||Pr.set(n,r=[]),r.push(e)}}function Qu(e,t,n=de){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:a,call:l}=n,f=_=>s?_:Be(_)||s===!1||s===0?St(_,1):St(_);let c,u,h,d,g=!1,y=!1;if(me(e)?(u=()=>e.value,g=Be(e)):mt(e)?(u=()=>f(e),g=!0):G(e)?(y=!0,g=e.some(_=>mt(_)||Be(_)),u=()=>e.map(_=>{if(me(_))return _.value;if(mt(_))return f(_);if(X(_))return l?l(_,2):_()})):X(e)?t?u=l?()=>l(e,2):e:u=()=>{if(h){At();try{h()}finally{Pt()}}const _=Qt;Qt=c;try{return l?l(e,3,[d]):e(d)}finally{Qt=_}}:u=pt,t&&s){const _=u,w=s===!0?1/0:s;u=()=>St(_(),w)}const C=Zr(),E=()=>{c.stop(),C&&C.active&&mo(C.effects,c)};if(o&&t){const _=t;t=(...w)=>{const k=_(...w);return E(),k}}let v=y?new Array(e.length).fill(mr):mr;const p=_=>{if(!(!(c.flags&1)||!c.dirty&&!_))if(t){const w=c.run();if(_||s||g||(y?w.some((k,P)=>dt(k,v[P])):dt(w,v))){h&&h();const k=Qt;Qt=c;try{const P=[w,v===mr?void 0:y&&v[0]===mr?[]:v,d];v=w,l?l(t,3,P):t(...P)}finally{Qt=k}}}else c.run()};return a&&a(p),c=new Na(u),c.scheduler=i?()=>i(p,!1):p,d=_=>Xu(_,!1,c),h=c.onStop=()=>{const _=Pr.get(c);if(_){if(l)l(_,4);else for(const w of _)w();Pr.delete(c)}},t?r?p(!0):v=c.run():i?i(p.bind(null,!0),!0):c.run(),E.pause=c.pause.bind(c),E.resume=c.resume.bind(c),E.stop=E,E}function St(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,me(e))St(e.value,t,n);else if(G(e))for(let r=0;r{St(r,t,n)});else if(go(e)){for(const r in e)St(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&St(e[r],t,n)}return e}function cr(e,t,n,r){try{return r?e(...r):e()}catch(s){Ln(s,t,n)}}function Ye(e,t,n,r){if(X(e)){const s=cr(e,t,n,r);return s&&xa(s)&&s.catch(o=>{Ln(o,t,n)}),s}if(G(e)){const s=[];for(let o=0;o>>1,s=Ie[r],o=sr(s);o=sr(n)?Ie.push(e):Ie.splice(ef(t),0,e),e.flags|=1,rl()}}function rl(){xr||(xr=nl.then(sl))}function rr(e){G(e)?wn.push(...e):Ht&&e.id===-1?Ht.splice(hn+1,0,e):e.flags&1||(wn.push(e),e.flags|=1),rl()}function Zo(e,t,n=lt+1){for(;nsr(n)-sr(r));if(wn.length=0,Ht){Ht.push(...t);return}for(Ht=t,hn=0;hne.id==null?e.flags&2?-1:1/0:e.id;function sl(e){try{for(lt=0;lt{r._d&&$r(-1);const o=Or(t);let i;try{i=e(...s)}finally{Or(o),r._d&&$r(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function p_(e,t){if(Pe===null)return e;const n=as(Pe),r=e.dirs||(e.dirs=[]);for(let s=0;s1)return n&&X(t)?t.call(r&&r.proxy):t}}function ns(){return!!(an()||nn)}const tf=Symbol.for("v-scx"),nf=()=>Ce(tf);function rf(e,t){return Po(e,null,t)}function Rt(e,t,n){return Po(e,t,n)}function Po(e,t,n=de){const{immediate:r,deep:s,flush:o,once:i}=n,a=Te({},n),l=t&&r||!t&&o!=="post";let f;if(An){if(o==="sync"){const d=nf();f=d.__watcherHandles||(d.__watcherHandles=[])}else if(!l){const d=()=>{};return d.stop=pt,d.resume=pt,d.pause=pt,d}}const c=Ae;a.call=(d,g,y)=>Ye(d,c,g,y);let u=!1;o==="post"?a.scheduler=d=>{Se(d,c&&c.suspense)}:o!=="sync"&&(u=!0,a.scheduler=(d,g)=>{g?d():Co(d)}),a.augmentJob=d=>{t&&(d.flags|=4),u&&(d.flags|=2,c&&(d.id=c.uid,d.i=c))};const h=Qu(e,t,a);return An&&(f?f.push(h):l&&h()),h}function sf(e,t,n){const r=this.proxy,s=pe(e)?e.includes(".")?il(r,e):()=>r[e]:e.bind(r,r);let o;X(t)?o=t:(o=t.handler,n=t);const i=dr(this),a=Po(s,o.bind(r),n);return i(),a}function il(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;se.__isTeleport,qe=Symbol("_leaveCb"),Nn=Symbol("_enterCb");function af(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return ko(()=>{e.isMounted=!0}),fr(()=>{e.isUnmounting=!0}),e}const We=[Function,Array],ll={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:We,onEnter:We,onAfterEnter:We,onEnterCancelled:We,onBeforeLeave:We,onLeave:We,onAfterLeave:We,onLeaveCancelled:We,onBeforeAppear:We,onAppear:We,onAfterAppear:We,onAppearCancelled:We},cl=e=>{const t=e.subTree;return t.component?cl(t.component):t},lf={name:"BaseTransition",props:ll,setup(e,{slots:t}){const n=an(),r=af();return()=>{const s=t.default&&dl(t.default(),!0),o=s&&s.length?ul(s):n.subTree?td():void 0;if(!o)return;const i=ne(e),{mode:a}=i;if(r.isLeaving)return ys(o);const l=ei(o);if(!l)return ys(o);let f=js(l,i,r,n,u=>f=u);l.type!==be&&Rn(l,f);let c=n.subTree&&ei(n.subTree);if(c&&c.type!==be&&!et(c,l)&&cl(n).type!==be){let u=js(c,i,r,n);if(Rn(c,u),a==="out-in"&&l.type!==be)return r.isLeaving=!0,u.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete u.afterLeave,c=void 0},ys(o);a==="in-out"&&l.type!==be?u.delayLeave=(h,d,g)=>{const y=fl(r,c);y[String(c.key)]=c,h[qe]=()=>{d(),h[qe]=void 0,delete f.delayedLeave,c=void 0},f.delayedLeave=()=>{g(),delete f.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return o}}};function ul(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==be){t=n;break}}return t}const cf=lf;function fl(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function js(e,t,n,r,s){const{appear:o,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:f,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:h,onLeave:d,onAfterLeave:g,onLeaveCancelled:y,onBeforeAppear:C,onAppear:E,onAfterAppear:v,onAppearCancelled:p}=t,_=String(e.key),w=fl(n,e),k=(R,T)=>{R&&Ye(R,r,9,T)},P=(R,T)=>{const $=T[1];k(R,T),G(R)?R.every(L=>L.length<=1)&&$():R.length<=1&&$()},D={mode:i,persisted:a,beforeEnter(R){let T=l;if(!n.isMounted)if(o)T=C||l;else return;R[qe]&&R[qe](!0);const $=w[_];$&&et(e,$)&&$.el[qe]&&$.el[qe](),k(T,[R])},enter(R){if(w[_]===e)return;let T=f,$=c,L=u;if(!n.isMounted)if(o)T=E||f,$=v||c,L=p||u;else return;let W=!1;R[Nn]=te=>{W||(W=!0,te?k(L,[R]):k($,[R]),D.delayedLeave&&D.delayedLeave(),R[Nn]=void 0)};const Z=R[Nn].bind(null,!1);T?P(T,[R,Z]):Z()},leave(R,T){const $=String(e.key);if(R[Nn]&&R[Nn](!0),n.isUnmounting)return T();k(h,[R]);let L=!1;R[qe]=Z=>{L||(L=!0,T(),Z?k(y,[R]):k(g,[R]),R[qe]=void 0,w[$]===e&&delete w[$])};const W=R[qe].bind(null,!1);w[$]=e,d?P(d,[R,W]):W()},clone(R){const T=js(R,t,n,r,s);return s&&s(T),T}};return D}function ys(e){if(ur(e))return e=kt(e),e.children=null,e}function ei(e){if(!ur(e))return al(e.type)&&e.children?ul(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&X(n.default))return n.default()}}function Rn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Rn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function dl(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;oEn(y,t&&(G(t)?t[C]:t),n,r,s));return}if(Ct(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&En(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?as(r.component):r.el,i=s?null:o,{i:a,r:l}=e,f=t&&t.r,c=a.refs===de?a.refs={}:a.refs,u=a.setupState,h=ne(u),d=u===de?Pa:y=>ti(c,y)?!1:ae(h,y),g=(y,C)=>!(C&&ti(c,C));if(f!=null&&f!==l){if(ni(t),pe(f))c[f]=null,d(f)&&(u[f]=null);else if(me(f)){const y=t;g(f,y.k)&&(f.value=null),y.k&&(c[y.k]=null)}}if(X(l))cr(l,a,12,[i,c]);else{const y=pe(l),C=me(l);if(y||C){const E=()=>{if(e.f){const v=y?d(l)?u[l]:c[l]:g()||!e.k?l.value:c[e.k];if(s)G(v)&&mo(v,o);else if(G(v))v.includes(o)||v.push(o);else if(y)c[l]=[o],d(l)&&(u[l]=c[l]);else{const p=[o];g(l,e.k)&&(l.value=p),e.k&&(c[e.k]=p)}}else y?(c[l]=i,d(l)&&(u[l]=i)):C&&(g(l,e.k)&&(l.value=i),e.k&&(c[e.k]=i))};if(i){const v=()=>{E(),Mr.delete(e)};v.id=-1,Mr.set(e,v),Se(v,n)}else ni(e),E()}}}function ni(e){const t=Mr.get(e);t&&(t.flags|=8,Mr.delete(e))}let ri=!1;const fn=()=>{ri||(console.error("Hydration completed but contains mismatches."),ri=!0)},uf=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",ff=e=>e.namespaceURI.includes("MathML"),gr=e=>{if(e.nodeType===1){if(uf(e))return"svg";if(ff(e))return"mathml"}},gn=e=>e.nodeType===8;function df(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:a,insert:l,createComment:f}}=e,c=(p,_)=>{if(!_.hasChildNodes()){n(null,p,_),kr(),_._vnode=p;return}u(_.firstChild,p,null,null,null),kr(),_._vnode=p},u=(p,_,w,k,P,D=!1)=>{D=D||!!_.dynamicChildren;const R=gn(p)&&p.data==="[",T=()=>y(p,_,w,k,P,R),{type:$,ref:L,shapeFlag:W,patchFlag:Z}=_;let te=p.nodeType;_.el=p,Z===-2&&(D=!1,_.dynamicChildren=null);let F=null;switch($){case rn:te!==3?_.children===""?(l(_.el=s(""),i(p),p),F=p):F=T():(p.data!==_.children&&(fn(),p.data=_.children),F=o(p));break;case be:v(p)?(F=o(p),E(_.el=p.content.firstChild,p,w)):te!==8||R?F=T():F=o(p);break;case Jn:if(R&&(p=o(p),te=p.nodeType),te===1||te===3){F=p;const z=!_.children.length;for(let V=0;V<_.staticCount;V++)z&&(_.children+=F.nodeType===1?F.outerHTML:F.data),V===_.staticCount-1&&(_.anchor=F),F=o(F);return R?o(F):F}else T();break;case ke:R?F=g(p,_,w,k,P,D):F=T();break;default:if(W&1)(te!==1||_.type.toLowerCase()!==p.tagName.toLowerCase())&&!v(p)?F=T():F=h(p,_,w,k,P,D);else if(W&6){_.slotScopeIds=P;const z=i(p);if(R?F=C(p):gn(p)&&p.data==="teleport start"?F=C(p,p.data,"teleport end"):F=o(p),t(_,z,null,w,k,gr(z),D),Ct(_)&&!_.type.__asyncResolved){let V;R?(V=ye(ke),V.anchor=F?F.previousSibling:z.lastChild):V=p.nodeType===3?Gl(""):ye("div"),V.el=p,_.component.subTree=V}}else W&64?te!==8?F=T():F=_.type.hydrate(p,_,w,k,P,D,e,d):W&128&&(F=_.type.hydrate(p,_,w,k,gr(i(p)),P,D,e,u))}return L!=null&&En(L,null,k,_),F},h=(p,_,w,k,P,D)=>{D=D||!!_.dynamicChildren;const{type:R,props:T,patchFlag:$,shapeFlag:L,dirs:W,transition:Z}=_,te=R==="input"||R==="option";if(te||$!==-1){W&&ct(_,null,w,"created");let F=!1;if(v(p)){F=$l(null,Z)&&w&&w.vnode.props&&w.vnode.props.appear;const V=p.content.firstChild;if(F){const ce=V.getAttribute("class");ce&&(V.$cls=ce),Z.beforeEnter(V)}E(V,p,w),_.el=p=V}if(L&16&&!(T&&(T.innerHTML||T.textContent))){let V=d(p.firstChild,_,p,w,k,P,D);for(V&&!yr(p,1)&&fn();V;){const ce=V;V=V.nextSibling,a(ce)}}else if(L&8){let V=_.children;V[0]===` `&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(V=V.slice(1));const{textContent:ce}=p;ce!==V&&ce!==V.replace(/\r\n|\r/g,` -`)&&(yr(p,0)||fn(),p.textContent=_.children)}if(T){if(te||!D||$&48){const V=p.tagName.includes("-");for(const ce in T)(te&&(ce.endsWith("value")||ce==="indeterminate")||lr(ce)&&!en(ce)||ce[0]==="."||V&&!en(ce))&&r(p,ce,null,T[ce],void 0,w)}else if(T.onClick)r(p,"onClick",null,T.onClick,void 0,w);else if($&4&&mt(T.style))for(const V in T.style)T.style[V]}let z;(z=T&&T.onVnodeBeforeMount)&&He(z,w,_),W&&ct(_,null,w,"beforeMount"),((z=T&&T.onVnodeMounted)||W||F)&&Kl(()=>{z&&He(z,w,_),F&&Z.enter(p),W&&ct(_,null,w,"mounted")},k)}return p.nextSibling},d=(p,_,w,k,P,D,R)=>{R=R||!!_.dynamicChildren;const T=_.children,$=T.length;let L=!1;for(let W=0;W<$;W++){const Z=R?T[W]:T[W]=Fe(T[W]),te=Z.type===rn;p?(te&&!R&&W+1<$&&Fe(T[W+1]).type===rn&&(l(s(p.data.slice(Z.children.length)),w,o(p)),p.data=Z.children),p=u(p,Z,k,P,D,R)):te&&!Z.children?l(Z.el=s(""),w):(L||(L=!0,yr(w,1)||fn()),n(null,Z,w,null,k,P,gr(w),D))}return p},g=(p,_,w,k,P,D)=>{const{slotScopeIds:R}=_;R&&(P=P?P.concat(R):R);const T=i(p),$=d(o(p),_,T,w,k,P,D);return $&&gn($)&&$.data==="]"?o(_.anchor=$):(fn(),l(_.anchor=f("]"),T,$),$)},y=(p,_,w,k,P,D)=>{if(yr(p.parentElement,1)||fn(),_.el=null,D){const $=C(p);for(;;){const L=o(p);if(L&&L!==$)a(L);else break}}const R=o(p),T=i(p);return a(p),n(null,_,T,R,w,k,gr(T),P),w&&(w.vnode.el=_.el,is(w,_.el)),R},C=(p,_="[",w="]")=>{let k=0;for(;p;)if(p=o(p),p&&gn(p)&&(p.data===_&&k++,p.data===w)){if(k===0)return o(p);k--}return p},E=(p,_,w)=>{const k=_.parentNode;k&&k.replaceChild(p,_);let P=w;for(;P;)P.vnode.el===_&&(P.vnode.el=P.subTree.el=p),P=P.parent},v=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[c,u]}const si="data-allow-mismatch",mf={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function yr(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(si);)e=e.parentElement;const n=e&&e.getAttribute(si);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:r.includes(mf[t])}}Yr().requestIdleCallback;Yr().cancelIdleCallback;function gf(e,t){if(gn(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(gn(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const Ct=e=>!!e.type.__asyncLoader;function Ir(e){X(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:o,timeout:i,suspensible:a=!0,onError:l}=e;let f=null,c,u=0;const h=()=>(u++,f=null,d()),d=()=>{let g;return f||(g=f=t().catch(y=>{if(y=y instanceof Error?y:new Error(String(y)),l)return new Promise((C,E)=>{l(y,()=>C(h()),()=>E(y),u+1)});throw y}).then(y=>g!==f&&f?f:(y&&(y.__esModule||y[Symbol.toStringTag]==="Module")&&(y=y.default),c=y,y)))};return Wt({name:"AsyncComponentWrapper",__asyncLoader:d,__asyncHydrate(g,y,C){let E=!1;(y.bu||(y.bu=[])).push(()=>E=!0);const v=()=>{E||C()},p=o?()=>{const _=o(v,w=>gf(g,w));_&&(y.bum||(y.bum=[])).push(_)}:v;c?p():d().then(()=>!y.isUnmounted&&p())},get __asyncResolved(){return c},setup(){const g=Ae;if(xo(g),c)return()=>_r(c,g);const y=w=>{f=null,Ln(w,g,13,!r)};if(a&&g.suspense||An)return d().then(w=>()=>_r(w,g)).catch(w=>(y(w),()=>r?ye(r,{error:w}):null));const C=nt(!1),E=nt(),v=nt(!!s);let p,_;return ss(()=>{p!=null&&clearTimeout(p),_!=null&&clearTimeout(_)}),s&&(_=setTimeout(()=>{g.isUnmounted||(v.value=!1)},s)),i!=null&&(p=setTimeout(()=>{if(!g.isUnmounted&&!C.value&&!E.value){const w=new Error(`Async component timed out after ${i}ms.`);y(w),E.value=w}},i)),d().then(()=>{g.isUnmounted||(C.value=!0,g.parent&&ur(g.parent.vnode)&&g.parent.update())}).catch(w=>{if(g.isUnmounted){f=null;return}y(w),E.value=w}),()=>{if(C.value&&c)return _r(c,g);if(E.value&&r)return ye(r,{error:E.value});if(n&&!v.value)return _r(n,g)}}})}function _r(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=ye(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const ur=e=>e.type.__isKeepAlive,yf={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=an(),r=n.ctx;if(!r.renderer)return()=>{const v=t.default&&t.default();return v&&v.length===1?v[0]:v};const s=new Map,o=new Set;let i=null;const a=n.suspense,{renderer:{p:l,m:f,um:c,o:{createElement:u}}}=r,h=u("div");r.activate=(v,p,_,w,k)=>{const P=v.component;f(v,p,_,0,a),l(P.vnode,v,p,_,P,a,w,v.slotScopeIds,k),Se(()=>{P.isDeactivated=!1,P.a&&vn(P.a);const D=v.props&&v.props.onVnodeMounted;D&&He(D,P.parent,v)},a)},r.deactivate=v=>{const p=v.component;Dr(p.m),Dr(p.a),f(v,h,null,1,a),Se(()=>{p.da&&vn(p.da);const _=v.props&&v.props.onVnodeUnmounted;_&&He(_,p.parent,v),p.isDeactivated=!0},a)};function d(v){_s(v),c(v,n,a,!0)}function g(v){s.forEach((p,_)=>{const w=Gs(Ct(p)?p.type.__asyncResolved||{}:p.type);w&&!v(w)&&y(_)})}function y(v){const p=s.get(v);p&&(!i||!et(p,i))?d(p):i&&_s(i),s.delete(v),o.delete(v)}Rt(()=>[e.include,e.exclude],([v,p])=>{v&&g(_=>Vn(v,_)),p&&g(_=>!Vn(p,_))},{flush:"post",deep:!0});let C=null;const E=()=>{C!=null&&(Hr(n.subTree.type)?Se(()=>{s.set(C,br(n.subTree))},n.subTree.suspense):s.set(C,br(n.subTree)))};return ko(E),bl(E),fr(()=>{s.forEach(v=>{const{subTree:p,suspense:_}=n,w=br(p);if(v.type===w.type&&v.key===w.key){_s(w);const k=w.component.da;k&&Se(k,_);return}d(v)})}),()=>{if(C=null,!t.default)return i=null;const v=t.default(),p=v[0];if(v.length>1)return i=null,v;if(!sn(p)||!(p.shapeFlag&4)&&!(p.shapeFlag&128))return i=null,p;let _=br(p);if(_.type===be)return i=null,_;const w=_.type,k=Gs(Ct(_)?_.type.__asyncResolved||{}:w),{include:P,exclude:D,max:R}=e;if(P&&(!k||!Vn(P,k))||D&&k&&Vn(D,k))return _.shapeFlag&=-257,i=_,p;const T=_.key==null?w:_.key,$=s.get(T);return _.el&&(_=kt(_),p.shapeFlag&128&&(p.ssContent=_)),C=T,$?(_.el=$.el,_.component=$.component,_.transition&&Rn(_,_.transition),_.shapeFlag|=512,o.delete(T),o.add(T)):(o.add(T),R&&o.size>parseInt(R,10)&&y(o.values().next().value)),_.shapeFlag|=256,i=_,Hr(p.type)?p:_}}},_f=yf;function Vn(e,t){return G(e)?e.some(n=>Vn(n,t)):pe(e)?e.split(",").includes(t):mu(e)?(e.lastIndex=0,e.test(t)):!1}function ml(e,t){yl(e,"a",t)}function gl(e,t){yl(e,"da",t)}function yl(e,t,n=Ae){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(rs(t,r,n),n){let s=n.parent;for(;s&&s.parent;)ur(s.parent.vnode)&&bf(r,t,n,s),s=s.parent}}function bf(e,t,n,r){const s=rs(t,e,r,!0);ss(()=>{mo(r[t],s)},n)}function _s(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function br(e){return e.shapeFlag&128?e.ssContent:e}function rs(e,t,n=Ae,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{At();const a=dr(n),l=Ye(t,n,e,i);return a(),Pt(),l});return r?s.unshift(o):s.push(o),o}}const Ot=e=>(t,n=Ae)=>{(!An||e==="sp")&&rs(e,(...r)=>t(...r),n)},_l=Ot("bm"),ko=Ot("m"),vf=Ot("bu"),bl=Ot("u"),fr=Ot("bum"),ss=Ot("um"),wf=Ot("sp"),Ef=Ot("rtg"),Sf=Ot("rtc");function vl(e,t=Ae){rs("ec",e,t)}const wl="components";function p_(e,t){return Sl(wl,e,!0,t)||e}const El=Symbol.for("v-ndc");function Tf(e){return pe(e)?Sl(wl,e,!1)||e:e||El}function Sl(e,t,n=!0,r=!1){const s=Pe||Ae;if(s){const o=s.type;{const a=Gs(o,!1);if(a&&(a===t||a===Le(t)||a===Gr(Le(t))))return o}const i=oi(s[e]||o[e],t)||oi(s.appContext[e],t);return!i&&r?o:i}}function oi(e,t){return e&&(e[t]||e[Le(t)]||e[Gr(Le(t))])}function m_(e,t,n,r){let s;const o=n,i=G(e);if(i||pe(e)){const a=i&&mt(e);let l=!1,f=!1;a&&(l=!Be(e),f=gt(e),e=es(e)),s=new Array(e.length);for(let c=0,u=e.length;ct(a,l,void 0,o));else{const a=Object.keys(e);s=new Array(a.length);for(let l=0,f=a.length;l0;return Ge(),ht(ke,null,[ye("slot",n,r)],f?-2:64)}let o=e[t];o&&o._c&&(o._d=!1),Ge();const i=o&&Tl(o(n)),a=n.key||i&&i.key,l=ht(ke,{key:(a&&!Ue(a)?a:`_${t}`)+(!i&&r?"_fb":"")},i||[],i&&e._===1?64:-2);return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function Tl(e){return e.some(t=>sn(t)?!(t.type===be||t.type===ke&&!Tl(t.children)):!0)?e:null}const Fs=e=>e?Ql(e)?as(e):Fs(e.parent):null,Gn=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Fs(e.parent),$root:e=>Fs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Cl(e),$forceUpdate:e=>e.f||(e.f=()=>{Co(e.update)}),$nextTick:e=>e.n||(e.n=xt.bind(e.proxy)),$watch:e=>af.bind(e)}),bs=(e,t)=>e!==de&&!e.__isScriptSetup&&ae(e,t),Rf={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:a,appContext:l}=e;if(t[0]!=="$"){const h=i[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(bs(r,t))return i[t]=1,r[t];if(s!==de&&ae(s,t))return i[t]=2,s[t];if(ae(o,t))return i[t]=3,o[t];if(n!==de&&ae(n,t))return i[t]=4,n[t];Bs&&(i[t]=0)}}const f=Gn[t];let c,u;if(f)return t==="$attrs"&&xe(e.attrs,"get",""),f(e);if((c=a.__cssModules)&&(c=c[t]))return c;if(n!==de&&ae(n,t))return i[t]=4,n[t];if(u=l.config.globalProperties,ae(u,t))return u[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return bs(s,t)?(s[t]=n,!0):r!==de&&ae(r,t)?(r[t]=n,!0):ae(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,props:o,type:i}},a){let l;return!!(n[a]||e!==de&&a[0]!=="$"&&ae(e,a)||bs(t,a)||ae(o,a)||ae(r,a)||ae(Gn,a)||ae(s.config.globalProperties,a)||(l=i.__cssModules)&&l[a])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ae(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ii(e){return G(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Bs=!0;function Cf(e){const t=Cl(e),n=e.proxy,r=e.ctx;Bs=!1,t.beforeCreate&&ai(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:a,provide:l,inject:f,created:c,beforeMount:u,mounted:h,beforeUpdate:d,updated:g,activated:y,deactivated:C,beforeDestroy:E,beforeUnmount:v,destroyed:p,unmounted:_,render:w,renderTracked:k,renderTriggered:P,errorCaptured:D,serverPrefetch:R,expose:T,inheritAttrs:$,components:L,directives:W,filters:Z}=t;if(f&&Af(f,r,null),i)for(const z in i){const V=i[z];X(V)&&(r[z]=V.bind(n))}if(s){const z=s.call(n,n);se(z)&&(e.data=ot(z))}if(Bs=!0,o)for(const z in o){const V=o[z],ce=X(V)?V.bind(n,n):X(V.get)?V.get.bind(n,n):pt,Mt=!X(V)&&X(V.set)?V.set.bind(n):pt,it=Re({get:ce,set:Mt});Object.defineProperty(r,z,{enumerable:!0,configurable:!0,get:()=>it.value,set:De=>it.value=De})}if(a)for(const z in a)Rl(a[z],r,n,z);if(l){const z=X(l)?l.call(n):l;Reflect.ownKeys(z).forEach(V=>{jt(V,z[V])})}c&&ai(c,e,"c");function F(z,V){G(V)?V.forEach(ce=>z(ce.bind(n))):V&&z(V.bind(n))}if(F(_l,u),F(ko,h),F(vf,d),F(bl,g),F(ml,y),F(gl,C),F(vl,D),F(Sf,k),F(Ef,P),F(fr,v),F(ss,_),F(wf,R),G(T))if(T.length){const z=e.exposed||(e.exposed={});T.forEach(V=>{Object.defineProperty(z,V,{get:()=>n[V],set:ce=>n[V]=ce,enumerable:!0})})}else e.exposed||(e.exposed={});w&&e.render===pt&&(e.render=w),$!=null&&(e.inheritAttrs=$),L&&(e.components=L),W&&(e.directives=W),R&&xo(e)}function Af(e,t,n=pt){G(e)&&(e=Us(e));for(const r in e){const s=e[r];let o;se(s)?"default"in s?o=Ce(s.from||r,s.default,!0):o=Ce(s.from||r):o=Ce(s),me(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ai(e,t,n){Ye(G(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Rl(e,t,n,r){let s=r.includes(".")?ll(n,r):()=>n[r];if(pe(e)){const o=t[e];X(o)&&Rt(s,o)}else if(X(e))Rt(s,e.bind(n));else if(se(e))if(G(e))e.forEach(o=>Rl(o,t,n,r));else{const o=X(e.handler)?e.handler.bind(n):t[e.handler];X(o)&&Rt(s,o,e)}}function Cl(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,a=o.get(t);let l;return a?l=a:!s.length&&!n&&!r?l=t:(l={},s.length&&s.forEach(f=>Lr(l,f,i,!0)),Lr(l,t,i)),se(t)&&o.set(t,l),l}function Lr(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Lr(e,o,n,!0),s&&s.forEach(i=>Lr(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=Pf[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const Pf={data:li,props:ci,emits:ci,methods:Kn,computed:Kn,beforeCreate:Me,created:Me,beforeMount:Me,mounted:Me,beforeUpdate:Me,updated:Me,beforeDestroy:Me,beforeUnmount:Me,destroyed:Me,unmounted:Me,activated:Me,deactivated:Me,errorCaptured:Me,serverPrefetch:Me,components:Kn,directives:Kn,watch:kf,provide:li,inject:xf};function li(e,t){return t?e?function(){return Te(X(e)?e.call(this,this):e,X(t)?t.call(this,this):t)}:t:e}function xf(e,t){return Kn(Us(e),Us(t))}function Us(e){if(G(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${Kt(t)}Modifiers`];function Lf(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||de;let s=n;const o=t.startsWith("update:"),i=o&&If(r,t.slice(7));i&&(i.trim&&(s=n.map(c=>pe(c)?c.trim():c)),i.number&&(s=n.map(Jr)));let a,l=r[a=ds(t)]||r[a=ds(Le(t))];!l&&o&&(l=r[a=ds(Kt(t))]),l&&Ye(l,e,6,s);const f=r[a+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Ye(f,e,6,s)}}const Df=new WeakMap;function Pl(e,t,n=!1){const r=n?Df:t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},a=!1;if(!X(e)){const l=f=>{const c=Pl(f,t,!0);c&&(a=!0,Te(i,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!a?(se(e)&&r.set(e,null),null):(G(o)?o.forEach(l=>i[l]=null):Te(i,o),se(e)&&r.set(e,i),i)}function os(e,t){return!e||!lr(t)?!1:(t=t.slice(2).replace(/Once$/,""),ae(e,t[0].toLowerCase()+t.slice(1))||ae(e,Kt(t))||ae(e,t))}function vs(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:a,emit:l,render:f,renderCache:c,props:u,data:h,setupState:d,ctx:g,inheritAttrs:y}=e,C=Or(e);let E,v;try{if(n.shapeFlag&4){const _=s||r,w=_;E=Fe(f.call(w,_,c,u,d,h,g)),v=a}else{const _=t;E=Fe(_.length>1?_(u,{attrs:a,slots:i,emit:l}):_(u,null)),v=t.props?a:$f(a)}}catch(_){Yn.length=0,Ln(_,e,1),E=ye(be)}let p=E;if(v&&y!==!1){const _=Object.keys(v),{shapeFlag:w}=p;_.length&&w&7&&(o&&_.some(Wr)&&(v=Nf(v,o)),p=kt(p,v,!1,!0))}return n.dirs&&(p=kt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Rn(p,n.transition),E=p,Or(C),E}function Hf(e,t=!0){let n;for(let r=0;r{let t;for(const n in e)(n==="class"||n==="style"||lr(n))&&((t||(t={}))[n]=e[n]);return t},Nf=(e,t)=>{const n={};for(const r in e)(!Wr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function jf(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:a,patchFlag:l}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?ui(r,i,f):!!i;if(l&8){const c=t.dynamicProps;for(let u=0;uObject.create(kl),Ml=e=>Object.getPrototypeOf(e)===kl;function Ff(e,t,n,r=!1){const s={},o=Ol();e.propsDefaults=Object.create(null),Il(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:Ze(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Bf(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,a=ne(s),[l]=e.propsOptions;let f=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let u=0;u{l=!0;const[h,d]=Ll(u,t,!0);Te(i,h),d&&a.push(...d)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!l)return se(e)&&r.set(e,_n),_n;if(G(o))for(let c=0;ce==="_"||e==="_ctx"||e==="$stable",Mo=e=>G(e)?e.map(Fe):[Fe(e)],Vf=(e,t,n)=>{if(t._n)return t;const r=Ao((...s)=>Mo(t(...s)),n);return r._c=!1,r},Dl=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Oo(s))continue;const o=e[s];if(X(o))t[s]=Vf(s,o,r);else if(o!=null){const i=Mo(o);t[s]=()=>i}}},Hl=(e,t)=>{const n=Mo(t);e.slots.default=()=>n},$l=(e,t,n)=>{for(const r in t)(n||!Oo(r))&&(e[r]=t[r])},Kf=(e,t,n)=>{const r=e.slots=Ol();if(e.vnode.shapeFlag&32){const s=t._;s?($l(r,t,n),n&&Ia(r,"_",s,!0)):Dl(t,r)}else t&&Hl(e,t)},Wf=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=de;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:$l(s,t,n):(o=!t.$stable,Dl(t,s)),i=t}else t&&(Hl(e,t),i={default:1});if(o)for(const a in s)!Oo(a)&&i[a]==null&&delete s[a]},Se=Kl;function zf(e){return Nl(e)}function qf(e){return Nl(e,pf)}function Nl(e,t){const n=Yr();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:a,createComment:l,setText:f,setElementText:c,parentNode:u,nextSibling:h,setScopeId:d=pt,insertStaticContent:g}=e,y=(m,b,S,M=null,A=null,O=null,j=void 0,N=null,H=!!b.dynamicChildren)=>{if(m===b)return;m&&!et(m,b)&&(M=x(m),De(m,A,O,!0),m=null),b.patchFlag===-2&&(H=!1,b.dynamicChildren=null);const{type:I,ref:Y,shapeFlag:U}=b;switch(I){case rn:C(m,b,S,M);break;case be:E(m,b,S,M);break;case Jn:m==null&&v(b,S,M,j);break;case ke:L(m,b,S,M,A,O,j,N,H);break;default:U&1?w(m,b,S,M,A,O,j,N,H):U&6?W(m,b,S,M,A,O,j,N,H):(U&64||U&128)&&I.process(m,b,S,M,A,O,j,N,H,J)}Y!=null&&A?En(Y,m&&m.ref,O,b||m,!b):Y==null&&m&&m.ref!=null&&En(m.ref,null,O,m,!0)},C=(m,b,S,M)=>{if(m==null)r(b.el=a(b.children),S,M);else{const A=b.el=m.el;b.children!==m.children&&f(A,b.children)}},E=(m,b,S,M)=>{m==null?r(b.el=l(b.children||""),S,M):b.el=m.el},v=(m,b,S,M)=>{[m.el,m.anchor]=g(m.children,b,S,M,m.el,m.anchor)},p=({el:m,anchor:b},S,M)=>{let A;for(;m&&m!==b;)A=h(m),r(m,S,M),m=A;r(b,S,M)},_=({el:m,anchor:b})=>{let S;for(;m&&m!==b;)S=h(m),s(m),m=S;s(b)},w=(m,b,S,M,A,O,j,N,H)=>{if(b.type==="svg"?j="svg":b.type==="math"&&(j="mathml"),m==null)k(b,S,M,A,O,j,N,H);else{const I=m.el&&m.el._isVueCE?m.el:null;try{I&&I._beginPatch(),R(m,b,A,O,j,N,H)}finally{I&&I._endPatch()}}},k=(m,b,S,M,A,O,j,N)=>{let H,I;const{props:Y,shapeFlag:U,transition:q,dirs:Q}=m;if(H=m.el=i(m.type,O,Y&&Y.is,Y),U&8?c(H,m.children):U&16&&D(m.children,H,null,M,A,ws(m,O),j,N),Q&&ct(m,null,M,"created"),P(H,m,m.scopeId,j,M),Y){for(const fe in Y)fe!=="value"&&!en(fe)&&o(H,fe,null,Y[fe],O,M);"value"in Y&&o(H,"value",null,Y.value,O),(I=Y.onVnodeBeforeMount)&&He(I,M,m)}Q&&ct(m,null,M,"beforeMount");const re=jl(A,q);re&&q.beforeEnter(H),r(H,b,S),((I=Y&&Y.onVnodeMounted)||re||Q)&&Se(()=>{I&&He(I,M,m),re&&q.enter(H),Q&&ct(m,null,M,"mounted")},A)},P=(m,b,S,M,A)=>{if(S&&d(m,S),M)for(let O=0;O{for(let I=H;I{const N=b.el=m.el;let{patchFlag:H,dynamicChildren:I,dirs:Y}=b;H|=m.patchFlag&16;const U=m.props||de,q=b.props||de;let Q;if(S&&qt(S,!1),(Q=q.onVnodeBeforeUpdate)&&He(Q,S,b,m),Y&&ct(b,m,S,"beforeUpdate"),S&&qt(S,!0),(U.innerHTML&&q.innerHTML==null||U.textContent&&q.textContent==null)&&c(N,""),I?T(m.dynamicChildren,I,N,S,M,ws(b,A),O):j||V(m,b,N,null,S,M,ws(b,A),O,!1),H>0){if(H&16)$(N,U,q,S,A);else if(H&2&&U.class!==q.class&&o(N,"class",null,q.class,A),H&4&&o(N,"style",U.style,q.style,A),H&8){const re=b.dynamicProps;for(let fe=0;fe{Q&&He(Q,S,b,m),Y&&ct(b,m,S,"updated")},M)},T=(m,b,S,M,A,O,j)=>{for(let N=0;N{if(b!==S){if(b!==de)for(const O in b)!en(O)&&!(O in S)&&o(m,O,b[O],null,A,M);for(const O in S){if(en(O))continue;const j=S[O],N=b[O];j!==N&&O!=="value"&&o(m,O,N,j,A,M)}"value"in S&&o(m,"value",b.value,S.value,A)}},L=(m,b,S,M,A,O,j,N,H)=>{const I=b.el=m?m.el:a(""),Y=b.anchor=m?m.anchor:a("");let{patchFlag:U,dynamicChildren:q,slotScopeIds:Q}=b;Q&&(N=N?N.concat(Q):Q),m==null?(r(I,S,M),r(Y,S,M),D(b.children||[],S,Y,A,O,j,N,H)):U>0&&U&64&&q&&m.dynamicChildren&&m.dynamicChildren.length===q.length?(T(m.dynamicChildren,q,S,A,O,j,N),(b.key!=null||A&&b===A.subTree)&&Fl(m,b,!0)):V(m,b,S,Y,A,O,j,N,H)},W=(m,b,S,M,A,O,j,N,H)=>{b.slotScopeIds=N,m==null?b.shapeFlag&512?A.ctx.activate(b,S,M,j,H):Z(b,S,M,A,O,j,H):te(m,b,H)},Z=(m,b,S,M,A,O,j)=>{const N=m.component=id(m,M,A);if(ur(m)&&(N.ctx.renderer=J),ad(N,!1,j),N.asyncDep){if(A&&A.registerDep(N,F,j),!m.el){const H=N.subTree=ye(be);E(null,H,b,S),m.placeholder=H.el}}else F(N,m,b,S,A,O,j)},te=(m,b,S)=>{const M=b.component=m.component;if(jf(m,b,S))if(M.asyncDep&&!M.asyncResolved){z(M,b,S);return}else M.next=b,M.update();else b.el=m.el,M.vnode=b},F=(m,b,S,M,A,O,j)=>{const N=()=>{if(m.isMounted){let{next:U,bu:q,u:Q,parent:re,vnode:fe}=m;{const Ne=Bl(m);if(Ne){U&&(U.el=fe.el,z(m,U,j)),Ne.asyncDep.then(()=>{Se(()=>{m.isUnmounted||I()},A)});return}}let ue=U,_e;qt(m,!1),U?(U.el=fe.el,z(m,U,j)):U=fe,q&&vn(q),(_e=U.props&&U.props.onVnodeBeforeUpdate)&&He(_e,re,U,fe),qt(m,!0);const we=vs(m),Qe=m.subTree;m.subTree=we,y(Qe,we,u(Qe.el),x(Qe),m,A,O),U.el=we.el,ue===null&&is(m,we.el),Q&&Se(Q,A),(_e=U.props&&U.props.onVnodeUpdated)&&Se(()=>He(_e,re,U,fe),A)}else{let U;const{el:q,props:Q}=b,{bm:re,m:fe,parent:ue,root:_e,type:we}=m,Qe=Ct(b);if(qt(m,!1),re&&vn(re),!Qe&&(U=Q&&Q.onVnodeBeforeMount)&&He(U,ue,b),qt(m,!0),q&&ge){const Ne=()=>{m.subTree=vs(m),ge(q,m.subTree,m,A,null)};Qe&&we.__asyncHydrate?we.__asyncHydrate(q,m,Ne):Ne()}else{_e.ce&&_e.ce._hasShadowRoot()&&_e.ce._injectChildStyle(we,m.parent?m.parent.type:void 0);const Ne=m.subTree=vs(m);y(null,Ne,S,M,m,A,O),b.el=Ne.el}if(fe&&Se(fe,A),!Qe&&(U=Q&&Q.onVnodeMounted)){const Ne=b;Se(()=>He(U,ue,Ne),A)}(b.shapeFlag&256||ue&&Ct(ue.vnode)&&ue.vnode.shapeFlag&256)&&m.a&&Se(m.a,A),m.isMounted=!0,b=S=M=null}};m.scope.on();const H=m.effect=new Fa(N);m.scope.off();const I=m.update=H.run.bind(H),Y=m.job=H.runIfDirty.bind(H);Y.i=m,Y.id=m.uid,H.scheduler=()=>Co(Y),qt(m,!0),I()},z=(m,b,S)=>{b.component=m;const M=m.vnode.props;m.vnode=b,m.next=null,Bf(m,b.props,M,S),Wf(m,b.children,S),At(),Zo(m),Pt()},V=(m,b,S,M,A,O,j,N,H=!1)=>{const I=m&&m.children,Y=m?m.shapeFlag:0,U=b.children,{patchFlag:q,shapeFlag:Q}=b;if(q>0){if(q&128){Mt(I,U,S,M,A,O,j,N,H);return}else if(q&256){ce(I,U,S,M,A,O,j,N,H);return}}Q&8?(Y&16&&Ke(I,A,O),U!==I&&c(S,U)):Y&16?Q&16?Mt(I,U,S,M,A,O,j,N,H):Ke(I,A,O,!0):(Y&8&&c(S,""),Q&16&&D(U,S,M,A,O,j,N,H))},ce=(m,b,S,M,A,O,j,N,H)=>{m=m||_n,b=b||_n;const I=m.length,Y=b.length,U=Math.min(I,Y);let q;for(q=0;qY?Ke(m,A,O,!0,!1,U):D(b,S,M,A,O,j,N,H,U)},Mt=(m,b,S,M,A,O,j,N,H)=>{let I=0;const Y=b.length;let U=m.length-1,q=Y-1;for(;I<=U&&I<=q;){const Q=m[I],re=b[I]=H?wt(b[I]):Fe(b[I]);if(et(Q,re))y(Q,re,S,null,A,O,j,N,H);else break;I++}for(;I<=U&&I<=q;){const Q=m[U],re=b[q]=H?wt(b[q]):Fe(b[q]);if(et(Q,re))y(Q,re,S,null,A,O,j,N,H);else break;U--,q--}if(I>U){if(I<=q){const Q=q+1,re=Qq)for(;I<=U;)De(m[I],A,O,!0),I++;else{const Q=I,re=I,fe=new Map;for(I=re;I<=q;I++){const je=b[I]=H?wt(b[I]):Fe(b[I]);je.key!=null&&fe.set(je.key,I)}let ue,_e=0;const we=q-re+1;let Qe=!1,Ne=0;const Hn=new Array(we);for(I=0;I=we){De(je,A,O,!0);continue}let at;if(je.key!=null)at=fe.get(je.key);else for(ue=re;ue<=q;ue++)if(Hn[ue-re]===0&&et(je,b[ue])){at=ue;break}at===void 0?De(je,A,O,!0):(Hn[at-re]=I+1,at>=Ne?Ne=at:Qe=!0,y(je,b[at],S,null,A,O,j,N,H),_e++)}const zo=Qe?Gf(Hn):_n;for(ue=zo.length-1,I=we-1;I>=0;I--){const je=re+I,at=b[je],qo=b[je+1],Go=je+1{const{el:O,type:j,transition:N,children:H,shapeFlag:I}=m;if(I&6){it(m.component.subTree,b,S,M);return}if(I&128){m.suspense.move(b,S,M);return}if(I&64){j.move(m,b,S,J);return}if(j===ke){r(O,b,S);for(let U=0;UN.enter(O),A));else{const{leave:U,delayLeave:q,afterLeave:Q}=N,re=()=>{m.ctx.isUnmounted?s(O):r(O,b,S)},fe=()=>{const ue=O._isLeaving||!!O[qe];O._isLeaving&&O[qe](!0),N.persisted&&!ue?re():U(O,()=>{re(),Q&&Q()})};q?q(O,re,fe):fe()}else r(O,b,S)},De=(m,b,S,M=!1,A=!1)=>{const{type:O,props:j,ref:N,children:H,dynamicChildren:I,shapeFlag:Y,patchFlag:U,dirs:q,cacheIndex:Q,memo:re}=m;if(U===-2&&(A=!1),N!=null&&(At(),En(N,null,S,m,!0),Pt()),Q!=null&&(b.renderCache[Q]=void 0),Y&256){b.ctx.deactivate(m);return}const fe=Y&1&&q,ue=!Ct(m);let _e;if(ue&&(_e=j&&j.onVnodeBeforeUnmount)&&He(_e,b,m),Y&6)zt(m.component,S,M);else{if(Y&128){m.suspense.unmount(S,M);return}fe&&ct(m,null,b,"beforeUnmount"),Y&64?m.type.remove(m,b,S,J,M):I&&!I.hasOnce&&(O!==ke||U>0&&U&64)?Ke(I,b,S,!1,!0):(O===ke&&U&384||!A&&Y&16)&&Ke(H,b,S),M&&ln(m)}const we=re!=null&&Q==null;(ue&&(_e=j&&j.onVnodeUnmounted)||fe||we)&&Se(()=>{_e&&He(_e,b,m),fe&&ct(m,null,b,"unmounted"),we&&(m.el=null)},S)},ln=m=>{const{type:b,el:S,anchor:M,transition:A}=m;if(b===ke){cn(S,M);return}if(b===Jn){_(m);return}const O=()=>{s(S),A&&!A.persisted&&A.afterLeave&&A.afterLeave()};if(m.shapeFlag&1&&A&&!A.persisted){const{leave:j,delayLeave:N}=A,H=()=>j(S,O);N?N(m.el,O,H):H()}else O()},cn=(m,b)=>{let S;for(;m!==b;)S=h(m),s(m),m=S;s(b)},zt=(m,b,S)=>{const{bum:M,scope:A,job:O,subTree:j,um:N,m:H,a:I}=m;Dr(H),Dr(I),M&&vn(M),A.stop(),O&&(O.flags|=8,De(j,m,b,S)),N&&Se(N,b),Se(()=>{m.isUnmounted=!0},b)},Ke=(m,b,S,M=!1,A=!1,O=0)=>{for(let j=O;j{if(m.shapeFlag&6)return x(m.component.subTree);if(m.shapeFlag&128)return m.suspense.next();const b=h(m.anchor||m.el),S=b&&b[lf];return S?h(S):b};let K=!1;const B=(m,b,S)=>{let M;m==null?b._vnode&&(De(b._vnode,null,null,!0),M=b._vnode.component):y(b._vnode||null,m,b,null,null,null,S),b._vnode=m,K||(K=!0,Zo(M),kr(),K=!1)},J={p:y,um:De,m:it,r:ln,mt:Z,mc:D,pc:V,pbc:T,n:x,o:e};let ee,ge;return t&&([ee,ge]=t(J)),{render:B,hydrate:ee,createApp:Mf(B,ee)}}function ws({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function qt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function jl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Fl(e,t,n=!1){const r=e.children,s=t.children;if(G(r)&&G(s))for(let o=0;o>1,e[n[a]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Bl(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bl(t)}function Dr(e){if(e)for(let t=0;te.__isSuspense;let Ks=0;const Jf={name:"Suspense",__isSuspense:!0,process(e,t,n,r,s,o,i,a,l,f){if(e==null)Yf(t,n,r,s,o,i,a,l,f);else{if(o&&o.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Xf(e,t,n,r,s,i,a,l,f)}},hydrate:Qf,normalize:Zf},Io=Jf;function or(e,t){const n=e.props&&e.props[t];X(n)&&n()}function Yf(e,t,n,r,s,o,i,a,l){const{p:f,o:{createElement:c}}=l,u=c("div"),h=e.suspense=Vl(e,s,r,t,u,n,o,i,a,l);f(null,h.pendingBranch=e.ssContent,u,null,r,h,o,i),h.deps>0?(or(e,"onPending"),or(e,"onFallback"),f(null,e.ssFallback,t,n,r,null,o,i),Sn(h,e.ssFallback)):h.resolve(!1,!0)}function Xf(e,t,n,r,s,o,i,a,{p:l,um:f,o:{createElement:c}}){const u=t.suspense=e.suspense;u.vnode=t,t.el=e.el;const h=t.ssContent,d=t.ssFallback,{activeBranch:g,pendingBranch:y,isInFallback:C,isHydrating:E}=u;if(y)u.pendingBranch=h,et(y,h)?(l(y,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0?u.resolve():C&&(E||(l(g,d,n,r,s,null,o,i,a),Sn(u,d)))):(u.pendingId=Ks++,E?(u.isHydrating=!1,u.activeBranch=y):f(y,s,u),u.deps=0,u.effects.length=0,u.hiddenContainer=c("div"),C?(l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0?u.resolve():(l(g,d,n,r,s,null,o,i,a),Sn(u,d))):g&&et(g,h)?(l(g,h,n,r,s,u,o,i,a),u.resolve(!0)):(l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0&&u.resolve()));else if(g&&et(g,h))l(g,h,n,r,s,u,o,i,a),Sn(u,h);else if(or(t,"onPending"),u.pendingBranch=h,h.shapeFlag&512?u.pendingId=h.component.suspenseId:u.pendingId=Ks++,l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0)u.resolve();else{const{timeout:v,pendingId:p}=u;v>0?setTimeout(()=>{u.pendingId===p&&u.fallback(d)},v):v===0&&u.fallback(d)}}function Vl(e,t,n,r,s,o,i,a,l,f,c=!1){const{p:u,m:h,um:d,n:g,o:{parentNode:y,remove:C}}=f;let E;const v=ed(e);v&&t&&t.pendingBranch&&(E=t.pendingId,t.deps++);const p=e.props?La(e.props.timeout):void 0,_=o,w={vnode:e,parent:t,parentComponent:n,namespace:i,container:r,hiddenContainer:s,deps:0,pendingId:Ks++,timeout:typeof p=="number"?p:-1,activeBranch:null,isFallbackMountPending:!1,pendingBranch:null,isInFallback:!c,isHydrating:c,isUnmounted:!1,effects:[],resolve(k=!1,P=!1){const{vnode:D,activeBranch:R,pendingBranch:T,pendingId:$,effects:L,parentComponent:W,container:Z,isInFallback:te}=w;let F=!1;if(w.isHydrating)w.isHydrating=!1;else if(!k){F=R&&T.transition&&T.transition.mode==="out-in";let ce=!1;F&&(R.transition.afterLeave=()=>{$===w.pendingId&&(h(T,Z,o===_&&!ce?g(R):o,0),rr(L),te&&D.ssFallback&&(D.ssFallback.el=null))}),R&&!w.isFallbackMountPending&&(y(R.el)===Z&&(o=g(R),ce=!0),d(R,W,w,!0),!F&&te&&D.ssFallback&&Se(()=>D.ssFallback.el=null,w)),F||h(T,Z,o,0)}w.isFallbackMountPending=!1,Sn(w,T),w.pendingBranch=null,w.isInFallback=!1;let z=w.parent,V=!1;for(;z;){if(z.pendingBranch){z.effects.push(...L),V=!0;break}z=z.parent}!V&&!F&&rr(L),w.effects=[],v&&t&&t.pendingBranch&&E===t.pendingId&&(t.deps--,t.deps===0&&!P&&t.resolve()),or(D,"onResolve")},fallback(k){if(!w.pendingBranch)return;const{vnode:P,activeBranch:D,parentComponent:R,container:T,namespace:$}=w;or(P,"onFallback");const L=g(D),W=()=>{w.isFallbackMountPending=!1,w.isInFallback&&(u(null,k,T,L,R,null,$,a,l),Sn(w,k))},Z=k.transition&&k.transition.mode==="out-in";Z&&(w.isFallbackMountPending=!0,D.transition.afterLeave=W),w.isInFallback=!0,d(D,R,null,!0),Z||W()},move(k,P,D){w.activeBranch&&h(w.activeBranch,k,P,D),w.container=k},next(){return w.activeBranch&&g(w.activeBranch)},registerDep(k,P,D){const R=!!w.pendingBranch;R&&w.deps++;const T=k.vnode.el;k.asyncDep.catch($=>{Ln($,k,0)}).then($=>{if(k.isUnmounted||w.isUnmounted||w.pendingId!==k.suspenseId)return;zs(),k.asyncResolved=!0;const{vnode:L}=k;qs(k,$),T&&(L.el=T);const W=!T&&k.subTree.el;P(k,L,y(T||k.subTree.el),T?null:g(k.subTree),w,i,D),W&&(L.placeholder=null,C(W)),is(k,L.el),R&&--w.deps===0&&w.resolve()})},unmount(k,P){w.isUnmounted=!0,w.activeBranch&&d(w.activeBranch,n,k,P),w.pendingBranch&&d(w.pendingBranch,n,k,P)}};return w}function Qf(e,t,n,r,s,o,i,a,l){const f=t.suspense=Vl(t,r,n,e.parentNode,document.createElement("div"),null,s,o,i,a,!0),c=l(e,f.pendingBranch=t.ssContent,n,f,o,i);return f.deps===0&&f.resolve(!1,!0),c}function Zf(e){const{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=di(r?n.default:n),e.ssFallback=r?di(n.fallback):ye(be)}function di(e){let t;if(X(e)){const n=Cn&&e._c;n&&(e._d=!1,Ge()),e=e(),n&&(e._d=!0,t=$e,Wl())}return G(e)&&(e=Hf(e)),e=Fe(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function Kl(e,t){t&&t.pendingBranch?G(e)?t.effects.push(...e):t.effects.push(e):rr(e)}function Sn(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e;let s=t.el;for(;!s&&t.component;)t=t.component.subTree,s=t.el;n.el=s,r&&r.subTree===n&&(r.vnode.el=s,is(r,s))}function ed(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const ke=Symbol.for("v-fgt"),rn=Symbol.for("v-txt"),be=Symbol.for("v-cmt"),Jn=Symbol.for("v-stc"),Yn=[];let $e=null;function Ge(e=!1){Yn.push($e=e?null:[])}function Wl(){Yn.pop(),$e=Yn[Yn.length-1]||null}let Cn=1;function $r(e,t=!1){Cn+=e,e<0&&$e&&t&&($e.hasOnce=!0)}function zl(e){return e.dynamicChildren=Cn>0?$e||_n:null,Wl(),Cn>0&&$e&&$e.push(e),e}function td(e,t,n,r,s,o){return zl(Gl(e,t,n,r,s,o,!0))}function ht(e,t,n,r,s){return zl(ye(e,t,n,r,s,!0))}function sn(e){return e?e.__v_isVNode===!0:!1}function et(e,t){return e.type===t.type&&e.key===t.key}const ql=({key:e})=>e??null,Rr=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?pe(e)||me(e)||X(e)?{i:Pe,r:e,k:t,f:!!n}:e:null);function Gl(e,t=null,n=null,r=0,s=null,o=e===ke?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ql(t),ref:t&&Rr(t),scopeId:al,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Pe};return a?(Lo(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=pe(n)?8:16),Cn>0&&!i&&$e&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&$e.push(l),l}const ye=nd;function nd(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===El)&&(e=be),sn(e)){const a=kt(e,t,!0);return n&&Lo(a,n),Cn>0&&!o&&$e&&(a.shapeFlag&6?$e[$e.indexOf(e)]=a:$e.push(a)),a.patchFlag=-2,a}if(fd(e)&&(e=e.__vccOpts),t){t=Jl(t);let{class:a,style:l}=t;a&&!pe(a)&&(t.class=Qr(a)),se(l)&&(ts(l)&&!G(l)&&(l=Te({},l)),t.style=Xr(l))}const i=pe(e)?1:Hr(e)?128:cl(e)?64:se(e)?4:X(e)?2:0;return Gl(e,t,n,r,s,i,o,!0)}function Jl(e){return e?ts(e)||Ml(e)?Te({},e):e:null}function kt(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:a,transition:l}=e,f=t?Xl(s||{},t):s,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&ql(f),ref:t&&t.ref?n&&o?G(o)?o.concat(Rr(t)):[o,Rr(t)]:Rr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ke?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&kt(e.ssContent),ssFallback:e.ssFallback&&kt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&Rn(c,l.clone(c)),c}function Yl(e=" ",t=0){return ye(rn,null,e,t)}function y_(e,t){const n=ye(Jn,null,e);return n.staticCount=t,n}function rd(e="",t=!1){return t?(Ge(),ht(be,null,e)):ye(be,null,e)}function Fe(e){return e==null||typeof e=="boolean"?ye(be):G(e)?ye(ke,null,e.slice()):sn(e)?wt(e):ye(rn,null,String(e))}function wt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:kt(e)}function Lo(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(G(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Lo(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Ml(t)?t._ctx=Pe:s===3&&Pe&&(Pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else X(t)?(t={default:t,_ctx:Pe},n=32):(t=String(t),r&64?(n=16,t=[Yl(t)]):n=8);e.children=t,e.shapeFlag|=n}function Xl(...e){const t={};for(let n=0;nAe||Pe;let Nr,Ws;{const e=Yr(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Nr=t("__VUE_INSTANCE_SETTERS__",n=>Ae=n),Ws=t("__VUE_SSR_SETTERS__",n=>An=n)}const dr=e=>{const t=Ae;return Nr(e),e.scope.on(),()=>{e.scope.off(),Nr(t)}},zs=()=>{Ae&&Ae.scope.off(),Nr(null)};function Ql(e){return e.vnode.shapeFlag&4}let An=!1;function ad(e,t=!1,n=!1){t&&Ws(t);const{props:r,children:s}=e.vnode,o=Ql(e);Ff(e,r,o,t),Kf(e,s,n||t);const i=o?ld(e,t):void 0;return t&&Ws(!1),i}function ld(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Rf);const{setup:r}=n;if(r){At();const s=e.setupContext=r.length>1?ud(e):null,o=dr(e),i=cr(r,e,0,[e.props,s]),a=Oa(i);if(Pt(),o(),(a||e.sp)&&!Ct(e)&&xo(e),a){if(i.then(zs,zs),t)return i.then(l=>{qs(e,l)}).catch(l=>{Ln(l,e,0)});e.asyncDep=i}else qs(e,i)}else Zl(e)}function qs(e,t,n){X(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=tl(t)),Zl(e)}function Zl(e,t,n){const r=e.type;e.render||(e.render=r.render||pt);{const s=dr(e);At();try{Cf(e)}finally{Pt(),s()}}}const cd={get(e,t){return xe(e,"get",""),e[t]}};function ud(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,cd),slots:e.slots,emit:e.emit,expose:t}}function as(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(tl(Ro(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Gn)return Gn[n](e)},has(t,n){return n in t||n in Gn}})):e.proxy}function Gs(e,t=!0){return X(e)?e.displayName||e.name:e.name||t&&e.__name}function fd(e){return X(e)&&"__vccOpts"in e}const Re=(e,t)=>Qu(e,t,An);function Oe(e,t,n){try{$r(-1);const r=arguments.length;return r===2?se(t)&&!G(t)?sn(t)?ye(e,null,[t]):ye(e,t):ye(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&sn(n)&&(n=[n]),ye(e,t,n))}finally{$r(1)}}const dd="3.5.38";let Js;const hi=typeof window<"u"&&window.trustedTypes;if(hi)try{Js=hi.createPolicy("vue",{createHTML:e=>e})}catch{}const ec=Js?e=>Js.createHTML(e):e=>e,hd="http://www.w3.org/2000/svg",pd="http://www.w3.org/1998/Math/MathML",vt=typeof document<"u"?document:null,pi=vt&&vt.createElement("template"),md={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?vt.createElementNS(hd,e):t==="mathml"?vt.createElementNS(pd,e):n?vt.createElement(e,{is:n}):vt.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>vt.createTextNode(e),createComment:e=>vt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>vt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{pi.innerHTML=ec(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const a=pi.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},It="transition",jn="animation",ir=Symbol("_vtc"),tc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},gd=Te({},ul,tc),yd=e=>(e.displayName="Transition",e.props=gd,e),_d=yd((e,{slots:t})=>Oe(ff,bd(e),t)),Gt=(e,t=[])=>{G(e)?e.forEach(n=>n(...t)):e&&e(...t)},mi=e=>e?G(e)?e.some(t=>t.length>1):e.length>1:!1;function bd(e){const t={};for(const L in e)L in tc||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:f=i,appearToClass:c=a,leaveFromClass:u=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:d=`${n}-leave-to`}=e,g=vd(s),y=g&&g[0],C=g&&g[1],{onBeforeEnter:E,onEnter:v,onEnterCancelled:p,onLeave:_,onLeaveCancelled:w,onBeforeAppear:k=E,onAppear:P=v,onAppearCancelled:D=p}=t,R=(L,W,Z,te)=>{L._enterCancelled=te,Jt(L,W?c:a),Jt(L,W?f:i),Z&&Z()},T=(L,W)=>{L._isLeaving=!1,Jt(L,u),Jt(L,d),Jt(L,h),W&&W()},$=L=>(W,Z)=>{const te=L?P:v,F=()=>R(W,L,Z);Gt(te,[W,F]),gi(()=>{Jt(W,L?l:o),_t(W,L?c:a),mi(te)||yi(W,r,y,F)})};return Te(t,{onBeforeEnter(L){Gt(E,[L]),_t(L,o),_t(L,i)},onBeforeAppear(L){Gt(k,[L]),_t(L,l),_t(L,f)},onEnter:$(!1),onAppear:$(!0),onLeave(L,W){L._isLeaving=!0;const Z=()=>T(L,W);_t(L,u),L._enterCancelled?(_t(L,h),vi(L)):(vi(L),_t(L,h)),gi(()=>{L._isLeaving&&(Jt(L,u),_t(L,d),mi(_)||yi(L,r,C,Z))}),Gt(_,[L,Z])},onEnterCancelled(L){R(L,!1,void 0,!0),Gt(p,[L])},onAppearCancelled(L){R(L,!0,void 0,!0),Gt(D,[L])},onLeaveCancelled(L){T(L),Gt(w,[L])}})}function vd(e){if(e==null)return null;if(se(e))return[Es(e.enter),Es(e.leave)];{const t=Es(e);return[t,t]}}function Es(e){return La(e)}function _t(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[ir]||(e[ir]=new Set)).add(t)}function Jt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[ir];n&&(n.delete(t),n.size||(e[ir]=void 0))}function gi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let wd=0;function yi(e,t,n,r){const s=e._endId=++wd,o=()=>{s===e._endId&&r()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:a,propCount:l}=Ed(e,t);if(!i)return r();const f=i+"end";let c=0;const u=()=>{e.removeEventListener(f,h),o()},h=d=>{d.target===e&&++c>=l&&u()};setTimeout(()=>{c(n[g]||"").split(", "),s=r(`${It}Delay`),o=r(`${It}Duration`),i=_i(s,o),a=r(`${jn}Delay`),l=r(`${jn}Duration`),f=_i(a,l);let c=null,u=0,h=0;t===It?i>0&&(c=It,u=i,h=o.length):t===jn?f>0&&(c=jn,u=f,h=l.length):(u=Math.max(i,f),c=u>0?i>f?It:jn:null,h=c?c===It?o.length:l.length:0);const d=c===It&&/\b(?:transform|all)(?:,|$)/.test(r(`${It}Property`).toString());return{type:c,timeout:u,propCount:h,hasTransform:d}}function _i(e,t){for(;e.lengthbi(n)+bi(e[r])))}function bi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function vi(e){return(e?e.ownerDocument:document).body.offsetHeight}function Sd(e,t,n){const r=e[ir];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const jr=Symbol("_vod"),nc=Symbol("_vsh"),__={name:"show",beforeMount(e,{value:t},{transition:n}){e[jr]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Fn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Fn(e,!0),r.enter(e)):r.leave(e,()=>{Fn(e,!1)}):Fn(e,t))},beforeUnmount(e,{value:t}){Fn(e,t)}};function Fn(e,t){e.style.display=t?e[jr]:"none",e[nc]=!t}const Td=Symbol(""),Rd=/(?:^|;)\s*display\s*:/;function Cd(e,t,n){const r=e.style,s=pe(n);let o=!1;if(n&&!s){if(t)if(pe(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&Wn(r,a,"")}else for(const i in t)n[i]==null&&Wn(r,i,"");for(const i in n){i==="display"&&(o=!0);const a=n[i];a!=null?Pd(e,i,!pe(t)&&t?t[i]:void 0,a)||Wn(r,i,a):Wn(r,i,"")}}else if(s){if(t!==n){const i=r[Td];i&&(n+=";"+i),r.cssText=n,o=Rd.test(n)}}else t&&e.removeAttribute("style");jr in e&&(e[jr]=o?r.display:"",e[nc]&&(r.display="none"))}const wi=/\s*!important$/;function Wn(e,t,n){if(G(n))n.forEach(r=>Wn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Ad(e,t);wi.test(n)?e.setProperty(Kt(r),n.replace(wi,""),"important"):e[r]=n}}const Ei=["Webkit","Moz","ms"],Ss={};function Ad(e,t){const n=Ss[t];if(n)return n;let r=Le(t);if(r!=="filter"&&r in e)return Ss[t]=r;r=Gr(r);for(let s=0;sTs||(Md.then(()=>Ts=0),Ts=Date.now());function Ld(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;const s=n.value;if(G(s)){const o=r.stopImmediatePropagation;r.stopImmediatePropagation=()=>{o.call(r),r._stopped=!0};const i=s.slice(),a=[r];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Dd=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?Sd(e,r,i):t==="style"?Cd(e,n,r):lr(t)?Wr(t)||kd(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Hd(e,t,r,i))?(Ri(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ti(e,t,r,i,o,t!=="value")):e._isVueCE&&($d(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!pe(r)))?Ri(e,Le(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Ti(e,t,r,i))};function Hd(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Pi(t)&&X(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Pi(t)&&pe(n)?!1:t in e}function $d(e,t){const n=e._def.props;if(!n)return!1;const r=Le(t);return Array.isArray(n)?n.some(s=>Le(s)===r):Object.keys(n).some(s=>Le(s)===r)}const Vt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return G(t)?n=>vn(t,n):t};function Nd(e){e.target.composing=!0}function xi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Je=Symbol("_assign");function ki(e,t,n){return t&&(e=e.trim()),n&&(e=Jr(e)),e}const Oi={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Je]=Vt(s);const o=r||s.props&&s.props.type==="number";Tt(e,t?"change":"input",i=>{i.target.composing||e[Je](ki(e.value,n,o))}),(n||o)&&Tt(e,"change",()=>{e.value=ki(e.value,n,o)}),t||(Tt(e,"compositionstart",Nd),Tt(e,"compositionend",xi),Tt(e,"change",xi))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Je]=Vt(i),e.composing)return;const a=(o||e.type==="number")&&!/^0\d/.test(e.value)?Jr(e.value):e.value,l=t??"";if(a===l)return;const f=e.getRootNode();(f instanceof Document||f instanceof ShadowRoot)&&f.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===l)||(e.value=l)}},jd={deep:!0,created(e,t,n){e[Je]=Vt(n),Tt(e,"change",()=>{const r=e._modelValue,s=Pn(e),o=e.checked,i=e[Je];if(G(r)){const a=yo(r,s),l=a!==-1;if(o&&!l)i(r.concat(s));else if(!o&&l){const f=[...r];f.splice(a,1),i(f)}}else if(Mn(r)){const a=new Set(r);o?a.add(s):a.delete(s),i(a)}else i(rc(e,o))})},mounted:Mi,beforeUpdate(e,t,n){e[Je]=Vt(n),Mi(e,t,n)}};function Mi(e,{value:t,oldValue:n},r){e._modelValue=t;let s;if(G(t))s=yo(t,r.props.value)>-1;else if(Mn(t))s=t.has(r.props.value);else{if(t===n)return;s=Bt(t,rc(e,!0))}e.checked!==s&&(e.checked=s)}const Fd={created(e,{value:t},n){e.checked=Bt(t,n.props.value),e[Je]=Vt(n),Tt(e,"change",()=>{e[Je](Pn(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[Je]=Vt(r),t!==n&&(e.checked=Bt(t,r.props.value))}},Bd={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const s=Mn(t);Tt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Jr(Pn(i)):Pn(i));e[Je](e.multiple?s?new Set(o):o:o[0]),e._assigning=!0,xt(()=>{e._assigning=!1})}),e[Je]=Vt(r)},mounted(e,{value:t}){Ii(e,t)},beforeUpdate(e,t,n){e[Je]=Vt(n)},updated(e,{value:t}){e._assigning||Ii(e,t)}};function Ii(e,t){const n=e.multiple,r=G(t);if(!(n&&!r&&!Mn(t))){for(let s=0,o=e.options.length;sString(f)===String(a)):i.selected=yo(t,a)>-1}else i.selected=t.has(a);else if(Bt(Pn(i),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Pn(e){return"_value"in e?e._value:e.value}function rc(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const b_={created(e,t,n){vr(e,t,n,null,"created")},mounted(e,t,n){vr(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){vr(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){vr(e,t,n,r,"updated")}};function Ud(e,t){switch(e){case"SELECT":return Bd;case"TEXTAREA":return Oi;default:switch(t){case"checkbox":return jd;case"radio":return Fd;default:return Oi}}}function vr(e,t,n,r,s){const i=Ud(e.tagName,n.props&&n.props.type)[s];i&&i(e,t,n,r)}const Vd=["ctrl","shift","alt","meta"],Kd={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Vd.some(n=>e[`${n}Key`]&&!t.includes(n))},v_=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=((s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=(s=>{if(!("key"in s))return;const o=Kt(s.key);if(t.some(i=>i===o||Wd[i]===o))return e(s)}))},sc=Te({patchProp:Dd},md);let Xn,Li=!1;function zd(){return Xn||(Xn=zf(sc))}function qd(){return Xn=Li?Xn:qf(sc),Li=!0,Xn}const Gd=((...e)=>{const t=zd().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ic(r);if(!s)return;const o=t._component;!X(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=n(s,!1,oc(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t}),Jd=((...e)=>{const t=qd().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ic(r);if(s)return n(s,!0,oc(s))},t});function oc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ic(e){return pe(e)?document.querySelector(e):e}const Yd=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,Xd=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,Qd=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function Zd(e,t){if(e==="__proto__"||e==="constructor"&&t&&typeof t=="object"&&"prototype"in t){eh(e);return}return t}function eh(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function th(e,t={}){if(typeof e!="string")return e;if(e[0]==='"'&&e[e.length-1]==='"'&&e.indexOf("\\")===-1)return e.slice(1,-1);const n=e.trim();if(n.length<=9)switch(n.toLowerCase()){case"true":return!0;case"false":return!1;case"undefined":return;case"null":return null;case"nan":return Number.NaN;case"infinity":return Number.POSITIVE_INFINITY;case"-infinity":return Number.NEGATIVE_INFINITY}if(!Qd.test(e)){if(t.strict)throw new SyntaxError("[destr] Invalid JSON");return e}try{if(Yd.test(e)||Xd.test(e)){if(t.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(e,Zd)}return JSON.parse(e)}catch(r){if(t.strict)throw r;return e}}const ac=/#/g,lc=/&/g,nh=/\//g,rh=/=/g,sh=/\?/g,ls=/\+/g,oh=/%5e/gi,ih=/%60/gi,ah=/%7c/gi,lh=/%20/gi,ch=/%2f/gi,uh=/%252f/gi;function cc(e){return encodeURI(""+e).replace(ah,"|")}function Ys(e){return cc(typeof e=="string"?e:JSON.stringify(e)).replace(ls,"%2B").replace(lh,"+").replace(ac,"%23").replace(lc,"%26").replace(ih,"`").replace(oh,"^").replace(nh,"%2F")}function Rs(e){return Ys(e).replace(rh,"%3D")}function fh(e){return cc(e).replace(ac,"%23").replace(sh,"%3F").replace(uh,"%2F").replace(lc,"%26").replace(ls,"%2B")}function ar(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function dh(e){return ar(e.replace(ch,"%252F"))}function hh(e){return ar(e.replace(ls," "))}function ph(e){return ar(e.replace(ls," "))}function uc(e=""){const t=Object.create(null);e[0]==="?"&&(e=e.slice(1));for(const n of e.split("&")){const r=n.match(/([^=]+)=?(.*)/)||[];if(r.length<2)continue;const s=hh(r[1]);if(s==="__proto__"||s==="constructor")continue;const o=ph(r[2]||"");t[s]===void 0?t[s]=o:Array.isArray(t[s])?t[s].push(o):t[s]=[t[s],o]}return t}function mh(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${Rs(e)}=${Ys(n)}`).join("&"):`${Rs(e)}=${Ys(t)}`:Rs(e)}function gh(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>mh(t,e[t])).filter(Boolean).join("&")}const yh=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,_h=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,bh=/^([/\\]\s*){2,}[^/\\]/,vh=/^[\s\0]*(blob|data|javascript|vbscript):$/i,wh=/\/$|\/\?|\/#/,Eh=/^\.?\//;function Dn(e,t={}){return typeof t=="boolean"&&(t={acceptRelative:t}),t.strict?yh.test(e):_h.test(e)||(t.acceptRelative?bh.test(e):!1)}function Xs(e){return!!e&&vh.test(e)}function Qs(e="",t){return t?wh.test(e):e.endsWith("/")}function Fr(e="",t){if(!t)return(Qs(e)?e.slice(0,-1):e)||"/";if(!Qs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");s!==-1&&(n=e.slice(0,s),r=e.slice(s));const[o,...i]=n.split("?");return((o.endsWith("/")?o.slice(0,-1):o)||"/")+(i.length>0?`?${i.join("?")}`:"")+r}function Sh(e="",t){if(!t)return e.endsWith("/")?e:e+"/";if(Qs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");if(s!==-1&&(n=e.slice(0,s),r=e.slice(s),!n))return r;const[o,...i]=n.split("?");return o+"/"+(i.length>0?`?${i.join("?")}`:"")+r}function Th(e,t){if(dc(t)||Dn(e))return e;const n=Fr(t);if(e.startsWith(n)){const r=e[n.length];if(!r||r==="/"||r==="?")return e}return hc(n,e)}function Di(e,t){if(dc(t))return e;const n=Fr(t);if(!e.startsWith(n))return e;const r=e[n.length];return r&&r!=="/"&&r!=="?"?e:"/"+e.slice(n.length).replace(/^\/+/,"")}function fc(e,t){const n=Do(e),r={...uc(n.search),...t};return n.search=gh(r),Ch(n)}function dc(e){return!e||e==="/"}function Rh(e){return e&&e!=="/"}function hc(e,...t){let n=e||"";for(const r of t.filter(s=>Rh(s)))if(n){const s=r.replace(Eh,"");n=Sh(n)+s}else n=r;return n}function pc(...e){const t=/\/(?!\/)/,n=e.filter(Boolean),r=[];let s=0;for(const i of n)if(!(!i||i==="/")){for(const[a,l]of i.split(t).entries())if(!(!l||l===".")){if(l===".."){if(r.length===1&&Dn(r[0]))continue;r.pop(),s--;continue}if(a===1&&r[r.length-1]?.endsWith(":/")){r[r.length-1]+="/"+l;continue}r.push(l),s++}}let o=r.join("/");return s>=0?n[0]?.startsWith("/")&&!o.startsWith("/")?o="/"+o:n[0]?.startsWith("./")&&!o.startsWith("./")&&(o="./"+o):o="../".repeat(-1*s)+o,n[n.length-1]?.endsWith("/")&&!o.endsWith("/")&&(o+="/"),o}function mc(e,t){return ar(Fr(e))===ar(Fr(t))}const gc=Symbol.for("ufo:protocolRelative");function Do(e="",t){const n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){const[,u,h=""]=n;return{protocol:u.toLowerCase(),pathname:h,href:u+h,auth:"",host:"",search:"",hash:""}}if(!Dn(e,{acceptRelative:!0}))return Hi(e);const[,r="",s,o=""]=e.replace(/\\/g,"/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[];let[,i="",a=""]=o.match(/([^#/?]*)(.*)?/)||[];r==="file:"&&(a=a.replace(/\/(?=[A-Za-z]:)/,""));const{pathname:l,search:f,hash:c}=Hi(a);return{protocol:r.toLowerCase(),auth:s?s.slice(0,Math.max(0,s.length-1)):"",host:i,pathname:l,search:f,hash:c,[gc]:!r}}function Hi(e=""){const[t="",n="",r=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function Ch(e){const t=e.pathname||"",n=e.search?(e.search.startsWith("?")?"":"?")+e.search:"",r=e.hash||"",s=e.auth?e.auth+"@":"",o=e.host||"";return(e.protocol||e[gc]?(e.protocol||"")+"//":"")+s+o+t+n+r}class Ah extends Error{constructor(t,n){super(t,n),this.name="FetchError",n?.cause&&!this.cause&&(this.cause=n.cause)}}function Ph(e){const t=e.error?.message||e.error?.toString()||"",n=e.request?.method||e.options?.method||"GET",r=e.request?.url||String(e.request)||"/",s=`[${n}] ${JSON.stringify(r)}`,o=e.response?`${e.response.status} ${e.response.statusText}`:"",i=`${s}: ${o}${t?` ${t}`:""}`,a=new Ah(i,e.error?{cause:e.error}:void 0);for(const l of["request","options","response"])Object.defineProperty(a,l,{get(){return e[l]}});for(const[l,f]of[["data","_data"],["status","status"],["statusCode","status"],["statusText","statusText"],["statusMessage","statusText"]])Object.defineProperty(a,l,{get(){return e.response&&e.response[f]}});return a}const xh=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function $i(e="GET"){return xh.has(e.toUpperCase())}function kh(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.buffer||e instanceof FormData||e instanceof URLSearchParams?!1:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const Oh=new Set(["image/svg","application/xml","application/xhtml","application/html"]),Mh=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function Ih(e=""){if(!e)return"json";const t=e.split(";").shift()||"";return Mh.test(t)?"json":t==="text/event-stream"?"stream":Oh.has(t)||t.startsWith("text/")?"text":"blob"}function Lh(e,t,n,r){const s=Dh(t?.headers??e?.headers,n?.headers,r);let o;return(n?.query||n?.params||t?.params||t?.query)&&(o={...n?.params,...n?.query,...t?.params,...t?.query}),{...n,...t,query:o,params:o,headers:s}}function Dh(e,t,n){if(!t)return new n(e);const r=new n(t);if(e)for(const[s,o]of Symbol.iterator in e||Array.isArray(e)?e:new n(e))r.set(s,o);return r}async function wr(e,t){if(t)if(Array.isArray(t))for(const n of t)await n(e);else await t(e)}const Hh=new Set([408,409,425,429,500,502,503,504]),$h=new Set([101,204,205,304]);function yc(e={}){const{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:r=globalThis.AbortController}=e;async function s(a){const l=a.error&&a.error.name==="AbortError"&&!a.options.timeout||!1;if(a.options.retry!==!1&&!l){let c;typeof a.options.retry=="number"?c=a.options.retry:c=$i(a.options.method)?0:1;const u=a.response&&a.response.status||500;if(c>0&&(Array.isArray(a.options.retryStatusCodes)?a.options.retryStatusCodes.includes(u):Hh.has(u))){const h=typeof a.options.retryDelay=="function"?a.options.retryDelay(a):a.options.retryDelay||0;return h>0&&await new Promise(d=>setTimeout(d,h)),o(a.request,{...a.options,retry:c-1})}}const f=Ph(a);throw Error.captureStackTrace&&Error.captureStackTrace(f,o),f}const o=async function(l,f={}){const c={request:l,options:Lh(l,f,e.defaults,n),response:void 0,error:void 0};if(c.options.method&&(c.options.method=c.options.method.toUpperCase()),c.options.onRequest&&(await wr(c,c.options.onRequest),c.options.headers instanceof n||(c.options.headers=new n(c.options.headers||{}))),typeof c.request=="string"&&(c.options.baseURL&&(c.request=Th(c.request,c.options.baseURL)),c.options.query&&(c.request=fc(c.request,c.options.query),delete c.options.query),"query"in c.options&&delete c.options.query,"params"in c.options&&delete c.options.params),c.options.body&&$i(c.options.method))if(kh(c.options.body)){const d=c.options.headers.get("content-type");typeof c.options.body!="string"&&(c.options.body=d==="application/x-www-form-urlencoded"?new URLSearchParams(c.options.body).toString():JSON.stringify(c.options.body)),d||c.options.headers.set("content-type","application/json"),c.options.headers.has("accept")||c.options.headers.set("accept","application/json")}else("pipeTo"in c.options.body&&typeof c.options.body.pipeTo=="function"||typeof c.options.body.pipe=="function")&&("duplex"in c.options||(c.options.duplex="half"));let u;if(!c.options.signal&&c.options.timeout){const d=new r;u=setTimeout(()=>{const g=new Error("[TimeoutError]: The operation was aborted due to timeout");g.name="TimeoutError",g.code=23,d.abort(g)},c.options.timeout),c.options.signal=d.signal}try{c.response=await t(c.request,c.options)}catch(d){return c.error=d,c.options.onRequestError&&await wr(c,c.options.onRequestError),await s(c)}finally{u&&clearTimeout(u)}if((c.response.body||c.response._bodyInit)&&!$h.has(c.response.status)&&c.options.method!=="HEAD"){const d=(c.options.parseResponse?"json":c.options.responseType)||Ih(c.response.headers.get("content-type")||"");switch(d){case"json":{const g=await c.response.text(),y=c.options.parseResponse||th;c.response._data=y(g);break}case"stream":{c.response._data=c.response.body||c.response._bodyInit;break}default:c.response._data=await c.response[d]()}}return c.options.onResponse&&await wr(c,c.options.onResponse),!c.options.ignoreResponseError&&c.response.status>=400&&c.response.status<600?(c.options.onResponseError&&await wr(c,c.options.onResponseError),await s(c)):c.response},i=async function(l,f){return(await o(l,f))._data};return i.raw=o,i.native=(...a)=>t(...a),i.create=(a={},l={})=>yc({...e,...l,defaults:{...e.defaults,...l.defaults,...a}}),i}const Br=(function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")})(),Nh=Br.fetch?(...e)=>Br.fetch(...e):()=>Promise.reject(new Error("[ofetch] global.fetch is not supported!")),jh=Br.Headers,Fh=Br.AbortController,Bh=yc({fetch:Nh,Headers:jh,AbortController:Fh}),Uh=Bh,Vh=()=>window?.__NUXT__?.config||window?.useNuxtApp?.().payload?.config,Ho=()=>Vh().app,Kh=()=>Ho().baseURL,Wh=()=>Ho().buildAssetsDir,$o=(...e)=>pc(_c(),Wh(),...e),_c=(...e)=>{const t=Ho(),n=t.cdnURL||t.baseURL;return e.length?pc(n,...e):n};globalThis.__buildAssetsURL=$o,globalThis.__publicAssetsURL=_c;globalThis.$fetch||(globalThis.$fetch=Uh.create({baseURL:Kh()}));"global"in globalThis||(globalThis.global=globalThis);function Zs(e,t={},n){for(const r in e){const s=e[r],o=n?`${n}:${r}`:r;typeof s=="object"&&s!==null?Zs(s,t,o):typeof s=="function"&&(t[o]=s)}return t}const bc=(()=>{if(console.createTask)return console.createTask;const e={run:t=>t()};return()=>e})();function vc(e,t,n,r){for(let s=n;se[s](...t)):e[s](...t);if(o&&typeof o.then=="function")return Promise.resolve(o).then(()=>vc(e,t,s+1,r))}catch(o){return Promise.reject(o)}}function zh(e,t,n){if(e.length>0)return vc(e,t,0,bc(n))}function qh(e,t,n){if(e.length>0){const r=bc(n);return Promise.all(e.map(s=>r.run(()=>s(...t))))}}function Cs(e,t){for(const n of[...e])n(t)}var Gh=class{_hooks;_before;_after;_deprecatedHooks;_deprecatedMessages;constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(e,t,n={}){if(!e||typeof t!="function")return()=>{};const r=e;let s;for(;this._deprecatedHooks[e];)s=this._deprecatedHooks[e],e=s.to;if(s&&!n.allowDeprecated){let o=s.message;o||(o=`${r} hook has been deprecated`+(s.to?`, please use ${s.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(o)||(console.warn(o),this._deprecatedMessages.add(o))}if(!t.name)try{Object.defineProperty(t,"name",{get:()=>"_"+e.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[e]=this._hooks[e]||[],this._hooks[e].push(t),()=>{t&&(this.removeHook(e,t),t=void 0)}}hookOnce(e,t){let n,r=(...s)=>(typeof n=="function"&&n(),n=void 0,r=void 0,t(...s));return n=this.hook(e,r),n}removeHook(e,t){const n=this._hooks[e];if(n){const r=n.indexOf(t);r!==-1&&n.splice(r,1),n.length===0&&(this._hooks[e]=void 0)}}clearHook(e){this._hooks[e]=void 0}deprecateHook(e,t){this._deprecatedHooks[e]=typeof t=="string"?{to:t}:t;const n=this._hooks[e]||[];this._hooks[e]=void 0;for(const r of n)this.hook(e,r)}deprecateHooks(e){for(const t in e)this.deprecateHook(t,e[t])}addHooks(e){const t=Zs(e),n=Object.keys(t).map(r=>this.hook(r,t[r]));return()=>{for(const r of n)r();n.length=0}}removeHooks(e){const t=Zs(e);for(const n in t)this.removeHook(n,t[n])}removeAllHooks(){this._hooks={}}callHook(e,...t){return this.callHookWith(zh,e,t)}callHookParallel(e,...t){return this.callHookWith(qh,e,t)}callHookWith(e,t,n){const r=this._before||this._after?{name:t,args:n,context:{}}:void 0;this._before&&Cs(this._before,r);const s=e(this._hooks[t]?[...this._hooks[t]]:[],n,t);return s instanceof Promise?s.finally(()=>{this._after&&r&&Cs(this._after,r)}):(this._after&&r&&Cs(this._after,r),s)}beforeEach(e){return this._before=this._before||[],this._before.push(e),()=>{if(this._before!==void 0){const t=this._before.indexOf(e);t!==-1&&this._before.splice(t,1)}}}afterEach(e){return this._after=this._after||[],this._after.push(e),()=>{if(this._after!==void 0){const t=this._after.indexOf(e);t!==-1&&this._after.splice(t,1)}}}};function wc(){return new Gh}function Jh(e={}){let t,n=!1;const r=i=>{if(t&&t!==i)throw new Error("Context conflict")};let s;if(e.asyncContext){const i=e.AsyncLocalStorage||globalThis.AsyncLocalStorage;i?s=new i:console.warn("[unctx] `AsyncLocalStorage` is not provided.")}const o=()=>{if(s){const i=s.getStore();if(i!==void 0)return i}return t};return{use:()=>{const i=o();if(i===void 0)throw new Error("Context is not available");return i},tryUse:()=>o(),set:(i,a)=>{a||r(i),t=i,n=!0},unset:()=>{t=void 0,n=!1},call:(i,a)=>{r(i),t=i;try{return s?s.run(i,a):a()}finally{n||(t=void 0)}},async callAsync(i,a){t=i;const l=()=>{t=i},f=()=>t===i?l:void 0;eo.add(f);try{const c=s?s.run(i,a):a();return n||(t=void 0),await c}finally{eo.delete(f)}}}}function Yh(e={}){const t={};return{get(n,r={}){return t[n]||(t[n]=Jh({...e,...r})),t[n]}}}const Ur=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},Ni="__unctx__",Xh=Ur[Ni]||(Ur[Ni]=Yh()),Qh=(e,t={})=>Xh.get(e,t),ji="__unctx_async_handlers__",eo=Ur[ji]||(Ur[ji]=new Set);function Qn(e){const t=[];for(const s of eo){const o=s();o&&t.push(o)}const n=()=>{for(const s of t)s()};let r=e();return r&&typeof r=="object"&&"catch"in r&&(r=r.catch(s=>{throw n(),s})),[r,n]}const Fi=!1,Bi=!1,Zh=!1,Ui={id:"__nuxt-loader"},E_={componentName:"NuxtLink",prefetch:!0,prefetchOn:{visibility:!0}},ep={deep:!1},tp={},np="#__nuxt",Ec="nuxt-app",Vi=36e5,rp="vite:preloadError";function Sc(e=Ec){return Qh(e,{asyncContext:!1})}const sp="__nuxt_plugin";function op(e){let t=0;const n={_id:e.id||Ec||"nuxt-app",_scope:_o(),provide:void 0,versions:{get nuxt(){return"4.4.8"},get vue(){return n.vueApp.version}},payload:Ze({...e.ssrContext?.payload||{},data:Ze({}),state:ot({}),once:new Set,_errors:Ze({})}),static:{data:{}},runWithContext(s){return n._scope.active&&!Zr()?n._scope.run(()=>Ki(n,s)):Ki(n,s)},isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let s=!1;return()=>{if(!s&&(s=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:Ze({}),_state:Ze({}),_payloadRevivers:{},...e};{const s=window.__NUXT__;if(s)for(const o in s)switch(o){case"data":case"state":case"_errors":Object.assign(n.payload[o],s[o]);break;default:n.payload[o]=s[o]}}n.hooks=wc(),n.hook=n.hooks.hook;{const s=n.hooks.callHook;n.hooks.callHook=(o,...i)=>Promise.resolve().then(()=>s(o,...i))}n.callHook=n.hooks.callHook,n.provide=(s,o)=>{const i="$"+s;Er(n,i,o),Er(n.vueApp.config.globalProperties,i,o)},Er(n.vueApp,"$nuxt",n),Er(n.vueApp.config.globalProperties,"$nuxt",n);{window.addEventListener(rp,o=>{n.callHook("app:chunkError",{error:o.payload}),o.payload?.message?.includes("Unable to preload CSS")&&o.preventDefault()}),window.useNuxtApp||=ve;const s=n.hook("app:error",(...o)=>{console.error("[nuxt] error caught during app initialization",...o)});n.hook("app:mounted",s)}const r=n.payload.config;return n.provide("config",r),n}function ip(e,t){t.hooks&&e.hooks.addHooks(t.hooks)}async function ap(e,t){if(typeof t=="function"){const{provide:n}=await e.runWithContext(()=>t(e))||{};if(n&&typeof n=="object")for(const r in n)e.provide(r,n[r])}}async function lp(e,t){const n=new Set,r=[],s=[];let o,i=0;async function a(l){const f=l.dependsOn?.filter(c=>t.some(u=>u._name===c)&&!n.has(c))??[];if(f.length>0)r.push([new Set(f),l]);else{const c=ap(e,l).then(async()=>{l._name&&(n.add(l._name),await Promise.all(r.map(async([u,h])=>{u.has(l._name)&&(u.delete(l._name),u.size===0&&(i++,await a(h)))})))}).catch(u=>{if(!l.parallel&&!e.payload.error)throw u;o||=u});l.parallel?s.push(c):await c}}for(const l of t)ip(e,l);for(const l of t)await a(l);if(await Promise.all(s),i)for(let l=0;l{}),e,{[sp]:!0,_name:t})}const cp=Xe;function Ki(e,t,n){const r=()=>t();return Sc(e._id).set(e),e.vueApp.runWithContext(r)}function up(e){let t;return ns()&&(t=an()?.appContext.app.$nuxt),t||=Sc(e).tryUse(),t||null}function ve(e){const t=up(e);if(!t)throw new Error("[nuxt] instance unavailable");return t}function No(e){return ve().$config}function Er(e,t,n){Object.defineProperty(e,t,{get:()=>n})}function As(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function to(e,t,n=".",r){if(!As(t))return to(e,{},n,r);const s={...t};for(const o of Object.keys(e)){if(o==="__proto__"||o==="constructor")continue;const i=e[o];i!=null&&(r&&r(s,o,i,n)||(Array.isArray(i)&&Array.isArray(s[o])?s[o]=[...i,...s[o]]:As(i)&&As(s[o])?s[o]=to(i,s[o],(n?`${n}.`:"")+o.toString(),r):s[o]=i))}return s}function fp(e){return(...t)=>t.reduce((n,r)=>to(n,r,"",e),{})}const Tc=fp();function dp(e,t){try{return t in e}catch{return!1}}class Wi extends Error{static __h3_error__=!0;statusCode=500;fatal=!1;unhandled=!1;statusMessage;data;cause;constructor(t,n={}){super(t,n),n.cause&&!this.cause&&(this.cause=n.cause)}toJSON(){const t={message:this.message,statusCode:no(this.statusCode,500)};return this.statusMessage&&(t.statusMessage=Rc(this.statusMessage)),this.data!==void 0&&(t.data=this.data),t}}function hp(e){if(typeof e=="string")return new Wi(e);if(pp(e))return e;const t=new Wi(e.message??e.statusMessage??"",{cause:e.cause||e});if(dp(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=no(e.statusCode,t.statusCode):e.status&&(t.statusCode=no(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;Rc(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function pp(e){return e?.constructor?.__h3_error__===!0}const mp=/[^\u0009\u0020-\u007E]/g;function Rc(e=""){return e.replace(mp,"")}function no(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const Cc=Symbol("layout-meta"),on=Symbol("route");import.meta.url.replace(/\/app\/.*$/,"/");const Ve=()=>ve()?.$router,jo=()=>ns()?Ce(on,ve()._route):ve()._route;const gp=()=>{try{if(ve()._processingMiddleware)return!0}catch{return!1}return!1},zi=(e,t)=>{e||="/";const n=typeof e=="string"?e:"path"in e?yp(e):Ve().resolve(e).href;if(t?.open){const{protocol:f}=new URL(n,window.location.href);if(f&&Xs(f))throw new Error(`Cannot navigate to a URL with '${f}' protocol.`);const{target:c="_blank",windowFeatures:u={}}=t.open,h=[];for(const[d,g]of Object.entries(u))g!==void 0&&h.push(`${d.toLowerCase()}=${g}`);return open(n,c,h.join(", ")),Promise.resolve()}const r=Dn(n,{acceptRelative:!0}),s=t?.external||r;if(s){if(!t?.external)throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const{protocol:f}=new URL(n,window.location.href);if(f&&Xs(f))throw new Error(`Cannot navigate to a URL with '${f}' protocol.`)}const o=gp();if(!s&&o){if(t?.replace){if(typeof e=="string"){const{pathname:f,search:c,hash:u}=Do(e);return{path:f,...c&&{query:uc(c)},...u&&{hash:u},replace:!0}}return{...e,replace:!0}}return e}const i=Ve(),a=ve();if(s)return a._scope.stop(),t?.replace?location.replace(n):location.href=n,o?a.isHydrating?new Promise(()=>{}):!1:Promise.resolve();const l=typeof e=="string"?_p(e):e;return t?.replace?i.replace(l):i.push(l)};function yp(e){return fc(e.path||"",e.query||{})+(e.hash||"")}function _p(e){const t=Do(e);return fh(dh(t.pathname))+t.search+t.hash}const Ac="__nuxt_error",cs=()=>nl(ve().payload,"error"),Zt=e=>{const t=Ft(e);try{const n=cs();ve().hooks.callHook("app:error",t),n.value||=t}catch{throw t}return t},bp=async(e={})=>{const t=ve(),n=cs();t.callHook("app:error:cleared",e),e.redirect&&await Ve().replace(e.redirect),n.value=void 0},Pc=e=>!!e&&typeof e=="object"&&Ac in e,Ft=e=>{typeof e!="string"&&e.statusText&&(e.message??=e.statusText);const t=hp(e);return Object.defineProperty(t,Ac,{value:!0,configurable:!1,writable:!1}),Object.defineProperty(t,"status",{get:()=>t.statusCode,configurable:!0}),Object.defineProperty(t,"statusText",{get:()=>t.statusMessage,configurable:!0}),t};let xc;const xn=e=>xc=e,kc=Symbol();function ro(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Zn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Zn||(Zn={}));function vp(){const e=_o(!0),t=e.run(()=>nt({}));let n=[],r=[];const s=Ro({install(o){xn(s),s._a=o,o.provide(kc,s),o.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(o){return this._a?n.push(o):r.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const Oc=()=>{};function qi(e,t,n,r=Oc){e.add(t);const s=()=>{e.delete(t)&&r()};return!n&&Zr()&&ja(s),s}function dn(e,...t){e.forEach(n=>{n(...t)})}const wp=e=>e(),Gi=Symbol(),Ps=Symbol();function so(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,r)=>e.set(r,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];ro(s)&&ro(r)&&e.hasOwnProperty(n)&&!me(r)&&!mt(r)?e[n]=so(s,r):e[n]=r}return e}const Ep=Symbol();function Sp(e){return!ro(e)||!Object.prototype.hasOwnProperty.call(e,Ep)}const{assign:Dt}=Object;function Tp(e){return!!(me(e)&&e.effect)}function Rp(e,t,n,r){const{state:s,actions:o,getters:i}=t,a=n.state.value[e];let l;function f(){a||(n.state.value[e]=s?s():{});const c=Gu(n.state.value[e]);return Dt(c,o,Object.keys(i||{}).reduce((u,h)=>(u[h]=Ro(Re(()=>{xn(n);const d=n._s.get(e);return i[h].call(d,d)})),u),{}))}return l=Mc(e,f,t,n,r,!0),l}function Mc(e,t,n={},r,s,o){let i;const a=Dt({actions:{}},n),l={deep:!0};let f,c,u=new Set,h=new Set,d;const g=r.state.value[e];!o&&!g&&(r.state.value[e]={});let y;function C(D){let R;f=c=!1,typeof D=="function"?(D(r.state.value[e]),R={type:Zn.patchFunction,storeId:e,events:d}):(so(r.state.value[e],D),R={type:Zn.patchObject,payload:D,storeId:e,events:d});const T=y=Symbol();xt().then(()=>{y===T&&(f=!0)}),c=!0,dn(u,R,r.state.value[e])}const E=o?function(){const{state:R}=n,T=R?R():{};this.$patch($=>{Dt($,T)})}:Oc;function v(){i.stop(),u.clear(),h.clear(),r._s.delete(e)}const p=(D,R="")=>{if(Gi in D)return D[Ps]=R,D;const T=function(){xn(r);const $=Array.from(arguments),L=new Set,W=new Set;function Z(z){L.add(z)}function te(z){W.add(z)}dn(h,{args:$,name:T[Ps],store:w,after:Z,onError:te});let F;try{F=D.apply(this&&this.$id===e?this:w,$)}catch(z){throw dn(W,z),z}return F instanceof Promise?F.then(z=>(dn(L,z),z)).catch(z=>(dn(W,z),Promise.reject(z))):(dn(L,F),F)};return T[Gi]=!0,T[Ps]=R,T},_={_p:r,$id:e,$onAction:qi.bind(null,h),$patch:C,$reset:E,$subscribe(D,R={}){const T=qi(u,D,R.detached,()=>$()),$=i.run(()=>Rt(()=>r.state.value[e],L=>{(R.flush==="sync"?c:f)&&D({storeId:e,type:Zn.direct,events:d},L)},Dt({},l,R)));return T},$dispose:v},w=ot(_);r._s.set(e,w);const P=(r._a&&r._a.runWithContext||wp)(()=>r._e.run(()=>(i=_o()).run(()=>t({action:p}))));for(const D in P){const R=P[D];if(me(R)&&!Tp(R)||mt(R))o||(g&&Sp(R)&&(me(R)?R.value=g[D]:so(R,g[D])),r.state.value[e][D]=R);else if(typeof R=="function"){const T=p(R,D);P[D]=T,a.actions[D]=R}}return Dt(w,P),Dt(ne(w),P),Object.defineProperty(w,"$state",{get:()=>r.state.value[e],set:D=>{C(R=>{Dt(R,D)})}}),r._p.forEach(D=>{Dt(w,i.run(()=>D({store:w,app:r._a,pinia:r,options:a})))}),g&&o&&n.hydrate&&n.hydrate(w.$state,g),f=!0,c=!0,w}function Cp(e,t,n){let r;const s=typeof t=="function";r=s?n:t;function o(i,a){const l=ns();return i=i||(l?Ce(kc,null):null),i&&xn(i),i=xc,i._s.has(e)||(s?Mc(e,t,r,i):Rp(e,r,i)),i._s.get(e)}return o.$id=e,o}const Ap=-1,Pp=-2,xp=-3,kp=-4,Op=-5,Mp=-6,Ip=-7,Ic=2**32-1,oo=Ic-1;function Lp(e){return!(!Number.isInteger(e)||e<0||e>oo)}function Dp(e){return!(!Number.isInteger(e)||e<0||e>Ic)}function Hp(e){return Uint8Array.fromBase64(e).buffer}function $p(e){return Uint8Array.from(Buffer.from(e,"base64")).buffer}function Np(e){const t=atob(e),n=t.length,r=new Uint8Array(n);for(let s=0;s=f)throw new Error("Invalid input");c[h]=o(l[u+1])}c.length=f}else{const f=new Array(l.length);r[i]=f;for(let c=0;c`${r}:${String(s)}`).join(",")}`}function Vr(e,t,n){typeof e==="function"&&(!n||n!=="titleTemplate"&&!(n[0]==="o"&&n[1]==="n"))&&(e=e());const s=t?t(n,e):e;if(Array.isArray(s))return s.map(o=>Vr(o,t));if(s?.constructor===Object){const o={};for(const i of Object.keys(s))o[i]=Vr(s[i],t,i);return o}return s}function Zp(e,t){const n=e==="style"?new Map:new Set;function r(s){if(s==null||s===void 0)return;const o=String(s).trim();if(o)if(e==="style"){const[i,...a]=o.split(":").map(l=>l?l.trim():"");i&&a.length&&n.set(i,a.join(":"))}else o.split(" ").filter(Boolean).forEach(i=>n.add(i))}return typeof t=="string"?e==="style"?t.split(";").forEach(r):r(t):Array.isArray(t)?t.forEach(s=>r(s)):t&&typeof t=="object"&&Object.entries(t).forEach(([s,o])=>{o&&o!=="false"&&(e==="style"?n.set(String(s).trim(),String(o)):r(s))}),n}function Hc(e,t){if(e.props=e.props||{},!t)return e;if(e.tag==="templateParams")return e.props=t,e;const n=io.has(e.tag)||e.tag==="htmlAttrs"||e.tag==="bodyAttrs";return Object.entries(t).forEach(([r,s])=>{if(r==="__proto__"||r==="constructor"||r==="prototype")return;if(s===null){e.props[r]=null;return}if(r==="class"||r==="style"){e.props[r]=Zp(r,s);return}if(Gp.has(r)){if((r==="textContent"||r==="innerHTML")&&typeof s=="object"){let f=t.type;if(t.type||(f="application/json"),!f?.endsWith("json")&&f!=="speculationrules")return;t.type=f,e.props.type=f,e[r]=JSON.stringify(s)}else e[r]=s;return}const o=r.startsWith("data-"),i=n&&!o?r.toLowerCase():r,a=String(s),l=e.tag==="meta"&&i==="content";a==="true"||a===""?e.props[i]=o||l?a:!0:!s&&o&&a==="false"?e.props[i]="false":s!==void 0&&(e.props[i]=s)}),e}function em(e,t){const n=typeof t=="object"&&typeof t!="function"?t:{[e==="script"||e==="noscript"||e==="style"?"innerHTML":"textContent"]:t},r=Hc({tag:e,props:{}},n);return r.key&&Kp.has(r.tag)&&(r.props["data-hid"]=r._h=r.key),r.tag==="script"&&typeof r.innerHTML=="object"&&(r.innerHTML=JSON.stringify(r.innerHTML),r.props.type=r.props.type||"application/json"),Array.isArray(r.props.content)?r.props.content.map(s=>({...r,props:{...r.props,content:s}})):r}function tm(e,t){if(!e)return[];typeof e=="function"&&(e=e());const n=(s,o)=>{for(let i=0;i{if(o!==void 0)for(const i of Array.isArray(o)?o:[o])r.push(em(s,i))}),r.flat()}const Ji=(e,t)=>e._w===t._w?e._p-t._p:e._w-t._w,Yi={base:-10,title:10},nm={critical:-8,high:-1,low:2},Xi={meta:{"content-security-policy":-30,charset:-20,viewport:-15},link:{preconnect:20,stylesheet:60,preload:70,modulepreload:70,prefetch:90,"dns-prefetch":90,prerender:90},script:{async:30,defer:80,sync:50},style:{imported:40,sync:60}},rm=/@import/,Bn=e=>e===""||e===!0;function sm(e,t){if(typeof t.tagPriority=="number")return t.tagPriority;let n=100;const r=nm[t.tagPriority]||0,s=e.resolvedOptions.disableCapoSorting?{link:{},script:{},style:{}}:Xi;if(t.tag in Yi)n=Yi[t.tag];else if(t.tag==="meta"){const o=t.props["http-equiv"]==="content-security-policy"?"content-security-policy":t.props.charset?"charset":t.props.name==="viewport"?"viewport":null;o&&(n=Xi.meta[o])}else if(t.tag==="link"&&t.props.rel)n=s.link[t.props.rel];else if(t.tag==="script"){const o=String(t.props.type);Bn(t.props.async)?n=s.script.async:t.props.src&&!Bn(t.props.defer)&&!Bn(t.props.async)&&o!=="module"&&!o.endsWith("json")||t.innerHTML&&!o.endsWith("json")?n=s.script.sync:(Bn(t.props.defer)&&t.props.src&&!Bn(t.props.async)||o==="module")&&(n=s.script.defer)}else t.tag==="style"&&(n=t.innerHTML&&rm.test(t.innerHTML)?s.style.imported:s.style.sync);return(n||100)+r}function Qi(e,t){const n=typeof t=="function"?t(e):t,r=n.key||String(e.plugins.size+1);e.plugins.get(r)||(e.plugins.set(r,n),e.hooks.addHooks(n.hooks||{}))}function om(e={}){const t=wc();t.addHooks(e.hooks||{});const n=!e.document,r=new Map,s=new Map,o=new Set,i={_entryCount:1,plugins:s,dirty:!1,resolvedOptions:e,hooks:t,ssr:n,entries:r,headEntries(){return[...r.values()]},use:a=>Qi(i,a),push(a,l){const f={...l||{}};delete f.head;const c=f._index??i._entryCount++,u={_i:c,input:a,options:f},h={_poll(d=!1){i.dirty=!0,!d&&o.add(c),t.callHook("entries:updated",i)},dispose(){r.delete(c)&&i.invalidate()},patch(d){(!f.mode||f.mode==="server"&&n||f.mode==="client"&&!n)&&(u.input=d,r.set(c,u),h._poll())}};return h.patch(a),h},async resolveTags(){const a={tagMap:new Map,tags:[],entries:[...i.entries.values()]};for(await t.callHook("entries:resolve",a);o.size;){const h=o.values().next().value;o.delete(h);const d=r.get(h);if(d){const g={tags:tm(d.input,e.propResolvers||[]).map(y=>Object.assign(y,d.options)),entry:d};await t.callHook("entries:normalize",g),d._tags=g.tags.map((y,C)=>(y._w=sm(i,y),y._p=(d._i<<10)+C,y._d=ao(y),y._d||(y._h=Dc(y)),y))}}let l=!1;a.entries.flatMap(h=>(h._tags||[]).map(d=>({...d,props:{...d.props}}))).sort(Ji).reduce((h,d)=>{const g=d._d||d._h;if(!h.has(g))return h.set(g,d);const y=h.get(g);if((d?.tagDuplicateStrategy||(Jp.has(d.tag)?"merge":null)||(d.key&&d.key===y.key?"merge":null))==="merge"){const E={...y.props};Object.entries(d.props).forEach(([v,p])=>E[v]=v==="style"?new Map([...y.props.style||new Map,...p]):v==="class"?new Set([...y.props.class||new Set,...p]):p),h.set(g,{...d,props:E})}else d._p>>10===y._p>>10&&d.tag==="meta"&&Lc(g)?(h.set(g,Object.assign([...Array.isArray(y)?y:[y],d],d)),l=!0):(d._w===y._w?d._p>y._p:d?._wQi(i,a)),i.hooks.callHook("init",i),e.init?.forEach(a=>a&&i.push(a)),i}const im=(e,t)=>me(t)?ft(t):t,$c="usehead";function am(e){return{install(n){n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide($c,e)}}.install}function lm(){if(ns()){const e=Ce($c);if(e)return e}throw new Error("useHead() was called without provide context, ensure you call it through the setup() function.")}function S_(e,t={}){const n=t.head||lm();return n.ssr?n.push(e||{},t):cm(n,e,t)}function cm(e,t,n={}){const r=nt(!1);let s;return of(()=>{const i=r.value?{}:Vr(t,im);s?s.patch(i):s=e.push(i,n)}),an()&&(fr(()=>{s.dispose()}),gl(()=>{r.value=!0}),ml(()=>{r.value=!1})),s}const um=(e,t)=>[],Nc=e=>Tc({},...um("",typeof e=="string"?e.toLowerCase():e).map(t=>t.data).reverse()),fm=Nc;let Cr;function dm(){let e;return e=$fetch($o(`builds/meta/${No().app.buildId}.json`),{responseType:"json"}).then(t=>{if(!t||typeof t!="object"||!Array.isArray(t.prerendered))throw new Error("[nuxt] Received malformed app manifest. Ensure that `builds/meta/*.json` is served as JSON by your hosting/proxy and not rewritten to an HTML fallback.");return t}),Cr=e,e.catch(t=>{Cr===e&&(Cr=void 0),console.error("[nuxt] Error fetching app manifest.",t)}),e}function jc(){return Cr||dm()}function Fc(e){const t=typeof e=="string"?e:e.path;try{return fm(t.toLowerCase())}catch(n){return console.error("[nuxt] Error matching route rules.",n),{}}}async function Zi(e,t={}){return null}async function hm(e){return null}let Yt=null;async function pm(){if(Yt)return Yt;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=await mm(e.textContent||""),n=e.dataset.src?await hm(e.dataset.src):void 0;return Yt={...t,...n,...window.__NUXT__},Yt.config?.public&&(Yt.config.public=ot(Yt.config.public)),Yt}async function mm(e){return await Up(e,ve()._payloadRevivers)}function Bc(e,t){ve()._payloadRevivers[e]=t}const gm=cp(()=>{Bc("skipHydrate",e=>{})});function ea(e){try{return JSON.parse(e)}catch{return e}}const ym=[["NuxtError",e=>Ft(e)],["EmptyShallowRef",e=>Ut(e==="_"?void 0:e==="0n"?BigInt(0):ea(e))],["EmptyRef",e=>nt(e==="_"?void 0:e==="0n"?BigInt(0):ea(e))],["ShallowRef",e=>Ut(e)],["ShallowReactive",e=>Ze(e)],["Ref",e=>nt(e)],["Reactive",e=>ot(e)]],_m=Xe({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const[r,s]of ym)Bc(r,s);Object.assign(e.payload,([t,n]=Qn(()=>e.runWithContext(pm)),t=await t,n(),t)),delete window.__NUXT__}});async function Fo(e,t={}){const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!!r.shouldRender)return e._domUpdatePromise||(e._domUpdatePromise=new Promise(async s=>{const o=new Map,i=new Promise(d=>{e.resolveTags().then(g=>{d(g.map(y=>{const C=o.get(y._d)||0,E={tag:y,id:(C?`${y._d}:${C}`:y._d)||y._h,shouldRender:!0};return y._d&&Lc(y._d)&&o.set(y._d,C+1),E}))})});let a=e._dom;if(!a){a={title:n.title,elMap:new Map().set("htmlAttrs",n.documentElement).set("bodyAttrs",n.body)};for(const d of["body","head"]){const g=n[d]?.children;for(const y of g){const C=y.tagName.toLowerCase();if(!io.has(C))continue;const E=Hc({tag:C,props:{}},{innerHTML:y.innerHTML,...y.getAttributeNames().reduce((v,p)=>(v[p]=y.getAttribute(p),v),{})||{}});if(E.key=y.getAttribute("data-hid")||void 0,E._d=ao(E)||Dc(E),a.elMap.has(E._d)){let v=1,p=E._d;for(;a.elMap.has(p);)p=`${E._d}:${v++}`;a.elMap.set(p,y)}else a.elMap.set(E._d,y)}}}a.pendingSideEffects={...a.sideEffects},a.sideEffects={};function l(d,g,y){const C=`${d}:${g}`;a.sideEffects[C]=y,delete a.pendingSideEffects[C]}function f({id:d,$el:g,tag:y}){const C=y.tag.endsWith("Attrs");a.elMap.set(d,g),C||(y.textContent&&y.textContent!==g.textContent&&(g.textContent=y.textContent),y.innerHTML&&y.innerHTML!==g.innerHTML&&(g.innerHTML=y.innerHTML),l(d,"el",()=>{g?.remove(),a.elMap.delete(d)}));for(const E in y.props){if(!Object.prototype.hasOwnProperty.call(y.props,E))continue;const v=y.props[E];if(E.startsWith("on")&&typeof v=="function"){const _=g?.dataset;if(_&&_[`${E}fired`]){const w=E.slice(0,-5);v.call(g,new Event(w.substring(2)))}g.getAttribute(`data-${E}`)!==""&&((y.tag==="bodyAttrs"?n.defaultView:g).addEventListener(E.substring(2),v.bind(g)),g.setAttribute(`data-${E}`,""));continue}const p=`attr:${E}`;if(E==="class"){if(!v)continue;for(const _ of v)C&&l(d,`${p}:${_}`,()=>g.classList.remove(_)),!g.classList.contains(_)&&g.classList.add(_)}else if(E==="style"){if(!v)continue;for(const[_,w]of v)l(d,`${p}:${_}`,()=>{g.style.removeProperty(_)}),g.style.setProperty(_,w)}else v!==!1&&v!==null&&(g.getAttribute(E)!==v&&g.setAttribute(E,v===!0?"":String(v)),C&&l(d,p,()=>g.removeAttribute(E)))}}const c=[],u={bodyClose:void 0,bodyOpen:void 0,head:void 0},h=await i;for(const d of h){const{tag:g,shouldRender:y,id:C}=d;if(y){if(g.tag==="title"){n.title=g.textContent,l("title","",()=>n.title=a.title);continue}d.$el=d.$el||a.elMap.get(C),d.$el?f(d):io.has(g.tag)&&c.push(d)}}for(const d of c){const g=d.tag.tagPosition||"head";d.$el=n.createElement(d.tag.tag),f(d),u[g]=u[g]||n.createDocumentFragment(),u[g].appendChild(d.$el)}for(const d of h)await e.hooks.callHook("dom:renderTag",d,n,l);u.head&&n.head.appendChild(u.head),u.bodyOpen&&n.body.insertBefore(u.bodyOpen,n.body.firstChild),u.bodyClose&&n.body.appendChild(u.bodyClose);for(const d in a.pendingSideEffects)a.pendingSideEffects[d]();e._dom=a,await e.hooks.callHook("dom:rendered",{renders:h}),s()}).finally(()=>{e._domUpdatePromise=void 0,e.dirty=!1})),e._domUpdatePromise}function bm(e={}){const t=e.domOptions?.render||Fo;e.document=e.document||(typeof window<"u"?document:void 0);const n=e.document?.head.querySelector('script[id="unhead:payload"]')?.innerHTML||!1;return om({...e,plugins:[...e.plugins||[],{key:"client",hooks:{"entries:updated":t}}],init:[n?JSON.parse(n):!1,...e.init||[]]})}function vm(e,t){let n=0;return()=>{const r=++n;t(()=>{n===r&&e()})}}function wm(e={}){const t=bm({domOptions:{render:vm(()=>Fo(t),n=>setTimeout(n,0))},...e});return t.install=am(t),t}const Em={disableDefaults:!0},Sm=Xe({name:"nuxt:head",enforce:"pre",setup(e){const t=wm(Em);e.vueApp.use(t);{let n=!0;const r=async()=>{n=!1,await Fo(t)};t.hooks.hook("dom:beforeRender",o=>{o.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||r()}),e.hooks.hook("app:error",r),e.hooks.hook("app:suspense:resolve",r);const s=t.push.bind(t);t.push=((o,i)=>{const a=s(o,i),l=a.dispose.bind(a);return a.dispose=()=>{const f=e["~transitionPromise"];f?f.then(l):l()},a})}}});const pn=typeof document<"u";function Uc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Tm(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Uc(e.default)}const ie=Object.assign;function xs(e,t){const n={};for(const r in t){const s=t[r];n[r]=st(s)?s.map(e):e(s)}return n}const er=()=>{},st=Array.isArray;function ta(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}const Vc=Symbol("");function kn(e,t){return ie(new Error,{type:e,[Vc]:!0},t)}function bt(e,t){return e instanceof Error&&Vc in e&&(t==null||!!(e.type&t))}const Rm=Symbol(""),na=Symbol(""),Bo=Symbol(""),Uo=Symbol(""),lo=Symbol("");function Kc(e){return Ce(Uo)}const Cm={trailing:!0};function Am(e,t=25,n={}){if(n={...Cm,...n},!Number.isFinite(t))throw new TypeError("Expected `wait` to be a finite number");let r,s,o=[],i,a;const l=(u,h)=>(i=Pm(e,u,h),i.finally(()=>{if(i=null,n.trailing&&a&&!s){const d=l(u,a);return a=null,d}}),i),f=function(...u){return n.trailing&&(a=u),i||new Promise(h=>{const d=!s&&n.leading;clearTimeout(s),s=setTimeout(()=>{s=null;const g=n.leading?r:l(this,u);a=null;for(const y of o)y(g);o=[]},t),d?(r=l(this,u),h(r)):o.push(h)})},c=u=>{u&&(clearTimeout(u),s=null)};return f.isPending=()=>!!s,f.cancel=()=>{c(s),o=[],a=null},f.flush=()=>{if(c(s),!a||i)return;const u=a;return a=null,l(this,u)},f}async function Pm(e,t,n){return await e.apply(t,n)}const Wc=/#/g,xm=/&/g,km=/\//g,Om=/=/g,Mm=/\?/g,zc=/\+/g,Im=/%5B/g,Lm=/%5D/g,qc=/%5E/g,Dm=/%60/g,Gc=/%7B/g,Hm=/%7C/g,Jc=/%7D/g,$m=/%20/g;function Vo(e){return e==null?"":encodeURI(""+e).replace(Hm,"|").replace(Im,"[").replace(Lm,"]")}function Nm(e){return Vo(e).replace(Gc,"{").replace(Jc,"}").replace(qc,"^")}function co(e){return Vo(e).replace(zc,"%2B").replace($m,"+").replace(Wc,"%23").replace(xm,"%26").replace(Dm,"`").replace(Gc,"{").replace(Jc,"}").replace(qc,"^")}function jm(e){return co(e).replace(Om,"%3D")}function Fm(e){return Vo(e).replace(Wc,"%23").replace(Mm,"%3F")}function Bm(e){return Fm(e).replace(km,"%2F")}function Kr(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Um=/\/$/,Vm=e=>e.replace(Um,"");function ks(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return l=a>=0&&l>a?-1:l,l>=0&&(r=t.slice(0,l),o=t.slice(l,a>0?a:t.length),s=e(o.slice(1))),a>=0&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=qm(r??t,n),{fullPath:r+o+i,path:r,query:s,hash:Kr(i)}}function Km(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function ra(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Wm(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&On(t.matched[r],n.matched[s])&&Yc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function On(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Yc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!zm(e[n],t[n]))return!1;return!0}function zm(e,t){return st(e)?sa(e,t):st(t)?sa(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function sa(e,t){return st(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function qm(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}const ze={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};function Gm(e){if(!e)if(pn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Vm(e)}const Jm=/^[^#]+#/;function Ym(e,t){return e.replace(Jm,"#")+t}function Xm(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const us=()=>({left:window.scrollX,top:window.scrollY});function Qm(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Xm(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function oa(e,t){return(history.state?history.state.position-t:-1)+e}const uo=new Map;function Zm(e,t){uo.set(e,t)}function eg(e){const t=uo.get(e);return uo.delete(e),t}function tg(e){return typeof e=="string"||e&&typeof e=="object"}function Xc(e){return typeof e=="string"||typeof e=="symbol"}function ng(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;rs&&co(s)):[r&&co(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function rg(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=st(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}function Un(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function $t(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const f=h=>{h===!1?l(kn(4,{from:n,to:t})):h instanceof Error?l(h):tg(h)?l(kn(2,{from:t,to:h})):(i&&r.enterCallbacks[s]===i&&typeof h=="function"&&i.push(h),a())},c=o(()=>e.call(r&&r.instances[s],t,n,f));let u=Promise.resolve(c);e.length<3&&(u=u.then(f)),u.catch(h=>l(h))})}function Os(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Uc(l)){const f=(l.__vccOpts||l)[t];f&&o.push($t(f,n,r,i,a,s))}else{let f=l();o.push(()=>f.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const u=Tm(c)?c.default:c;i.mods[a]=c,i.components[a]=u;const h=(u.__vccOpts||u)[t];return h&&$t(h,n,r,i,a,s)()}))}}return o}function sg(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iOn(f,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(f=>On(f,l))||s.push(l))}return[n,r,s]}let og=()=>location.protocol+"//"+location.host;function Qc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let i=s.includes(e.slice(o))?e.slice(o).length:1,a=s.slice(i);return a[0]!=="/"&&(a="/"+a),ra(a,"")}return ra(n,e)+r+s}function ig(e,t,n,r){let s=[],o=[],i=null;const a=({state:h})=>{const d=Qc(e,location),g=n.value,y=t.value;let C=0;if(h){if(n.value=d,t.value=h,i&&i===g){i=null;return}C=y?h.position-y.position:0}else r(d);s.forEach(E=>{E(n.value,g,{delta:C,type:"pop",direction:C?C>0?"forward":"back":""})})};function l(){i=n.value}function f(h){s.push(h);const d=()=>{const g=s.indexOf(h);g>-1&&s.splice(g,1)};return o.push(d),d}function c(){if(document.visibilityState==="hidden"){const{history:h}=window;if(!h.state)return;h.replaceState(ie({},h.state,{scroll:us()}),"")}}function u(){for(const h of o)h();o=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",c),document.removeEventListener("visibilitychange",c)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",c),document.addEventListener("visibilitychange",c),{pauseListeners:l,listen:f,destroy:u}}function aa(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?us():null}}function ag(e){const{history:t,location:n}=window,r={value:Qc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,f,c){const u=e.indexOf("#"),h=u>-1?(n.host&&document.querySelector("base")?e:e.slice(u))+l:og()+e+l;try{t[c?"replaceState":"pushState"](f,"",h),s.value=f}catch(d){console.error(d),n[c?"replace":"assign"](h)}}function i(l,f){o(l,ie({},t.state,aa(s.value.back,l,s.value.forward,!0),f,{position:s.value.position}),!0),r.value=l}function a(l,f){const c=ie({},s.value,t.state,{forward:l,scroll:us()});o(c.current,c,!0),o(l,ie({},aa(r.value,l,null),{position:c.position+1},f),!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function lg(e){e=Gm(e);const t=ag(e),n=ig(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=ie({location:"",base:e,go:r,createHref:Ym.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}const cg={type:0,value:""},ug=/[a-zA-Z0-9_]/;function fg(e){if(!e)return[[]];if(e==="/")return[[cg]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(d){throw new Error(`ERR (${n})/"${f}": ${d}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,f="",c="";function u(){f&&(n===0?o.push({type:0,value:f}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:f,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),f="")}function h(){f+=l}for(;at.length?t.length===1&&t[0]===80?1:-1:0}function Zc(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const gg={strict:!1,end:!0,sensitive:!1};function yg(e,t,n){const r=pg(fg(e.path),n),s=ie(r,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function _g(e,t){const n=[],r=new Map;t=ta(gg,t);function s(u){return r.get(u)}function o(u,h,d){const g=!d,y=fa(u);y.aliasOf=d&&d.record;const C=ta(t,u),E=[y];if("alias"in u){const _=typeof u.alias=="string"?[u.alias]:u.alias;for(const w of _)E.push(fa(ie({},y,{components:d?d.record.components:y.components,path:w,aliasOf:d?d.record:y})))}let v,p;for(const _ of E){const{path:w}=_;if(h&&w[0]!=="/"){const k=h.record.path,P=k[k.length-1]==="/"?"":"/";_.path=h.record.path+(w&&P+w)}if(v=yg(_,h,C),d?d.alias.push(v):(p=p||v,p!==v&&p.alias.push(v),g&&u.name&&!da(v)&&i(u.name)),eu(v)&&l(v),y.children){const k=y.children;for(let P=0;P{i(p)}:er}function i(u){if(Xc(u)){const h=r.get(u);h&&(r.delete(u),n.splice(n.indexOf(h),1),h.children.forEach(i),h.alias.forEach(i))}else{const h=n.indexOf(u);h>-1&&(n.splice(h,1),u.record.name&&r.delete(u.record.name),u.children.forEach(i),u.alias.forEach(i))}}function a(){return n}function l(u){const h=wg(u,n);n.splice(h,0,u),u.record.name&&!da(u)&&r.set(u.record.name,u)}function f(u,h){let d,g={},y,C;if("name"in u&&u.name){if(d=r.get(u.name),!d)throw kn(1,{location:u});C=d.record.name,g=ie(ua(h.params,d.keys.filter(p=>!p.optional).concat(d.parent?d.parent.keys.filter(p=>p.optional):[]).map(p=>p.name)),u.params&&ua(u.params,d.keys.map(p=>p.name))),y=d.stringify(g)}else if(u.path!=null)y=u.path,d=n.find(p=>p.re.test(y)),d&&(g=d.parse(y),C=d.record.name,d.keys.forEach(p=>{p.optional&&!g[p.name]&&delete g[p.name]}));else{if(d=h.name?r.get(h.name):n.find(p=>p.re.test(h.path)),!d)throw kn(1,{location:u,currentLocation:h});C=d.record.name,g=ie({},h.params,u.params),y=d.stringify(g)}const E=[];let v=d;for(;v;)E.unshift(v.record),v=v.parent;return{name:C,path:y,params:g,matched:E,meta:vg(E)}}e.forEach(u=>o(u));function c(){n.length=0,r.clear()}return{addRoute:o,resolve:f,removeRoute:i,clearRoutes:c,getRoutes:a,getRecordMatcher:s}}function ua(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function fa(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:bg(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function bg(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function da(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function vg(e){return e.reduce((t,n)=>ie(t,n.meta),{})}function wg(e,t){let n=0,r=t.length;for(;n!==r;){const o=n+r>>1;Zc(e,t[o])<0?r=o:n=o+1}const s=Eg(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function Eg(e){let t=e;for(;t=t.parent;)if(eu(t)&&Zc(e,t)===0)return t}function eu({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ha(e){const t=Ce(Bo),n=Ce(Uo),r=Re(()=>{const l=le(e.to);return t.resolve(l)}),s=Re(()=>{const{matched:l}=r.value,{length:f}=l,c=l[f-1],u=n.matched;if(!c||!u.length)return-1;const h=u.findIndex(On.bind(null,c));if(h>-1)return h;const d=pa(l[f-2]);return f>1&&pa(c)===d&&u[u.length-1].path!==d?u.findIndex(On.bind(null,l[f-2])):h}),o=Re(()=>s.value>-1&&Cg(n.params,r.value.params)),i=Re(()=>s.value>-1&&s.value===n.matched.length-1&&Yc(n.params,r.value.params));function a(l={}){if(Rg(l)){const f=t[le(e.replace)?"replace":"push"](le(e.to)).catch(er);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>f),f}return Promise.resolve()}return{route:r,href:Re(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}function Sg(e){return e.length===1?e[0]:e}const Tg=Wt({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:ha,setup(e,{slots:t}){const n=ot(ha(e)),{options:r}=Ce(Bo),s=Re(()=>({[ma(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[ma(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Sg(t.default(n));return e.custom?o:Oe("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}});function Rg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Cg(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!st(s)||s.length!==r.length||r.some((o,i)=>o.valueOf()!==s[i].valueOf()))return!1}return!0}function pa(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ma=(e,t,n)=>e??t??n,Ag=Wt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Ce(lo),s=Re(()=>e.route||r.value),o=Ce(na,0),i=Re(()=>{let f=le(o);const{matched:c}=s.value;let u;for(;(u=c[f])&&!u.components;)f++;return f}),a=Re(()=>s.value.matched[i.value]);jt(na,Re(()=>i.value+1)),jt(Rm,a),jt(lo,s);const l=nt();return Rt(()=>[l.value,a.value,e.name],([f,c,u],[h,d,g])=>{c&&(c.instances[u]=f,d&&d!==c&&f&&f===h&&(c.leaveGuards.size||(c.leaveGuards=d.leaveGuards),c.updateGuards.size||(c.updateGuards=d.updateGuards))),f&&c&&(!d||!On(c,d)||!h)&&(c.enterCallbacks[u]||[]).forEach(y=>y(f))},{flush:"post"}),()=>{const f=s.value,c=e.name,u=a.value,h=u&&u.components[c];if(!h)return ga(n.default,{Component:h,route:f});const d=u.props[c],g=d?d===!0?f.params:typeof d=="function"?d(f):d:null,C=Oe(h,ie({},g,t,{onVnodeUnmounted:E=>{E.component.isUnmounted&&(u.instances[c]=null)},ref:l}));return ga(n.default,{Component:C,route:f})||C}}});function ga(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const tu=Ag;function Pg(e){const t=_g(e.routes,e),n=e.parseQuery||ng,r=e.stringifyQuery||ia,s=e.history,o=Un(),i=Un(),a=Un(),l=Ut(ze);let f=ze;pn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=xs.bind(null,x=>""+x),u=xs.bind(null,Bm),h=xs.bind(null,Kr);function d(x,K){let B,J;return Xc(x)?(B=t.getRecordMatcher(x),J=K):J=x,t.addRoute(J,B)}function g(x){const K=t.getRecordMatcher(x);K&&t.removeRoute(K)}function y(){return t.getRoutes().map(x=>x.record)}function C(x){return!!t.getRecordMatcher(x)}function E(x,K){if(K=ie({},K||l.value),typeof x=="string"){const b=ks(n,x,K.path),S=t.resolve({path:b.path},K),M=s.createHref(b.fullPath);return ie(b,S,{params:h(S.params),redirectedFrom:void 0,href:M})}let B;if(x.path!=null)B=ie({},x,{path:ks(n,x.path,K.path).path});else{const b=ie({},x.params);for(const S in b)b[S]==null&&delete b[S];B=ie({},x,{params:u(b)}),K.params=u(K.params)}const J=t.resolve(B,K),ee=x.hash||"";J.params=c(h(J.params));const ge=Km(r,ie({},x,{hash:Nm(ee),path:J.path})),m=s.createHref(ge);return ie({fullPath:ge,hash:ee,query:r===ia?rg(x.query):x.query||{}},J,{redirectedFrom:void 0,href:m})}function v(x){return typeof x=="string"?ks(n,x,l.value.path):ie({},x)}function p(x,K){if(f!==x)return kn(8,{from:K,to:x})}function _(x){return P(x)}function w(x){return _(ie(v(x),{replace:!0}))}function k(x,K){const B=x.matched[x.matched.length-1];if(B&&B.redirect){const{redirect:J}=B;let ee=typeof J=="function"?J(x,K):J;return typeof ee=="string"&&(ee=ee.includes("?")||ee.includes("#")?ee=v(ee):{path:ee},ee.params={}),ie({query:x.query,hash:x.hash,params:ee.path!=null?{}:x.params},ee)}}function P(x,K){const B=f=E(x),J=l.value,ee=x.state,ge=x.force,m=x.replace===!0,b=k(B,J);if(b)return P(ie(v(b),{state:typeof b=="object"?ie({},ee,b.state):ee,force:ge,replace:m}),K||B);const S=B;S.redirectedFrom=K;let M;return!ge&&Wm(r,J,B)&&(M=kn(16,{to:S,from:J}),it(J,J,!0,!1)),(M?Promise.resolve(M):T(S,J)).catch(A=>bt(A)?bt(A,2)?A:Mt(A):V(A,S,J)).then(A=>{if(A){if(bt(A,2))return P(ie({replace:m},v(A.to),{state:typeof A.to=="object"?ie({},ee,A.to.state):ee,force:ge}),K||S)}else A=L(S,J,!0,m,ee);return $(S,J,A),A})}function D(x,K){const B=p(x,K);return B?Promise.reject(B):Promise.resolve()}function R(x){const K=cn.values().next().value;return K&&typeof K.runWithContext=="function"?K.runWithContext(x):x()}function T(x,K){let B;const[J,ee,ge]=sg(x,K);B=Os(J.reverse(),"beforeRouteLeave",x,K);for(const b of J)b.leaveGuards.forEach(S=>{B.push($t(S,x,K))});const m=D.bind(null,x,K);return B.push(m),Ke(B).then(()=>{B=[];for(const b of o.list())B.push($t(b,x,K));return B.push(m),Ke(B)}).then(()=>{B=Os(ee,"beforeRouteUpdate",x,K);for(const b of ee)b.updateGuards.forEach(S=>{B.push($t(S,x,K))});return B.push(m),Ke(B)}).then(()=>{B=[];for(const b of ge)if(b.beforeEnter)if(st(b.beforeEnter))for(const S of b.beforeEnter)B.push($t(S,x,K));else B.push($t(b.beforeEnter,x,K));return B.push(m),Ke(B)}).then(()=>(x.matched.forEach(b=>b.enterCallbacks={}),B=Os(ge,"beforeRouteEnter",x,K,R),B.push(m),Ke(B))).then(()=>{B=[];for(const b of i.list())B.push($t(b,x,K));return B.push(m),Ke(B)}).catch(b=>bt(b,8)?b:Promise.reject(b))}function $(x,K,B){a.list().forEach(J=>R(()=>J(x,K,B)))}function L(x,K,B,J,ee){const ge=p(x,K);if(ge)return ge;const m=K===ze,b=pn?history.state:{};B&&(J||m?s.replace(x.fullPath,ie({scroll:m&&b&&b.scroll},ee)):s.push(x.fullPath,ee)),l.value=x,it(x,K,B,m),Mt()}let W;function Z(){W||(W=s.listen((x,K,B)=>{if(!zt.listening)return;const J=E(x),ee=k(J,zt.currentRoute.value);if(ee){P(ie(ee,{replace:!0,force:!0}),J).catch(er);return}f=J;const ge=l.value;pn&&Zm(oa(ge.fullPath,B.delta),us()),T(J,ge).catch(m=>bt(m,12)?m:bt(m,2)?(P(ie(v(m.to),{force:!0}),J).then(b=>{bt(b,20)&&!B.delta&&B.type==="pop"&&s.go(-1,!1)}).catch(er),Promise.reject()):(B.delta&&s.go(-B.delta,!1),V(m,J,ge))).then(m=>{m=m||L(J,ge,!1),m&&(B.delta&&!bt(m,8)?s.go(-B.delta,!1):B.type==="pop"&&bt(m,20)&&s.go(-1,!1)),$(J,ge,m)}).catch(er)}))}let te=Un(),F=Un(),z;function V(x,K,B){Mt(x);const J=F.list();return J.length?J.forEach(ee=>ee(x,K,B)):console.error(x),Promise.reject(x)}function ce(){return z&&l.value!==ze?Promise.resolve():new Promise((x,K)=>{te.add([x,K])})}function Mt(x){return z||(z=!x,Z(),te.list().forEach(([K,B])=>x?B(x):K()),te.reset()),x}function it(x,K,B,J){const{scrollBehavior:ee}=e;if(!pn||!ee)return Promise.resolve();const ge=!B&&eg(oa(x.fullPath,0))||(J||!B)&&history.state&&history.state.scroll||null;return xt().then(()=>ee(x,K,ge)).then(m=>m&&Qm(m)).catch(m=>V(m,x,K))}const De=x=>s.go(x);let ln;const cn=new Set,zt={currentRoute:l,listening:!0,addRoute:d,removeRoute:g,clearRoutes:t.clearRoutes,hasRoute:C,getRoutes:y,resolve:E,options:e,push:_,replace:w,go:De,back:()=>De(-1),forward:()=>De(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:F.add,isReady:ce,install(x){x.component("RouterLink",Tg),x.component("RouterView",tu),x.config.globalProperties.$router=zt,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>le(l)}),pn&&!ln&&l.value===ze&&(ln=!0,_(s.location).catch(J=>{}));const K={};for(const J in ze)Object.defineProperty(K,J,{get:()=>l.value[J],enumerable:!0});x.provide(Bo,zt),x.provide(Uo,Ze(K)),x.provide(lo,l);const B=x.unmount;cn.add(x),x.unmount=function(){cn.delete(x),cn.size<1&&(f=ze,W&&W(),W=null,l.value=ze,ln=!1,z=!1),B()}}};function Ke(x){return x.reduce((K,B)=>K.then(()=>R(B)),Promise.resolve())}return zt}const xg=/(:\w+)\([^)]+\)/g,kg=/(:\w+)[?+*]/g,Og=/:\w+/g,Mg=(e,t)=>t.path.replace(xg,"$1").replace(kg,"$1").replace(Og,n=>e.params[n.slice(1)]?.toString()||""),fo=(e,t)=>{const n=e.route.matched.find(s=>s.components?.default===e.Component.type),r=t??n?.meta.key??(n&&Mg(e.route,n));return typeof r=="function"?r(e.route):r},Ig=(e,t)=>({default:()=>e?Oe(_f,e===!0?{}:e,t):t});function nu(e){return Array.isArray(e)?e:[e]}const Lg="modulepreload",Dg=function(e,t){return new URL(e,t).href},ya={},oe=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){let f=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const i=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),l=a?.nonce||a?.getAttribute("nonce");s=f(n.map(c=>{if(c=Dg(c,r),c in ya)return;ya[c]=!0;const u=c.endsWith(".css"),h=u?'[rel="stylesheet"]':"";if(r)for(let g=i.length-1;g>=0;g--){const y=i[g];if(y.href===c&&(!u||y.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${h}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":Lg,u||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),u)return new Promise((g,y)=>{d.addEventListener("load",g),d.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return s.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})},Hg={title:"应用详情"},$g={title:"后台账号"},Ng={title:"Agent 配置"},jg={title:"应用环境配置"},Fg={title:"应用中心"},Bg={title:"通话翻译规则"},Ug={title:"渠道分发"},Vg={title:"公码管理"},Kg={title:"数据概览"},Wg={title:"渠道商管理"},zg={title:"生产管理"},qg={title:"环境节点"},Gg={title:"品牌商管理"},Jg={title:"全局环境配置"},Yg={title:"MCP配置"},Xg={title:"会议记录服务"},Qg={title:"会议模板"},Zg={title:"产品管理"},ey={title:"方案商管理"},ty={title:"第三方服务配置"},ny={title:"月结算"},ry={title:"统计日志"},sy={title:"服务巡检"},oy={title:"系统配置"},iy={title:"用户查询"},ay={layout:"auth"},Ms=[{name:"apps-name",path:"/apps/:name()",meta:Hg||{},component:()=>oe(()=>import("./CUR2rcGX.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url)},{name:"accounts",path:"/accounts",meta:$g||{},component:()=>oe(()=>import("./BAkLwAvM.js"),__vite__mapDeps([5,1,2,3,6]),import.meta.url)},{name:"agents",path:"/agents",meta:Ng||{},component:()=>oe(()=>import("./w_7nuVJ9.js"),__vite__mapDeps([7,1,2,8,9,10,11]),import.meta.url)},{name:"appconfig",path:"/appconfig",meta:jg||{},component:()=>oe(()=>import("./BZKwWPxz.js"),__vite__mapDeps([12,1,2,3]),import.meta.url)},{name:"apps",path:"/apps",meta:Fg||{},component:()=>oe(()=>import("./DBzpctzV.js"),__vite__mapDeps([13,1,2,3,14]),import.meta.url)},{name:"calltranslate",path:"/calltranslate",meta:Bg||{},component:()=>oe(()=>import("./PbGQRI_R.js"),__vite__mapDeps([15,1,2,8,9,10,16]),import.meta.url)},{name:"channels",path:"/channels",meta:Ug||{},component:()=>oe(()=>import("./BDDumZok.js"),__vite__mapDeps([17,1,2,18]),import.meta.url)},{name:"code",path:"/code",meta:Vg||{},component:()=>oe(()=>import("./Bs6lDwyi.js"),__vite__mapDeps([19,1,2]),import.meta.url)},{name:"dashboard",path:"/dashboard",meta:Kg||{},component:()=>oe(()=>import("./ChqjEN2N.js"),__vite__mapDeps([20,21,1,22,3,23]),import.meta.url)},{name:"dealers",path:"/dealers",meta:Wg||{},component:()=>oe(()=>import("./BFjsaYIf.js"),__vite__mapDeps([24,25,2,1]),import.meta.url)},{name:"device",path:"/device",meta:zg||{},component:()=>oe(()=>import("./CLee_yMD.js"),__vite__mapDeps([26,1,2]),import.meta.url)},{name:"environments",path:"/environments",meta:qg||{},component:()=>oe(()=>import("./B8hrjpgL.js"),__vite__mapDeps([27,1,2]),import.meta.url)},{name:"factory",path:"/factory",meta:Gg||{},component:()=>oe(()=>import("./Bp86Q8ON.js"),__vite__mapDeps([28,25,2,1]),import.meta.url)},{name:"globalconfig",path:"/globalconfig",meta:Jg||{},component:()=>oe(()=>import("./Cy52Ecc0.js"),__vite__mapDeps([29,1,2]),import.meta.url)},{name:"mcpconfig",path:"/mcpconfig",meta:Yg||{},component:()=>oe(()=>import("./DBJku-16.js"),[],import.meta.url)},{name:"meetingsvc",path:"/meetingsvc",meta:Xg||{},component:()=>oe(()=>import("./Bad2XFSd.js"),__vite__mapDeps([30,1,2,8,31]),import.meta.url)},{name:"meettemplates",path:"/meettemplates",meta:Qg||{},component:()=>oe(()=>import("./B9UHsPCY.js"),__vite__mapDeps([32,1,2,8,33]),import.meta.url)},{name:"product",path:"/product",meta:Zg||{},component:()=>oe(()=>import("./C9zSjFPi.js"),__vite__mapDeps([34,1,2]),import.meta.url)},{name:"provider",path:"/provider",meta:ey||{},component:()=>oe(()=>import("./D5EVRMZE.js"),__vite__mapDeps([35,1,2]),import.meta.url)},{name:"serviceconfig",path:"/serviceconfig",meta:ty||{},component:()=>oe(()=>import("./DAaIRqev.js"),__vite__mapDeps([36,9,8,10,1,2,37]),import.meta.url)},{name:"settlements",path:"/settlements",meta:ny||{},component:()=>oe(()=>import("./rUi_Q6ng.js"),__vite__mapDeps([38,1,2]),import.meta.url)},{name:"statlog",path:"/statlog",meta:ry||{},component:()=>oe(()=>import("./DlgycG-C.js"),__vite__mapDeps([39,1,2,40]),import.meta.url)},{name:"svcinspect",path:"/svcinspect",meta:sy||{},component:()=>oe(()=>import("./BSO50kj0.js"),__vite__mapDeps([41,1,2,22,42]),import.meta.url)},{name:"systemconfig",path:"/systemconfig",meta:oy||{},component:()=>oe(()=>import("./yis2MfHE.js"),__vite__mapDeps([43,2,1,44]),import.meta.url)},{name:"users",path:"/users",meta:iy||{},component:()=>oe(()=>import("./GUJrhX2S.js"),__vite__mapDeps([45,1,2,3]),import.meta.url)},{name:"index",path:"/",meta:ay||{},component:()=>oe(()=>import("./BKXYxnNU.js"),__vite__mapDeps([46,47]),import.meta.url)}],ru=(e,t)=>({default:()=>e?Oe(_d,e===!0?{}:e,t):t.default?.()}),ly=/(:\w+)\([^)]+\)/g,cy=/(:\w+)[?+*]/g,uy=/:\w+/g;function _a(e){const t=e?.meta.key??e.path.replace(ly,"$1").replace(cy,"$1").replace(uy,n=>e.params[n.slice(1)]?.toString()||"");return typeof t=="function"?t(e):t}function fy(e,t){return e===t||t===ze?!1:_a(e)!==_a(t)?!0:!e.matched.every((r,s)=>r.components&&r.components.default===t.matched[s]?.components?.default)}function ba(e){return Array.isArray(e)?e:[e]}function su(e){const t=[];for(const n of e)n&&t.push({...n,onAfterLeave:n.onAfterLeave?ba(n.onAfterLeave):void 0,onBeforeLeave:n.onBeforeLeave?ba(n.onBeforeLeave):void 0});return Tc(...t)}const dy={scrollBehavior(e,t,n){const r=ve(),s=Ve().options?.scrollBehaviorType??"auto";return e.path.replace(/\/$/,"")===t.path.replace(/\/$/,"")?t.hash&&!e.hash?{left:0,top:0}:e.hash?{el:e.hash,top:ou(e.hash),behavior:s}:!1:(typeof e.meta.scrollToTop=="function"?e.meta.scrollToTop(e,t):e.meta.scrollToTop)===!1?!1:t===ze?va(e,t,n,s):new Promise(i=>{const a=()=>{requestAnimationFrame(()=>i(va(e,t,n,s)))};r.hooks.hookOnce("page:loading:end",()=>{const l=r["~transitionPromise"];l?l.then(a):a()})})}};function ou(e){try{const t=document.querySelector(e);if(t)return(Number.parseFloat(getComputedStyle(t).scrollMarginTop)||0)+(Number.parseFloat(getComputedStyle(document.documentElement).scrollPaddingTop)||0)}catch{}return 0}function va(e,t,n,r){return n||(e.hash?{el:e.hash,top:ou(e.hash),behavior:fy(e,t)?r:"instant"}:{left:0,top:0})}const hy={hashMode:!1,scrollBehaviorType:"auto"},Lt={...hy,...dy},py=async(e,t)=>{let n,r;if(!e.meta?.validate)return;const s=([n,r]=Qn(()=>Promise.resolve(e.meta.validate(e))),n=await n,r(),n);if(s===!0)return;const o=Ft({fatal:!0,status:s&&(s.status||s.statusCode)||404,statusText:s&&(s.statusText||s.statusMessage)||`Page Not Found: ${e.fullPath}`,data:{path:e.fullPath}});return typeof window<"u"&&window.history.pushState({},"",t.fullPath),o},fs=[{label:"数据概览",items:[{id:"dashboard",label:"仪表盘",to:"/dashboard",icon:"M9 17v-2m3 2v-4m3 4v-6m2 10H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},{id:"svcinspect",label:"服务巡检",to:"/svcinspect",icon:"M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z"}]},{label:"生产管理",items:[{id:"provider",label:"方案商管理",to:"/provider",icon:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},{id:"factory",label:"品牌商管理",to:"/factory",icon:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},{id:"channel",label:"渠道商管理",to:"/dealers",icon:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"},{id:"product",label:"产品管理",to:"/product",icon:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},{id:"code",label:"公码管理",to:"/code",icon:"M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6zm10 2h2m-2 4h6m-4-4v4m4-8h2m-2 0v4"},{id:"device",label:"生产管理",to:"/device",icon:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"}]},{label:"结算管理",items:[{id:"settlement",label:"月结算",to:"/settlements",icon:"M9 7h6m-6 4h6m-6 4h4M5 3h14a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2z"}]},{label:"用户管理",items:[{id:"user",label:"用户查询",to:"/users",icon:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"}]},{label:"服务配置",items:[{id:"globalconfig",label:"全局环境配置",to:"/globalconfig",icon:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"},{id:"appconfig",label:"应用环境配置",to:"/appconfig",icon:"M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4"},{id:"meettemplate",label:"会议模板",to:"/meettemplates",icon:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},{id:"svcconfig",label:"第三方服务配置",to:"/serviceconfig",icon:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z M15 12a3 3 0 11-6 0 3 3 0 016 0z"},{id:"agents",label:"Agent 配置",to:"/agents",icon:"M12 3a2 2 0 012 2v1h3a2 2 0 012 2v3a2 2 0 01-2 2h-1v3a2 2 0 01-2 2H8a2 2 0 01-2-2v-3H5a2 2 0 01-2-2V8a2 2 0 012-2h3V5a2 2 0 012-2zM9 13h.01M15 13h.01"},{id:"meetingsvc",label:"会议记录服务",to:"/meetingsvc",icon:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"},{id:"calltranslate",label:"通话翻译配置",to:"/calltranslate",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129"}]},{label:"SaaS 管理",restricted:!0,items:[{id:"apps",label:"应用中心",to:"/apps",icon:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"},{id:"environments",label:"环境节点",to:"/environments",icon:"M5 3h14a2 2 0 012 2v4a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2zM5 13h14a2 2 0 012 2v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4a2 2 0 012-2zM7 7h.01M7 17h.01"},{id:"channels",label:"渠道分发",to:"/channels",icon:"M12 3v12m0 0l-4-4m4 4l4-4M4 17v2a2 2 0 002 2h12a2 2 0 002-2v-2"}]},{label:"系统管理",restricted:!0,items:[{id:"systemconfig",label:"系统配置",to:"/systemconfig",icon:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4"},{id:"statlog",label:"统计日志",to:"/statlog",icon:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"},{id:"admin",label:"后台账号",to:"/accounts",icon:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"}]}],T_=fs.flatMap(e=>e.items.map(t=>t.id)),my=fs.filter(e=>!e.restricted).flatMap(e=>e.items.map(t=>t.id)),gy=["dashboard","channel","user","settlement"],yy=["dashboard","user","settlement"];function _y(e){let t=null;for(const n of fs)for(const r of n.items)(e===r.to||e.startsWith(r.to+"/"))&&(!t||r.to.length>t.to.length)&&(t=r);return t}const by={1:"超管",2:"管理员",3:"品牌商",4:"运营",5:"渠道商"},wa=1,Ea=2,Sa=3,Ta=5,Ko="auth_state";function Sr(e){return e?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function Is(e){localStorage.setItem(Ko,JSON.stringify(e))}function vy(){try{const e=localStorage.getItem(Ko);return e?JSON.parse(e):null}catch{return null}}const iu=Cp("auth",{state:()=>({token:"",account:"",identity:0,access:[],apps:[],regions:[],products:[],brandid:0,channelid:"",appbinds:[],currentAppId:0,siteTitle:""}),getters:{isSuperAdmin(){return this.identity===1},isAdmin(){return this.identity===wa||this.identity===Ea},isBrandAccount(){return this.identity===Sa&&this.brandid>0},isDealer(){return this.identity===Ta},identityLabel(){return by[this.identity]??""},isLoggedIn(){return!!this.token}},actions:{setLoginData(e){this.token=e.token,this.account=e.account,this.identity=e.identity,this.access=Sr(e.access),this.apps=Sr(e.apps),this.regions=Sr(e.regions),this.products=Sr(e.products),this.brandid=e.brandid??0,this.channelid=e.channelid??"",this.appbinds=e.appbinds??[],this.appbinds.length>0&&!this.currentAppId&&(this.currentAppId=this.appbinds[0].id),Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,brandid:this.brandid,channelid:this.channelid,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},setCurrentApp(e){this.currentAppId=e,Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,brandid:this.brandid,channelid:this.channelid,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},setSiteTitle(e){this.siteTitle=e,Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,brandid:this.brandid,channelid:this.channelid,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},logout(){this.token="",this.account="",this.identity=0,this.access=[],this.apps=[],this.regions=[],this.products=[],this.brandid=0,this.channelid="",this.appbinds=[],this.currentAppId=0,this.siteTitle="",localStorage.removeItem(Ko)},restore(){const e=vy();e&&(this.token=e.token??"",this.account=e.account??"",this.identity=e.identity??0,this.access=e.access??[],this.apps=e.apps??[],this.regions=e.regions??[],this.products=e.products??[],this.brandid=e.brandid??0,this.channelid=e.channelid??"",this.appbinds=e.appbinds??[],this.currentAppId=e.currentAppId??0,this.siteTitle=e.siteTitle??"")},hasAccess(e){if(this.identity===wa)return!0;if(this.identity===Ea&&this.access.length===0)return my.includes(e);if(this.access.length===0){if(this.identity===Sa)return gy.includes(e);if(this.identity===Ta)return yy.includes(e)}return this.access.includes(e)}}}),wy=e=>{const t=iu();if(!t.token)return;const n=_y(e.path);if(!(!n||t.hasAccess(n.id))){for(const r of fs)for(const s of r.items)if(t.hasAccess(s.id))return zi(s.to);return zi("/")}},Ey=e=>{const t=Fc({path:e.path});if(t.redirect){const n=t.redirect.includes("#")?t.redirect:t.redirect+e.hash;return Dn(n,{acceptRelative:!0})?(window.location.href=n,!1):n}},Sy=[py,wy,Ey],ho={};function Ty(e,t,n){const{pathname:r,search:s,hash:o}=t,i=e.indexOf("#");if(i>-1){const f=o.includes(e.slice(i))?e.slice(i).length:1;let c=o.slice(f);return c[0]!=="/"&&(c="/"+c),Di(c,"")}const a=Di(r,e),l=!n||mc(a,n)?a:n;return l+(l.includes("?")?"":s)+o}const Ry=Xe({name:"nuxt:router",enforce:"pre",async setup(e){let t,n,r=No().app.baseURL;const s=Lt.history?.(r)??lg(r),o=Lt.routes?([t,n]=Qn(()=>Lt.routes(Ms)),t=await t,n(),t??Ms):Ms;let i;const a=Pg({...Lt,scrollBehavior:(E,v,p)=>{if(v===ze){i=p;return}if(Lt.scrollBehavior){if(a.options.scrollBehavior=Lt.scrollBehavior,"scrollRestoration"in window.history){const _=a.beforeEach(()=>{_(),window.history.scrollRestoration="manual"})}return Lt.scrollBehavior(E,ze,i||p)}},history:s,routes:o});"scrollRestoration"in window.history&&(window.history.scrollRestoration="auto"),e.vueApp.use(a);const l=Ut(a.currentRoute.value);a.afterEach((E,v)=>{l.value=v}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>l.value});const f=Ty(r,window.location,e.payload.path),c=Ut(a.currentRoute.value),u=()=>{c.value=a.currentRoute.value};a.afterEach((E,v)=>{const p=E.matched.at(-1)?.components?.default,_=v.matched.at(-1)?.components?.default;if(p===_){u();return}E.matched.lengthw.components?.default===v.matched[k]?.components?.default)&&u()});const h={sync:u};for(const E in c.value)Object.defineProperty(h,E,{get:()=>c.value[E],enumerable:!0});e._route=Ze(h),e._middleware||={global:[],named:{}};const d=cs();a.afterEach(async(E,v,p)=>{delete e._processingMiddleware,!e.isHydrating&&d.value&&await e.runWithContext(bp),p&&await e.callHook("page:loading:end")});try{[t,n]=Qn(()=>a.isReady()),await t,n()}catch(E){[t,n]=Qn(()=>e.runWithContext(()=>Zt(E))),await t,n()}const g=f!==a.currentRoute.value.fullPath?a.resolve(f):a.currentRoute.value,y=e.isHydrating&&e.payload.prerenderedAt&&e.payload.path&&f!==e.payload.path&&mc(a.currentRoute.value.path,e.payload.path);u();const C=e.payload.state._layout;return a.beforeEach(async(E,v)=>{await e.callHook("page:loading:start"),E.meta=ot(E.meta),e.isHydrating&&C&&!gt(E.meta.layout)&&(E.meta.layout=C),e._processingMiddleware=!0;{const p=new Set([...Sy,...e._middleware.global]);for(const w of E.matched){const k=w.meta.middleware;if(k)for(const P of nu(k))p.add(P)}const _=Fc({path:E.path});if(_.appMiddleware)for(const w in _.appMiddleware)_.appMiddleware[w]?p.add(w):p.delete(w);for(const w of p){const k=typeof w=="string"?e._middleware.named[w]||await ho[w]?.().then(P=>P.default||P):w;if(!k)throw new Error(`Unknown route middleware: '${w}'.`);try{const P=await e.runWithContext(()=>k(E,v));if(!e.payload.serverRendered&&e.isHydrating&&(P===!1||P instanceof Error)){const D=P||Ft({status:404,statusText:`Page Not Found: ${f}`});return await e.runWithContext(()=>Zt(D)),!1}if(P===!0)continue;if(P===!1)return P;if(P)return Pc(P)&&P.fatal&&await e.runWithContext(()=>Zt(P)),P}catch(P){const D=Ft(P);return D.fatal&&await e.runWithContext(()=>Zt(D)),D}}}}),a.onError(async()=>{delete e._processingMiddleware,await e.callHook("page:loading:end")}),a.afterEach(E=>{if(E.matched.length===0&&!d.value)return e.runWithContext(()=>Zt(Ft({status:404,fatal:!1,statusText:`Page not found: ${E.fullPath}`,data:{path:E.fullPath}})))}),e.hooks.hookOnce("app:created",async()=>{try{if("name"in g&&(g.name=void 0),y){const E=a.resolve(e.payload.path);"name"in E&&(E.name=void 0),await a.replace({...E,force:!0}),e.hooks.hookOnce("app:suspense:resolve",async()=>{await a.replace({...g,force:!0})})}else await a.replace({...g,force:!0});a.options.scrollBehavior=Lt.scrollBehavior}catch(E){await e.runWithContext(()=>Zt(E))}}),{provide:{router:a}}}}),Ra=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),R_=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),Wo=e=>{const t=ve();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{Ra(()=>e())}):Ra(()=>e())},Cy=Xe({name:"nuxt:payload",setup(e){const t=new Set;Ve().beforeResolve(async(n,r)=>{if(n.path===r.path)return;const s=await Zi(n.path);if(s){for(const o of t)delete e.static.data[o];for(const o in s.data)o in e.static.data||t.add(o),e.static.data[o]=s.data[o]}}),Wo(()=>{e.hooks.hook("link:prefetch",async n=>{const{hostname:r}=new URL(n,window.location.href);r===window.location.hostname&&await Zi().catch(()=>{console.warn("[nuxt] Error preloading payload for",n)})}),navigator.connection?.effectiveType!=="slow-2g"&&setTimeout(jc,1e3)})}}),Ay=Xe(()=>{const e=Ve();Wo(()=>{e.beforeResolve(async()=>{await new Promise(t=>{setTimeout(t,100),requestAnimationFrame(()=>{setTimeout(t,0)})})})})}),Py=Xe(e=>{let t;async function n(){let r;try{r=await jc()}catch(s){const o=s;if(!("status"in o&&(o.status===404||o.status===403)))throw o}t&&clearTimeout(t),t=setTimeout(n,Vi);try{const s=await $fetch($o("builds/latest.json")+`?${Date.now()}`);s.id!==r?.id&&(e.hooks.callHook("app:manifest:update",s),t&&clearTimeout(t))}catch{}}Wo(()=>{t=setTimeout(n,Vi)})});function xy(e={}){const t=e.path||window.location.pathname,n=new URL(t,window.location.href);if(n.host!==window.location.host)throw new Error(`Cannot navigate to a URL with a different host: '${t}'.`);if(n.protocol&&Xs(n.protocol))throw new Error(`Cannot navigate to a URL with '${n.protocol}' protocol.`);let r={};try{r=JSON.parse(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||r?.path!==t||r?.expires{r.clear()}),e.hook("app:chunkError",({error:o})=>{r.add(o)});function s(o){const i=hc(n.app.baseURL,o.fullPath);xy({path:i,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(s)}),t.onError((o,i)=>{r.has(o)&&s(i)})}});function Oy(e){return typeof e=="string"?`'${e}'`:new My().serialize(e)}const My=(function(){class e{#e=new Map;compare(n,r){const s=typeof n,o=typeof r;return s==="string"&&o==="string"?n.localeCompare(r):s==="number"&&o==="number"?n-r:String.prototype.localeCompare.call(this.serialize(n,!0),this.serialize(r,!0))}serialize(n,r){if(n===null)return"null";switch(typeof n){case"string":return r?n:`'${n}'`;case"bigint":return`${n}n`;case"object":return this.$object(n);case"function":return this.$function(n)}return String(n)}serializeObject(n){const r=Object.prototype.toString.call(n);if(r!=="[object Object]")return this.serializeBuiltInType(r.length<10?`unknown:${r}`:r.slice(8,-1),n);const s=n.constructor,o=s===Object||s===void 0?"":s.name;if(o!==""&&globalThis[o]===s)return this.serializeBuiltInType(o,n);if(typeof n.toJSON=="function"){const i=n.toJSON();return o+(i!==null&&typeof i=="object"?this.$object(i):`(${this.serialize(i)})`)}return this.serializeObjectEntries(o,Object.entries(n))}serializeBuiltInType(n,r){const s=this["$"+n];if(s)return s.call(this,r);if(typeof r?.entries=="function")return this.serializeObjectEntries(n,r.entries());throw new Error(`Cannot serialize ${n}`)}serializeObjectEntries(n,r){const s=Array.from(r).sort((i,a)=>this.compare(i[0],a[0]));let o=`${n}{`;for(let i=0;ithis.compare(r,s)))}`}$Map(n){return this.serializeObjectEntries("Map",n.entries())}}for(const t of["Error","RegExp","URL"])e.prototype["$"+t]=function(n){return`${t}(${n})`};for(const t of["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array"])e.prototype["$"+t]=function(n){return`${t}[${n.join(",")}]`};for(const t of["BigInt64Array","BigUint64Array"])e.prototype["$"+t]=function(n){return`${t}[${n.join("n,")}${n.length>0?"n":""}]`};return e})(),Iy=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Ly=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],Dy="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",Xt=[];class Hy{_data=new yn;_hash=new yn([...Iy]);_nDataBytes=0;_minBufferSize=0;finalize(t){t&&this._append(t);const n=this._nDataBytes*8,r=this._data.sigBytes*8;return this._data.words[r>>>5]|=128<<24-r%32,this._data.words[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),this._data.words[(r+64>>>9<<4)+15]=n,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(t,n){const r=this._hash.words;let s=r[0],o=r[1],i=r[2],a=r[3],l=r[4],f=r[5],c=r[6],u=r[7];for(let h=0;h<64;h++){if(h<16)Xt[h]=t[n+h]|0;else{const p=Xt[h-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,w=Xt[h-2],k=(w<<15|w>>>17)^(w<<13|w>>>19)^w>>>10;Xt[h]=_+Xt[h-7]+k+Xt[h-16]}const d=l&f^~l&c,g=s&o^s&i^o&i,y=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),C=(l<<26|l>>>6)^(l<<21|l>>>11)^(l<<7|l>>>25),E=u+C+d+Ly[h]+Xt[h],v=y+g;u=c,c=f,f=l,l=a+E|0,a=i,i=o,o=s,s=E+v|0}r[0]=r[0]+s|0,r[1]=r[1]+o|0,r[2]=r[2]+i|0,r[3]=r[3]+a|0,r[4]=r[4]+l|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+u|0}_append(t){typeof t=="string"&&(t=yn.fromUtf8(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_process(t){let n,r=this._data.sigBytes/64;t?r=Math.ceil(r):r=Math.max((r|0)-this._minBufferSize,0);const s=r*16,o=Math.min(s*4,this._data.sigBytes);if(s){for(let i=0;i>>2]|=(n.charCodeAt(o)&255)<<24-o%4*8;return new yn(s,r)}toBase64(){const t=[];for(let n=0;n>>2]>>>24-n%4*8&255,s=this.words[n+1>>>2]>>>24-(n+1)%4*8&255,o=this.words[n+2>>>2]>>>24-(n+2)%4*8&255,i=r<<16|s<<8|o;for(let a=0;a<4&&n*8+a*6>>6*(3-a)&63))}return t.join("")}concat(t){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let n=0;n>>2]>>>24-n%4*8&255;this.words[this.sigBytes+n>>>2]|=r<<24-(this.sigBytes+n)%4*8}else for(let n=0;n>>2]=t.words[n>>>2];this.sigBytes+=t.sigBytes}}function $y(e){return new Hy().finalize(e).toBase64()}function mn(e){return $y(Oy(e))}const Ny=Symbol.for("nuxt:client-only");function au(e){return Object.defineProperty(function(){throw new Error(`[nuxt] \`${e.name}\` is a compiler macro and cannot be called at runtime.`)},"__nuxt_factory",{enumerable:!1,get:()=>e.factory})}const lu=au({name:"createUseAsyncData",factory(e={}){function t(...n){const r=typeof n[n.length-1]=="string"?n.pop():void 0;Fy(n[0],n[1])&&n.unshift(r);let[s,o,i={}]=n,a=!1;const l=me(s)||typeof s=="function",f=l?Re(()=>ft(s)):{value:s};if(!f.value||typeof f.value!="string")throw new TypeError("[nuxt] [useAsyncData] key must be a non-empty string.");if(typeof o!="function")throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");const c=typeof e=="function",u=ve(),h=c?e(i):e;if(!c)for(const p in h)h[p]!==void 0&&i[p]===void 0&&(i[p]=h[p]);if(i.server??=!0,i.default??=Uy,i.getCachedData??=uu,i.lazy??=!1,i.immediate??=!0,i.deep??=ep.deep,i.dedupe??="cancel",c)for(const p in h)h[p]!==void 0&&(i[p]=h[p]);u._asyncData[f.value];function d(){const p={cause:"initial",dedupe:i.dedupe},_=u._asyncData[f.value];return _?._init?u._asyncDataPromises[f.value]&&(p.cachedData=_._initialCachedData):(p.cachedData=i.getCachedData(f.value,u,{cause:"initial"}),u._asyncData[f.value]=Ca(u,f.value,o,i,p.cachedData),u._asyncData[f.value]._initialCachedData=p.cachedData),()=>u._asyncData[f.value].execute(p)}const g=d(),y=u._asyncData[f.value];y._deps++;const C=i.server!==!1&&u.payload.serverRendered;{let p=function(T){const $=u._asyncData[T];$?._deps&&($._deps--,$._deps===0&&$?._off())};const _=an();if(_&&C&&i.immediate&&!_.sp&&(_.sp=[]),_&&!_._nuxtOnBeforeMountCbs){_._nuxtOnBeforeMountCbs=[];const T=_._nuxtOnBeforeMountCbs;_l(()=>{T.forEach($=>{$()}),T.splice(0,T.length)}),ss(()=>T.splice(0,T.length))}const w=_&&(_._nuxtClientOnly||Ce(Ny,!1));C&&u.isHydrating&&(y.error.value||y.data.value!==void 0)?y.status.value=y.error.value?"error":"success":_&&(!w&&u.payload.serverRendered&&u.isHydrating||i.lazy)&&i.immediate?_._nuxtOnBeforeMountCbs.push(g):i.immediate&&y.status.value!=="success"&&g();const k=Zr(),P=()=>{},D=l?Rt(f,(T,$)=>{if((T||$)&&T!==$){a=!0;const L=u._asyncData[$]?.data.value!==void 0,W=u._asyncDataPromises[$]!==void 0,Z={cause:"initial",dedupe:i.dedupe};if(!u._asyncData[T]?._init){let F;$&&L?F=u._asyncData[$].data.value:(F=i.getCachedData(T,u,{cause:"initial"}),Z.cachedData=F),u._asyncData[T]=Ca(u,T,o,i,F)}u._asyncData[T]._deps++,$&&p($),i._keyTriggersExecute!==!1&&(i.immediate||L||W)&&u._asyncData[T].execute(Z),rr(()=>{a=!1})}},{flush:"sync"}):P,R=i.watch?Rt(i.watch,()=>{a||(u._asyncData[f.value]?._execute.isPending()&&rr(()=>{u._asyncData[f.value]?._execute.flush()}),u._asyncData[f.value]?._execute({cause:"watch",dedupe:i.dedupe}))}):P;k&&ja(()=>{D(),R(),p(f.value)})}const E={data:Tr(()=>u._asyncData[f.value]?.data),pending:Tr(()=>u._asyncData[f.value]?.pending),status:Tr(()=>u._asyncData[f.value]?.status),error:Tr(()=>u._asyncData[f.value]?.error),refresh:(...p)=>u._asyncData[f.value]?._init?u._asyncData[f.value].execute(...p):d()(),execute:(...p)=>E.refresh(...p),clear:()=>{const p=u._asyncData[f.value];if(p?._abortController)try{p._abortController.abort(new DOMException("AsyncData aborted by user.","AbortError"))}finally{p._abortController=void 0}cu(u,f.value)}},v=Promise.resolve(u._asyncDataPromises[f.value]).then(()=>E);return Object.assign(v,E),Object.defineProperties(v,{then:{enumerable:!0,value:v.then.bind(v)},catch:{enumerable:!0,value:v.catch.bind(v)},finally:{enumerable:!0,value:v.finally.bind(v)}}),v}return t}}),jy=lu.__nuxt_factory();lu.__nuxt_factory({lazy:!0,_functionName:"useLazyAsyncData"});function Tr(e){return Re({get(){return e()?.value},set(t){const n=e();n&&(n.value=t)}})}function Fy(e,t){return!(typeof e=="string"||typeof e=="object"&&e!==null||typeof e=="function"&&typeof t=="function")}function cu(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=void 0),e._asyncData[t]&&(e._asyncData[t].data.value=le(e._asyncData[t]._default()),e._asyncData[t].error.value=void 0,e._asyncData[t].status.value="idle",e._asyncData[t]._initialCachedData=void 0),t in e._asyncDataPromises&&(e._asyncDataPromises[t]=void 0)}function By(e,t){const n={};for(const r of t)n[r]=e[r];return n}function Ca(e,t,n,r,s){e.payload._errors[t]??=void 0;const o=r.getCachedData!==uu,i=n,a=r.deep?nt:Ut,l=s!==void 0,f=e.hook("app:data:refresh",async u=>{(!u||u.includes(t))&&await c.execute({cause:"refresh:hook"})}),c={data:a(l?s:r.default()),pending:Re(()=>c.status.value==="pending"),error:nl(e.payload._errors,t),status:Ut("idle"),execute:(...u)=>{const[h,d=void 0]=u,g=h&&d===void 0&&typeof h=="object"?h:{};if(e._asyncDataPromises[t]&&(g.dedupe??r.dedupe)==="defer")return e._asyncDataPromises[t];{const E="cachedData"in g?g.cachedData:r.getCachedData(t,e,{cause:g.cause??"refresh:manual"});if(E!==void 0)return e.payload.data[t]=c.data.value=E,c.error.value=void 0,c.status.value="success",Promise.resolve(E)}c._abortController&&c._abortController.abort(new DOMException("AsyncData request cancelled by deduplication","AbortError")),c._abortController=new AbortController,c.status.value="pending";const y=new AbortController,C=new Promise((E,v)=>{try{const p=g.timeout??r.timeout,_=Vy([c._abortController?.signal,g?.signal],y.signal,p);if(_.aborted){const w=_.reason;v(w instanceof Error?w:new DOMException(String(w??"Aborted"),"AbortError"));return}return _.addEventListener("abort",()=>{const w=_.reason;v(w instanceof Error?w:new DOMException(String(w??"Aborted"),"AbortError"))},{once:!0,signal:y.signal}),Promise.resolve(i(e,{signal:_})).then(E,v)}catch(p){v(p)}}).then(async E=>{if(e._asyncDataPromises[t]!==C)return;let v=E;r.transform&&(v=await r.transform(E)),r.pick&&(v=By(v,r.pick)),e.payload.data[t]=v,c.data.value=v,c.error.value=void 0,c.status.value="success"}).catch(E=>{if(e._asyncDataPromises[t]!==C||c._abortController?.signal.aborted)return e._asyncDataPromises[t];if(typeof DOMException<"u"&&E instanceof DOMException&&E.name==="AbortError")return c.status.value="idle",e._asyncDataPromises[t];c.error.value=Ft(E),c.data.value=le(r.default()),c.status.value="error"}).finally(()=>{y.abort(),e._asyncDataPromises[t]===C&&delete e._asyncDataPromises[t]});return e._asyncDataPromises[t]=C,e._asyncDataPromises[t]},_execute:Am((...u)=>c.execute(...u),0,{leading:!0}),_default:r.default,_deps:0,_init:!0,_hash:void 0,_off:()=>{f(),e._asyncData[t]?._init&&(e._asyncData[t]._init=!1),o||xt(()=>{e._asyncData[t]?._init||(cu(e,t),c.execute=()=>Promise.resolve())})}};return c}const Uy=()=>{},uu=(e,t,n)=>{if(t.isHydrating)return t.payload.data[e];if(n.cause!=="refresh:manual"&&n.cause!=="refresh:hook")return t.static.data[e]};function Vy(e,t,n){const r=e.filter(i=>!!i);if(typeof n=="number"&&n>=0){const i=AbortSignal.timeout?.(n);i&&r.push(i)}if(AbortSignal.any)return AbortSignal.any(r);const s=new AbortController;for(const i of r)if(i.aborted){const a=i.reason??new DOMException("Aborted","AbortError");try{s.abort(a)}catch{s.abort()}return s.signal}const o=()=>{const a=r.find(l=>l.aborted)?.reason??new DOMException("Aborted","AbortError");try{s.abort(a)}catch{s.abort()}};for(const i of r)i.addEventListener?.("abort",o,{once:!0,signal:t});return s.signal}function Ky(e){const t=[ft(e.method)?.toUpperCase()||"GET",ft(e.baseURL)];for(const n of[e.query||e.params]){const r=ft(n);if(!r)continue;const s={};for(const[o,i]of Object.entries(r))s[ft(o)]=ft(i);t.push(s)}if(e.body){const n=ft(e.body);if(!n)t.push(mn(n));else if(n instanceof ArrayBuffer)t.push(mn(Object.fromEntries([...new Uint8Array(n).entries()].map(([r,s])=>[r,s.toString()]))));else if(n instanceof FormData){const r=[];for(const s of n.entries()){const[o,i]=s;r.push([o,i instanceof File?`${i.name}:${i.size}:${i.lastModified}`:i])}t.push(mn(r))}else if(go(n))t.push(mn(ot(n)));else try{t.push(mn(n))}catch{console.warn("[useFetch] Failed to hash body",n)}}return t}const fu=au({name:"createUseFetch",factory(e={}){function t(n,r,s){const[o={},i]=typeof r=="string"?[{},r]:[r,s],a=typeof e=="function"?e(o):e,{server:l,lazy:f,default:c,transform:u,pick:h,watch:d,immediate:g,getCachedData:y,deep:C,dedupe:E,timeout:v,...p}={...typeof e=="function"?{}:a,...o,...typeof e=="function"?a:{}},_=Re(()=>ft(n)),w=Re(()=>ft(p.key)||"$f"+mn([i,typeof _.value=="string"?_.value:"",...Ky(p)]));if(!p.baseURL&&typeof _.value=="string"&&_.value[0]==="/"&&_.value[1]==="/")throw new Error('[nuxt] [useFetch] the request URL must not start with "//".');const k=ot({...tp,...p,cache:typeof p.cache=="boolean"?void 0:p.cache}),P={server:l,lazy:f,default:c,transform:u,pick:h,immediate:g,getCachedData:y,deep:C,dedupe:E,timeout:v,watch:d===!1?[]:[...d||[],k]};return d===!1&&(P._keyTriggersExecute=!1),jy(w,(R,{signal:T})=>(p.$fetch||globalThis.$fetch)(_.value,{signal:T,...k}),P)}return t}});fu.__nuxt_factory();fu.__nuxt_factory({lazy:!0,_functionName:"useLazyFetch"});function Wy(e){if(e?.__asyncLoader&&!e.__asyncResolved)return e.__asyncLoader()}async function zy(e,t=Ve()){const{path:n,matched:r}=t.resolve(e);if(!r.length||(t._routePreloaded||=new Set,t._routePreloaded.has(n)))return;const s=t._preloadPromises||=[];if(s.length>4)return Promise.all(s).then(()=>zy(e,t));t._routePreloaded.add(n);for(const o of r){const i=o.components?.default;if(typeof i!="function")continue;const a=Promise.resolve(i()).catch(()=>{}).finally(()=>s.splice(s.indexOf(a),1));s.push(a)}await Promise.all(s)}const qy=Xe({name:"pinia",setup(e){const t=vp();return e.vueApp.use(t),xn(t),e.payload&&e.payload.pinia&&(t.state.value=e.payload.pinia),{provide:{pinia:t}}},hooks:{"app:rendered"(){const e=ve();e.payload.pinia=ne(e.$pinia).state.value,xn(void 0)}}}),Gy=Xe({name:"nuxt:global-components"}),Nt={auth:Ir(()=>oe(()=>import("./D5UrQ7F3.js"),[],import.meta.url).then(e=>e.default||e)),default:Ir(()=>oe(()=>import("./DhKR78CK.js"),__vite__mapDeps([48,21,2,1,49]),import.meta.url).then(e=>e.default||e))},Jy=Xe({name:"nuxt:prefetch",setup(e){const t=Ve();e.hooks.hook("app:mounted",()=>{t.beforeEach(async n=>{const r=n?.meta?.layout;r&&typeof Nt[r]=="function"&&await Nt[r]()})}),e.hooks.hook("link:prefetch",n=>{if(Dn(n))return;const r=t.resolve(n);if(!r)return;const s=r.meta.layout;let o=nu(r.meta.middleware);o=o.filter(i=>typeof i=="string");for(const i of o)typeof ho[i]=="function"&&ho[i]();typeof s=="string"&&s in Nt&&Wy(Nt[s])})}}),Yy=Xe(()=>{iu().restore()}),Xy=[gm,_m,Sm,Ry,Cy,Ay,Py,ky,qy,Gy,Jy,Yy],du=(e="RouteProvider")=>Wt({name:e,props:{route:{type:Object,required:!0},vnode:Object,vnodeRef:Object,renderKey:String,trackRootNodes:Boolean},setup(t){const n=t.renderKey,r=t.route,s={};for(const o in t.route)Object.defineProperty(s,o,{get:()=>n===t.renderKey?t.route[o]:r[o],enumerable:!0});return jt(on,Ze(s)),()=>t.vnode?Oe(t.vnode,{ref:t.vnodeRef}):t.vnode}}),Qy=du(),Aa=new WeakMap,Zy=Wt({name:"NuxtPage",inheritAttrs:!1,props:{name:{type:String},transition:{type:[Boolean,Object],default:void 0},keepalive:{type:[Boolean,Object],default:void 0},route:{type:Object},pageKey:{type:[Function,String],default:null}},setup(e,{attrs:t,slots:n,expose:r}){const s=ve(),o=nt(),i=Ce(on,null);let a;r({pageRef:o});const l=Ce(Cc,null);let f;const c=s.deferHydration();let u=!1,h=!1,d=0;if(s.isHydrating){const y=s.hooks.hookOnce("app:error",c),C=Ve().beforeEach(()=>{y(),C()})}e.pageKey&&Rt(()=>e.pageKey,(y,C)=>{y!==C&&s.callHook("page:loading:start")});let g=!1;{const y=Ve().beforeResolve(()=>{g=!1});fr(()=>{y(),c()})}return()=>Oe(tu,{name:e.name,route:e.route,...t},{default:y=>{const C=e_(i,y.route,y.Component),E=i&&i.matched.length===y.route.matched.length;if(!y.Component){if(f&&!E&&!Ls(f))return f;c();return}if(f&&l&&!Ls(f)&&!l.isCurrent(y.route))return f;if(C&&i&&(!l||l?.isCurrent(i)))return(E||f)&&!Ls(f)?f:null;const v=fo(y,e.pageKey),p=t_(i,y.route,y.Component);!s.isHydrating&&a===v&&!p&&xt(()=>{g||(g=!0,s.callHook("page:loading:end"))}),u&&a!==v&&h&&d++,a=v;const _=!!(e.transition??y.route.meta.pageTransition??Bi),w=_&&su([e.transition,y.route.meta.pageTransition,Bi,{onAfterLeave(){s["~transitionFinish"]?.(),delete s["~transitionFinish"],delete s["~transitionPromise"],s.callHook("page:transition:finish",y.Component)}}]),k=e.keepalive??y.route.meta.keepalive??Zh;return f=ru(_&&w,Ig(k,Oe(Io,{key:d,suspensible:!0,onPending:()=>{u=!0,_&&!s["~transitionPromise"]&&(s["~transitionPromise"]=new Promise(P=>{s["~transitionFinish"]=P})),s.callHook("page:start",y.Component)},onResolve:async()=>{u=!1,h=!0;try{await xt(),s._route.sync?.(),await s.callHook("page:finish",y.Component),!g&&!p&&(g=!0,await s.callHook("page:loading:end"))}finally{c()}}},{default:()=>{const P={key:v||void 0,vnode:n.default?n_(n.default,y):y.Component,route:y.route,renderKey:v||void 0,trackRootNodes:_,vnodeRef:o};if(!k)return Oe(Qy,P);const D=y.Component.type,R=D;let T=Aa.get(R);return T||(T=du(D.name||D.__name),Aa.set(R,T)),Oe(T,P)}}))).default(),f}})}});function e_(e,t,n){if(!e)return!1;const r=t.matched.findIndex(i=>i.components?.default===n?.type);if(r===-1)return!1;const s=t.matched.slice(0,r).filter(i=>i.components?.default);if(!s.length)return!1;const o=e.matched.filter(i=>i.components?.default);return s.some((i,a)=>i.components?.default!==o[a]?.components?.default)||n&&fo({route:t,Component:n})!==fo({route:e,Component:n})}function t_(e,t,n){return e?t.matched.findIndex(s=>s.components?.default===n?.type)Oe(Nt[e.name],e.layoutProps,t.slots)}}),s_={name:{type:[String,Boolean,Object],default:null},fallback:{type:[String,Object],default:null}},o_=Wt({name:"NuxtLayout",inheritAttrs:!1,props:s_,setup(e,t){const n=ve(),r=Ce(on),o=!r||r===jo()?Kc():r,i=Re(()=>{let c=le(e.name)??o?.meta.layout??hu(o?.path).appLayout??"default";return c&&!(c in Nt)&&e.fallback&&(c=le(e.fallback)),c}),a=Ut();t.expose({layoutRef:a});const l=n.deferHydration();if(n.isHydrating){const c=n.hooks.hookOnce("app:error",l),u=Ve().beforeEach(()=>{c(),u()})}let f;return()=>{const u=!!i.value&&i.value in Nt&&!!(o?.meta.layoutTransition??Fi),h=u&&su([o?.meta.layoutTransition,Fi,{onBeforeLeave(){n["~transitionPromise"]=new Promise(g=>{n["~transitionFinish"]=g})},onAfterLeave(){n["~transitionFinish"]?.(),delete n["~transitionFinish"],delete n["~transitionPromise"]}}]),d=f;return f=i.value,ru(h,{default:()=>Oe(Io,{suspensible:!0,onResolve:async()=>{await xt(l)}},{default:()=>Oe(i_,{layoutProps:Xl(t.attrs,o.meta.layoutProps??{},{ref:a}),key:i.value||void 0,name:i.value,shouldProvide:!e.name,isRenderingNewLayout:g=>g!==d&&g===i.value,hasTransition:u},t.slots)})}).default()}}}),i_=Wt({name:"NuxtLayoutProvider",inheritAttrs:!1,props:{name:{type:[String,Boolean]},layoutProps:{type:Object},hasTransition:{type:Boolean},shouldProvide:{type:Boolean},isRenderingNewLayout:{type:Function,required:!0}},setup(e,t){const n=e.name;e.shouldProvide&&jt(Cc,{isCurrent:o=>n===!1||n===(o.meta.layout??hu(o.path).appLayout??"default")});const r=Ce(on);if(r&&r===jo()){const o=Kc(),i={};for(const a in o){const l=a;Object.defineProperty(i,l,{enumerable:!0,get:()=>e.isRenderingNewLayout(e.name)?o[l]:r[l]})}jt(on,Ze(i))}return()=>!n||typeof n=="string"&&!(n in Nt)?t.slots.default?.():Oe(r_,{key:n,layoutProps:e.layoutProps,name:n},t.slots)}}),a_=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},l_={};function c_(e,t){const n=Zy,r=o_;return Ge(),ht(r,null,{default:Ao(()=>[ye(n)]),_:1})}const u_=a_(l_,[["render",c_]]),f_={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error,r=Number(n.statusCode||500),s=r===404,o=n.statusMessage??(s?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),a=void 0,c=s?Ir(()=>oe(()=>import("./Bm2Gu08J.js"),__vite__mapDeps([50,21,51,52]),import.meta.url)):Ir(()=>oe(()=>import("./D8jvJLAX.js"),__vite__mapDeps([53,51,54]),import.meta.url));return(u,h)=>(Ge(),ht(le(c),Su(Jl({status:le(r),statusText:le(o),statusCode:le(r),statusMessage:le(o),description:le(i),stack:le(a)})),null,16))}},d_={key:0},Pa={__name:"nuxt-root",setup(e){const t=()=>null,n=ve(),r=n.deferHydration();if(n.isHydrating){const c=n.hooks.hookOnce("app:error",r),u=Ve().beforeEach(()=>{c(),u()})}const s=!1;jt(on,jo()),n.hooks.callHookWith(c=>c.map(u=>u()),"vue:setup",[]);const o=cs(),i=!1,a=/bot\b|chrome-lighthouse|facebookexternalhit|google\b/i;function l(c,u,h){const d=n.vueApp.config.errorHandler;if(d&&!d.__nuxt_default)try{d(c,u,h)}catch(g){console.error("[nuxt] Error in `app.config.errorHandler`",g)}}vl((c,u,h)=>{if(n.hooks.callHook("vue:error",c,u,h)?.catch(d=>console.error("[nuxt] Error in `vue:error` hook",d)),a.test(navigator.userAgent))return n.hooks.callHook("app:error",c),console.error(`[nuxt] Not rendering error page for bot with user agent \`${navigator.userAgent}\`:`,c),!1;if(Pc(c)&&(c.fatal||c.unhandled))return n.runWithContext(()=>Zt(c)),l(c,u,h),!1});const f=!1;return(c,u)=>(Ge(),ht(Io,{onResolve:le(r)},{default:Ao(()=>[le(i)?(Ge(),td("div",d_)):le(o)?(Ge(),ht(le(f_),{key:1,error:le(o)},null,8,["error"])):le(f)?(Ge(),ht(le(t),{key:2,context:le(f)},null,8,["context"])):le(s)?(Ge(),ht(Tf(le(s)),{key:3})):(Ge(),ht(le(u_),{key:4}))]),_:1},8,["onResolve"]))}};let xa;{let e;xa=async function(){if(e)return e;const n=!!(window.__NUXT__?.serverRendered??document.getElementById("__NUXT_DATA__")?.dataset.ssr==="true"),r=n?Jd(Pa):Gd(Pa),s=op({vueApp:r});async function o(i){await s.callHook("app:error",i),s.payload.error||=Ft(i)}o.__nuxt_default=!0,r.config.errorHandler=o,s.hook("app:suspense:resolve",()=>{r.config.errorHandler===o&&(r.config.errorHandler=void 0)}),!n&&Ui.id&&s.hook("app:suspense:resolve",()=>{document.getElementById(Ui.id)?.remove()});try{await lp(s,Xy)}catch(i){o(i)}try{await s.hooks.callHook("app:created",r),await s.hooks.callHook("app:beforeMount",r),r.mount(np),await s.hooks.callHook("app:mounted",r),await xt()}catch(i){o(i)}return r},e=xa().catch(t=>{throw console.error("Error while mounting app:",t),t})}export{Ut as $,Re as A,xt as B,ko as C,b_ as D,jo as E,ke as F,Rt as G,__ as H,ht as I,my as J,T_ as K,Xr as L,fs as M,y_ as N,w_ as O,zi as P,fr as Q,g_ as R,Wo as S,_d as T,Ra as U,R_ as V,Oe as W,p_ as X,uc as Y,_p as Z,a_ as _,Gl as a,yp as a0,zy as a1,hc as a2,Dn as a3,Xs as a4,No as a5,Sh as a6,Fr as a7,E_ as a8,nl as a9,me as aa,ye as b,td as c,Yl as d,ve as e,$c as f,Wt as g,ns as h,Ce as i,iu as j,Ve as k,rd as l,le as m,Qr as n,Ge as o,v_ as p,h_ as q,m_ as r,Bd as s,Au as t,S_ as u,Oi as v,Ao as w,jd as x,nt as y,ot as z}; +`)&&(yr(p,0)||fn(),p.textContent=_.children)}if(T){if(te||!D||$&48){const V=p.tagName.includes("-");for(const ce in T)(te&&(ce.endsWith("value")||ce==="indeterminate")||lr(ce)&&!en(ce)||ce[0]==="."||V&&!en(ce))&&r(p,ce,null,T[ce],void 0,w)}else if(T.onClick)r(p,"onClick",null,T.onClick,void 0,w);else if($&4&&mt(T.style))for(const V in T.style)T.style[V]}let z;(z=T&&T.onVnodeBeforeMount)&&He(z,w,_),W&&ct(_,null,w,"beforeMount"),((z=T&&T.onVnodeMounted)||W||F)&&Ul(()=>{z&&He(z,w,_),F&&Z.enter(p),W&&ct(_,null,w,"mounted")},k)}return p.nextSibling},d=(p,_,w,k,P,D,R)=>{R=R||!!_.dynamicChildren;const T=_.children,$=T.length;let L=!1;for(let W=0;W<$;W++){const Z=R?T[W]:T[W]=Fe(T[W]),te=Z.type===rn;p?(te&&!R&&W+1<$&&Fe(T[W+1]).type===rn&&(l(s(p.data.slice(Z.children.length)),w,o(p)),p.data=Z.children),p=u(p,Z,k,P,D,R)):te&&!Z.children?l(Z.el=s(""),w):(L||(L=!0,yr(w,1)||fn()),n(null,Z,w,null,k,P,gr(w),D))}return p},g=(p,_,w,k,P,D)=>{const{slotScopeIds:R}=_;R&&(P=P?P.concat(R):R);const T=i(p),$=d(o(p),_,T,w,k,P,D);return $&&gn($)&&$.data==="]"?o(_.anchor=$):(fn(),l(_.anchor=f("]"),T,$),$)},y=(p,_,w,k,P,D)=>{if(yr(p.parentElement,1)||fn(),_.el=null,D){const $=C(p);for(;;){const L=o(p);if(L&&L!==$)a(L);else break}}const R=o(p),T=i(p);return a(p),n(null,_,T,R,w,k,gr(T),P),w&&(w.vnode.el=_.el,is(w,_.el)),R},C=(p,_="[",w="]")=>{let k=0;for(;p;)if(p=o(p),p&&gn(p)&&(p.data===_&&k++,p.data===w)){if(k===0)return o(p);k--}return p},E=(p,_,w)=>{const k=_.parentNode;k&&k.replaceChild(p,_);let P=w;for(;P;)P.vnode.el===_&&(P.vnode.el=P.subTree.el=p),P=P.parent},v=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[c,u]}const si="data-allow-mismatch",hf={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function yr(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(si);)e=e.parentElement;const n=e&&e.getAttribute(si);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:r.includes(hf[t])}}Yr().requestIdleCallback;Yr().cancelIdleCallback;function pf(e,t){if(gn(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(gn(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const Ct=e=>!!e.type.__asyncLoader;function Ir(e){X(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:o,timeout:i,suspensible:a=!0,onError:l}=e;let f=null,c,u=0;const h=()=>(u++,f=null,d()),d=()=>{let g;return f||(g=f=t().catch(y=>{if(y=y instanceof Error?y:new Error(String(y)),l)return new Promise((C,E)=>{l(y,()=>C(h()),()=>E(y),u+1)});throw y}).then(y=>g!==f&&f?f:(y&&(y.__esModule||y[Symbol.toStringTag]==="Module")&&(y=y.default),c=y,y)))};return Wt({name:"AsyncComponentWrapper",__asyncLoader:d,__asyncHydrate(g,y,C){let E=!1;(y.bu||(y.bu=[])).push(()=>E=!0);const v=()=>{E||C()},p=o?()=>{const _=o(v,w=>pf(g,w));_&&(y.bum||(y.bum=[])).push(_)}:v;c?p():d().then(()=>!y.isUnmounted&&p())},get __asyncResolved(){return c},setup(){const g=Ae;if(xo(g),c)return()=>_r(c,g);const y=w=>{f=null,Ln(w,g,13,!r)};if(a&&g.suspense||An)return d().then(w=>()=>_r(w,g)).catch(w=>(y(w),()=>r?ye(r,{error:w}):null));const C=nt(!1),E=nt(),v=nt(!!s);let p,_;return ss(()=>{p!=null&&clearTimeout(p),_!=null&&clearTimeout(_)}),s&&(_=setTimeout(()=>{g.isUnmounted||(v.value=!1)},s)),i!=null&&(p=setTimeout(()=>{if(!g.isUnmounted&&!C.value&&!E.value){const w=new Error(`Async component timed out after ${i}ms.`);y(w),E.value=w}},i)),d().then(()=>{g.isUnmounted||(C.value=!0,g.parent&&ur(g.parent.vnode)&&g.parent.update())}).catch(w=>{if(g.isUnmounted){f=null;return}y(w),E.value=w}),()=>{if(C.value&&c)return _r(c,g);if(E.value&&r)return ye(r,{error:E.value});if(n&&!v.value)return _r(n,g)}}})}function _r(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=ye(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const ur=e=>e.type.__isKeepAlive,mf={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=an(),r=n.ctx;if(!r.renderer)return()=>{const v=t.default&&t.default();return v&&v.length===1?v[0]:v};const s=new Map,o=new Set;let i=null;const a=n.suspense,{renderer:{p:l,m:f,um:c,o:{createElement:u}}}=r,h=u("div");r.activate=(v,p,_,w,k)=>{const P=v.component;f(v,p,_,0,a),l(P.vnode,v,p,_,P,a,w,v.slotScopeIds,k),Se(()=>{P.isDeactivated=!1,P.a&&vn(P.a);const D=v.props&&v.props.onVnodeMounted;D&&He(D,P.parent,v)},a)},r.deactivate=v=>{const p=v.component;Dr(p.m),Dr(p.a),f(v,h,null,1,a),Se(()=>{p.da&&vn(p.da);const _=v.props&&v.props.onVnodeUnmounted;_&&He(_,p.parent,v),p.isDeactivated=!0},a)};function d(v){_s(v),c(v,n,a,!0)}function g(v){s.forEach((p,_)=>{const w=Gs(Ct(p)?p.type.__asyncResolved||{}:p.type);w&&!v(w)&&y(_)})}function y(v){const p=s.get(v);p&&(!i||!et(p,i))?d(p):i&&_s(i),s.delete(v),o.delete(v)}Rt(()=>[e.include,e.exclude],([v,p])=>{v&&g(_=>Vn(v,_)),p&&g(_=>!Vn(p,_))},{flush:"post",deep:!0});let C=null;const E=()=>{C!=null&&(Hr(n.subTree.type)?Se(()=>{s.set(C,br(n.subTree))},n.subTree.suspense):s.set(C,br(n.subTree)))};return ko(E),yl(E),fr(()=>{s.forEach(v=>{const{subTree:p,suspense:_}=n,w=br(p);if(v.type===w.type&&v.key===w.key){_s(w);const k=w.component.da;k&&Se(k,_);return}d(v)})}),()=>{if(C=null,!t.default)return i=null;const v=t.default(),p=v[0];if(v.length>1)return i=null,v;if(!sn(p)||!(p.shapeFlag&4)&&!(p.shapeFlag&128))return i=null,p;let _=br(p);if(_.type===be)return i=null,_;const w=_.type,k=Gs(Ct(_)?_.type.__asyncResolved||{}:w),{include:P,exclude:D,max:R}=e;if(P&&(!k||!Vn(P,k))||D&&k&&Vn(D,k))return _.shapeFlag&=-257,i=_,p;const T=_.key==null?w:_.key,$=s.get(T);return _.el&&(_=kt(_),p.shapeFlag&128&&(p.ssContent=_)),C=T,$?(_.el=$.el,_.component=$.component,_.transition&&Rn(_,_.transition),_.shapeFlag|=512,o.delete(T),o.add(T)):(o.add(T),R&&o.size>parseInt(R,10)&&y(o.values().next().value)),_.shapeFlag|=256,i=_,Hr(p.type)?p:_}}},gf=mf;function Vn(e,t){return G(e)?e.some(n=>Vn(n,t)):pe(e)?e.split(",").includes(t):hu(e)?(e.lastIndex=0,e.test(t)):!1}function hl(e,t){ml(e,"a",t)}function pl(e,t){ml(e,"da",t)}function ml(e,t,n=Ae){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(rs(t,r,n),n){let s=n.parent;for(;s&&s.parent;)ur(s.parent.vnode)&&yf(r,t,n,s),s=s.parent}}function yf(e,t,n,r){const s=rs(t,e,r,!0);ss(()=>{mo(r[t],s)},n)}function _s(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function br(e){return e.shapeFlag&128?e.ssContent:e}function rs(e,t,n=Ae,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{At();const a=dr(n),l=Ye(t,n,e,i);return a(),Pt(),l});return r?s.unshift(o):s.push(o),o}}const Ot=e=>(t,n=Ae)=>{(!An||e==="sp")&&rs(e,(...r)=>t(...r),n)},gl=Ot("bm"),ko=Ot("m"),_f=Ot("bu"),yl=Ot("u"),fr=Ot("bum"),ss=Ot("um"),bf=Ot("sp"),vf=Ot("rtg"),wf=Ot("rtc");function _l(e,t=Ae){rs("ec",e,t)}const bl="components";function m_(e,t){return wl(bl,e,!0,t)||e}const vl=Symbol.for("v-ndc");function Ef(e){return pe(e)?wl(bl,e,!1)||e:e||vl}function wl(e,t,n=!0,r=!1){const s=Pe||Ae;if(s){const o=s.type;{const a=Gs(o,!1);if(a&&(a===t||a===Le(t)||a===Gr(Le(t))))return o}const i=oi(s[e]||o[e],t)||oi(s.appContext[e],t);return!i&&r?o:i}}function oi(e,t){return e&&(e[t]||e[Le(t)]||e[Gr(Le(t))])}function g_(e,t,n,r){let s;const o=n,i=G(e);if(i||pe(e)){const a=i&&mt(e);let l=!1,f=!1;a&&(l=!Be(e),f=gt(e),e=es(e)),s=new Array(e.length);for(let c=0,u=e.length;ct(a,l,void 0,o));else{const a=Object.keys(e);s=new Array(a.length);for(let l=0,f=a.length;l0;return Ge(),ht(ke,null,[ye("slot",n,r)],f?-2:64)}let o=e[t];o&&o._c&&(o._d=!1),Ge();const i=o&&El(o(n)),a=n.key||i&&i.key,l=ht(ke,{key:(a&&!Ue(a)?a:`_${t}`)+(!i&&r?"_fb":"")},i||[],i&&e._===1?64:-2);return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function El(e){return e.some(t=>sn(t)?!(t.type===be||t.type===ke&&!El(t.children)):!0)?e:null}const Fs=e=>e?Yl(e)?as(e):Fs(e.parent):null,Gn=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Fs(e.parent),$root:e=>Fs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Tl(e),$forceUpdate:e=>e.f||(e.f=()=>{Co(e.update)}),$nextTick:e=>e.n||(e.n=xt.bind(e.proxy)),$watch:e=>sf.bind(e)}),bs=(e,t)=>e!==de&&!e.__isScriptSetup&&ae(e,t),Sf={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:a,appContext:l}=e;if(t[0]!=="$"){const h=i[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(bs(r,t))return i[t]=1,r[t];if(s!==de&&ae(s,t))return i[t]=2,s[t];if(ae(o,t))return i[t]=3,o[t];if(n!==de&&ae(n,t))return i[t]=4,n[t];Bs&&(i[t]=0)}}const f=Gn[t];let c,u;if(f)return t==="$attrs"&&xe(e.attrs,"get",""),f(e);if((c=a.__cssModules)&&(c=c[t]))return c;if(n!==de&&ae(n,t))return i[t]=4,n[t];if(u=l.config.globalProperties,ae(u,t))return u[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return bs(s,t)?(s[t]=n,!0):r!==de&&ae(r,t)?(r[t]=n,!0):ae(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,props:o,type:i}},a){let l;return!!(n[a]||e!==de&&a[0]!=="$"&&ae(e,a)||bs(t,a)||ae(o,a)||ae(r,a)||ae(Gn,a)||ae(s.config.globalProperties,a)||(l=i.__cssModules)&&l[a])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ae(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ii(e){return G(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Bs=!0;function Tf(e){const t=Tl(e),n=e.proxy,r=e.ctx;Bs=!1,t.beforeCreate&&ai(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:a,provide:l,inject:f,created:c,beforeMount:u,mounted:h,beforeUpdate:d,updated:g,activated:y,deactivated:C,beforeDestroy:E,beforeUnmount:v,destroyed:p,unmounted:_,render:w,renderTracked:k,renderTriggered:P,errorCaptured:D,serverPrefetch:R,expose:T,inheritAttrs:$,components:L,directives:W,filters:Z}=t;if(f&&Rf(f,r,null),i)for(const z in i){const V=i[z];X(V)&&(r[z]=V.bind(n))}if(s){const z=s.call(n,n);se(z)&&(e.data=ot(z))}if(Bs=!0,o)for(const z in o){const V=o[z],ce=X(V)?V.bind(n,n):X(V.get)?V.get.bind(n,n):pt,Mt=!X(V)&&X(V.set)?V.set.bind(n):pt,it=Re({get:ce,set:Mt});Object.defineProperty(r,z,{enumerable:!0,configurable:!0,get:()=>it.value,set:De=>it.value=De})}if(a)for(const z in a)Sl(a[z],r,n,z);if(l){const z=X(l)?l.call(n):l;Reflect.ownKeys(z).forEach(V=>{jt(V,z[V])})}c&&ai(c,e,"c");function F(z,V){G(V)?V.forEach(ce=>z(ce.bind(n))):V&&z(V.bind(n))}if(F(gl,u),F(ko,h),F(_f,d),F(yl,g),F(hl,y),F(pl,C),F(_l,D),F(wf,k),F(vf,P),F(fr,v),F(ss,_),F(bf,R),G(T))if(T.length){const z=e.exposed||(e.exposed={});T.forEach(V=>{Object.defineProperty(z,V,{get:()=>n[V],set:ce=>n[V]=ce,enumerable:!0})})}else e.exposed||(e.exposed={});w&&e.render===pt&&(e.render=w),$!=null&&(e.inheritAttrs=$),L&&(e.components=L),W&&(e.directives=W),R&&xo(e)}function Rf(e,t,n=pt){G(e)&&(e=Us(e));for(const r in e){const s=e[r];let o;se(s)?"default"in s?o=Ce(s.from||r,s.default,!0):o=Ce(s.from||r):o=Ce(s),me(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ai(e,t,n){Ye(G(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Sl(e,t,n,r){let s=r.includes(".")?il(n,r):()=>n[r];if(pe(e)){const o=t[e];X(o)&&Rt(s,o)}else if(X(e))Rt(s,e.bind(n));else if(se(e))if(G(e))e.forEach(o=>Sl(o,t,n,r));else{const o=X(e.handler)?e.handler.bind(n):t[e.handler];X(o)&&Rt(s,o,e)}}function Tl(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,a=o.get(t);let l;return a?l=a:!s.length&&!n&&!r?l=t:(l={},s.length&&s.forEach(f=>Lr(l,f,i,!0)),Lr(l,t,i)),se(t)&&o.set(t,l),l}function Lr(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Lr(e,o,n,!0),s&&s.forEach(i=>Lr(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=Cf[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const Cf={data:li,props:ci,emits:ci,methods:Kn,computed:Kn,beforeCreate:Me,created:Me,beforeMount:Me,mounted:Me,beforeUpdate:Me,updated:Me,beforeDestroy:Me,beforeUnmount:Me,destroyed:Me,unmounted:Me,activated:Me,deactivated:Me,errorCaptured:Me,serverPrefetch:Me,components:Kn,directives:Kn,watch:Pf,provide:li,inject:Af};function li(e,t){return t?e?function(){return Te(X(e)?e.call(this,this):e,X(t)?t.call(this,this):t)}:t:e}function Af(e,t){return Kn(Us(e),Us(t))}function Us(e){if(G(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${Kt(t)}Modifiers`];function Mf(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||de;let s=n;const o=t.startsWith("update:"),i=o&&Of(r,t.slice(7));i&&(i.trim&&(s=n.map(c=>pe(c)?c.trim():c)),i.number&&(s=n.map(Jr)));let a,l=r[a=ds(t)]||r[a=ds(Le(t))];!l&&o&&(l=r[a=ds(Kt(t))]),l&&Ye(l,e,6,s);const f=r[a+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Ye(f,e,6,s)}}const If=new WeakMap;function Cl(e,t,n=!1){const r=n?If:t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},a=!1;if(!X(e)){const l=f=>{const c=Cl(f,t,!0);c&&(a=!0,Te(i,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!a?(se(e)&&r.set(e,null),null):(G(o)?o.forEach(l=>i[l]=null):Te(i,o),se(e)&&r.set(e,i),i)}function os(e,t){return!e||!lr(t)?!1:(t=t.slice(2).replace(/Once$/,""),ae(e,t[0].toLowerCase()+t.slice(1))||ae(e,Kt(t))||ae(e,t))}function vs(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:a,emit:l,render:f,renderCache:c,props:u,data:h,setupState:d,ctx:g,inheritAttrs:y}=e,C=Or(e);let E,v;try{if(n.shapeFlag&4){const _=s||r,w=_;E=Fe(f.call(w,_,c,u,d,h,g)),v=a}else{const _=t;E=Fe(_.length>1?_(u,{attrs:a,slots:i,emit:l}):_(u,null)),v=t.props?a:Df(a)}}catch(_){Yn.length=0,Ln(_,e,1),E=ye(be)}let p=E;if(v&&y!==!1){const _=Object.keys(v),{shapeFlag:w}=p;_.length&&w&7&&(o&&_.some(Wr)&&(v=Hf(v,o)),p=kt(p,v,!1,!0))}return n.dirs&&(p=kt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Rn(p,n.transition),E=p,Or(C),E}function Lf(e,t=!0){let n;for(let r=0;r{let t;for(const n in e)(n==="class"||n==="style"||lr(n))&&((t||(t={}))[n]=e[n]);return t},Hf=(e,t)=>{const n={};for(const r in e)(!Wr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function $f(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:a,patchFlag:l}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?ui(r,i,f):!!i;if(l&8){const c=t.dynamicProps;for(let u=0;uObject.create(Pl),kl=e=>Object.getPrototypeOf(e)===Pl;function Nf(e,t,n,r=!1){const s={},o=xl();e.propsDefaults=Object.create(null),Ol(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:Ze(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function jf(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,a=ne(s),[l]=e.propsOptions;let f=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let u=0;u{l=!0;const[h,d]=Ml(u,t,!0);Te(i,h),d&&a.push(...d)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!l)return se(e)&&r.set(e,_n),_n;if(G(o))for(let c=0;ce==="_"||e==="_ctx"||e==="$stable",Mo=e=>G(e)?e.map(Fe):[Fe(e)],Bf=(e,t,n)=>{if(t._n)return t;const r=Ao((...s)=>Mo(t(...s)),n);return r._c=!1,r},Il=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Oo(s))continue;const o=e[s];if(X(o))t[s]=Bf(s,o,r);else if(o!=null){const i=Mo(o);t[s]=()=>i}}},Ll=(e,t)=>{const n=Mo(t);e.slots.default=()=>n},Dl=(e,t,n)=>{for(const r in t)(n||!Oo(r))&&(e[r]=t[r])},Uf=(e,t,n)=>{const r=e.slots=xl();if(e.vnode.shapeFlag&32){const s=t._;s?(Dl(r,t,n),n&&Oa(r,"_",s,!0)):Il(t,r)}else t&&Ll(e,t)},Vf=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=de;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:Dl(s,t,n):(o=!t.$stable,Il(t,s)),i=t}else t&&(Ll(e,t),i={default:1});if(o)for(const a in s)!Oo(a)&&i[a]==null&&delete s[a]},Se=Ul;function Kf(e){return Hl(e)}function Wf(e){return Hl(e,df)}function Hl(e,t){const n=Yr();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:a,createComment:l,setText:f,setElementText:c,parentNode:u,nextSibling:h,setScopeId:d=pt,insertStaticContent:g}=e,y=(m,b,S,M=null,A=null,O=null,j=void 0,N=null,H=!!b.dynamicChildren)=>{if(m===b)return;m&&!et(m,b)&&(M=x(m),De(m,A,O,!0),m=null),b.patchFlag===-2&&(H=!1,b.dynamicChildren=null);const{type:I,ref:Y,shapeFlag:U}=b;switch(I){case rn:C(m,b,S,M);break;case be:E(m,b,S,M);break;case Jn:m==null&&v(b,S,M,j);break;case ke:L(m,b,S,M,A,O,j,N,H);break;default:U&1?w(m,b,S,M,A,O,j,N,H):U&6?W(m,b,S,M,A,O,j,N,H):(U&64||U&128)&&I.process(m,b,S,M,A,O,j,N,H,J)}Y!=null&&A?En(Y,m&&m.ref,O,b||m,!b):Y==null&&m&&m.ref!=null&&En(m.ref,null,O,m,!0)},C=(m,b,S,M)=>{if(m==null)r(b.el=a(b.children),S,M);else{const A=b.el=m.el;b.children!==m.children&&f(A,b.children)}},E=(m,b,S,M)=>{m==null?r(b.el=l(b.children||""),S,M):b.el=m.el},v=(m,b,S,M)=>{[m.el,m.anchor]=g(m.children,b,S,M,m.el,m.anchor)},p=({el:m,anchor:b},S,M)=>{let A;for(;m&&m!==b;)A=h(m),r(m,S,M),m=A;r(b,S,M)},_=({el:m,anchor:b})=>{let S;for(;m&&m!==b;)S=h(m),s(m),m=S;s(b)},w=(m,b,S,M,A,O,j,N,H)=>{if(b.type==="svg"?j="svg":b.type==="math"&&(j="mathml"),m==null)k(b,S,M,A,O,j,N,H);else{const I=m.el&&m.el._isVueCE?m.el:null;try{I&&I._beginPatch(),R(m,b,A,O,j,N,H)}finally{I&&I._endPatch()}}},k=(m,b,S,M,A,O,j,N)=>{let H,I;const{props:Y,shapeFlag:U,transition:q,dirs:Q}=m;if(H=m.el=i(m.type,O,Y&&Y.is,Y),U&8?c(H,m.children):U&16&&D(m.children,H,null,M,A,ws(m,O),j,N),Q&&ct(m,null,M,"created"),P(H,m,m.scopeId,j,M),Y){for(const fe in Y)fe!=="value"&&!en(fe)&&o(H,fe,null,Y[fe],O,M);"value"in Y&&o(H,"value",null,Y.value,O),(I=Y.onVnodeBeforeMount)&&He(I,M,m)}Q&&ct(m,null,M,"beforeMount");const re=$l(A,q);re&&q.beforeEnter(H),r(H,b,S),((I=Y&&Y.onVnodeMounted)||re||Q)&&Se(()=>{I&&He(I,M,m),re&&q.enter(H),Q&&ct(m,null,M,"mounted")},A)},P=(m,b,S,M,A)=>{if(S&&d(m,S),M)for(let O=0;O{for(let I=H;I{const N=b.el=m.el;let{patchFlag:H,dynamicChildren:I,dirs:Y}=b;H|=m.patchFlag&16;const U=m.props||de,q=b.props||de;let Q;if(S&&qt(S,!1),(Q=q.onVnodeBeforeUpdate)&&He(Q,S,b,m),Y&&ct(b,m,S,"beforeUpdate"),S&&qt(S,!0),(U.innerHTML&&q.innerHTML==null||U.textContent&&q.textContent==null)&&c(N,""),I?T(m.dynamicChildren,I,N,S,M,ws(b,A),O):j||V(m,b,N,null,S,M,ws(b,A),O,!1),H>0){if(H&16)$(N,U,q,S,A);else if(H&2&&U.class!==q.class&&o(N,"class",null,q.class,A),H&4&&o(N,"style",U.style,q.style,A),H&8){const re=b.dynamicProps;for(let fe=0;fe{Q&&He(Q,S,b,m),Y&&ct(b,m,S,"updated")},M)},T=(m,b,S,M,A,O,j)=>{for(let N=0;N{if(b!==S){if(b!==de)for(const O in b)!en(O)&&!(O in S)&&o(m,O,b[O],null,A,M);for(const O in S){if(en(O))continue;const j=S[O],N=b[O];j!==N&&O!=="value"&&o(m,O,N,j,A,M)}"value"in S&&o(m,"value",b.value,S.value,A)}},L=(m,b,S,M,A,O,j,N,H)=>{const I=b.el=m?m.el:a(""),Y=b.anchor=m?m.anchor:a("");let{patchFlag:U,dynamicChildren:q,slotScopeIds:Q}=b;Q&&(N=N?N.concat(Q):Q),m==null?(r(I,S,M),r(Y,S,M),D(b.children||[],S,Y,A,O,j,N,H)):U>0&&U&64&&q&&m.dynamicChildren&&m.dynamicChildren.length===q.length?(T(m.dynamicChildren,q,S,A,O,j,N),(b.key!=null||A&&b===A.subTree)&&Nl(m,b,!0)):V(m,b,S,Y,A,O,j,N,H)},W=(m,b,S,M,A,O,j,N,H)=>{b.slotScopeIds=N,m==null?b.shapeFlag&512?A.ctx.activate(b,S,M,j,H):Z(b,S,M,A,O,j,H):te(m,b,H)},Z=(m,b,S,M,A,O,j)=>{const N=m.component=sd(m,M,A);if(ur(m)&&(N.ctx.renderer=J),od(N,!1,j),N.asyncDep){if(A&&A.registerDep(N,F,j),!m.el){const H=N.subTree=ye(be);E(null,H,b,S),m.placeholder=H.el}}else F(N,m,b,S,A,O,j)},te=(m,b,S)=>{const M=b.component=m.component;if($f(m,b,S))if(M.asyncDep&&!M.asyncResolved){z(M,b,S);return}else M.next=b,M.update();else b.el=m.el,M.vnode=b},F=(m,b,S,M,A,O,j)=>{const N=()=>{if(m.isMounted){let{next:U,bu:q,u:Q,parent:re,vnode:fe}=m;{const Ne=jl(m);if(Ne){U&&(U.el=fe.el,z(m,U,j)),Ne.asyncDep.then(()=>{Se(()=>{m.isUnmounted||I()},A)});return}}let ue=U,_e;qt(m,!1),U?(U.el=fe.el,z(m,U,j)):U=fe,q&&vn(q),(_e=U.props&&U.props.onVnodeBeforeUpdate)&&He(_e,re,U,fe),qt(m,!0);const we=vs(m),Qe=m.subTree;m.subTree=we,y(Qe,we,u(Qe.el),x(Qe),m,A,O),U.el=we.el,ue===null&&is(m,we.el),Q&&Se(Q,A),(_e=U.props&&U.props.onVnodeUpdated)&&Se(()=>He(_e,re,U,fe),A)}else{let U;const{el:q,props:Q}=b,{bm:re,m:fe,parent:ue,root:_e,type:we}=m,Qe=Ct(b);if(qt(m,!1),re&&vn(re),!Qe&&(U=Q&&Q.onVnodeBeforeMount)&&He(U,ue,b),qt(m,!0),q&&ge){const Ne=()=>{m.subTree=vs(m),ge(q,m.subTree,m,A,null)};Qe&&we.__asyncHydrate?we.__asyncHydrate(q,m,Ne):Ne()}else{_e.ce&&_e.ce._hasShadowRoot()&&_e.ce._injectChildStyle(we,m.parent?m.parent.type:void 0);const Ne=m.subTree=vs(m);y(null,Ne,S,M,m,A,O),b.el=Ne.el}if(fe&&Se(fe,A),!Qe&&(U=Q&&Q.onVnodeMounted)){const Ne=b;Se(()=>He(U,ue,Ne),A)}(b.shapeFlag&256||ue&&Ct(ue.vnode)&&ue.vnode.shapeFlag&256)&&m.a&&Se(m.a,A),m.isMounted=!0,b=S=M=null}};m.scope.on();const H=m.effect=new Na(N);m.scope.off();const I=m.update=H.run.bind(H),Y=m.job=H.runIfDirty.bind(H);Y.i=m,Y.id=m.uid,H.scheduler=()=>Co(Y),qt(m,!0),I()},z=(m,b,S)=>{b.component=m;const M=m.vnode.props;m.vnode=b,m.next=null,jf(m,b.props,M,S),Vf(m,b.children,S),At(),Zo(m),Pt()},V=(m,b,S,M,A,O,j,N,H=!1)=>{const I=m&&m.children,Y=m?m.shapeFlag:0,U=b.children,{patchFlag:q,shapeFlag:Q}=b;if(q>0){if(q&128){Mt(I,U,S,M,A,O,j,N,H);return}else if(q&256){ce(I,U,S,M,A,O,j,N,H);return}}Q&8?(Y&16&&Ke(I,A,O),U!==I&&c(S,U)):Y&16?Q&16?Mt(I,U,S,M,A,O,j,N,H):Ke(I,A,O,!0):(Y&8&&c(S,""),Q&16&&D(U,S,M,A,O,j,N,H))},ce=(m,b,S,M,A,O,j,N,H)=>{m=m||_n,b=b||_n;const I=m.length,Y=b.length,U=Math.min(I,Y);let q;for(q=0;qY?Ke(m,A,O,!0,!1,U):D(b,S,M,A,O,j,N,H,U)},Mt=(m,b,S,M,A,O,j,N,H)=>{let I=0;const Y=b.length;let U=m.length-1,q=Y-1;for(;I<=U&&I<=q;){const Q=m[I],re=b[I]=H?wt(b[I]):Fe(b[I]);if(et(Q,re))y(Q,re,S,null,A,O,j,N,H);else break;I++}for(;I<=U&&I<=q;){const Q=m[U],re=b[q]=H?wt(b[q]):Fe(b[q]);if(et(Q,re))y(Q,re,S,null,A,O,j,N,H);else break;U--,q--}if(I>U){if(I<=q){const Q=q+1,re=Qq)for(;I<=U;)De(m[I],A,O,!0),I++;else{const Q=I,re=I,fe=new Map;for(I=re;I<=q;I++){const je=b[I]=H?wt(b[I]):Fe(b[I]);je.key!=null&&fe.set(je.key,I)}let ue,_e=0;const we=q-re+1;let Qe=!1,Ne=0;const Hn=new Array(we);for(I=0;I=we){De(je,A,O,!0);continue}let at;if(je.key!=null)at=fe.get(je.key);else for(ue=re;ue<=q;ue++)if(Hn[ue-re]===0&&et(je,b[ue])){at=ue;break}at===void 0?De(je,A,O,!0):(Hn[at-re]=I+1,at>=Ne?Ne=at:Qe=!0,y(je,b[at],S,null,A,O,j,N,H),_e++)}const zo=Qe?zf(Hn):_n;for(ue=zo.length-1,I=we-1;I>=0;I--){const je=re+I,at=b[je],qo=b[je+1],Go=je+1{const{el:O,type:j,transition:N,children:H,shapeFlag:I}=m;if(I&6){it(m.component.subTree,b,S,M);return}if(I&128){m.suspense.move(b,S,M);return}if(I&64){j.move(m,b,S,J);return}if(j===ke){r(O,b,S);for(let U=0;UN.enter(O),A));else{const{leave:U,delayLeave:q,afterLeave:Q}=N,re=()=>{m.ctx.isUnmounted?s(O):r(O,b,S)},fe=()=>{const ue=O._isLeaving||!!O[qe];O._isLeaving&&O[qe](!0),N.persisted&&!ue?re():U(O,()=>{re(),Q&&Q()})};q?q(O,re,fe):fe()}else r(O,b,S)},De=(m,b,S,M=!1,A=!1)=>{const{type:O,props:j,ref:N,children:H,dynamicChildren:I,shapeFlag:Y,patchFlag:U,dirs:q,cacheIndex:Q,memo:re}=m;if(U===-2&&(A=!1),N!=null&&(At(),En(N,null,S,m,!0),Pt()),Q!=null&&(b.renderCache[Q]=void 0),Y&256){b.ctx.deactivate(m);return}const fe=Y&1&&q,ue=!Ct(m);let _e;if(ue&&(_e=j&&j.onVnodeBeforeUnmount)&&He(_e,b,m),Y&6)zt(m.component,S,M);else{if(Y&128){m.suspense.unmount(S,M);return}fe&&ct(m,null,b,"beforeUnmount"),Y&64?m.type.remove(m,b,S,J,M):I&&!I.hasOnce&&(O!==ke||U>0&&U&64)?Ke(I,b,S,!1,!0):(O===ke&&U&384||!A&&Y&16)&&Ke(H,b,S),M&&ln(m)}const we=re!=null&&Q==null;(ue&&(_e=j&&j.onVnodeUnmounted)||fe||we)&&Se(()=>{_e&&He(_e,b,m),fe&&ct(m,null,b,"unmounted"),we&&(m.el=null)},S)},ln=m=>{const{type:b,el:S,anchor:M,transition:A}=m;if(b===ke){cn(S,M);return}if(b===Jn){_(m);return}const O=()=>{s(S),A&&!A.persisted&&A.afterLeave&&A.afterLeave()};if(m.shapeFlag&1&&A&&!A.persisted){const{leave:j,delayLeave:N}=A,H=()=>j(S,O);N?N(m.el,O,H):H()}else O()},cn=(m,b)=>{let S;for(;m!==b;)S=h(m),s(m),m=S;s(b)},zt=(m,b,S)=>{const{bum:M,scope:A,job:O,subTree:j,um:N,m:H,a:I}=m;Dr(H),Dr(I),M&&vn(M),A.stop(),O&&(O.flags|=8,De(j,m,b,S)),N&&Se(N,b),Se(()=>{m.isUnmounted=!0},b)},Ke=(m,b,S,M=!1,A=!1,O=0)=>{for(let j=O;j{if(m.shapeFlag&6)return x(m.component.subTree);if(m.shapeFlag&128)return m.suspense.next();const b=h(m.anchor||m.el),S=b&&b[of];return S?h(S):b};let K=!1;const B=(m,b,S)=>{let M;m==null?b._vnode&&(De(b._vnode,null,null,!0),M=b._vnode.component):y(b._vnode||null,m,b,null,null,null,S),b._vnode=m,K||(K=!0,Zo(M),kr(),K=!1)},J={p:y,um:De,m:it,r:ln,mt:Z,mc:D,pc:V,pbc:T,n:x,o:e};let ee,ge;return t&&([ee,ge]=t(J)),{render:B,hydrate:ee,createApp:kf(B,ee)}}function ws({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function qt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function $l(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Nl(e,t,n=!1){const r=e.children,s=t.children;if(G(r)&&G(s))for(let o=0;o>1,e[n[a]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function jl(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:jl(t)}function Dr(e){if(e)for(let t=0;te.__isSuspense;let Ks=0;const qf={name:"Suspense",__isSuspense:!0,process(e,t,n,r,s,o,i,a,l,f){if(e==null)Gf(t,n,r,s,o,i,a,l,f);else{if(o&&o.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Jf(e,t,n,r,s,i,a,l,f)}},hydrate:Yf,normalize:Xf},Io=qf;function or(e,t){const n=e.props&&e.props[t];X(n)&&n()}function Gf(e,t,n,r,s,o,i,a,l){const{p:f,o:{createElement:c}}=l,u=c("div"),h=e.suspense=Bl(e,s,r,t,u,n,o,i,a,l);f(null,h.pendingBranch=e.ssContent,u,null,r,h,o,i),h.deps>0?(or(e,"onPending"),or(e,"onFallback"),f(null,e.ssFallback,t,n,r,null,o,i),Sn(h,e.ssFallback)):h.resolve(!1,!0)}function Jf(e,t,n,r,s,o,i,a,{p:l,um:f,o:{createElement:c}}){const u=t.suspense=e.suspense;u.vnode=t,t.el=e.el;const h=t.ssContent,d=t.ssFallback,{activeBranch:g,pendingBranch:y,isInFallback:C,isHydrating:E}=u;if(y)u.pendingBranch=h,et(y,h)?(l(y,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0?u.resolve():C&&(E||(l(g,d,n,r,s,null,o,i,a),Sn(u,d)))):(u.pendingId=Ks++,E?(u.isHydrating=!1,u.activeBranch=y):f(y,s,u),u.deps=0,u.effects.length=0,u.hiddenContainer=c("div"),C?(l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0?u.resolve():(l(g,d,n,r,s,null,o,i,a),Sn(u,d))):g&&et(g,h)?(l(g,h,n,r,s,u,o,i,a),u.resolve(!0)):(l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0&&u.resolve()));else if(g&&et(g,h))l(g,h,n,r,s,u,o,i,a),Sn(u,h);else if(or(t,"onPending"),u.pendingBranch=h,h.shapeFlag&512?u.pendingId=h.component.suspenseId:u.pendingId=Ks++,l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0)u.resolve();else{const{timeout:v,pendingId:p}=u;v>0?setTimeout(()=>{u.pendingId===p&&u.fallback(d)},v):v===0&&u.fallback(d)}}function Bl(e,t,n,r,s,o,i,a,l,f,c=!1){const{p:u,m:h,um:d,n:g,o:{parentNode:y,remove:C}}=f;let E;const v=Qf(e);v&&t&&t.pendingBranch&&(E=t.pendingId,t.deps++);const p=e.props?Ma(e.props.timeout):void 0,_=o,w={vnode:e,parent:t,parentComponent:n,namespace:i,container:r,hiddenContainer:s,deps:0,pendingId:Ks++,timeout:typeof p=="number"?p:-1,activeBranch:null,isFallbackMountPending:!1,pendingBranch:null,isInFallback:!c,isHydrating:c,isUnmounted:!1,effects:[],resolve(k=!1,P=!1){const{vnode:D,activeBranch:R,pendingBranch:T,pendingId:$,effects:L,parentComponent:W,container:Z,isInFallback:te}=w;let F=!1;if(w.isHydrating)w.isHydrating=!1;else if(!k){F=R&&T.transition&&T.transition.mode==="out-in";let ce=!1;F&&(R.transition.afterLeave=()=>{$===w.pendingId&&(h(T,Z,o===_&&!ce?g(R):o,0),rr(L),te&&D.ssFallback&&(D.ssFallback.el=null))}),R&&!w.isFallbackMountPending&&(y(R.el)===Z&&(o=g(R),ce=!0),d(R,W,w,!0),!F&&te&&D.ssFallback&&Se(()=>D.ssFallback.el=null,w)),F||h(T,Z,o,0)}w.isFallbackMountPending=!1,Sn(w,T),w.pendingBranch=null,w.isInFallback=!1;let z=w.parent,V=!1;for(;z;){if(z.pendingBranch){z.effects.push(...L),V=!0;break}z=z.parent}!V&&!F&&rr(L),w.effects=[],v&&t&&t.pendingBranch&&E===t.pendingId&&(t.deps--,t.deps===0&&!P&&t.resolve()),or(D,"onResolve")},fallback(k){if(!w.pendingBranch)return;const{vnode:P,activeBranch:D,parentComponent:R,container:T,namespace:$}=w;or(P,"onFallback");const L=g(D),W=()=>{w.isFallbackMountPending=!1,w.isInFallback&&(u(null,k,T,L,R,null,$,a,l),Sn(w,k))},Z=k.transition&&k.transition.mode==="out-in";Z&&(w.isFallbackMountPending=!0,D.transition.afterLeave=W),w.isInFallback=!0,d(D,R,null,!0),Z||W()},move(k,P,D){w.activeBranch&&h(w.activeBranch,k,P,D),w.container=k},next(){return w.activeBranch&&g(w.activeBranch)},registerDep(k,P,D){const R=!!w.pendingBranch;R&&w.deps++;const T=k.vnode.el;k.asyncDep.catch($=>{Ln($,k,0)}).then($=>{if(k.isUnmounted||w.isUnmounted||w.pendingId!==k.suspenseId)return;zs(),k.asyncResolved=!0;const{vnode:L}=k;qs(k,$),T&&(L.el=T);const W=!T&&k.subTree.el;P(k,L,y(T||k.subTree.el),T?null:g(k.subTree),w,i,D),W&&(L.placeholder=null,C(W)),is(k,L.el),R&&--w.deps===0&&w.resolve()})},unmount(k,P){w.isUnmounted=!0,w.activeBranch&&d(w.activeBranch,n,k,P),w.pendingBranch&&d(w.pendingBranch,n,k,P)}};return w}function Yf(e,t,n,r,s,o,i,a,l){const f=t.suspense=Bl(t,r,n,e.parentNode,document.createElement("div"),null,s,o,i,a,!0),c=l(e,f.pendingBranch=t.ssContent,n,f,o,i);return f.deps===0&&f.resolve(!1,!0),c}function Xf(e){const{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=di(r?n.default:n),e.ssFallback=r?di(n.fallback):ye(be)}function di(e){let t;if(X(e)){const n=Cn&&e._c;n&&(e._d=!1,Ge()),e=e(),n&&(e._d=!0,t=$e,Vl())}return G(e)&&(e=Lf(e)),e=Fe(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function Ul(e,t){t&&t.pendingBranch?G(e)?t.effects.push(...e):t.effects.push(e):rr(e)}function Sn(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e;let s=t.el;for(;!s&&t.component;)t=t.component.subTree,s=t.el;n.el=s,r&&r.subTree===n&&(r.vnode.el=s,is(r,s))}function Qf(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const ke=Symbol.for("v-fgt"),rn=Symbol.for("v-txt"),be=Symbol.for("v-cmt"),Jn=Symbol.for("v-stc"),Yn=[];let $e=null;function Ge(e=!1){Yn.push($e=e?null:[])}function Vl(){Yn.pop(),$e=Yn[Yn.length-1]||null}let Cn=1;function $r(e,t=!1){Cn+=e,e<0&&$e&&t&&($e.hasOnce=!0)}function Kl(e){return e.dynamicChildren=Cn>0?$e||_n:null,Vl(),Cn>0&&$e&&$e.push(e),e}function Zf(e,t,n,r,s,o){return Kl(zl(e,t,n,r,s,o,!0))}function ht(e,t,n,r,s){return Kl(ye(e,t,n,r,s,!0))}function sn(e){return e?e.__v_isVNode===!0:!1}function et(e,t){return e.type===t.type&&e.key===t.key}const Wl=({key:e})=>e??null,Rr=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?pe(e)||me(e)||X(e)?{i:Pe,r:e,k:t,f:!!n}:e:null);function zl(e,t=null,n=null,r=0,s=null,o=e===ke?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wl(t),ref:t&&Rr(t),scopeId:ol,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Pe};return a?(Lo(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=pe(n)?8:16),Cn>0&&!i&&$e&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&$e.push(l),l}const ye=ed;function ed(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===vl)&&(e=be),sn(e)){const a=kt(e,t,!0);return n&&Lo(a,n),Cn>0&&!o&&$e&&(a.shapeFlag&6?$e[$e.indexOf(e)]=a:$e.push(a)),a.patchFlag=-2,a}if(cd(e)&&(e=e.__vccOpts),t){t=ql(t);let{class:a,style:l}=t;a&&!pe(a)&&(t.class=Qr(a)),se(l)&&(ts(l)&&!G(l)&&(l=Te({},l)),t.style=Xr(l))}const i=pe(e)?1:Hr(e)?128:al(e)?64:se(e)?4:X(e)?2:0;return zl(e,t,n,r,s,i,o,!0)}function ql(e){return e?ts(e)||kl(e)?Te({},e):e:null}function kt(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:a,transition:l}=e,f=t?Jl(s||{},t):s,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&Wl(f),ref:t&&t.ref?n&&o?G(o)?o.concat(Rr(t)):[o,Rr(t)]:Rr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ke?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&kt(e.ssContent),ssFallback:e.ssFallback&&kt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&Rn(c,l.clone(c)),c}function Gl(e=" ",t=0){return ye(rn,null,e,t)}function __(e,t){const n=ye(Jn,null,e);return n.staticCount=t,n}function td(e="",t=!1){return t?(Ge(),ht(be,null,e)):ye(be,null,e)}function Fe(e){return e==null||typeof e=="boolean"?ye(be):G(e)?ye(ke,null,e.slice()):sn(e)?wt(e):ye(rn,null,String(e))}function wt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:kt(e)}function Lo(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(G(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Lo(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!kl(t)?t._ctx=Pe:s===3&&Pe&&(Pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else X(t)?(t={default:t,_ctx:Pe},n=32):(t=String(t),r&64?(n=16,t=[Gl(t)]):n=8);e.children=t,e.shapeFlag|=n}function Jl(...e){const t={};for(let n=0;nAe||Pe;let Nr,Ws;{const e=Yr(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Nr=t("__VUE_INSTANCE_SETTERS__",n=>Ae=n),Ws=t("__VUE_SSR_SETTERS__",n=>An=n)}const dr=e=>{const t=Ae;return Nr(e),e.scope.on(),()=>{e.scope.off(),Nr(t)}},zs=()=>{Ae&&Ae.scope.off(),Nr(null)};function Yl(e){return e.vnode.shapeFlag&4}let An=!1;function od(e,t=!1,n=!1){t&&Ws(t);const{props:r,children:s}=e.vnode,o=Yl(e);Nf(e,r,o,t),Uf(e,s,n||t);const i=o?id(e,t):void 0;return t&&Ws(!1),i}function id(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Sf);const{setup:r}=n;if(r){At();const s=e.setupContext=r.length>1?ld(e):null,o=dr(e),i=cr(r,e,0,[e.props,s]),a=xa(i);if(Pt(),o(),(a||e.sp)&&!Ct(e)&&xo(e),a){if(i.then(zs,zs),t)return i.then(l=>{qs(e,l)}).catch(l=>{Ln(l,e,0)});e.asyncDep=i}else qs(e,i)}else Xl(e)}function qs(e,t,n){X(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=Za(t)),Xl(e)}function Xl(e,t,n){const r=e.type;e.render||(e.render=r.render||pt);{const s=dr(e);At();try{Tf(e)}finally{Pt(),s()}}}const ad={get(e,t){return xe(e,"get",""),e[t]}};function ld(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,ad),slots:e.slots,emit:e.emit,expose:t}}function as(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Za(Ro(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Gn)return Gn[n](e)},has(t,n){return n in t||n in Gn}})):e.proxy}function Gs(e,t=!0){return X(e)?e.displayName||e.name:e.name||t&&e.__name}function cd(e){return X(e)&&"__vccOpts"in e}const Re=(e,t)=>Yu(e,t,An);function Oe(e,t,n){try{$r(-1);const r=arguments.length;return r===2?se(t)&&!G(t)?sn(t)?ye(e,null,[t]):ye(e,t):ye(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&sn(n)&&(n=[n]),ye(e,t,n))}finally{$r(1)}}const ud="3.5.38";let Js;const hi=typeof window<"u"&&window.trustedTypes;if(hi)try{Js=hi.createPolicy("vue",{createHTML:e=>e})}catch{}const Ql=Js?e=>Js.createHTML(e):e=>e,fd="http://www.w3.org/2000/svg",dd="http://www.w3.org/1998/Math/MathML",vt=typeof document<"u"?document:null,pi=vt&&vt.createElement("template"),hd={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?vt.createElementNS(fd,e):t==="mathml"?vt.createElementNS(dd,e):n?vt.createElement(e,{is:n}):vt.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>vt.createTextNode(e),createComment:e=>vt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>vt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{pi.innerHTML=Ql(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const a=pi.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},It="transition",jn="animation",ir=Symbol("_vtc"),Zl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},pd=Te({},ll,Zl),md=e=>(e.displayName="Transition",e.props=pd,e),gd=md((e,{slots:t})=>Oe(cf,yd(e),t)),Gt=(e,t=[])=>{G(e)?e.forEach(n=>n(...t)):e&&e(...t)},mi=e=>e?G(e)?e.some(t=>t.length>1):e.length>1:!1;function yd(e){const t={};for(const L in e)L in Zl||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:f=i,appearToClass:c=a,leaveFromClass:u=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:d=`${n}-leave-to`}=e,g=_d(s),y=g&&g[0],C=g&&g[1],{onBeforeEnter:E,onEnter:v,onEnterCancelled:p,onLeave:_,onLeaveCancelled:w,onBeforeAppear:k=E,onAppear:P=v,onAppearCancelled:D=p}=t,R=(L,W,Z,te)=>{L._enterCancelled=te,Jt(L,W?c:a),Jt(L,W?f:i),Z&&Z()},T=(L,W)=>{L._isLeaving=!1,Jt(L,u),Jt(L,d),Jt(L,h),W&&W()},$=L=>(W,Z)=>{const te=L?P:v,F=()=>R(W,L,Z);Gt(te,[W,F]),gi(()=>{Jt(W,L?l:o),_t(W,L?c:a),mi(te)||yi(W,r,y,F)})};return Te(t,{onBeforeEnter(L){Gt(E,[L]),_t(L,o),_t(L,i)},onBeforeAppear(L){Gt(k,[L]),_t(L,l),_t(L,f)},onEnter:$(!1),onAppear:$(!0),onLeave(L,W){L._isLeaving=!0;const Z=()=>T(L,W);_t(L,u),L._enterCancelled?(_t(L,h),vi(L)):(vi(L),_t(L,h)),gi(()=>{L._isLeaving&&(Jt(L,u),_t(L,d),mi(_)||yi(L,r,C,Z))}),Gt(_,[L,Z])},onEnterCancelled(L){R(L,!1,void 0,!0),Gt(p,[L])},onAppearCancelled(L){R(L,!0,void 0,!0),Gt(D,[L])},onLeaveCancelled(L){T(L),Gt(w,[L])}})}function _d(e){if(e==null)return null;if(se(e))return[Es(e.enter),Es(e.leave)];{const t=Es(e);return[t,t]}}function Es(e){return Ma(e)}function _t(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[ir]||(e[ir]=new Set)).add(t)}function Jt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[ir];n&&(n.delete(t),n.size||(e[ir]=void 0))}function gi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let bd=0;function yi(e,t,n,r){const s=e._endId=++bd,o=()=>{s===e._endId&&r()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:a,propCount:l}=vd(e,t);if(!i)return r();const f=i+"end";let c=0;const u=()=>{e.removeEventListener(f,h),o()},h=d=>{d.target===e&&++c>=l&&u()};setTimeout(()=>{c(n[g]||"").split(", "),s=r(`${It}Delay`),o=r(`${It}Duration`),i=_i(s,o),a=r(`${jn}Delay`),l=r(`${jn}Duration`),f=_i(a,l);let c=null,u=0,h=0;t===It?i>0&&(c=It,u=i,h=o.length):t===jn?f>0&&(c=jn,u=f,h=l.length):(u=Math.max(i,f),c=u>0?i>f?It:jn:null,h=c?c===It?o.length:l.length:0);const d=c===It&&/\b(?:transform|all)(?:,|$)/.test(r(`${It}Property`).toString());return{type:c,timeout:u,propCount:h,hasTransform:d}}function _i(e,t){for(;e.lengthbi(n)+bi(e[r])))}function bi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function vi(e){return(e?e.ownerDocument:document).body.offsetHeight}function wd(e,t,n){const r=e[ir];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const jr=Symbol("_vod"),ec=Symbol("_vsh"),b_={name:"show",beforeMount(e,{value:t},{transition:n}){e[jr]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Fn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Fn(e,!0),r.enter(e)):r.leave(e,()=>{Fn(e,!1)}):Fn(e,t))},beforeUnmount(e,{value:t}){Fn(e,t)}};function Fn(e,t){e.style.display=t?e[jr]:"none",e[ec]=!t}const Ed=Symbol(""),Sd=/(?:^|;)\s*display\s*:/;function Td(e,t,n){const r=e.style,s=pe(n);let o=!1;if(n&&!s){if(t)if(pe(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&Wn(r,a,"")}else for(const i in t)n[i]==null&&Wn(r,i,"");for(const i in n){i==="display"&&(o=!0);const a=n[i];a!=null?Cd(e,i,!pe(t)&&t?t[i]:void 0,a)||Wn(r,i,a):Wn(r,i,"")}}else if(s){if(t!==n){const i=r[Ed];i&&(n+=";"+i),r.cssText=n,o=Sd.test(n)}}else t&&e.removeAttribute("style");jr in e&&(e[jr]=o?r.display:"",e[ec]&&(r.display="none"))}const wi=/\s*!important$/;function Wn(e,t,n){if(G(n))n.forEach(r=>Wn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Rd(e,t);wi.test(n)?e.setProperty(Kt(r),n.replace(wi,""),"important"):e[r]=n}}const Ei=["Webkit","Moz","ms"],Ss={};function Rd(e,t){const n=Ss[t];if(n)return n;let r=Le(t);if(r!=="filter"&&r in e)return Ss[t]=r;r=Gr(r);for(let s=0;sTs||(kd.then(()=>Ts=0),Ts=Date.now());function Md(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;const s=n.value;if(G(s)){const o=r.stopImmediatePropagation;r.stopImmediatePropagation=()=>{o.call(r),r._stopped=!0};const i=s.slice(),a=[r];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Id=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?wd(e,r,i):t==="style"?Td(e,n,r):lr(t)?Wr(t)||Pd(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ld(e,t,r,i))?(Ri(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ti(e,t,r,i,o,t!=="value")):e._isVueCE&&(Dd(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!pe(r)))?Ri(e,Le(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Ti(e,t,r,i))};function Ld(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Pi(t)&&X(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Pi(t)&&pe(n)?!1:t in e}function Dd(e,t){const n=e._def.props;if(!n)return!1;const r=Le(t);return Array.isArray(n)?n.some(s=>Le(s)===r):Object.keys(n).some(s=>Le(s)===r)}const Vt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return G(t)?n=>vn(t,n):t};function Hd(e){e.target.composing=!0}function xi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Je=Symbol("_assign");function ki(e,t,n){return t&&(e=e.trim()),n&&(e=Jr(e)),e}const Oi={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Je]=Vt(s);const o=r||s.props&&s.props.type==="number";Tt(e,t?"change":"input",i=>{i.target.composing||e[Je](ki(e.value,n,o))}),(n||o)&&Tt(e,"change",()=>{e.value=ki(e.value,n,o)}),t||(Tt(e,"compositionstart",Hd),Tt(e,"compositionend",xi),Tt(e,"change",xi))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Je]=Vt(i),e.composing)return;const a=(o||e.type==="number")&&!/^0\d/.test(e.value)?Jr(e.value):e.value,l=t??"";if(a===l)return;const f=e.getRootNode();(f instanceof Document||f instanceof ShadowRoot)&&f.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===l)||(e.value=l)}},$d={deep:!0,created(e,t,n){e[Je]=Vt(n),Tt(e,"change",()=>{const r=e._modelValue,s=Pn(e),o=e.checked,i=e[Je];if(G(r)){const a=yo(r,s),l=a!==-1;if(o&&!l)i(r.concat(s));else if(!o&&l){const f=[...r];f.splice(a,1),i(f)}}else if(Mn(r)){const a=new Set(r);o?a.add(s):a.delete(s),i(a)}else i(tc(e,o))})},mounted:Mi,beforeUpdate(e,t,n){e[Je]=Vt(n),Mi(e,t,n)}};function Mi(e,{value:t,oldValue:n},r){e._modelValue=t;let s;if(G(t))s=yo(t,r.props.value)>-1;else if(Mn(t))s=t.has(r.props.value);else{if(t===n)return;s=Bt(t,tc(e,!0))}e.checked!==s&&(e.checked=s)}const Nd={created(e,{value:t},n){e.checked=Bt(t,n.props.value),e[Je]=Vt(n),Tt(e,"change",()=>{e[Je](Pn(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[Je]=Vt(r),t!==n&&(e.checked=Bt(t,r.props.value))}},jd={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const s=Mn(t);Tt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Jr(Pn(i)):Pn(i));e[Je](e.multiple?s?new Set(o):o:o[0]),e._assigning=!0,xt(()=>{e._assigning=!1})}),e[Je]=Vt(r)},mounted(e,{value:t}){Ii(e,t)},beforeUpdate(e,t,n){e[Je]=Vt(n)},updated(e,{value:t}){e._assigning||Ii(e,t)}};function Ii(e,t){const n=e.multiple,r=G(t);if(!(n&&!r&&!Mn(t))){for(let s=0,o=e.options.length;sString(f)===String(a)):i.selected=yo(t,a)>-1}else i.selected=t.has(a);else if(Bt(Pn(i),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Pn(e){return"_value"in e?e._value:e.value}function tc(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const v_={created(e,t,n){vr(e,t,n,null,"created")},mounted(e,t,n){vr(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){vr(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){vr(e,t,n,r,"updated")}};function Fd(e,t){switch(e){case"SELECT":return jd;case"TEXTAREA":return Oi;default:switch(t){case"checkbox":return $d;case"radio":return Nd;default:return Oi}}}function vr(e,t,n,r,s){const i=Fd(e.tagName,n.props&&n.props.type)[s];i&&i(e,t,n,r)}const Bd=["ctrl","shift","alt","meta"],Ud={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Bd.some(n=>e[`${n}Key`]&&!t.includes(n))},w_=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=((s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=(s=>{if(!("key"in s))return;const o=Kt(s.key);if(t.some(i=>i===o||Vd[i]===o))return e(s)}))},nc=Te({patchProp:Id},hd);let Xn,Li=!1;function Kd(){return Xn||(Xn=Kf(nc))}function Wd(){return Xn=Li?Xn:Wf(nc),Li=!0,Xn}const zd=((...e)=>{const t=Kd().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=sc(r);if(!s)return;const o=t._component;!X(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=n(s,!1,rc(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t}),qd=((...e)=>{const t=Wd().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=sc(r);if(s)return n(s,!0,rc(s))},t});function rc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function sc(e){return pe(e)?document.querySelector(e):e}const Gd=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,Jd=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,Yd=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function Xd(e,t){if(e==="__proto__"||e==="constructor"&&t&&typeof t=="object"&&"prototype"in t){Qd(e);return}return t}function Qd(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function Zd(e,t={}){if(typeof e!="string")return e;if(e[0]==='"'&&e[e.length-1]==='"'&&e.indexOf("\\")===-1)return e.slice(1,-1);const n=e.trim();if(n.length<=9)switch(n.toLowerCase()){case"true":return!0;case"false":return!1;case"undefined":return;case"null":return null;case"nan":return Number.NaN;case"infinity":return Number.POSITIVE_INFINITY;case"-infinity":return Number.NEGATIVE_INFINITY}if(!Yd.test(e)){if(t.strict)throw new SyntaxError("[destr] Invalid JSON");return e}try{if(Gd.test(e)||Jd.test(e)){if(t.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(e,Xd)}return JSON.parse(e)}catch(r){if(t.strict)throw r;return e}}const oc=/#/g,ic=/&/g,eh=/\//g,th=/=/g,nh=/\?/g,ls=/\+/g,rh=/%5e/gi,sh=/%60/gi,oh=/%7c/gi,ih=/%20/gi,ah=/%2f/gi,lh=/%252f/gi;function ac(e){return encodeURI(""+e).replace(oh,"|")}function Ys(e){return ac(typeof e=="string"?e:JSON.stringify(e)).replace(ls,"%2B").replace(ih,"+").replace(oc,"%23").replace(ic,"%26").replace(sh,"`").replace(rh,"^").replace(eh,"%2F")}function Rs(e){return Ys(e).replace(th,"%3D")}function ch(e){return ac(e).replace(oc,"%23").replace(nh,"%3F").replace(lh,"%2F").replace(ic,"%26").replace(ls,"%2B")}function ar(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function uh(e){return ar(e.replace(ah,"%252F"))}function fh(e){return ar(e.replace(ls," "))}function dh(e){return ar(e.replace(ls," "))}function lc(e=""){const t=Object.create(null);e[0]==="?"&&(e=e.slice(1));for(const n of e.split("&")){const r=n.match(/([^=]+)=?(.*)/)||[];if(r.length<2)continue;const s=fh(r[1]);if(s==="__proto__"||s==="constructor")continue;const o=dh(r[2]||"");t[s]===void 0?t[s]=o:Array.isArray(t[s])?t[s].push(o):t[s]=[t[s],o]}return t}function hh(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${Rs(e)}=${Ys(n)}`).join("&"):`${Rs(e)}=${Ys(t)}`:Rs(e)}function ph(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>hh(t,e[t])).filter(Boolean).join("&")}const mh=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,gh=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,yh=/^([/\\]\s*){2,}[^/\\]/,_h=/^[\s\0]*(blob|data|javascript|vbscript):$/i,bh=/\/$|\/\?|\/#/,vh=/^\.?\//;function Dn(e,t={}){return typeof t=="boolean"&&(t={acceptRelative:t}),t.strict?mh.test(e):gh.test(e)||(t.acceptRelative?yh.test(e):!1)}function Xs(e){return!!e&&_h.test(e)}function Qs(e="",t){return t?bh.test(e):e.endsWith("/")}function Fr(e="",t){if(!t)return(Qs(e)?e.slice(0,-1):e)||"/";if(!Qs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");s!==-1&&(n=e.slice(0,s),r=e.slice(s));const[o,...i]=n.split("?");return((o.endsWith("/")?o.slice(0,-1):o)||"/")+(i.length>0?`?${i.join("?")}`:"")+r}function wh(e="",t){if(!t)return e.endsWith("/")?e:e+"/";if(Qs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");if(s!==-1&&(n=e.slice(0,s),r=e.slice(s),!n))return r;const[o,...i]=n.split("?");return o+"/"+(i.length>0?`?${i.join("?")}`:"")+r}function Eh(e,t){if(uc(t)||Dn(e))return e;const n=Fr(t);if(e.startsWith(n)){const r=e[n.length];if(!r||r==="/"||r==="?")return e}return fc(n,e)}function Di(e,t){if(uc(t))return e;const n=Fr(t);if(!e.startsWith(n))return e;const r=e[n.length];return r&&r!=="/"&&r!=="?"?e:"/"+e.slice(n.length).replace(/^\/+/,"")}function cc(e,t){const n=Do(e),r={...lc(n.search),...t};return n.search=ph(r),Th(n)}function uc(e){return!e||e==="/"}function Sh(e){return e&&e!=="/"}function fc(e,...t){let n=e||"";for(const r of t.filter(s=>Sh(s)))if(n){const s=r.replace(vh,"");n=wh(n)+s}else n=r;return n}function dc(...e){const t=/\/(?!\/)/,n=e.filter(Boolean),r=[];let s=0;for(const i of n)if(!(!i||i==="/")){for(const[a,l]of i.split(t).entries())if(!(!l||l===".")){if(l===".."){if(r.length===1&&Dn(r[0]))continue;r.pop(),s--;continue}if(a===1&&r[r.length-1]?.endsWith(":/")){r[r.length-1]+="/"+l;continue}r.push(l),s++}}let o=r.join("/");return s>=0?n[0]?.startsWith("/")&&!o.startsWith("/")?o="/"+o:n[0]?.startsWith("./")&&!o.startsWith("./")&&(o="./"+o):o="../".repeat(-1*s)+o,n[n.length-1]?.endsWith("/")&&!o.endsWith("/")&&(o+="/"),o}function hc(e,t){return ar(Fr(e))===ar(Fr(t))}const pc=Symbol.for("ufo:protocolRelative");function Do(e="",t){const n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){const[,u,h=""]=n;return{protocol:u.toLowerCase(),pathname:h,href:u+h,auth:"",host:"",search:"",hash:""}}if(!Dn(e,{acceptRelative:!0}))return Hi(e);const[,r="",s,o=""]=e.replace(/\\/g,"/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[];let[,i="",a=""]=o.match(/([^#/?]*)(.*)?/)||[];r==="file:"&&(a=a.replace(/\/(?=[A-Za-z]:)/,""));const{pathname:l,search:f,hash:c}=Hi(a);return{protocol:r.toLowerCase(),auth:s?s.slice(0,Math.max(0,s.length-1)):"",host:i,pathname:l,search:f,hash:c,[pc]:!r}}function Hi(e=""){const[t="",n="",r=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function Th(e){const t=e.pathname||"",n=e.search?(e.search.startsWith("?")?"":"?")+e.search:"",r=e.hash||"",s=e.auth?e.auth+"@":"",o=e.host||"";return(e.protocol||e[pc]?(e.protocol||"")+"//":"")+s+o+t+n+r}class Rh extends Error{constructor(t,n){super(t,n),this.name="FetchError",n?.cause&&!this.cause&&(this.cause=n.cause)}}function Ch(e){const t=e.error?.message||e.error?.toString()||"",n=e.request?.method||e.options?.method||"GET",r=e.request?.url||String(e.request)||"/",s=`[${n}] ${JSON.stringify(r)}`,o=e.response?`${e.response.status} ${e.response.statusText}`:"",i=`${s}: ${o}${t?` ${t}`:""}`,a=new Rh(i,e.error?{cause:e.error}:void 0);for(const l of["request","options","response"])Object.defineProperty(a,l,{get(){return e[l]}});for(const[l,f]of[["data","_data"],["status","status"],["statusCode","status"],["statusText","statusText"],["statusMessage","statusText"]])Object.defineProperty(a,l,{get(){return e.response&&e.response[f]}});return a}const Ah=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function $i(e="GET"){return Ah.has(e.toUpperCase())}function Ph(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.buffer||e instanceof FormData||e instanceof URLSearchParams?!1:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const xh=new Set(["image/svg","application/xml","application/xhtml","application/html"]),kh=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function Oh(e=""){if(!e)return"json";const t=e.split(";").shift()||"";return kh.test(t)?"json":t==="text/event-stream"?"stream":xh.has(t)||t.startsWith("text/")?"text":"blob"}function Mh(e,t,n,r){const s=Ih(t?.headers??e?.headers,n?.headers,r);let o;return(n?.query||n?.params||t?.params||t?.query)&&(o={...n?.params,...n?.query,...t?.params,...t?.query}),{...n,...t,query:o,params:o,headers:s}}function Ih(e,t,n){if(!t)return new n(e);const r=new n(t);if(e)for(const[s,o]of Symbol.iterator in e||Array.isArray(e)?e:new n(e))r.set(s,o);return r}async function wr(e,t){if(t)if(Array.isArray(t))for(const n of t)await n(e);else await t(e)}const Lh=new Set([408,409,425,429,500,502,503,504]),Dh=new Set([101,204,205,304]);function mc(e={}){const{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:r=globalThis.AbortController}=e;async function s(a){const l=a.error&&a.error.name==="AbortError"&&!a.options.timeout||!1;if(a.options.retry!==!1&&!l){let c;typeof a.options.retry=="number"?c=a.options.retry:c=$i(a.options.method)?0:1;const u=a.response&&a.response.status||500;if(c>0&&(Array.isArray(a.options.retryStatusCodes)?a.options.retryStatusCodes.includes(u):Lh.has(u))){const h=typeof a.options.retryDelay=="function"?a.options.retryDelay(a):a.options.retryDelay||0;return h>0&&await new Promise(d=>setTimeout(d,h)),o(a.request,{...a.options,retry:c-1})}}const f=Ch(a);throw Error.captureStackTrace&&Error.captureStackTrace(f,o),f}const o=async function(l,f={}){const c={request:l,options:Mh(l,f,e.defaults,n),response:void 0,error:void 0};if(c.options.method&&(c.options.method=c.options.method.toUpperCase()),c.options.onRequest&&(await wr(c,c.options.onRequest),c.options.headers instanceof n||(c.options.headers=new n(c.options.headers||{}))),typeof c.request=="string"&&(c.options.baseURL&&(c.request=Eh(c.request,c.options.baseURL)),c.options.query&&(c.request=cc(c.request,c.options.query),delete c.options.query),"query"in c.options&&delete c.options.query,"params"in c.options&&delete c.options.params),c.options.body&&$i(c.options.method))if(Ph(c.options.body)){const d=c.options.headers.get("content-type");typeof c.options.body!="string"&&(c.options.body=d==="application/x-www-form-urlencoded"?new URLSearchParams(c.options.body).toString():JSON.stringify(c.options.body)),d||c.options.headers.set("content-type","application/json"),c.options.headers.has("accept")||c.options.headers.set("accept","application/json")}else("pipeTo"in c.options.body&&typeof c.options.body.pipeTo=="function"||typeof c.options.body.pipe=="function")&&("duplex"in c.options||(c.options.duplex="half"));let u;if(!c.options.signal&&c.options.timeout){const d=new r;u=setTimeout(()=>{const g=new Error("[TimeoutError]: The operation was aborted due to timeout");g.name="TimeoutError",g.code=23,d.abort(g)},c.options.timeout),c.options.signal=d.signal}try{c.response=await t(c.request,c.options)}catch(d){return c.error=d,c.options.onRequestError&&await wr(c,c.options.onRequestError),await s(c)}finally{u&&clearTimeout(u)}if((c.response.body||c.response._bodyInit)&&!Dh.has(c.response.status)&&c.options.method!=="HEAD"){const d=(c.options.parseResponse?"json":c.options.responseType)||Oh(c.response.headers.get("content-type")||"");switch(d){case"json":{const g=await c.response.text(),y=c.options.parseResponse||Zd;c.response._data=y(g);break}case"stream":{c.response._data=c.response.body||c.response._bodyInit;break}default:c.response._data=await c.response[d]()}}return c.options.onResponse&&await wr(c,c.options.onResponse),!c.options.ignoreResponseError&&c.response.status>=400&&c.response.status<600?(c.options.onResponseError&&await wr(c,c.options.onResponseError),await s(c)):c.response},i=async function(l,f){return(await o(l,f))._data};return i.raw=o,i.native=(...a)=>t(...a),i.create=(a={},l={})=>mc({...e,...l,defaults:{...e.defaults,...l.defaults,...a}}),i}const Br=(function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")})(),Hh=Br.fetch?(...e)=>Br.fetch(...e):()=>Promise.reject(new Error("[ofetch] global.fetch is not supported!")),$h=Br.Headers,Nh=Br.AbortController,jh=mc({fetch:Hh,Headers:$h,AbortController:Nh}),Fh=jh,Bh=()=>window?.__NUXT__?.config||window?.useNuxtApp?.().payload?.config,Ho=()=>Bh().app,Uh=()=>Ho().baseURL,Vh=()=>Ho().buildAssetsDir,$o=(...e)=>dc(gc(),Vh(),...e),gc=(...e)=>{const t=Ho(),n=t.cdnURL||t.baseURL;return e.length?dc(n,...e):n};globalThis.__buildAssetsURL=$o,globalThis.__publicAssetsURL=gc;globalThis.$fetch||(globalThis.$fetch=Fh.create({baseURL:Uh()}));"global"in globalThis||(globalThis.global=globalThis);function Zs(e,t={},n){for(const r in e){const s=e[r],o=n?`${n}:${r}`:r;typeof s=="object"&&s!==null?Zs(s,t,o):typeof s=="function"&&(t[o]=s)}return t}const yc=(()=>{if(console.createTask)return console.createTask;const e={run:t=>t()};return()=>e})();function _c(e,t,n,r){for(let s=n;se[s](...t)):e[s](...t);if(o&&typeof o.then=="function")return Promise.resolve(o).then(()=>_c(e,t,s+1,r))}catch(o){return Promise.reject(o)}}function Kh(e,t,n){if(e.length>0)return _c(e,t,0,yc(n))}function Wh(e,t,n){if(e.length>0){const r=yc(n);return Promise.all(e.map(s=>r.run(()=>s(...t))))}}function Cs(e,t){for(const n of[...e])n(t)}var zh=class{_hooks;_before;_after;_deprecatedHooks;_deprecatedMessages;constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(e,t,n={}){if(!e||typeof t!="function")return()=>{};const r=e;let s;for(;this._deprecatedHooks[e];)s=this._deprecatedHooks[e],e=s.to;if(s&&!n.allowDeprecated){let o=s.message;o||(o=`${r} hook has been deprecated`+(s.to?`, please use ${s.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(o)||(console.warn(o),this._deprecatedMessages.add(o))}if(!t.name)try{Object.defineProperty(t,"name",{get:()=>"_"+e.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[e]=this._hooks[e]||[],this._hooks[e].push(t),()=>{t&&(this.removeHook(e,t),t=void 0)}}hookOnce(e,t){let n,r=(...s)=>(typeof n=="function"&&n(),n=void 0,r=void 0,t(...s));return n=this.hook(e,r),n}removeHook(e,t){const n=this._hooks[e];if(n){const r=n.indexOf(t);r!==-1&&n.splice(r,1),n.length===0&&(this._hooks[e]=void 0)}}clearHook(e){this._hooks[e]=void 0}deprecateHook(e,t){this._deprecatedHooks[e]=typeof t=="string"?{to:t}:t;const n=this._hooks[e]||[];this._hooks[e]=void 0;for(const r of n)this.hook(e,r)}deprecateHooks(e){for(const t in e)this.deprecateHook(t,e[t])}addHooks(e){const t=Zs(e),n=Object.keys(t).map(r=>this.hook(r,t[r]));return()=>{for(const r of n)r();n.length=0}}removeHooks(e){const t=Zs(e);for(const n in t)this.removeHook(n,t[n])}removeAllHooks(){this._hooks={}}callHook(e,...t){return this.callHookWith(Kh,e,t)}callHookParallel(e,...t){return this.callHookWith(Wh,e,t)}callHookWith(e,t,n){const r=this._before||this._after?{name:t,args:n,context:{}}:void 0;this._before&&Cs(this._before,r);const s=e(this._hooks[t]?[...this._hooks[t]]:[],n,t);return s instanceof Promise?s.finally(()=>{this._after&&r&&Cs(this._after,r)}):(this._after&&r&&Cs(this._after,r),s)}beforeEach(e){return this._before=this._before||[],this._before.push(e),()=>{if(this._before!==void 0){const t=this._before.indexOf(e);t!==-1&&this._before.splice(t,1)}}}afterEach(e){return this._after=this._after||[],this._after.push(e),()=>{if(this._after!==void 0){const t=this._after.indexOf(e);t!==-1&&this._after.splice(t,1)}}}};function bc(){return new zh}function qh(e={}){let t,n=!1;const r=i=>{if(t&&t!==i)throw new Error("Context conflict")};let s;if(e.asyncContext){const i=e.AsyncLocalStorage||globalThis.AsyncLocalStorage;i?s=new i:console.warn("[unctx] `AsyncLocalStorage` is not provided.")}const o=()=>{if(s){const i=s.getStore();if(i!==void 0)return i}return t};return{use:()=>{const i=o();if(i===void 0)throw new Error("Context is not available");return i},tryUse:()=>o(),set:(i,a)=>{a||r(i),t=i,n=!0},unset:()=>{t=void 0,n=!1},call:(i,a)=>{r(i),t=i;try{return s?s.run(i,a):a()}finally{n||(t=void 0)}},async callAsync(i,a){t=i;const l=()=>{t=i},f=()=>t===i?l:void 0;eo.add(f);try{const c=s?s.run(i,a):a();return n||(t=void 0),await c}finally{eo.delete(f)}}}}function Gh(e={}){const t={};return{get(n,r={}){return t[n]||(t[n]=qh({...e,...r})),t[n]}}}const Ur=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},Ni="__unctx__",Jh=Ur[Ni]||(Ur[Ni]=Gh()),Yh=(e,t={})=>Jh.get(e,t),ji="__unctx_async_handlers__",eo=Ur[ji]||(Ur[ji]=new Set);function Qn(e){const t=[];for(const s of eo){const o=s();o&&t.push(o)}const n=()=>{for(const s of t)s()};let r=e();return r&&typeof r=="object"&&"catch"in r&&(r=r.catch(s=>{throw n(),s})),[r,n]}const Fi=!1,Bi=!1,Xh=!1,Ui={id:"__nuxt-loader"},S_={componentName:"NuxtLink",prefetch:!0,prefetchOn:{visibility:!0}},Qh={deep:!1},Zh={},ep="#__nuxt",vc="nuxt-app",Vi=36e5,tp="vite:preloadError";function wc(e=vc){return Yh(e,{asyncContext:!1})}const np="__nuxt_plugin";function rp(e){let t=0;const n={_id:e.id||vc||"nuxt-app",_scope:_o(),provide:void 0,versions:{get nuxt(){return"4.4.8"},get vue(){return n.vueApp.version}},payload:Ze({...e.ssrContext?.payload||{},data:Ze({}),state:ot({}),once:new Set,_errors:Ze({})}),static:{data:{}},runWithContext(s){return n._scope.active&&!Zr()?n._scope.run(()=>Ki(n,s)):Ki(n,s)},isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let s=!1;return()=>{if(!s&&(s=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:Ze({}),_state:Ze({}),_payloadRevivers:{},...e};{const s=window.__NUXT__;if(s)for(const o in s)switch(o){case"data":case"state":case"_errors":Object.assign(n.payload[o],s[o]);break;default:n.payload[o]=s[o]}}n.hooks=bc(),n.hook=n.hooks.hook;{const s=n.hooks.callHook;n.hooks.callHook=(o,...i)=>Promise.resolve().then(()=>s(o,...i))}n.callHook=n.hooks.callHook,n.provide=(s,o)=>{const i="$"+s;Er(n,i,o),Er(n.vueApp.config.globalProperties,i,o)},Er(n.vueApp,"$nuxt",n),Er(n.vueApp.config.globalProperties,"$nuxt",n);{window.addEventListener(tp,o=>{n.callHook("app:chunkError",{error:o.payload}),o.payload?.message?.includes("Unable to preload CSS")&&o.preventDefault()}),window.useNuxtApp||=ve;const s=n.hook("app:error",(...o)=>{console.error("[nuxt] error caught during app initialization",...o)});n.hook("app:mounted",s)}const r=n.payload.config;return n.provide("config",r),n}function sp(e,t){t.hooks&&e.hooks.addHooks(t.hooks)}async function op(e,t){if(typeof t=="function"){const{provide:n}=await e.runWithContext(()=>t(e))||{};if(n&&typeof n=="object")for(const r in n)e.provide(r,n[r])}}async function ip(e,t){const n=new Set,r=[],s=[];let o,i=0;async function a(l){const f=l.dependsOn?.filter(c=>t.some(u=>u._name===c)&&!n.has(c))??[];if(f.length>0)r.push([new Set(f),l]);else{const c=op(e,l).then(async()=>{l._name&&(n.add(l._name),await Promise.all(r.map(async([u,h])=>{u.has(l._name)&&(u.delete(l._name),u.size===0&&(i++,await a(h)))})))}).catch(u=>{if(!l.parallel&&!e.payload.error)throw u;o||=u});l.parallel?s.push(c):await c}}for(const l of t)sp(e,l);for(const l of t)await a(l);if(await Promise.all(s),i)for(let l=0;l{}),e,{[np]:!0,_name:t})}const ap=Xe;function Ki(e,t,n){const r=()=>t();return wc(e._id).set(e),e.vueApp.runWithContext(r)}function lp(e){let t;return ns()&&(t=an()?.appContext.app.$nuxt),t||=wc(e).tryUse(),t||null}function ve(e){const t=lp(e);if(!t)throw new Error("[nuxt] instance unavailable");return t}function No(e){return ve().$config}function Er(e,t,n){Object.defineProperty(e,t,{get:()=>n})}function As(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function to(e,t,n=".",r){if(!As(t))return to(e,{},n,r);const s={...t};for(const o of Object.keys(e)){if(o==="__proto__"||o==="constructor")continue;const i=e[o];i!=null&&(r&&r(s,o,i,n)||(Array.isArray(i)&&Array.isArray(s[o])?s[o]=[...i,...s[o]]:As(i)&&As(s[o])?s[o]=to(i,s[o],(n?`${n}.`:"")+o.toString(),r):s[o]=i))}return s}function cp(e){return(...t)=>t.reduce((n,r)=>to(n,r,"",e),{})}const Ec=cp();function up(e,t){try{return t in e}catch{return!1}}class Wi extends Error{static __h3_error__=!0;statusCode=500;fatal=!1;unhandled=!1;statusMessage;data;cause;constructor(t,n={}){super(t,n),n.cause&&!this.cause&&(this.cause=n.cause)}toJSON(){const t={message:this.message,statusCode:no(this.statusCode,500)};return this.statusMessage&&(t.statusMessage=Sc(this.statusMessage)),this.data!==void 0&&(t.data=this.data),t}}function fp(e){if(typeof e=="string")return new Wi(e);if(dp(e))return e;const t=new Wi(e.message??e.statusMessage??"",{cause:e.cause||e});if(up(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=no(e.statusCode,t.statusCode):e.status&&(t.statusCode=no(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;Sc(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function dp(e){return e?.constructor?.__h3_error__===!0}const hp=/[^\u0009\u0020-\u007E]/g;function Sc(e=""){return e.replace(hp,"")}function no(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const Tc=Symbol("layout-meta"),on=Symbol("route");import.meta.url.replace(/\/app\/.*$/,"/");const Ve=()=>ve()?.$router,jo=()=>ns()?Ce(on,ve()._route):ve()._route;const pp=()=>{try{if(ve()._processingMiddleware)return!0}catch{return!1}return!1},zi=(e,t)=>{e||="/";const n=typeof e=="string"?e:"path"in e?mp(e):Ve().resolve(e).href;if(t?.open){const{protocol:f}=new URL(n,window.location.href);if(f&&Xs(f))throw new Error(`Cannot navigate to a URL with '${f}' protocol.`);const{target:c="_blank",windowFeatures:u={}}=t.open,h=[];for(const[d,g]of Object.entries(u))g!==void 0&&h.push(`${d.toLowerCase()}=${g}`);return open(n,c,h.join(", ")),Promise.resolve()}const r=Dn(n,{acceptRelative:!0}),s=t?.external||r;if(s){if(!t?.external)throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const{protocol:f}=new URL(n,window.location.href);if(f&&Xs(f))throw new Error(`Cannot navigate to a URL with '${f}' protocol.`)}const o=pp();if(!s&&o){if(t?.replace){if(typeof e=="string"){const{pathname:f,search:c,hash:u}=Do(e);return{path:f,...c&&{query:lc(c)},...u&&{hash:u},replace:!0}}return{...e,replace:!0}}return e}const i=Ve(),a=ve();if(s)return a._scope.stop(),t?.replace?location.replace(n):location.href=n,o?a.isHydrating?new Promise(()=>{}):!1:Promise.resolve();const l=typeof e=="string"?gp(e):e;return t?.replace?i.replace(l):i.push(l)};function mp(e){return cc(e.path||"",e.query||{})+(e.hash||"")}function gp(e){const t=Do(e);return ch(uh(t.pathname))+t.search+t.hash}const Rc="__nuxt_error",cs=()=>el(ve().payload,"error"),Zt=e=>{const t=Ft(e);try{const n=cs();ve().hooks.callHook("app:error",t),n.value||=t}catch{throw t}return t},yp=async(e={})=>{const t=ve(),n=cs();t.callHook("app:error:cleared",e),e.redirect&&await Ve().replace(e.redirect),n.value=void 0},Cc=e=>!!e&&typeof e=="object"&&Rc in e,Ft=e=>{typeof e!="string"&&e.statusText&&(e.message??=e.statusText);const t=fp(e);return Object.defineProperty(t,Rc,{value:!0,configurable:!1,writable:!1}),Object.defineProperty(t,"status",{get:()=>t.statusCode,configurable:!0}),Object.defineProperty(t,"statusText",{get:()=>t.statusMessage,configurable:!0}),t};let Ac;const xn=e=>Ac=e,Pc=Symbol();function ro(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Zn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Zn||(Zn={}));function _p(){const e=_o(!0),t=e.run(()=>nt({}));let n=[],r=[];const s=Ro({install(o){xn(s),s._a=o,o.provide(Pc,s),o.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(o){return this._a?n.push(o):r.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const xc=()=>{};function qi(e,t,n,r=xc){e.add(t);const s=()=>{e.delete(t)&&r()};return!n&&Zr()&&$a(s),s}function dn(e,...t){e.forEach(n=>{n(...t)})}const bp=e=>e(),Gi=Symbol(),Ps=Symbol();function so(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,r)=>e.set(r,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];ro(s)&&ro(r)&&e.hasOwnProperty(n)&&!me(r)&&!mt(r)?e[n]=so(s,r):e[n]=r}return e}const vp=Symbol();function wp(e){return!ro(e)||!Object.prototype.hasOwnProperty.call(e,vp)}const{assign:Dt}=Object;function Ep(e){return!!(me(e)&&e.effect)}function Sp(e,t,n,r){const{state:s,actions:o,getters:i}=t,a=n.state.value[e];let l;function f(){a||(n.state.value[e]=s?s():{});const c=zu(n.state.value[e]);return Dt(c,o,Object.keys(i||{}).reduce((u,h)=>(u[h]=Ro(Re(()=>{xn(n);const d=n._s.get(e);return i[h].call(d,d)})),u),{}))}return l=kc(e,f,t,n,r,!0),l}function kc(e,t,n={},r,s,o){let i;const a=Dt({actions:{}},n),l={deep:!0};let f,c,u=new Set,h=new Set,d;const g=r.state.value[e];!o&&!g&&(r.state.value[e]={});let y;function C(D){let R;f=c=!1,typeof D=="function"?(D(r.state.value[e]),R={type:Zn.patchFunction,storeId:e,events:d}):(so(r.state.value[e],D),R={type:Zn.patchObject,payload:D,storeId:e,events:d});const T=y=Symbol();xt().then(()=>{y===T&&(f=!0)}),c=!0,dn(u,R,r.state.value[e])}const E=o?function(){const{state:R}=n,T=R?R():{};this.$patch($=>{Dt($,T)})}:xc;function v(){i.stop(),u.clear(),h.clear(),r._s.delete(e)}const p=(D,R="")=>{if(Gi in D)return D[Ps]=R,D;const T=function(){xn(r);const $=Array.from(arguments),L=new Set,W=new Set;function Z(z){L.add(z)}function te(z){W.add(z)}dn(h,{args:$,name:T[Ps],store:w,after:Z,onError:te});let F;try{F=D.apply(this&&this.$id===e?this:w,$)}catch(z){throw dn(W,z),z}return F instanceof Promise?F.then(z=>(dn(L,z),z)).catch(z=>(dn(W,z),Promise.reject(z))):(dn(L,F),F)};return T[Gi]=!0,T[Ps]=R,T},_={_p:r,$id:e,$onAction:qi.bind(null,h),$patch:C,$reset:E,$subscribe(D,R={}){const T=qi(u,D,R.detached,()=>$()),$=i.run(()=>Rt(()=>r.state.value[e],L=>{(R.flush==="sync"?c:f)&&D({storeId:e,type:Zn.direct,events:d},L)},Dt({},l,R)));return T},$dispose:v},w=ot(_);r._s.set(e,w);const P=(r._a&&r._a.runWithContext||bp)(()=>r._e.run(()=>(i=_o()).run(()=>t({action:p}))));for(const D in P){const R=P[D];if(me(R)&&!Ep(R)||mt(R))o||(g&&wp(R)&&(me(R)?R.value=g[D]:so(R,g[D])),r.state.value[e][D]=R);else if(typeof R=="function"){const T=p(R,D);P[D]=T,a.actions[D]=R}}return Dt(w,P),Dt(ne(w),P),Object.defineProperty(w,"$state",{get:()=>r.state.value[e],set:D=>{C(R=>{Dt(R,D)})}}),r._p.forEach(D=>{Dt(w,i.run(()=>D({store:w,app:r._a,pinia:r,options:a})))}),g&&o&&n.hydrate&&n.hydrate(w.$state,g),f=!0,c=!0,w}function Tp(e,t,n){let r;const s=typeof t=="function";r=s?n:t;function o(i,a){const l=ns();return i=i||(l?Ce(Pc,null):null),i&&xn(i),i=Ac,i._s.has(e)||(s?kc(e,t,r,i):Sp(e,r,i)),i._s.get(e)}return o.$id=e,o}const Rp=-1,Cp=-2,Ap=-3,Pp=-4,xp=-5,kp=-6,Op=-7,Oc=2**32-1,oo=Oc-1;function Mp(e){return!(!Number.isInteger(e)||e<0||e>oo)}function Ip(e){return!(!Number.isInteger(e)||e<0||e>Oc)}function Lp(e){return Uint8Array.fromBase64(e).buffer}function Dp(e){return Uint8Array.from(Buffer.from(e,"base64")).buffer}function Hp(e){const t=atob(e),n=t.length,r=new Uint8Array(n);for(let s=0;s=f)throw new Error("Invalid input");c[h]=o(l[u+1])}c.length=f}else{const f=new Array(l.length);r[i]=f;for(let c=0;c`${r}:${String(s)}`).join(",")}`}function Vr(e,t,n){typeof e==="function"&&(!n||n!=="titleTemplate"&&!(n[0]==="o"&&n[1]==="n"))&&(e=e());const s=t?t(n,e):e;if(Array.isArray(s))return s.map(o=>Vr(o,t));if(s?.constructor===Object){const o={};for(const i of Object.keys(s))o[i]=Vr(s[i],t,i);return o}return s}function Xp(e,t){const n=e==="style"?new Map:new Set;function r(s){if(s==null||s===void 0)return;const o=String(s).trim();if(o)if(e==="style"){const[i,...a]=o.split(":").map(l=>l?l.trim():"");i&&a.length&&n.set(i,a.join(":"))}else o.split(" ").filter(Boolean).forEach(i=>n.add(i))}return typeof t=="string"?e==="style"?t.split(";").forEach(r):r(t):Array.isArray(t)?t.forEach(s=>r(s)):t&&typeof t=="object"&&Object.entries(t).forEach(([s,o])=>{o&&o!=="false"&&(e==="style"?n.set(String(s).trim(),String(o)):r(s))}),n}function Lc(e,t){if(e.props=e.props||{},!t)return e;if(e.tag==="templateParams")return e.props=t,e;const n=io.has(e.tag)||e.tag==="htmlAttrs"||e.tag==="bodyAttrs";return Object.entries(t).forEach(([r,s])=>{if(r==="__proto__"||r==="constructor"||r==="prototype")return;if(s===null){e.props[r]=null;return}if(r==="class"||r==="style"){e.props[r]=Xp(r,s);return}if(zp.has(r)){if((r==="textContent"||r==="innerHTML")&&typeof s=="object"){let f=t.type;if(t.type||(f="application/json"),!f?.endsWith("json")&&f!=="speculationrules")return;t.type=f,e.props.type=f,e[r]=JSON.stringify(s)}else e[r]=s;return}const o=r.startsWith("data-"),i=n&&!o?r.toLowerCase():r,a=String(s),l=e.tag==="meta"&&i==="content";a==="true"||a===""?e.props[i]=o||l?a:!0:!s&&o&&a==="false"?e.props[i]="false":s!==void 0&&(e.props[i]=s)}),e}function Qp(e,t){const n=typeof t=="object"&&typeof t!="function"?t:{[e==="script"||e==="noscript"||e==="style"?"innerHTML":"textContent"]:t},r=Lc({tag:e,props:{}},n);return r.key&&Up.has(r.tag)&&(r.props["data-hid"]=r._h=r.key),r.tag==="script"&&typeof r.innerHTML=="object"&&(r.innerHTML=JSON.stringify(r.innerHTML),r.props.type=r.props.type||"application/json"),Array.isArray(r.props.content)?r.props.content.map(s=>({...r,props:{...r.props,content:s}})):r}function Zp(e,t){if(!e)return[];typeof e=="function"&&(e=e());const n=(s,o)=>{for(let i=0;i{if(o!==void 0)for(const i of Array.isArray(o)?o:[o])r.push(Qp(s,i))}),r.flat()}const Ji=(e,t)=>e._w===t._w?e._p-t._p:e._w-t._w,Yi={base:-10,title:10},em={critical:-8,high:-1,low:2},Xi={meta:{"content-security-policy":-30,charset:-20,viewport:-15},link:{preconnect:20,stylesheet:60,preload:70,modulepreload:70,prefetch:90,"dns-prefetch":90,prerender:90},script:{async:30,defer:80,sync:50},style:{imported:40,sync:60}},tm=/@import/,Bn=e=>e===""||e===!0;function nm(e,t){if(typeof t.tagPriority=="number")return t.tagPriority;let n=100;const r=em[t.tagPriority]||0,s=e.resolvedOptions.disableCapoSorting?{link:{},script:{},style:{}}:Xi;if(t.tag in Yi)n=Yi[t.tag];else if(t.tag==="meta"){const o=t.props["http-equiv"]==="content-security-policy"?"content-security-policy":t.props.charset?"charset":t.props.name==="viewport"?"viewport":null;o&&(n=Xi.meta[o])}else if(t.tag==="link"&&t.props.rel)n=s.link[t.props.rel];else if(t.tag==="script"){const o=String(t.props.type);Bn(t.props.async)?n=s.script.async:t.props.src&&!Bn(t.props.defer)&&!Bn(t.props.async)&&o!=="module"&&!o.endsWith("json")||t.innerHTML&&!o.endsWith("json")?n=s.script.sync:(Bn(t.props.defer)&&t.props.src&&!Bn(t.props.async)||o==="module")&&(n=s.script.defer)}else t.tag==="style"&&(n=t.innerHTML&&tm.test(t.innerHTML)?s.style.imported:s.style.sync);return(n||100)+r}function Qi(e,t){const n=typeof t=="function"?t(e):t,r=n.key||String(e.plugins.size+1);e.plugins.get(r)||(e.plugins.set(r,n),e.hooks.addHooks(n.hooks||{}))}function rm(e={}){const t=bc();t.addHooks(e.hooks||{});const n=!e.document,r=new Map,s=new Map,o=new Set,i={_entryCount:1,plugins:s,dirty:!1,resolvedOptions:e,hooks:t,ssr:n,entries:r,headEntries(){return[...r.values()]},use:a=>Qi(i,a),push(a,l){const f={...l||{}};delete f.head;const c=f._index??i._entryCount++,u={_i:c,input:a,options:f},h={_poll(d=!1){i.dirty=!0,!d&&o.add(c),t.callHook("entries:updated",i)},dispose(){r.delete(c)&&i.invalidate()},patch(d){(!f.mode||f.mode==="server"&&n||f.mode==="client"&&!n)&&(u.input=d,r.set(c,u),h._poll())}};return h.patch(a),h},async resolveTags(){const a={tagMap:new Map,tags:[],entries:[...i.entries.values()]};for(await t.callHook("entries:resolve",a);o.size;){const h=o.values().next().value;o.delete(h);const d=r.get(h);if(d){const g={tags:Zp(d.input,e.propResolvers||[]).map(y=>Object.assign(y,d.options)),entry:d};await t.callHook("entries:normalize",g),d._tags=g.tags.map((y,C)=>(y._w=nm(i,y),y._p=(d._i<<10)+C,y._d=ao(y),y._d||(y._h=Ic(y)),y))}}let l=!1;a.entries.flatMap(h=>(h._tags||[]).map(d=>({...d,props:{...d.props}}))).sort(Ji).reduce((h,d)=>{const g=d._d||d._h;if(!h.has(g))return h.set(g,d);const y=h.get(g);if((d?.tagDuplicateStrategy||(qp.has(d.tag)?"merge":null)||(d.key&&d.key===y.key?"merge":null))==="merge"){const E={...y.props};Object.entries(d.props).forEach(([v,p])=>E[v]=v==="style"?new Map([...y.props.style||new Map,...p]):v==="class"?new Set([...y.props.class||new Set,...p]):p),h.set(g,{...d,props:E})}else d._p>>10===y._p>>10&&d.tag==="meta"&&Mc(g)?(h.set(g,Object.assign([...Array.isArray(y)?y:[y],d],d)),l=!0):(d._w===y._w?d._p>y._p:d?._wQi(i,a)),i.hooks.callHook("init",i),e.init?.forEach(a=>a&&i.push(a)),i}const sm=(e,t)=>me(t)?ft(t):t,Dc="usehead";function om(e){return{install(n){n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(Dc,e)}}.install}function im(){if(ns()){const e=Ce(Dc);if(e)return e}throw new Error("useHead() was called without provide context, ensure you call it through the setup() function.")}function T_(e,t={}){const n=t.head||im();return n.ssr?n.push(e||{},t):am(n,e,t)}function am(e,t,n={}){const r=nt(!1);let s;return rf(()=>{const i=r.value?{}:Vr(t,sm);s?s.patch(i):s=e.push(i,n)}),an()&&(fr(()=>{s.dispose()}),pl(()=>{r.value=!0}),hl(()=>{r.value=!1})),s}const lm=(e,t)=>[],Hc=e=>Ec({},...lm("",typeof e=="string"?e.toLowerCase():e).map(t=>t.data).reverse()),cm=Hc;let Cr;function um(){let e;return e=$fetch($o(`builds/meta/${No().app.buildId}.json`),{responseType:"json"}).then(t=>{if(!t||typeof t!="object"||!Array.isArray(t.prerendered))throw new Error("[nuxt] Received malformed app manifest. Ensure that `builds/meta/*.json` is served as JSON by your hosting/proxy and not rewritten to an HTML fallback.");return t}),Cr=e,e.catch(t=>{Cr===e&&(Cr=void 0),console.error("[nuxt] Error fetching app manifest.",t)}),e}function $c(){return Cr||um()}function Nc(e){const t=typeof e=="string"?e:e.path;try{return cm(t.toLowerCase())}catch(n){return console.error("[nuxt] Error matching route rules.",n),{}}}async function Zi(e,t={}){return null}async function fm(e){return null}let Yt=null;async function dm(){if(Yt)return Yt;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=await hm(e.textContent||""),n=e.dataset.src?await fm(e.dataset.src):void 0;return Yt={...t,...n,...window.__NUXT__},Yt.config?.public&&(Yt.config.public=ot(Yt.config.public)),Yt}async function hm(e){return await Fp(e,ve()._payloadRevivers)}function jc(e,t){ve()._payloadRevivers[e]=t}const pm=ap(()=>{jc("skipHydrate",e=>{})});function ea(e){try{return JSON.parse(e)}catch{return e}}const mm=[["NuxtError",e=>Ft(e)],["EmptyShallowRef",e=>Ut(e==="_"?void 0:e==="0n"?BigInt(0):ea(e))],["EmptyRef",e=>nt(e==="_"?void 0:e==="0n"?BigInt(0):ea(e))],["ShallowRef",e=>Ut(e)],["ShallowReactive",e=>Ze(e)],["Ref",e=>nt(e)],["Reactive",e=>ot(e)]],gm=Xe({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const[r,s]of mm)jc(r,s);Object.assign(e.payload,([t,n]=Qn(()=>e.runWithContext(dm)),t=await t,n(),t)),delete window.__NUXT__}});async function Fo(e,t={}){const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!!r.shouldRender)return e._domUpdatePromise||(e._domUpdatePromise=new Promise(async s=>{const o=new Map,i=new Promise(d=>{e.resolveTags().then(g=>{d(g.map(y=>{const C=o.get(y._d)||0,E={tag:y,id:(C?`${y._d}:${C}`:y._d)||y._h,shouldRender:!0};return y._d&&Mc(y._d)&&o.set(y._d,C+1),E}))})});let a=e._dom;if(!a){a={title:n.title,elMap:new Map().set("htmlAttrs",n.documentElement).set("bodyAttrs",n.body)};for(const d of["body","head"]){const g=n[d]?.children;for(const y of g){const C=y.tagName.toLowerCase();if(!io.has(C))continue;const E=Lc({tag:C,props:{}},{innerHTML:y.innerHTML,...y.getAttributeNames().reduce((v,p)=>(v[p]=y.getAttribute(p),v),{})||{}});if(E.key=y.getAttribute("data-hid")||void 0,E._d=ao(E)||Ic(E),a.elMap.has(E._d)){let v=1,p=E._d;for(;a.elMap.has(p);)p=`${E._d}:${v++}`;a.elMap.set(p,y)}else a.elMap.set(E._d,y)}}}a.pendingSideEffects={...a.sideEffects},a.sideEffects={};function l(d,g,y){const C=`${d}:${g}`;a.sideEffects[C]=y,delete a.pendingSideEffects[C]}function f({id:d,$el:g,tag:y}){const C=y.tag.endsWith("Attrs");a.elMap.set(d,g),C||(y.textContent&&y.textContent!==g.textContent&&(g.textContent=y.textContent),y.innerHTML&&y.innerHTML!==g.innerHTML&&(g.innerHTML=y.innerHTML),l(d,"el",()=>{g?.remove(),a.elMap.delete(d)}));for(const E in y.props){if(!Object.prototype.hasOwnProperty.call(y.props,E))continue;const v=y.props[E];if(E.startsWith("on")&&typeof v=="function"){const _=g?.dataset;if(_&&_[`${E}fired`]){const w=E.slice(0,-5);v.call(g,new Event(w.substring(2)))}g.getAttribute(`data-${E}`)!==""&&((y.tag==="bodyAttrs"?n.defaultView:g).addEventListener(E.substring(2),v.bind(g)),g.setAttribute(`data-${E}`,""));continue}const p=`attr:${E}`;if(E==="class"){if(!v)continue;for(const _ of v)C&&l(d,`${p}:${_}`,()=>g.classList.remove(_)),!g.classList.contains(_)&&g.classList.add(_)}else if(E==="style"){if(!v)continue;for(const[_,w]of v)l(d,`${p}:${_}`,()=>{g.style.removeProperty(_)}),g.style.setProperty(_,w)}else v!==!1&&v!==null&&(g.getAttribute(E)!==v&&g.setAttribute(E,v===!0?"":String(v)),C&&l(d,p,()=>g.removeAttribute(E)))}}const c=[],u={bodyClose:void 0,bodyOpen:void 0,head:void 0},h=await i;for(const d of h){const{tag:g,shouldRender:y,id:C}=d;if(y){if(g.tag==="title"){n.title=g.textContent,l("title","",()=>n.title=a.title);continue}d.$el=d.$el||a.elMap.get(C),d.$el?f(d):io.has(g.tag)&&c.push(d)}}for(const d of c){const g=d.tag.tagPosition||"head";d.$el=n.createElement(d.tag.tag),f(d),u[g]=u[g]||n.createDocumentFragment(),u[g].appendChild(d.$el)}for(const d of h)await e.hooks.callHook("dom:renderTag",d,n,l);u.head&&n.head.appendChild(u.head),u.bodyOpen&&n.body.insertBefore(u.bodyOpen,n.body.firstChild),u.bodyClose&&n.body.appendChild(u.bodyClose);for(const d in a.pendingSideEffects)a.pendingSideEffects[d]();e._dom=a,await e.hooks.callHook("dom:rendered",{renders:h}),s()}).finally(()=>{e._domUpdatePromise=void 0,e.dirty=!1})),e._domUpdatePromise}function ym(e={}){const t=e.domOptions?.render||Fo;e.document=e.document||(typeof window<"u"?document:void 0);const n=e.document?.head.querySelector('script[id="unhead:payload"]')?.innerHTML||!1;return rm({...e,plugins:[...e.plugins||[],{key:"client",hooks:{"entries:updated":t}}],init:[n?JSON.parse(n):!1,...e.init||[]]})}function _m(e,t){let n=0;return()=>{const r=++n;t(()=>{n===r&&e()})}}function bm(e={}){const t=ym({domOptions:{render:_m(()=>Fo(t),n=>setTimeout(n,0))},...e});return t.install=om(t),t}const vm={disableDefaults:!0},wm=Xe({name:"nuxt:head",enforce:"pre",setup(e){const t=bm(vm);e.vueApp.use(t);{let n=!0;const r=async()=>{n=!1,await Fo(t)};t.hooks.hook("dom:beforeRender",o=>{o.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||r()}),e.hooks.hook("app:error",r),e.hooks.hook("app:suspense:resolve",r);const s=t.push.bind(t);t.push=((o,i)=>{const a=s(o,i),l=a.dispose.bind(a);return a.dispose=()=>{const f=e["~transitionPromise"];f?f.then(l):l()},a})}}});const pn=typeof document<"u";function Fc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Em(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Fc(e.default)}const ie=Object.assign;function xs(e,t){const n={};for(const r in t){const s=t[r];n[r]=st(s)?s.map(e):e(s)}return n}const er=()=>{},st=Array.isArray;function ta(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}const Bc=Symbol("");function kn(e,t){return ie(new Error,{type:e,[Bc]:!0},t)}function bt(e,t){return e instanceof Error&&Bc in e&&(t==null||!!(e.type&t))}const Sm=Symbol(""),na=Symbol(""),Bo=Symbol(""),Uo=Symbol(""),lo=Symbol("");function Uc(e){return Ce(Uo)}const Tm={trailing:!0};function Rm(e,t=25,n={}){if(n={...Tm,...n},!Number.isFinite(t))throw new TypeError("Expected `wait` to be a finite number");let r,s,o=[],i,a;const l=(u,h)=>(i=Cm(e,u,h),i.finally(()=>{if(i=null,n.trailing&&a&&!s){const d=l(u,a);return a=null,d}}),i),f=function(...u){return n.trailing&&(a=u),i||new Promise(h=>{const d=!s&&n.leading;clearTimeout(s),s=setTimeout(()=>{s=null;const g=n.leading?r:l(this,u);a=null;for(const y of o)y(g);o=[]},t),d?(r=l(this,u),h(r)):o.push(h)})},c=u=>{u&&(clearTimeout(u),s=null)};return f.isPending=()=>!!s,f.cancel=()=>{c(s),o=[],a=null},f.flush=()=>{if(c(s),!a||i)return;const u=a;return a=null,l(this,u)},f}async function Cm(e,t,n){return await e.apply(t,n)}const Vc=/#/g,Am=/&/g,Pm=/\//g,xm=/=/g,km=/\?/g,Kc=/\+/g,Om=/%5B/g,Mm=/%5D/g,Wc=/%5E/g,Im=/%60/g,zc=/%7B/g,Lm=/%7C/g,qc=/%7D/g,Dm=/%20/g;function Vo(e){return e==null?"":encodeURI(""+e).replace(Lm,"|").replace(Om,"[").replace(Mm,"]")}function Hm(e){return Vo(e).replace(zc,"{").replace(qc,"}").replace(Wc,"^")}function co(e){return Vo(e).replace(Kc,"%2B").replace(Dm,"+").replace(Vc,"%23").replace(Am,"%26").replace(Im,"`").replace(zc,"{").replace(qc,"}").replace(Wc,"^")}function $m(e){return co(e).replace(xm,"%3D")}function Nm(e){return Vo(e).replace(Vc,"%23").replace(km,"%3F")}function jm(e){return Nm(e).replace(Pm,"%2F")}function Kr(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Fm=/\/$/,Bm=e=>e.replace(Fm,"");function ks(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return l=a>=0&&l>a?-1:l,l>=0&&(r=t.slice(0,l),o=t.slice(l,a>0?a:t.length),s=e(o.slice(1))),a>=0&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Wm(r??t,n),{fullPath:r+o+i,path:r,query:s,hash:Kr(i)}}function Um(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function ra(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Vm(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&On(t.matched[r],n.matched[s])&&Gc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function On(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Gc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Km(e[n],t[n]))return!1;return!0}function Km(e,t){return st(e)?sa(e,t):st(t)?sa(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function sa(e,t){return st(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Wm(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}const ze={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};function zm(e){if(!e)if(pn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Bm(e)}const qm=/^[^#]+#/;function Gm(e,t){return e.replace(qm,"#")+t}function Jm(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const us=()=>({left:window.scrollX,top:window.scrollY});function Ym(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Jm(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function oa(e,t){return(history.state?history.state.position-t:-1)+e}const uo=new Map;function Xm(e,t){uo.set(e,t)}function Qm(e){const t=uo.get(e);return uo.delete(e),t}function Zm(e){return typeof e=="string"||e&&typeof e=="object"}function Jc(e){return typeof e=="string"||typeof e=="symbol"}function eg(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;rs&&co(s)):[r&&co(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function tg(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=st(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}function Un(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function $t(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const f=h=>{h===!1?l(kn(4,{from:n,to:t})):h instanceof Error?l(h):Zm(h)?l(kn(2,{from:t,to:h})):(i&&r.enterCallbacks[s]===i&&typeof h=="function"&&i.push(h),a())},c=o(()=>e.call(r&&r.instances[s],t,n,f));let u=Promise.resolve(c);e.length<3&&(u=u.then(f)),u.catch(h=>l(h))})}function Os(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Fc(l)){const f=(l.__vccOpts||l)[t];f&&o.push($t(f,n,r,i,a,s))}else{let f=l();o.push(()=>f.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const u=Em(c)?c.default:c;i.mods[a]=c,i.components[a]=u;const h=(u.__vccOpts||u)[t];return h&&$t(h,n,r,i,a,s)()}))}}return o}function ng(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iOn(f,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(f=>On(f,l))||s.push(l))}return[n,r,s]}let rg=()=>location.protocol+"//"+location.host;function Yc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let i=s.includes(e.slice(o))?e.slice(o).length:1,a=s.slice(i);return a[0]!=="/"&&(a="/"+a),ra(a,"")}return ra(n,e)+r+s}function sg(e,t,n,r){let s=[],o=[],i=null;const a=({state:h})=>{const d=Yc(e,location),g=n.value,y=t.value;let C=0;if(h){if(n.value=d,t.value=h,i&&i===g){i=null;return}C=y?h.position-y.position:0}else r(d);s.forEach(E=>{E(n.value,g,{delta:C,type:"pop",direction:C?C>0?"forward":"back":""})})};function l(){i=n.value}function f(h){s.push(h);const d=()=>{const g=s.indexOf(h);g>-1&&s.splice(g,1)};return o.push(d),d}function c(){if(document.visibilityState==="hidden"){const{history:h}=window;if(!h.state)return;h.replaceState(ie({},h.state,{scroll:us()}),"")}}function u(){for(const h of o)h();o=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",c),document.removeEventListener("visibilitychange",c)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",c),document.addEventListener("visibilitychange",c),{pauseListeners:l,listen:f,destroy:u}}function aa(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?us():null}}function og(e){const{history:t,location:n}=window,r={value:Yc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,f,c){const u=e.indexOf("#"),h=u>-1?(n.host&&document.querySelector("base")?e:e.slice(u))+l:rg()+e+l;try{t[c?"replaceState":"pushState"](f,"",h),s.value=f}catch(d){console.error(d),n[c?"replace":"assign"](h)}}function i(l,f){o(l,ie({},t.state,aa(s.value.back,l,s.value.forward,!0),f,{position:s.value.position}),!0),r.value=l}function a(l,f){const c=ie({},s.value,t.state,{forward:l,scroll:us()});o(c.current,c,!0),o(l,ie({},aa(r.value,l,null),{position:c.position+1},f),!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function ig(e){e=zm(e);const t=og(e),n=sg(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=ie({location:"",base:e,go:r,createHref:Gm.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}const ag={type:0,value:""},lg=/[a-zA-Z0-9_]/;function cg(e){if(!e)return[[]];if(e==="/")return[[ag]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(d){throw new Error(`ERR (${n})/"${f}": ${d}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,f="",c="";function u(){f&&(n===0?o.push({type:0,value:f}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:f,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),f="")}function h(){f+=l}for(;at.length?t.length===1&&t[0]===80?1:-1:0}function Xc(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const pg={strict:!1,end:!0,sensitive:!1};function mg(e,t,n){const r=dg(cg(e.path),n),s=ie(r,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function gg(e,t){const n=[],r=new Map;t=ta(pg,t);function s(u){return r.get(u)}function o(u,h,d){const g=!d,y=fa(u);y.aliasOf=d&&d.record;const C=ta(t,u),E=[y];if("alias"in u){const _=typeof u.alias=="string"?[u.alias]:u.alias;for(const w of _)E.push(fa(ie({},y,{components:d?d.record.components:y.components,path:w,aliasOf:d?d.record:y})))}let v,p;for(const _ of E){const{path:w}=_;if(h&&w[0]!=="/"){const k=h.record.path,P=k[k.length-1]==="/"?"":"/";_.path=h.record.path+(w&&P+w)}if(v=mg(_,h,C),d?d.alias.push(v):(p=p||v,p!==v&&p.alias.push(v),g&&u.name&&!da(v)&&i(u.name)),Qc(v)&&l(v),y.children){const k=y.children;for(let P=0;P{i(p)}:er}function i(u){if(Jc(u)){const h=r.get(u);h&&(r.delete(u),n.splice(n.indexOf(h),1),h.children.forEach(i),h.alias.forEach(i))}else{const h=n.indexOf(u);h>-1&&(n.splice(h,1),u.record.name&&r.delete(u.record.name),u.children.forEach(i),u.alias.forEach(i))}}function a(){return n}function l(u){const h=bg(u,n);n.splice(h,0,u),u.record.name&&!da(u)&&r.set(u.record.name,u)}function f(u,h){let d,g={},y,C;if("name"in u&&u.name){if(d=r.get(u.name),!d)throw kn(1,{location:u});C=d.record.name,g=ie(ua(h.params,d.keys.filter(p=>!p.optional).concat(d.parent?d.parent.keys.filter(p=>p.optional):[]).map(p=>p.name)),u.params&&ua(u.params,d.keys.map(p=>p.name))),y=d.stringify(g)}else if(u.path!=null)y=u.path,d=n.find(p=>p.re.test(y)),d&&(g=d.parse(y),C=d.record.name,d.keys.forEach(p=>{p.optional&&!g[p.name]&&delete g[p.name]}));else{if(d=h.name?r.get(h.name):n.find(p=>p.re.test(h.path)),!d)throw kn(1,{location:u,currentLocation:h});C=d.record.name,g=ie({},h.params,u.params),y=d.stringify(g)}const E=[];let v=d;for(;v;)E.unshift(v.record),v=v.parent;return{name:C,path:y,params:g,matched:E,meta:_g(E)}}e.forEach(u=>o(u));function c(){n.length=0,r.clear()}return{addRoute:o,resolve:f,removeRoute:i,clearRoutes:c,getRoutes:a,getRecordMatcher:s}}function ua(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function fa(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:yg(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function yg(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function da(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function _g(e){return e.reduce((t,n)=>ie(t,n.meta),{})}function bg(e,t){let n=0,r=t.length;for(;n!==r;){const o=n+r>>1;Xc(e,t[o])<0?r=o:n=o+1}const s=vg(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function vg(e){let t=e;for(;t=t.parent;)if(Qc(t)&&Xc(e,t)===0)return t}function Qc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ha(e){const t=Ce(Bo),n=Ce(Uo),r=Re(()=>{const l=le(e.to);return t.resolve(l)}),s=Re(()=>{const{matched:l}=r.value,{length:f}=l,c=l[f-1],u=n.matched;if(!c||!u.length)return-1;const h=u.findIndex(On.bind(null,c));if(h>-1)return h;const d=pa(l[f-2]);return f>1&&pa(c)===d&&u[u.length-1].path!==d?u.findIndex(On.bind(null,l[f-2])):h}),o=Re(()=>s.value>-1&&Tg(n.params,r.value.params)),i=Re(()=>s.value>-1&&s.value===n.matched.length-1&&Gc(n.params,r.value.params));function a(l={}){if(Sg(l)){const f=t[le(e.replace)?"replace":"push"](le(e.to)).catch(er);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>f),f}return Promise.resolve()}return{route:r,href:Re(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}function wg(e){return e.length===1?e[0]:e}const Eg=Wt({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:ha,setup(e,{slots:t}){const n=ot(ha(e)),{options:r}=Ce(Bo),s=Re(()=>({[ma(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[ma(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&wg(t.default(n));return e.custom?o:Oe("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}});function Sg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Tg(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!st(s)||s.length!==r.length||r.some((o,i)=>o.valueOf()!==s[i].valueOf()))return!1}return!0}function pa(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ma=(e,t,n)=>e??t??n,Rg=Wt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Ce(lo),s=Re(()=>e.route||r.value),o=Ce(na,0),i=Re(()=>{let f=le(o);const{matched:c}=s.value;let u;for(;(u=c[f])&&!u.components;)f++;return f}),a=Re(()=>s.value.matched[i.value]);jt(na,Re(()=>i.value+1)),jt(Sm,a),jt(lo,s);const l=nt();return Rt(()=>[l.value,a.value,e.name],([f,c,u],[h,d,g])=>{c&&(c.instances[u]=f,d&&d!==c&&f&&f===h&&(c.leaveGuards.size||(c.leaveGuards=d.leaveGuards),c.updateGuards.size||(c.updateGuards=d.updateGuards))),f&&c&&(!d||!On(c,d)||!h)&&(c.enterCallbacks[u]||[]).forEach(y=>y(f))},{flush:"post"}),()=>{const f=s.value,c=e.name,u=a.value,h=u&&u.components[c];if(!h)return ga(n.default,{Component:h,route:f});const d=u.props[c],g=d?d===!0?f.params:typeof d=="function"?d(f):d:null,C=Oe(h,ie({},g,t,{onVnodeUnmounted:E=>{E.component.isUnmounted&&(u.instances[c]=null)},ref:l}));return ga(n.default,{Component:C,route:f})||C}}});function ga(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Zc=Rg;function Cg(e){const t=gg(e.routes,e),n=e.parseQuery||eg,r=e.stringifyQuery||ia,s=e.history,o=Un(),i=Un(),a=Un(),l=Ut(ze);let f=ze;pn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=xs.bind(null,x=>""+x),u=xs.bind(null,jm),h=xs.bind(null,Kr);function d(x,K){let B,J;return Jc(x)?(B=t.getRecordMatcher(x),J=K):J=x,t.addRoute(J,B)}function g(x){const K=t.getRecordMatcher(x);K&&t.removeRoute(K)}function y(){return t.getRoutes().map(x=>x.record)}function C(x){return!!t.getRecordMatcher(x)}function E(x,K){if(K=ie({},K||l.value),typeof x=="string"){const b=ks(n,x,K.path),S=t.resolve({path:b.path},K),M=s.createHref(b.fullPath);return ie(b,S,{params:h(S.params),redirectedFrom:void 0,href:M})}let B;if(x.path!=null)B=ie({},x,{path:ks(n,x.path,K.path).path});else{const b=ie({},x.params);for(const S in b)b[S]==null&&delete b[S];B=ie({},x,{params:u(b)}),K.params=u(K.params)}const J=t.resolve(B,K),ee=x.hash||"";J.params=c(h(J.params));const ge=Um(r,ie({},x,{hash:Hm(ee),path:J.path})),m=s.createHref(ge);return ie({fullPath:ge,hash:ee,query:r===ia?tg(x.query):x.query||{}},J,{redirectedFrom:void 0,href:m})}function v(x){return typeof x=="string"?ks(n,x,l.value.path):ie({},x)}function p(x,K){if(f!==x)return kn(8,{from:K,to:x})}function _(x){return P(x)}function w(x){return _(ie(v(x),{replace:!0}))}function k(x,K){const B=x.matched[x.matched.length-1];if(B&&B.redirect){const{redirect:J}=B;let ee=typeof J=="function"?J(x,K):J;return typeof ee=="string"&&(ee=ee.includes("?")||ee.includes("#")?ee=v(ee):{path:ee},ee.params={}),ie({query:x.query,hash:x.hash,params:ee.path!=null?{}:x.params},ee)}}function P(x,K){const B=f=E(x),J=l.value,ee=x.state,ge=x.force,m=x.replace===!0,b=k(B,J);if(b)return P(ie(v(b),{state:typeof b=="object"?ie({},ee,b.state):ee,force:ge,replace:m}),K||B);const S=B;S.redirectedFrom=K;let M;return!ge&&Vm(r,J,B)&&(M=kn(16,{to:S,from:J}),it(J,J,!0,!1)),(M?Promise.resolve(M):T(S,J)).catch(A=>bt(A)?bt(A,2)?A:Mt(A):V(A,S,J)).then(A=>{if(A){if(bt(A,2))return P(ie({replace:m},v(A.to),{state:typeof A.to=="object"?ie({},ee,A.to.state):ee,force:ge}),K||S)}else A=L(S,J,!0,m,ee);return $(S,J,A),A})}function D(x,K){const B=p(x,K);return B?Promise.reject(B):Promise.resolve()}function R(x){const K=cn.values().next().value;return K&&typeof K.runWithContext=="function"?K.runWithContext(x):x()}function T(x,K){let B;const[J,ee,ge]=ng(x,K);B=Os(J.reverse(),"beforeRouteLeave",x,K);for(const b of J)b.leaveGuards.forEach(S=>{B.push($t(S,x,K))});const m=D.bind(null,x,K);return B.push(m),Ke(B).then(()=>{B=[];for(const b of o.list())B.push($t(b,x,K));return B.push(m),Ke(B)}).then(()=>{B=Os(ee,"beforeRouteUpdate",x,K);for(const b of ee)b.updateGuards.forEach(S=>{B.push($t(S,x,K))});return B.push(m),Ke(B)}).then(()=>{B=[];for(const b of ge)if(b.beforeEnter)if(st(b.beforeEnter))for(const S of b.beforeEnter)B.push($t(S,x,K));else B.push($t(b.beforeEnter,x,K));return B.push(m),Ke(B)}).then(()=>(x.matched.forEach(b=>b.enterCallbacks={}),B=Os(ge,"beforeRouteEnter",x,K,R),B.push(m),Ke(B))).then(()=>{B=[];for(const b of i.list())B.push($t(b,x,K));return B.push(m),Ke(B)}).catch(b=>bt(b,8)?b:Promise.reject(b))}function $(x,K,B){a.list().forEach(J=>R(()=>J(x,K,B)))}function L(x,K,B,J,ee){const ge=p(x,K);if(ge)return ge;const m=K===ze,b=pn?history.state:{};B&&(J||m?s.replace(x.fullPath,ie({scroll:m&&b&&b.scroll},ee)):s.push(x.fullPath,ee)),l.value=x,it(x,K,B,m),Mt()}let W;function Z(){W||(W=s.listen((x,K,B)=>{if(!zt.listening)return;const J=E(x),ee=k(J,zt.currentRoute.value);if(ee){P(ie(ee,{replace:!0,force:!0}),J).catch(er);return}f=J;const ge=l.value;pn&&Xm(oa(ge.fullPath,B.delta),us()),T(J,ge).catch(m=>bt(m,12)?m:bt(m,2)?(P(ie(v(m.to),{force:!0}),J).then(b=>{bt(b,20)&&!B.delta&&B.type==="pop"&&s.go(-1,!1)}).catch(er),Promise.reject()):(B.delta&&s.go(-B.delta,!1),V(m,J,ge))).then(m=>{m=m||L(J,ge,!1),m&&(B.delta&&!bt(m,8)?s.go(-B.delta,!1):B.type==="pop"&&bt(m,20)&&s.go(-1,!1)),$(J,ge,m)}).catch(er)}))}let te=Un(),F=Un(),z;function V(x,K,B){Mt(x);const J=F.list();return J.length?J.forEach(ee=>ee(x,K,B)):console.error(x),Promise.reject(x)}function ce(){return z&&l.value!==ze?Promise.resolve():new Promise((x,K)=>{te.add([x,K])})}function Mt(x){return z||(z=!x,Z(),te.list().forEach(([K,B])=>x?B(x):K()),te.reset()),x}function it(x,K,B,J){const{scrollBehavior:ee}=e;if(!pn||!ee)return Promise.resolve();const ge=!B&&Qm(oa(x.fullPath,0))||(J||!B)&&history.state&&history.state.scroll||null;return xt().then(()=>ee(x,K,ge)).then(m=>m&&Ym(m)).catch(m=>V(m,x,K))}const De=x=>s.go(x);let ln;const cn=new Set,zt={currentRoute:l,listening:!0,addRoute:d,removeRoute:g,clearRoutes:t.clearRoutes,hasRoute:C,getRoutes:y,resolve:E,options:e,push:_,replace:w,go:De,back:()=>De(-1),forward:()=>De(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:F.add,isReady:ce,install(x){x.component("RouterLink",Eg),x.component("RouterView",Zc),x.config.globalProperties.$router=zt,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>le(l)}),pn&&!ln&&l.value===ze&&(ln=!0,_(s.location).catch(J=>{}));const K={};for(const J in ze)Object.defineProperty(K,J,{get:()=>l.value[J],enumerable:!0});x.provide(Bo,zt),x.provide(Uo,Ze(K)),x.provide(lo,l);const B=x.unmount;cn.add(x),x.unmount=function(){cn.delete(x),cn.size<1&&(f=ze,W&&W(),W=null,l.value=ze,ln=!1,z=!1),B()}}};function Ke(x){return x.reduce((K,B)=>K.then(()=>R(B)),Promise.resolve())}return zt}const Ag=/(:\w+)\([^)]+\)/g,Pg=/(:\w+)[?+*]/g,xg=/:\w+/g,kg=(e,t)=>t.path.replace(Ag,"$1").replace(Pg,"$1").replace(xg,n=>e.params[n.slice(1)]?.toString()||""),fo=(e,t)=>{const n=e.route.matched.find(s=>s.components?.default===e.Component.type),r=t??n?.meta.key??(n&&kg(e.route,n));return typeof r=="function"?r(e.route):r},Og=(e,t)=>({default:()=>e?Oe(gf,e===!0?{}:e,t):t});function eu(e){return Array.isArray(e)?e:[e]}const Mg="modulepreload",Ig=function(e,t){return new URL(e,t).href},ya={},oe=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){let f=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const i=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),l=a?.nonce||a?.getAttribute("nonce");s=f(n.map(c=>{if(c=Ig(c,r),c in ya)return;ya[c]=!0;const u=c.endsWith(".css"),h=u?'[rel="stylesheet"]':"";if(r)for(let g=i.length-1;g>=0;g--){const y=i[g];if(y.href===c&&(!u||y.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${h}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":Mg,u||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),u)return new Promise((g,y)=>{d.addEventListener("load",g),d.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return s.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})},Lg={title:"应用详情"},Dg={title:"后台账号"},Hg={title:"Agent 配置"},$g={title:"应用环境配置"},Ng={title:"应用中心"},jg={title:"通话翻译规则"},Fg={title:"渠道分发"},Bg={title:"公码管理"},Ug={title:"数据概览"},Vg={title:"渠道商管理"},Kg={title:"生产管理"},Wg={title:"环境节点"},zg={title:"品牌商管理"},qg={title:"全局环境配置"},Gg={title:"MCP配置"},Jg={title:"会议记录服务"},Yg={title:"会议模板"},Xg={title:"产品管理"},Qg={title:"方案商管理"},Zg={title:"第三方服务配置"},ey={title:"月结算"},ty={title:"统计日志"},ny={title:"服务巡检"},ry={title:"系统配置"},sy={title:"用户查询"},oy={layout:"auth"},Ms=[{name:"apps-name",path:"/apps/:name()",meta:Lg||{},component:()=>oe(()=>import("./0CGOegeu.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url)},{name:"accounts",path:"/accounts",meta:Dg||{},component:()=>oe(()=>import("./BNW9rRgN.js"),__vite__mapDeps([5,1,2,3,6]),import.meta.url)},{name:"agents",path:"/agents",meta:Hg||{},component:()=>oe(()=>import("./C8kc9IUa.js"),__vite__mapDeps([7,1,2,8,9,10,11]),import.meta.url)},{name:"appconfig",path:"/appconfig",meta:$g||{},component:()=>oe(()=>import("./Dehik56a.js"),__vite__mapDeps([12,1,2,3]),import.meta.url)},{name:"apps",path:"/apps",meta:Ng||{},component:()=>oe(()=>import("./CEFq2Pq9.js"),__vite__mapDeps([13,1,2,3,14]),import.meta.url)},{name:"calltranslate",path:"/calltranslate",meta:jg||{},component:()=>oe(()=>import("./DlMn1R4f.js"),__vite__mapDeps([15,1,2,8,9,10,16]),import.meta.url)},{name:"channels",path:"/channels",meta:Fg||{},component:()=>oe(()=>import("./DC2vBYza.js"),__vite__mapDeps([17,1,2,18]),import.meta.url)},{name:"code",path:"/code",meta:Bg||{},component:()=>oe(()=>import("./DZfr_EfO.js"),__vite__mapDeps([19,1,2]),import.meta.url)},{name:"dashboard",path:"/dashboard",meta:Ug||{},component:()=>oe(()=>import("./32XpWsQL.js"),__vite__mapDeps([20,21,1,22,3,23]),import.meta.url)},{name:"dealers",path:"/dealers",meta:Vg||{},component:()=>oe(()=>import("./DQ6zmqs4.js"),__vite__mapDeps([24,25,2,1]),import.meta.url)},{name:"device",path:"/device",meta:Kg||{},component:()=>oe(()=>import("./DRVBzPRY.js"),__vite__mapDeps([26,1,2]),import.meta.url)},{name:"environments",path:"/environments",meta:Wg||{},component:()=>oe(()=>import("./BSXoR6Yx.js"),__vite__mapDeps([27,1,2]),import.meta.url)},{name:"factory",path:"/factory",meta:zg||{},component:()=>oe(()=>import("./AeilnnXP.js"),__vite__mapDeps([28,25,2,1]),import.meta.url)},{name:"globalconfig",path:"/globalconfig",meta:qg||{},component:()=>oe(()=>import("./CasIUDzx.js"),__vite__mapDeps([29,1,2]),import.meta.url)},{name:"mcpconfig",path:"/mcpconfig",meta:Gg||{},component:()=>oe(()=>import("./_yKEhqk3.js"),[],import.meta.url)},{name:"meetingsvc",path:"/meetingsvc",meta:Jg||{},component:()=>oe(()=>import("./BZR1IKC1.js"),__vite__mapDeps([30,1,2,8,31]),import.meta.url)},{name:"meettemplates",path:"/meettemplates",meta:Yg||{},component:()=>oe(()=>import("./q-Oqovwl.js"),__vite__mapDeps([32,1,2,8,33]),import.meta.url)},{name:"product",path:"/product",meta:Xg||{},component:()=>oe(()=>import("./DTVoyhwb.js"),__vite__mapDeps([34,1,2]),import.meta.url)},{name:"provider",path:"/provider",meta:Qg||{},component:()=>oe(()=>import("./CPoAe5lL.js"),__vite__mapDeps([35,1,2]),import.meta.url)},{name:"serviceconfig",path:"/serviceconfig",meta:Zg||{},component:()=>oe(()=>import("./VxS1tujf.js"),__vite__mapDeps([36,9,8,10,1,2,37]),import.meta.url)},{name:"settlements",path:"/settlements",meta:ey||{},component:()=>oe(()=>import("./CS9TbzfM.js"),__vite__mapDeps([38,1,2]),import.meta.url)},{name:"statlog",path:"/statlog",meta:ty||{},component:()=>oe(()=>import("./CAhwHUW5.js"),__vite__mapDeps([39,1,2,40]),import.meta.url)},{name:"svcinspect",path:"/svcinspect",meta:ny||{},component:()=>oe(()=>import("./B-G7qD0T.js"),__vite__mapDeps([41,1,2,22,42]),import.meta.url)},{name:"systemconfig",path:"/systemconfig",meta:ry||{},component:()=>oe(()=>import("./BqBJfKQo.js"),__vite__mapDeps([43,2,1,44]),import.meta.url)},{name:"users",path:"/users",meta:sy||{},component:()=>oe(()=>import("./DT3lD2sm.js"),__vite__mapDeps([45,1,2,3]),import.meta.url)},{name:"index",path:"/",meta:oy||{},component:()=>oe(()=>import("./DDe4k6KN.js"),__vite__mapDeps([46,47]),import.meta.url)}],tu=(e,t)=>({default:()=>e?Oe(gd,e===!0?{}:e,t):t.default?.()}),iy=/(:\w+)\([^)]+\)/g,ay=/(:\w+)[?+*]/g,ly=/:\w+/g;function _a(e){const t=e?.meta.key??e.path.replace(iy,"$1").replace(ay,"$1").replace(ly,n=>e.params[n.slice(1)]?.toString()||"");return typeof t=="function"?t(e):t}function cy(e,t){return e===t||t===ze?!1:_a(e)!==_a(t)?!0:!e.matched.every((r,s)=>r.components&&r.components.default===t.matched[s]?.components?.default)}function ba(e){return Array.isArray(e)?e:[e]}function nu(e){const t=[];for(const n of e)n&&t.push({...n,onAfterLeave:n.onAfterLeave?ba(n.onAfterLeave):void 0,onBeforeLeave:n.onBeforeLeave?ba(n.onBeforeLeave):void 0});return Ec(...t)}const uy={scrollBehavior(e,t,n){const r=ve(),s=Ve().options?.scrollBehaviorType??"auto";return e.path.replace(/\/$/,"")===t.path.replace(/\/$/,"")?t.hash&&!e.hash?{left:0,top:0}:e.hash?{el:e.hash,top:ru(e.hash),behavior:s}:!1:(typeof e.meta.scrollToTop=="function"?e.meta.scrollToTop(e,t):e.meta.scrollToTop)===!1?!1:t===ze?va(e,t,n,s):new Promise(i=>{const a=()=>{requestAnimationFrame(()=>i(va(e,t,n,s)))};r.hooks.hookOnce("page:loading:end",()=>{const l=r["~transitionPromise"];l?l.then(a):a()})})}};function ru(e){try{const t=document.querySelector(e);if(t)return(Number.parseFloat(getComputedStyle(t).scrollMarginTop)||0)+(Number.parseFloat(getComputedStyle(document.documentElement).scrollPaddingTop)||0)}catch{}return 0}function va(e,t,n,r){return n||(e.hash?{el:e.hash,top:ru(e.hash),behavior:cy(e,t)?r:"instant"}:{left:0,top:0})}const fy={hashMode:!1,scrollBehaviorType:"auto"},Lt={...fy,...uy},dy=async(e,t)=>{let n,r;if(!e.meta?.validate)return;const s=([n,r]=Qn(()=>Promise.resolve(e.meta.validate(e))),n=await n,r(),n);if(s===!0)return;const o=Ft({fatal:!0,status:s&&(s.status||s.statusCode)||404,statusText:s&&(s.statusText||s.statusMessage)||`Page Not Found: ${e.fullPath}`,data:{path:e.fullPath}});return typeof window<"u"&&window.history.pushState({},"",t.fullPath),o},fs=[{label:"数据概览",items:[{id:"dashboard",label:"仪表盘",to:"/dashboard",icon:"M9 17v-2m3 2v-4m3 4v-6m2 10H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},{id:"svcinspect",label:"服务巡检",to:"/svcinspect",icon:"M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z"}]},{label:"生产管理",items:[{id:"provider",label:"方案商管理",to:"/provider",icon:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},{id:"factory",label:"品牌商管理",to:"/factory",icon:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},{id:"channel",label:"渠道商管理",to:"/dealers",icon:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"},{id:"product",label:"产品管理",to:"/product",icon:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},{id:"code",label:"公码管理",to:"/code",icon:"M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6zm10 2h2m-2 4h6m-4-4v4m4-8h2m-2 0v4"},{id:"device",label:"生产管理",to:"/device",icon:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"}]},{label:"结算管理",items:[{id:"settlement",label:"月结算",to:"/settlements",icon:"M9 7h6m-6 4h6m-6 4h4M5 3h14a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2z"}]},{label:"用户管理",items:[{id:"user",label:"用户查询",to:"/users",icon:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"}]},{label:"服务配置",items:[{id:"globalconfig",label:"全局环境配置",to:"/globalconfig",icon:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"},{id:"appconfig",label:"应用环境配置",to:"/appconfig",icon:"M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4"},{id:"meettemplate",label:"会议模板",to:"/meettemplates",icon:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},{id:"svcconfig",label:"第三方服务配置",to:"/serviceconfig",icon:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z M15 12a3 3 0 11-6 0 3 3 0 016 0z"},{id:"agents",label:"Agent 配置",to:"/agents",icon:"M12 3a2 2 0 012 2v1h3a2 2 0 012 2v3a2 2 0 01-2 2h-1v3a2 2 0 01-2 2H8a2 2 0 01-2-2v-3H5a2 2 0 01-2-2V8a2 2 0 012-2h3V5a2 2 0 012-2zM9 13h.01M15 13h.01"},{id:"meetingsvc",label:"会议记录服务",to:"/meetingsvc",icon:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"},{id:"calltranslate",label:"通话翻译配置",to:"/calltranslate",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129"}]},{label:"SaaS 管理",restricted:!0,items:[{id:"apps",label:"应用中心",to:"/apps",icon:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"},{id:"environments",label:"环境节点",to:"/environments",icon:"M5 3h14a2 2 0 012 2v4a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2zM5 13h14a2 2 0 012 2v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4a2 2 0 012-2zM7 7h.01M7 17h.01"},{id:"channels",label:"渠道分发",to:"/channels",icon:"M12 3v12m0 0l-4-4m4 4l4-4M4 17v2a2 2 0 002 2h12a2 2 0 002-2v-2"}]},{label:"系统管理",restricted:!0,items:[{id:"systemconfig",label:"系统配置",to:"/systemconfig",icon:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4"},{id:"statlog",label:"统计日志",to:"/statlog",icon:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"},{id:"admin",label:"后台账号",to:"/accounts",icon:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"}]}],R_=fs.flatMap(e=>e.items.map(t=>t.id)),hy=fs.filter(e=>!e.restricted).flatMap(e=>e.items.map(t=>t.id)),py=["dashboard","channel","user","settlement"],my=["dashboard","user","settlement"],gy={3:py,5:my};function yy(e){let t=null;for(const n of fs)for(const r of n.items)(e===r.to||e.startsWith(r.to+"/"))&&(!t||r.to.length>t.to.length)&&(t=r);return t}const _y={1:"超管",2:"管理员",3:"品牌商",4:"运营",5:"渠道商"},wa=1,Ea=2,by=3,vy=5,Ko="auth_state";function Sr(e){return e?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function Is(e){localStorage.setItem(Ko,JSON.stringify(e))}function wy(){try{const e=localStorage.getItem(Ko);return e?JSON.parse(e):null}catch{return null}}const su=Tp("auth",{state:()=>({token:"",account:"",identity:0,access:[],apps:[],regions:[],products:[],brandid:0,channelid:"",appbinds:[],currentAppId:0,siteTitle:""}),getters:{isSuperAdmin(){return this.identity===1},isAdmin(){return this.identity===wa||this.identity===Ea},isBrandAccount(){return this.identity===by&&this.brandid>0},isDealer(){return this.identity===vy},identityLabel(){return _y[this.identity]??""},isLoggedIn(){return!!this.token}},actions:{setLoginData(e){this.token=e.token,this.account=e.account,this.identity=e.identity,this.access=Sr(e.access),this.apps=Sr(e.apps),this.regions=Sr(e.regions),this.products=Sr(e.products),this.brandid=e.brandid??0,this.channelid=e.channelid??"",this.appbinds=e.appbinds??[],this.appbinds.length>0&&!this.currentAppId&&(this.currentAppId=this.appbinds[0].id),Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,brandid:this.brandid,channelid:this.channelid,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},setCurrentApp(e){this.currentAppId=e,Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,brandid:this.brandid,channelid:this.channelid,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},setSiteTitle(e){this.siteTitle=e,Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,brandid:this.brandid,channelid:this.channelid,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},logout(){this.token="",this.account="",this.identity=0,this.access=[],this.apps=[],this.regions=[],this.products=[],this.brandid=0,this.channelid="",this.appbinds=[],this.currentAppId=0,this.siteTitle="",localStorage.removeItem(Ko)},restore(){const e=wy();e&&(this.token=e.token??"",this.account=e.account??"",this.identity=e.identity??0,this.access=e.access??[],this.apps=e.apps??[],this.regions=e.regions??[],this.products=e.products??[],this.brandid=e.brandid??0,this.channelid=e.channelid??"",this.appbinds=e.appbinds??[],this.currentAppId=e.currentAppId??0,this.siteTitle=e.siteTitle??"")},hasAccess(e){if(this.identity===wa)return!0;if(this.identity===Ea&&this.access.length===0)return hy.includes(e);const t=gy[this.identity];if(t){if(!t.includes(e))return!1;if(this.access.length===0)return!0}return this.access.includes(e)}}}),Ey=e=>{const t=su();if(!t.token)return;const n=yy(e.path);if(!(!n||t.hasAccess(n.id))){for(const r of fs)for(const s of r.items)if(t.hasAccess(s.id))return zi(s.to);return zi("/")}},Sy=e=>{const t=Nc({path:e.path});if(t.redirect){const n=t.redirect.includes("#")?t.redirect:t.redirect+e.hash;return Dn(n,{acceptRelative:!0})?(window.location.href=n,!1):n}},Ty=[dy,Ey,Sy],ho={};function Ry(e,t,n){const{pathname:r,search:s,hash:o}=t,i=e.indexOf("#");if(i>-1){const f=o.includes(e.slice(i))?e.slice(i).length:1;let c=o.slice(f);return c[0]!=="/"&&(c="/"+c),Di(c,"")}const a=Di(r,e),l=!n||hc(a,n)?a:n;return l+(l.includes("?")?"":s)+o}const Cy=Xe({name:"nuxt:router",enforce:"pre",async setup(e){let t,n,r=No().app.baseURL;const s=Lt.history?.(r)??ig(r),o=Lt.routes?([t,n]=Qn(()=>Lt.routes(Ms)),t=await t,n(),t??Ms):Ms;let i;const a=Cg({...Lt,scrollBehavior:(E,v,p)=>{if(v===ze){i=p;return}if(Lt.scrollBehavior){if(a.options.scrollBehavior=Lt.scrollBehavior,"scrollRestoration"in window.history){const _=a.beforeEach(()=>{_(),window.history.scrollRestoration="manual"})}return Lt.scrollBehavior(E,ze,i||p)}},history:s,routes:o});"scrollRestoration"in window.history&&(window.history.scrollRestoration="auto"),e.vueApp.use(a);const l=Ut(a.currentRoute.value);a.afterEach((E,v)=>{l.value=v}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>l.value});const f=Ry(r,window.location,e.payload.path),c=Ut(a.currentRoute.value),u=()=>{c.value=a.currentRoute.value};a.afterEach((E,v)=>{const p=E.matched.at(-1)?.components?.default,_=v.matched.at(-1)?.components?.default;if(p===_){u();return}E.matched.lengthw.components?.default===v.matched[k]?.components?.default)&&u()});const h={sync:u};for(const E in c.value)Object.defineProperty(h,E,{get:()=>c.value[E],enumerable:!0});e._route=Ze(h),e._middleware||={global:[],named:{}};const d=cs();a.afterEach(async(E,v,p)=>{delete e._processingMiddleware,!e.isHydrating&&d.value&&await e.runWithContext(yp),p&&await e.callHook("page:loading:end")});try{[t,n]=Qn(()=>a.isReady()),await t,n()}catch(E){[t,n]=Qn(()=>e.runWithContext(()=>Zt(E))),await t,n()}const g=f!==a.currentRoute.value.fullPath?a.resolve(f):a.currentRoute.value,y=e.isHydrating&&e.payload.prerenderedAt&&e.payload.path&&f!==e.payload.path&&hc(a.currentRoute.value.path,e.payload.path);u();const C=e.payload.state._layout;return a.beforeEach(async(E,v)=>{await e.callHook("page:loading:start"),E.meta=ot(E.meta),e.isHydrating&&C&&!gt(E.meta.layout)&&(E.meta.layout=C),e._processingMiddleware=!0;{const p=new Set([...Ty,...e._middleware.global]);for(const w of E.matched){const k=w.meta.middleware;if(k)for(const P of eu(k))p.add(P)}const _=Nc({path:E.path});if(_.appMiddleware)for(const w in _.appMiddleware)_.appMiddleware[w]?p.add(w):p.delete(w);for(const w of p){const k=typeof w=="string"?e._middleware.named[w]||await ho[w]?.().then(P=>P.default||P):w;if(!k)throw new Error(`Unknown route middleware: '${w}'.`);try{const P=await e.runWithContext(()=>k(E,v));if(!e.payload.serverRendered&&e.isHydrating&&(P===!1||P instanceof Error)){const D=P||Ft({status:404,statusText:`Page Not Found: ${f}`});return await e.runWithContext(()=>Zt(D)),!1}if(P===!0)continue;if(P===!1)return P;if(P)return Cc(P)&&P.fatal&&await e.runWithContext(()=>Zt(P)),P}catch(P){const D=Ft(P);return D.fatal&&await e.runWithContext(()=>Zt(D)),D}}}}),a.onError(async()=>{delete e._processingMiddleware,await e.callHook("page:loading:end")}),a.afterEach(E=>{if(E.matched.length===0&&!d.value)return e.runWithContext(()=>Zt(Ft({status:404,fatal:!1,statusText:`Page not found: ${E.fullPath}`,data:{path:E.fullPath}})))}),e.hooks.hookOnce("app:created",async()=>{try{if("name"in g&&(g.name=void 0),y){const E=a.resolve(e.payload.path);"name"in E&&(E.name=void 0),await a.replace({...E,force:!0}),e.hooks.hookOnce("app:suspense:resolve",async()=>{await a.replace({...g,force:!0})})}else await a.replace({...g,force:!0});a.options.scrollBehavior=Lt.scrollBehavior}catch(E){await e.runWithContext(()=>Zt(E))}}),{provide:{router:a}}}}),Sa=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),C_=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),Wo=e=>{const t=ve();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{Sa(()=>e())}):Sa(()=>e())},Ay=Xe({name:"nuxt:payload",setup(e){const t=new Set;Ve().beforeResolve(async(n,r)=>{if(n.path===r.path)return;const s=await Zi(n.path);if(s){for(const o of t)delete e.static.data[o];for(const o in s.data)o in e.static.data||t.add(o),e.static.data[o]=s.data[o]}}),Wo(()=>{e.hooks.hook("link:prefetch",async n=>{const{hostname:r}=new URL(n,window.location.href);r===window.location.hostname&&await Zi().catch(()=>{console.warn("[nuxt] Error preloading payload for",n)})}),navigator.connection?.effectiveType!=="slow-2g"&&setTimeout($c,1e3)})}}),Py=Xe(()=>{const e=Ve();Wo(()=>{e.beforeResolve(async()=>{await new Promise(t=>{setTimeout(t,100),requestAnimationFrame(()=>{setTimeout(t,0)})})})})}),xy=Xe(e=>{let t;async function n(){let r;try{r=await $c()}catch(s){const o=s;if(!("status"in o&&(o.status===404||o.status===403)))throw o}t&&clearTimeout(t),t=setTimeout(n,Vi);try{const s=await $fetch($o("builds/latest.json")+`?${Date.now()}`);s.id!==r?.id&&(e.hooks.callHook("app:manifest:update",s),t&&clearTimeout(t))}catch{}}Wo(()=>{t=setTimeout(n,Vi)})});function ky(e={}){const t=e.path||window.location.pathname,n=new URL(t,window.location.href);if(n.host!==window.location.host)throw new Error(`Cannot navigate to a URL with a different host: '${t}'.`);if(n.protocol&&Xs(n.protocol))throw new Error(`Cannot navigate to a URL with '${n.protocol}' protocol.`);let r={};try{r=JSON.parse(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||r?.path!==t||r?.expires{r.clear()}),e.hook("app:chunkError",({error:o})=>{r.add(o)});function s(o){const i=fc(n.app.baseURL,o.fullPath);ky({path:i,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(s)}),t.onError((o,i)=>{r.has(o)&&s(i)})}});function My(e){return typeof e=="string"?`'${e}'`:new Iy().serialize(e)}const Iy=(function(){class e{#e=new Map;compare(n,r){const s=typeof n,o=typeof r;return s==="string"&&o==="string"?n.localeCompare(r):s==="number"&&o==="number"?n-r:String.prototype.localeCompare.call(this.serialize(n,!0),this.serialize(r,!0))}serialize(n,r){if(n===null)return"null";switch(typeof n){case"string":return r?n:`'${n}'`;case"bigint":return`${n}n`;case"object":return this.$object(n);case"function":return this.$function(n)}return String(n)}serializeObject(n){const r=Object.prototype.toString.call(n);if(r!=="[object Object]")return this.serializeBuiltInType(r.length<10?`unknown:${r}`:r.slice(8,-1),n);const s=n.constructor,o=s===Object||s===void 0?"":s.name;if(o!==""&&globalThis[o]===s)return this.serializeBuiltInType(o,n);if(typeof n.toJSON=="function"){const i=n.toJSON();return o+(i!==null&&typeof i=="object"?this.$object(i):`(${this.serialize(i)})`)}return this.serializeObjectEntries(o,Object.entries(n))}serializeBuiltInType(n,r){const s=this["$"+n];if(s)return s.call(this,r);if(typeof r?.entries=="function")return this.serializeObjectEntries(n,r.entries());throw new Error(`Cannot serialize ${n}`)}serializeObjectEntries(n,r){const s=Array.from(r).sort((i,a)=>this.compare(i[0],a[0]));let o=`${n}{`;for(let i=0;ithis.compare(r,s)))}`}$Map(n){return this.serializeObjectEntries("Map",n.entries())}}for(const t of["Error","RegExp","URL"])e.prototype["$"+t]=function(n){return`${t}(${n})`};for(const t of["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array"])e.prototype["$"+t]=function(n){return`${t}[${n.join(",")}]`};for(const t of["BigInt64Array","BigUint64Array"])e.prototype["$"+t]=function(n){return`${t}[${n.join("n,")}${n.length>0?"n":""}]`};return e})(),Ly=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Dy=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],Hy="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",Xt=[];class $y{_data=new yn;_hash=new yn([...Ly]);_nDataBytes=0;_minBufferSize=0;finalize(t){t&&this._append(t);const n=this._nDataBytes*8,r=this._data.sigBytes*8;return this._data.words[r>>>5]|=128<<24-r%32,this._data.words[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),this._data.words[(r+64>>>9<<4)+15]=n,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(t,n){const r=this._hash.words;let s=r[0],o=r[1],i=r[2],a=r[3],l=r[4],f=r[5],c=r[6],u=r[7];for(let h=0;h<64;h++){if(h<16)Xt[h]=t[n+h]|0;else{const p=Xt[h-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,w=Xt[h-2],k=(w<<15|w>>>17)^(w<<13|w>>>19)^w>>>10;Xt[h]=_+Xt[h-7]+k+Xt[h-16]}const d=l&f^~l&c,g=s&o^s&i^o&i,y=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),C=(l<<26|l>>>6)^(l<<21|l>>>11)^(l<<7|l>>>25),E=u+C+d+Dy[h]+Xt[h],v=y+g;u=c,c=f,f=l,l=a+E|0,a=i,i=o,o=s,s=E+v|0}r[0]=r[0]+s|0,r[1]=r[1]+o|0,r[2]=r[2]+i|0,r[3]=r[3]+a|0,r[4]=r[4]+l|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+u|0}_append(t){typeof t=="string"&&(t=yn.fromUtf8(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_process(t){let n,r=this._data.sigBytes/64;t?r=Math.ceil(r):r=Math.max((r|0)-this._minBufferSize,0);const s=r*16,o=Math.min(s*4,this._data.sigBytes);if(s){for(let i=0;i>>2]|=(n.charCodeAt(o)&255)<<24-o%4*8;return new yn(s,r)}toBase64(){const t=[];for(let n=0;n>>2]>>>24-n%4*8&255,s=this.words[n+1>>>2]>>>24-(n+1)%4*8&255,o=this.words[n+2>>>2]>>>24-(n+2)%4*8&255,i=r<<16|s<<8|o;for(let a=0;a<4&&n*8+a*6>>6*(3-a)&63))}return t.join("")}concat(t){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let n=0;n>>2]>>>24-n%4*8&255;this.words[this.sigBytes+n>>>2]|=r<<24-(this.sigBytes+n)%4*8}else for(let n=0;n>>2]=t.words[n>>>2];this.sigBytes+=t.sigBytes}}function Ny(e){return new $y().finalize(e).toBase64()}function mn(e){return Ny(My(e))}const jy=Symbol.for("nuxt:client-only");function ou(e){return Object.defineProperty(function(){throw new Error(`[nuxt] \`${e.name}\` is a compiler macro and cannot be called at runtime.`)},"__nuxt_factory",{enumerable:!1,get:()=>e.factory})}const iu=ou({name:"createUseAsyncData",factory(e={}){function t(...n){const r=typeof n[n.length-1]=="string"?n.pop():void 0;By(n[0],n[1])&&n.unshift(r);let[s,o,i={}]=n,a=!1;const l=me(s)||typeof s=="function",f=l?Re(()=>ft(s)):{value:s};if(!f.value||typeof f.value!="string")throw new TypeError("[nuxt] [useAsyncData] key must be a non-empty string.");if(typeof o!="function")throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");const c=typeof e=="function",u=ve(),h=c?e(i):e;if(!c)for(const p in h)h[p]!==void 0&&i[p]===void 0&&(i[p]=h[p]);if(i.server??=!0,i.default??=Vy,i.getCachedData??=lu,i.lazy??=!1,i.immediate??=!0,i.deep??=Qh.deep,i.dedupe??="cancel",c)for(const p in h)h[p]!==void 0&&(i[p]=h[p]);u._asyncData[f.value];function d(){const p={cause:"initial",dedupe:i.dedupe},_=u._asyncData[f.value];return _?._init?u._asyncDataPromises[f.value]&&(p.cachedData=_._initialCachedData):(p.cachedData=i.getCachedData(f.value,u,{cause:"initial"}),u._asyncData[f.value]=Ta(u,f.value,o,i,p.cachedData),u._asyncData[f.value]._initialCachedData=p.cachedData),()=>u._asyncData[f.value].execute(p)}const g=d(),y=u._asyncData[f.value];y._deps++;const C=i.server!==!1&&u.payload.serverRendered;{let p=function(T){const $=u._asyncData[T];$?._deps&&($._deps--,$._deps===0&&$?._off())};const _=an();if(_&&C&&i.immediate&&!_.sp&&(_.sp=[]),_&&!_._nuxtOnBeforeMountCbs){_._nuxtOnBeforeMountCbs=[];const T=_._nuxtOnBeforeMountCbs;gl(()=>{T.forEach($=>{$()}),T.splice(0,T.length)}),ss(()=>T.splice(0,T.length))}const w=_&&(_._nuxtClientOnly||Ce(jy,!1));C&&u.isHydrating&&(y.error.value||y.data.value!==void 0)?y.status.value=y.error.value?"error":"success":_&&(!w&&u.payload.serverRendered&&u.isHydrating||i.lazy)&&i.immediate?_._nuxtOnBeforeMountCbs.push(g):i.immediate&&y.status.value!=="success"&&g();const k=Zr(),P=()=>{},D=l?Rt(f,(T,$)=>{if((T||$)&&T!==$){a=!0;const L=u._asyncData[$]?.data.value!==void 0,W=u._asyncDataPromises[$]!==void 0,Z={cause:"initial",dedupe:i.dedupe};if(!u._asyncData[T]?._init){let F;$&&L?F=u._asyncData[$].data.value:(F=i.getCachedData(T,u,{cause:"initial"}),Z.cachedData=F),u._asyncData[T]=Ta(u,T,o,i,F)}u._asyncData[T]._deps++,$&&p($),i._keyTriggersExecute!==!1&&(i.immediate||L||W)&&u._asyncData[T].execute(Z),rr(()=>{a=!1})}},{flush:"sync"}):P,R=i.watch?Rt(i.watch,()=>{a||(u._asyncData[f.value]?._execute.isPending()&&rr(()=>{u._asyncData[f.value]?._execute.flush()}),u._asyncData[f.value]?._execute({cause:"watch",dedupe:i.dedupe}))}):P;k&&$a(()=>{D(),R(),p(f.value)})}const E={data:Tr(()=>u._asyncData[f.value]?.data),pending:Tr(()=>u._asyncData[f.value]?.pending),status:Tr(()=>u._asyncData[f.value]?.status),error:Tr(()=>u._asyncData[f.value]?.error),refresh:(...p)=>u._asyncData[f.value]?._init?u._asyncData[f.value].execute(...p):d()(),execute:(...p)=>E.refresh(...p),clear:()=>{const p=u._asyncData[f.value];if(p?._abortController)try{p._abortController.abort(new DOMException("AsyncData aborted by user.","AbortError"))}finally{p._abortController=void 0}au(u,f.value)}},v=Promise.resolve(u._asyncDataPromises[f.value]).then(()=>E);return Object.assign(v,E),Object.defineProperties(v,{then:{enumerable:!0,value:v.then.bind(v)},catch:{enumerable:!0,value:v.catch.bind(v)},finally:{enumerable:!0,value:v.finally.bind(v)}}),v}return t}}),Fy=iu.__nuxt_factory();iu.__nuxt_factory({lazy:!0,_functionName:"useLazyAsyncData"});function Tr(e){return Re({get(){return e()?.value},set(t){const n=e();n&&(n.value=t)}})}function By(e,t){return!(typeof e=="string"||typeof e=="object"&&e!==null||typeof e=="function"&&typeof t=="function")}function au(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=void 0),e._asyncData[t]&&(e._asyncData[t].data.value=le(e._asyncData[t]._default()),e._asyncData[t].error.value=void 0,e._asyncData[t].status.value="idle",e._asyncData[t]._initialCachedData=void 0),t in e._asyncDataPromises&&(e._asyncDataPromises[t]=void 0)}function Uy(e,t){const n={};for(const r of t)n[r]=e[r];return n}function Ta(e,t,n,r,s){e.payload._errors[t]??=void 0;const o=r.getCachedData!==lu,i=n,a=r.deep?nt:Ut,l=s!==void 0,f=e.hook("app:data:refresh",async u=>{(!u||u.includes(t))&&await c.execute({cause:"refresh:hook"})}),c={data:a(l?s:r.default()),pending:Re(()=>c.status.value==="pending"),error:el(e.payload._errors,t),status:Ut("idle"),execute:(...u)=>{const[h,d=void 0]=u,g=h&&d===void 0&&typeof h=="object"?h:{};if(e._asyncDataPromises[t]&&(g.dedupe??r.dedupe)==="defer")return e._asyncDataPromises[t];{const E="cachedData"in g?g.cachedData:r.getCachedData(t,e,{cause:g.cause??"refresh:manual"});if(E!==void 0)return e.payload.data[t]=c.data.value=E,c.error.value=void 0,c.status.value="success",Promise.resolve(E)}c._abortController&&c._abortController.abort(new DOMException("AsyncData request cancelled by deduplication","AbortError")),c._abortController=new AbortController,c.status.value="pending";const y=new AbortController,C=new Promise((E,v)=>{try{const p=g.timeout??r.timeout,_=Ky([c._abortController?.signal,g?.signal],y.signal,p);if(_.aborted){const w=_.reason;v(w instanceof Error?w:new DOMException(String(w??"Aborted"),"AbortError"));return}return _.addEventListener("abort",()=>{const w=_.reason;v(w instanceof Error?w:new DOMException(String(w??"Aborted"),"AbortError"))},{once:!0,signal:y.signal}),Promise.resolve(i(e,{signal:_})).then(E,v)}catch(p){v(p)}}).then(async E=>{if(e._asyncDataPromises[t]!==C)return;let v=E;r.transform&&(v=await r.transform(E)),r.pick&&(v=Uy(v,r.pick)),e.payload.data[t]=v,c.data.value=v,c.error.value=void 0,c.status.value="success"}).catch(E=>{if(e._asyncDataPromises[t]!==C||c._abortController?.signal.aborted)return e._asyncDataPromises[t];if(typeof DOMException<"u"&&E instanceof DOMException&&E.name==="AbortError")return c.status.value="idle",e._asyncDataPromises[t];c.error.value=Ft(E),c.data.value=le(r.default()),c.status.value="error"}).finally(()=>{y.abort(),e._asyncDataPromises[t]===C&&delete e._asyncDataPromises[t]});return e._asyncDataPromises[t]=C,e._asyncDataPromises[t]},_execute:Rm((...u)=>c.execute(...u),0,{leading:!0}),_default:r.default,_deps:0,_init:!0,_hash:void 0,_off:()=>{f(),e._asyncData[t]?._init&&(e._asyncData[t]._init=!1),o||xt(()=>{e._asyncData[t]?._init||(au(e,t),c.execute=()=>Promise.resolve())})}};return c}const Vy=()=>{},lu=(e,t,n)=>{if(t.isHydrating)return t.payload.data[e];if(n.cause!=="refresh:manual"&&n.cause!=="refresh:hook")return t.static.data[e]};function Ky(e,t,n){const r=e.filter(i=>!!i);if(typeof n=="number"&&n>=0){const i=AbortSignal.timeout?.(n);i&&r.push(i)}if(AbortSignal.any)return AbortSignal.any(r);const s=new AbortController;for(const i of r)if(i.aborted){const a=i.reason??new DOMException("Aborted","AbortError");try{s.abort(a)}catch{s.abort()}return s.signal}const o=()=>{const a=r.find(l=>l.aborted)?.reason??new DOMException("Aborted","AbortError");try{s.abort(a)}catch{s.abort()}};for(const i of r)i.addEventListener?.("abort",o,{once:!0,signal:t});return s.signal}function Wy(e){const t=[ft(e.method)?.toUpperCase()||"GET",ft(e.baseURL)];for(const n of[e.query||e.params]){const r=ft(n);if(!r)continue;const s={};for(const[o,i]of Object.entries(r))s[ft(o)]=ft(i);t.push(s)}if(e.body){const n=ft(e.body);if(!n)t.push(mn(n));else if(n instanceof ArrayBuffer)t.push(mn(Object.fromEntries([...new Uint8Array(n).entries()].map(([r,s])=>[r,s.toString()]))));else if(n instanceof FormData){const r=[];for(const s of n.entries()){const[o,i]=s;r.push([o,i instanceof File?`${i.name}:${i.size}:${i.lastModified}`:i])}t.push(mn(r))}else if(go(n))t.push(mn(ot(n)));else try{t.push(mn(n))}catch{console.warn("[useFetch] Failed to hash body",n)}}return t}const cu=ou({name:"createUseFetch",factory(e={}){function t(n,r,s){const[o={},i]=typeof r=="string"?[{},r]:[r,s],a=typeof e=="function"?e(o):e,{server:l,lazy:f,default:c,transform:u,pick:h,watch:d,immediate:g,getCachedData:y,deep:C,dedupe:E,timeout:v,...p}={...typeof e=="function"?{}:a,...o,...typeof e=="function"?a:{}},_=Re(()=>ft(n)),w=Re(()=>ft(p.key)||"$f"+mn([i,typeof _.value=="string"?_.value:"",...Wy(p)]));if(!p.baseURL&&typeof _.value=="string"&&_.value[0]==="/"&&_.value[1]==="/")throw new Error('[nuxt] [useFetch] the request URL must not start with "//".');const k=ot({...Zh,...p,cache:typeof p.cache=="boolean"?void 0:p.cache}),P={server:l,lazy:f,default:c,transform:u,pick:h,immediate:g,getCachedData:y,deep:C,dedupe:E,timeout:v,watch:d===!1?[]:[...d||[],k]};return d===!1&&(P._keyTriggersExecute=!1),Fy(w,(R,{signal:T})=>(p.$fetch||globalThis.$fetch)(_.value,{signal:T,...k}),P)}return t}});cu.__nuxt_factory();cu.__nuxt_factory({lazy:!0,_functionName:"useLazyFetch"});function zy(e){if(e?.__asyncLoader&&!e.__asyncResolved)return e.__asyncLoader()}async function qy(e,t=Ve()){const{path:n,matched:r}=t.resolve(e);if(!r.length||(t._routePreloaded||=new Set,t._routePreloaded.has(n)))return;const s=t._preloadPromises||=[];if(s.length>4)return Promise.all(s).then(()=>qy(e,t));t._routePreloaded.add(n);for(const o of r){const i=o.components?.default;if(typeof i!="function")continue;const a=Promise.resolve(i()).catch(()=>{}).finally(()=>s.splice(s.indexOf(a),1));s.push(a)}await Promise.all(s)}const Gy=Xe({name:"pinia",setup(e){const t=_p();return e.vueApp.use(t),xn(t),e.payload&&e.payload.pinia&&(t.state.value=e.payload.pinia),{provide:{pinia:t}}},hooks:{"app:rendered"(){const e=ve();e.payload.pinia=ne(e.$pinia).state.value,xn(void 0)}}}),Jy=Xe({name:"nuxt:global-components"}),Nt={auth:Ir(()=>oe(()=>import("./BIYq6SKh.js"),[],import.meta.url).then(e=>e.default||e)),default:Ir(()=>oe(()=>import("./BCmMvQNl.js"),__vite__mapDeps([48,21,2,1,49]),import.meta.url).then(e=>e.default||e))},Yy=Xe({name:"nuxt:prefetch",setup(e){const t=Ve();e.hooks.hook("app:mounted",()=>{t.beforeEach(async n=>{const r=n?.meta?.layout;r&&typeof Nt[r]=="function"&&await Nt[r]()})}),e.hooks.hook("link:prefetch",n=>{if(Dn(n))return;const r=t.resolve(n);if(!r)return;const s=r.meta.layout;let o=eu(r.meta.middleware);o=o.filter(i=>typeof i=="string");for(const i of o)typeof ho[i]=="function"&&ho[i]();typeof s=="string"&&s in Nt&&zy(Nt[s])})}}),Xy=Xe(()=>{su().restore()}),Qy=[pm,gm,wm,Cy,Ay,Py,xy,Oy,Gy,Jy,Yy,Xy],uu=(e="RouteProvider")=>Wt({name:e,props:{route:{type:Object,required:!0},vnode:Object,vnodeRef:Object,renderKey:String,trackRootNodes:Boolean},setup(t){const n=t.renderKey,r=t.route,s={};for(const o in t.route)Object.defineProperty(s,o,{get:()=>n===t.renderKey?t.route[o]:r[o],enumerable:!0});return jt(on,Ze(s)),()=>t.vnode?Oe(t.vnode,{ref:t.vnodeRef}):t.vnode}}),Zy=uu(),Ra=new WeakMap,e_=Wt({name:"NuxtPage",inheritAttrs:!1,props:{name:{type:String},transition:{type:[Boolean,Object],default:void 0},keepalive:{type:[Boolean,Object],default:void 0},route:{type:Object},pageKey:{type:[Function,String],default:null}},setup(e,{attrs:t,slots:n,expose:r}){const s=ve(),o=nt(),i=Ce(on,null);let a;r({pageRef:o});const l=Ce(Tc,null);let f;const c=s.deferHydration();let u=!1,h=!1,d=0;if(s.isHydrating){const y=s.hooks.hookOnce("app:error",c),C=Ve().beforeEach(()=>{y(),C()})}e.pageKey&&Rt(()=>e.pageKey,(y,C)=>{y!==C&&s.callHook("page:loading:start")});let g=!1;{const y=Ve().beforeResolve(()=>{g=!1});fr(()=>{y(),c()})}return()=>Oe(Zc,{name:e.name,route:e.route,...t},{default:y=>{const C=t_(i,y.route,y.Component),E=i&&i.matched.length===y.route.matched.length;if(!y.Component){if(f&&!E&&!Ls(f))return f;c();return}if(f&&l&&!Ls(f)&&!l.isCurrent(y.route))return f;if(C&&i&&(!l||l?.isCurrent(i)))return(E||f)&&!Ls(f)?f:null;const v=fo(y,e.pageKey),p=n_(i,y.route,y.Component);!s.isHydrating&&a===v&&!p&&xt(()=>{g||(g=!0,s.callHook("page:loading:end"))}),u&&a!==v&&h&&d++,a=v;const _=!!(e.transition??y.route.meta.pageTransition??Bi),w=_&&nu([e.transition,y.route.meta.pageTransition,Bi,{onAfterLeave(){s["~transitionFinish"]?.(),delete s["~transitionFinish"],delete s["~transitionPromise"],s.callHook("page:transition:finish",y.Component)}}]),k=e.keepalive??y.route.meta.keepalive??Xh;return f=tu(_&&w,Og(k,Oe(Io,{key:d,suspensible:!0,onPending:()=>{u=!0,_&&!s["~transitionPromise"]&&(s["~transitionPromise"]=new Promise(P=>{s["~transitionFinish"]=P})),s.callHook("page:start",y.Component)},onResolve:async()=>{u=!1,h=!0;try{await xt(),s._route.sync?.(),await s.callHook("page:finish",y.Component),!g&&!p&&(g=!0,await s.callHook("page:loading:end"))}finally{c()}}},{default:()=>{const P={key:v||void 0,vnode:n.default?r_(n.default,y):y.Component,route:y.route,renderKey:v||void 0,trackRootNodes:_,vnodeRef:o};if(!k)return Oe(Zy,P);const D=y.Component.type,R=D;let T=Ra.get(R);return T||(T=uu(D.name||D.__name),Ra.set(R,T)),Oe(T,P)}}))).default(),f}})}});function t_(e,t,n){if(!e)return!1;const r=t.matched.findIndex(i=>i.components?.default===n?.type);if(r===-1)return!1;const s=t.matched.slice(0,r).filter(i=>i.components?.default);if(!s.length)return!1;const o=e.matched.filter(i=>i.components?.default);return s.some((i,a)=>i.components?.default!==o[a]?.components?.default)||n&&fo({route:t,Component:n})!==fo({route:e,Component:n})}function n_(e,t,n){return e?t.matched.findIndex(s=>s.components?.default===n?.type)Oe(Nt[e.name],e.layoutProps,t.slots)}}),o_={name:{type:[String,Boolean,Object],default:null},fallback:{type:[String,Object],default:null}},i_=Wt({name:"NuxtLayout",inheritAttrs:!1,props:o_,setup(e,t){const n=ve(),r=Ce(on),o=!r||r===jo()?Uc():r,i=Re(()=>{let c=le(e.name)??o?.meta.layout??fu(o?.path).appLayout??"default";return c&&!(c in Nt)&&e.fallback&&(c=le(e.fallback)),c}),a=Ut();t.expose({layoutRef:a});const l=n.deferHydration();if(n.isHydrating){const c=n.hooks.hookOnce("app:error",l),u=Ve().beforeEach(()=>{c(),u()})}let f;return()=>{const u=!!i.value&&i.value in Nt&&!!(o?.meta.layoutTransition??Fi),h=u&&nu([o?.meta.layoutTransition,Fi,{onBeforeLeave(){n["~transitionPromise"]=new Promise(g=>{n["~transitionFinish"]=g})},onAfterLeave(){n["~transitionFinish"]?.(),delete n["~transitionFinish"],delete n["~transitionPromise"]}}]),d=f;return f=i.value,tu(h,{default:()=>Oe(Io,{suspensible:!0,onResolve:async()=>{await xt(l)}},{default:()=>Oe(a_,{layoutProps:Jl(t.attrs,o.meta.layoutProps??{},{ref:a}),key:i.value||void 0,name:i.value,shouldProvide:!e.name,isRenderingNewLayout:g=>g!==d&&g===i.value,hasTransition:u},t.slots)})}).default()}}}),a_=Wt({name:"NuxtLayoutProvider",inheritAttrs:!1,props:{name:{type:[String,Boolean]},layoutProps:{type:Object},hasTransition:{type:Boolean},shouldProvide:{type:Boolean},isRenderingNewLayout:{type:Function,required:!0}},setup(e,t){const n=e.name;e.shouldProvide&&jt(Tc,{isCurrent:o=>n===!1||n===(o.meta.layout??fu(o.path).appLayout??"default")});const r=Ce(on);if(r&&r===jo()){const o=Uc(),i={};for(const a in o){const l=a;Object.defineProperty(i,l,{enumerable:!0,get:()=>e.isRenderingNewLayout(e.name)?o[l]:r[l]})}jt(on,Ze(i))}return()=>!n||typeof n=="string"&&!(n in Nt)?t.slots.default?.():Oe(s_,{key:n,layoutProps:e.layoutProps,name:n},t.slots)}}),l_=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},c_={};function u_(e,t){const n=e_,r=i_;return Ge(),ht(r,null,{default:Ao(()=>[ye(n)]),_:1})}const f_=l_(c_,[["render",u_]]),d_={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error,r=Number(n.statusCode||500),s=r===404,o=n.statusMessage??(s?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),a=void 0,c=s?Ir(()=>oe(()=>import("./oWVa2rll.js"),__vite__mapDeps([50,21,51,52]),import.meta.url)):Ir(()=>oe(()=>import("./CkLfApYf.js"),__vite__mapDeps([53,51,54]),import.meta.url));return(u,h)=>(Ge(),ht(le(c),wu(ql({status:le(r),statusText:le(o),statusCode:le(r),statusMessage:le(o),description:le(i),stack:le(a)})),null,16))}},h_={key:0},Ca={__name:"nuxt-root",setup(e){const t=()=>null,n=ve(),r=n.deferHydration();if(n.isHydrating){const c=n.hooks.hookOnce("app:error",r),u=Ve().beforeEach(()=>{c(),u()})}const s=!1;jt(on,jo()),n.hooks.callHookWith(c=>c.map(u=>u()),"vue:setup",[]);const o=cs(),i=!1,a=/bot\b|chrome-lighthouse|facebookexternalhit|google\b/i;function l(c,u,h){const d=n.vueApp.config.errorHandler;if(d&&!d.__nuxt_default)try{d(c,u,h)}catch(g){console.error("[nuxt] Error in `app.config.errorHandler`",g)}}_l((c,u,h)=>{if(n.hooks.callHook("vue:error",c,u,h)?.catch(d=>console.error("[nuxt] Error in `vue:error` hook",d)),a.test(navigator.userAgent))return n.hooks.callHook("app:error",c),console.error(`[nuxt] Not rendering error page for bot with user agent \`${navigator.userAgent}\`:`,c),!1;if(Cc(c)&&(c.fatal||c.unhandled))return n.runWithContext(()=>Zt(c)),l(c,u,h),!1});const f=!1;return(c,u)=>(Ge(),ht(Io,{onResolve:le(r)},{default:Ao(()=>[le(i)?(Ge(),Zf("div",h_)):le(o)?(Ge(),ht(le(d_),{key:1,error:le(o)},null,8,["error"])):le(f)?(Ge(),ht(le(t),{key:2,context:le(f)},null,8,["context"])):le(s)?(Ge(),ht(Ef(le(s)),{key:3})):(Ge(),ht(le(f_),{key:4}))]),_:1},8,["onResolve"]))}};let Aa;{let e;Aa=async function(){if(e)return e;const n=!!(window.__NUXT__?.serverRendered??document.getElementById("__NUXT_DATA__")?.dataset.ssr==="true"),r=n?qd(Ca):zd(Ca),s=rp({vueApp:r});async function o(i){await s.callHook("app:error",i),s.payload.error||=Ft(i)}o.__nuxt_default=!0,r.config.errorHandler=o,s.hook("app:suspense:resolve",()=>{r.config.errorHandler===o&&(r.config.errorHandler=void 0)}),!n&&Ui.id&&s.hook("app:suspense:resolve",()=>{document.getElementById(Ui.id)?.remove()});try{await ip(s,Qy)}catch(i){o(i)}try{await s.hooks.callHook("app:created",r),await s.hooks.callHook("app:beforeMount",r),r.mount(ep),await s.hooks.callHook("app:mounted",r),await xt()}catch(i){o(i)}return r},e=Aa().catch(t=>{throw console.error("Error while mounting app:",t),t})}export{gp as $,Re as A,xt as B,ko as C,v_ as D,jo as E,ke as F,Rt as G,b_ as H,ht as I,hy as J,R_ as K,Xr as L,fs as M,__ as N,E_ as O,zi as P,fr as Q,gy as R,y_ as S,gd as T,Wo as U,Sa as V,C_ as W,Oe as X,m_ as Y,lc as Z,l_ as _,zl as a,Ut as a0,mp as a1,qy as a2,fc as a3,Dn as a4,Xs as a5,No as a6,wh as a7,Fr as a8,S_ as a9,el as aa,me as ab,ye as b,Zf as c,Gl as d,ve as e,Dc as f,Wt as g,ns as h,Ce as i,su as j,Ve as k,td as l,le as m,Qr as n,Ge as o,w_ as p,p_ as q,g_ as r,jd as s,Ru as t,T_ as u,Oi as v,Ao as w,$d as x,nt as y,ot as z}; diff --git a/apps/admin/.output/public/_nuxt/Bp86Q8ON.js b/apps/admin/.output/public/_nuxt/AeilnnXP.js similarity index 98% rename from apps/admin/.output/public/_nuxt/Bp86Q8ON.js rename to apps/admin/.output/public/_nuxt/AeilnnXP.js index 122e6885..535c02de 100644 --- a/apps/admin/.output/public/_nuxt/Bp86Q8ON.js +++ b/apps/admin/.output/public/_nuxt/AeilnnXP.js @@ -1 +1 @@ -import{_ as J}from"./DVest5s8.js";import{g as Q,j as W,C as X,c as a,q as r,H as R,a as t,l as v,F as y,r as _,t as i,p as S,v as m,s as Y,O as Z,m as tt,x as et,b as st,y as u,z as lt,A as j,o,d as nt}from"./DSy_gLdM.js";import{u as at}from"./NtXZuCUg.js";import{u as ot}from"./EeX3zgoF.js";const rt={class:"flex items-center justify-between mb-5"},it={class:"bg-white rounded-xl shadow-sm border border-slate-100"},dt={class:"overflow-x-auto"},ut={class:"table table-zebra"},ct={key:0},mt={key:1},pt={class:"font-mono text-sm"},bt={class:"font-medium"},vt={class:"badge badge-ghost badge-sm"},ft={class:"text-sm"},xt={class:"text-sm"},ht={key:1,class:"text-slate-300"},gt={class:"text-sm text-slate-500"},wt={class:"flex gap-1"},yt=["onClick"],_t=["onClick"],kt={class:"flex items-center gap-3 mb-5"},Ct={class:"text-lg font-semibold text-slate-800"},Nt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},At={class:"form-control mb-4"},Ut={class:"form-control mb-4"},Vt=["value"],Mt={class:"form-control mb-4"},$t={class:"form-control mb-4"},Bt={class:"form-control mb-6"},Pt={class:"space-y-2"},Lt={key:0,class:"text-xs text-slate-400"},Et={class:"badge badge-lg gap-1 bg-slate-100 border-slate-200"},Rt=["onClick"],St={class:"flex gap-2 mt-2"},jt=["onKeydown"],Dt={key:0,class:"form-control mb-6 border-t border-slate-100 pt-4"},Ft=["placeholder"],Tt={class:"label-text-alt text-slate-400 mt-1"},qt={key:1,class:"form-control mb-6 border-t border-slate-100 pt-4"},zt={class:"flex items-center gap-2 cursor-pointer"},It={key:0,class:"grid grid-cols-2 gap-3 mt-3"},Kt={class:"col-span-2"},Ot={key:0,class:"col-span-2 text-xs text-amber-600"},Ht={class:"flex gap-3"},Gt=["disabled"],Jt="358030594@qq.com",te=Q({__name:"factory",setup(Qt){const{webApi:x}=at(),{success:k,error:C,warn:D}=ot(),F=W(),h=u("list"),g=u([]),w=u([]),N=u(!1),A=u(!1),c=u(!1),d=u([]),f=u(""),s=lt({id:0,brand:"",providerid:0,description:"",sharepct:0,officialChannelName:"",createAccount:!1,accountUsername:"",accountPassword:"",accountRemark:""}),B=j(()=>(s.brand.trim()||"品牌")+"官方渠道"),T=j(()=>d.value.filter(l=>l.toLowerCase()!==Jt)),U=u(null);function q(l){return((Number(l)||0)/100).toFixed(2)+"%"}function z(l){return l?Number(l).toString(16).toUpperCase():""}function V(l){return(l||"").split(",").map(e=>e.trim()).filter(Boolean)}function I(l){if(!l)return"-";const e=w.value.find(p=>p.id===l);return e?e.name:"方案商#"+l}async function K(){try{const l=await x("getsolutionproviders",{});w.value=l?.providers??[]}catch{w.value=[]}}async function M(){N.value=!0;try{await K();const l=await x("getbrands",{});g.value=l?.brands??[]}catch(l){C(l?.message??"获取品牌商列表失败"),g.value=[]}finally{N.value=!1}}function $(){h.value="list",M()}function P(l){l?(c.value=!0,s.id=l.id,s.brand=l.brand||"",s.providerid=l.providerid||0,s.description=l.description||"",s.sharepct=(Number(l.sharerate)||0)/100,d.value=V(l.contactmails)):(c.value=!1,s.id=0,s.brand="",s.providerid=0,s.description="",s.sharepct=0,d.value=[]),s.officialChannelName="",s.createAccount=!1,s.accountUsername="",s.accountPassword="",s.accountRemark="",f.value="",h.value="form"}function L(){const l=f.value.trim();if(l){if(d.value.includes(l)){D("邮箱已存在");return}d.value.push(l),f.value=""}}function O(l){d.value.splice(l,1)}async function H(){A.value=!0;try{const l={brand:{brand:s.brand,providerid:Number(s.providerid)||0,description:s.description,sharerate:Math.round((Number(s.sharepct)||0)*100),contactmails:d.value.join(",")}};c.value?l.brand.id=Number(s.id):(l.official_channel_name=s.officialChannelName.trim(),l.create_account=s.createAccount,s.createAccount&&(l.account_username=s.accountUsername.trim(),l.account_password=s.accountPassword,l.account_remark=s.accountRemark.trim()));const e=await x(c.value?"updatebrand":"addbrand",l);if(c.value)k("保存成功");else{const p=["品牌商已创建"];e?.channel?.id&&p.push(`官方渠道「${e.channel.name}」(${e.channel.id})`),k(p.join(",")),e?.account&&(U.value={title:`品牌账号「${e.account}」已创建`,username:e.account,password:e.account_password??"",mailTo:e.mail_to??"",mailError:e.mail_error??""})}$()}catch(l){C(l?.message??"保存失败")}finally{A.value=!1}}function G(l){window.confirm(`确定删除品牌商 "${l.brand}" 吗?`)&&x("delbrand",{id:l.id}).then(()=>{k("删除成功"),M()}).catch(e=>C(e?.message??"删除失败"))}return X(M),(l,e)=>{const p=J;return o(),a("div",null,[r(t("div",null,[t("div",rt,[e[14]||(e[14]=t("h2",{class:"text-lg font-semibold text-slate-800"},"品牌商列表",-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=n=>P())},"+ 新增品牌商")]),t("div",it,[t("div",dt,[t("table",ut,[e[17]||(e[17]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"品牌名称"),t("th",null,"归属方案商"),t("th",null,"分成比例"),t("th",null,"联系邮箱"),t("th",null,"产品"),t("th",null,"操作")])],-1)),t("tbody",null,[N.value?(o(),a("tr",ct,[...e[15]||(e[15]=[t("td",{colspan:"7",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):g.value.length?v("",!0):(o(),a("tr",mt,[...e[16]||(e[16]=[t("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(o(!0),a(y,null,_(g.value,n=>(o(),a("tr",{key:n.id},[t("td",pt,i(z(n.id)),1),t("td",bt,i(n.brand),1),t("td",null,[t("span",vt,i(I(n.providerid)),1)]),t("td",ft,i(q(n.sharerate)),1),t("td",xt,[V(n.contactmails).length?(o(!0),a(y,{key:0},_(V(n.contactmails),(b,E)=>(o(),a("span",{key:E,class:"badge badge-ghost badge-sm mr-1"},i(b),1))),128)):(o(),a("span",ht,"-"))]),t("td",gt,i(n.productlists||""),1),t("td",null,[t("div",wt,[t("button",{class:"btn btn-ghost btn-xs",onClick:b=>P(n)},"编辑",8,yt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:b=>G(n)},"删除",8,_t)])])]))),128))])])])])],512),[[R,h.value==="list"]]),r(t("div",null,[t("div",kt,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[1]||(e[1]=n=>$())},"← 返回列表"),t("h2",Ct,i(c.value?"编辑品牌商":"新增品牌商"),1)]),t("div",Nt,[t("form",{onSubmit:S(H,["prevent"])},[t("div",At,[e[18]||(e[18]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"品牌名称 *")],-1)),r(t("input",{"onUpdate:modelValue":e[2]||(e[2]=n=>s.brand=n),type:"text",class:"input input-bordered w-full",required:""},null,512),[[m,s.brand]])]),t("div",Ut,[e[20]||(e[20]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"归属方案商")],-1)),r(t("select",{"onUpdate:modelValue":e[3]||(e[3]=n=>s.providerid=n),class:"select select-bordered w-full"},[e[19]||(e[19]=t("option",{value:0},"请选择方案商",-1)),(o(!0),a(y,null,_(w.value,n=>(o(),a("option",{key:n.id,value:n.id},i(n.name),9,Vt))),128))],512),[[Y,s.providerid,void 0,{number:!0}]])]),t("div",Mt,[e[21]||(e[21]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"分成比例(%)")],-1)),r(t("input",{"onUpdate:modelValue":e[4]||(e[4]=n=>s.sharepct=n),type:"number",step:"0.01",min:"0",max:"100",class:"input input-bordered w-full"},null,512),[[m,s.sharepct,void 0,{number:!0}]]),e[22]||(e[22]=t("span",{class:"label-text-alt text-slate-400 mt-1"},"平台从订单实付里分给该品牌商的总提成;其名下渠道商再从这份里切自己的比例。",-1))]),t("div",$t,[e[23]||(e[23]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),r(t("textarea",{"onUpdate:modelValue":e[5]||(e[5]=n=>s.description=n),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[m,s.description]])]),t("div",Bt,[e[25]||(e[25]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),t("div",Pt,[d.value.length?v("",!0):(o(),a("p",Lt,"暂无邮箱")),(o(!0),a(y,null,_(d.value,(n,b)=>(o(),a("div",{key:b,class:"flex items-center gap-2"},[t("span",Et,[e[24]||(e[24]=t("svg",{class:"h-3 w-3 text-slate-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})],-1)),nt(" "+i(n),1)]),t("button",{type:"button",class:"btn btn-ghost btn-xs text-red-400 hover:text-red-600",onClick:E=>O(b)},"×",8,Rt)]))),128))]),t("div",St,[r(t("input",{"onUpdate:modelValue":e[6]||(e[6]=n=>f.value=n),type:"email",class:"input input-bordered input-sm flex-1",placeholder:"输入邮箱地址",onKeydown:Z(S(L,["prevent"]),["enter"])},null,40,jt),[[m,f.value]]),t("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",onClick:L},"添加")])]),c.value?v("",!0):(o(),a("div",Dt,[e[26]||(e[26]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"品牌官方渠道")],-1)),r(t("input",{"onUpdate:modelValue":e[7]||(e[7]=n=>s.officialChannelName=n),type:"text",class:"input input-bordered w-full",placeholder:B.value},null,8,Ft),[[m,s.officialChannelName]]),t("span",Tt," 新建品牌商时自动创建一条该品牌自己的渠道(直接启用、分成 0%、不创建渠道账号),用于品牌直销的授权码归属;留空则叫「"+i(B.value)+"」。 ",1)])),!c.value&&tt(F).isAdmin?(o(),a("div",qt,[t("label",zt,[r(t("input",{"onUpdate:modelValue":e[8]||(e[8]=n=>s.createAccount=n),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[et,s.createAccount]]),e[27]||(e[27]=t("span",{class:"label-text font-medium"},"同时创建品牌账号",-1))]),e[31]||(e[31]=t("span",{class:"label-text-alt text-slate-400 mt-1"}," 建一个绑定本品牌商的「品牌商」角色登录账号,可见本品牌及名下全部渠道商的数据。 用户名/密码留空则自动生成,创建后凭据会邮件发给上面填的品牌商联系邮箱。 ",-1)),s.createAccount?(o(),a("div",It,[t("div",null,[e[28]||(e[28]=t("label",{class:"text-xs text-slate-500"},"登录用户名",-1)),r(t("input",{"onUpdate:modelValue":e[9]||(e[9]=n=>s.accountUsername=n),type:"text",class:"input input-bordered input-sm w-full",placeholder:"留空自动生成,如 Brand-A001",autocomplete:"off"},null,512),[[m,s.accountUsername]])]),t("div",null,[e[29]||(e[29]=t("label",{class:"text-xs text-slate-500"},"登录密码",-1)),r(t("input",{"onUpdate:modelValue":e[10]||(e[10]=n=>s.accountPassword=n),type:"text",class:"input input-bordered input-sm w-full font-mono",placeholder:"留空自动生成 12 位随机密码",autocomplete:"off"},null,512),[[m,s.accountPassword]])]),t("div",Kt,[e[30]||(e[30]=t("label",{class:"text-xs text-slate-500"},"备注",-1)),r(t("input",{"onUpdate:modelValue":e[11]||(e[11]=n=>s.accountRemark=n),type:"text",class:"input input-bordered input-sm w-full",placeholder:"可选"},null,512),[[m,s.accountRemark]])]),T.value.length?v("",!0):(o(),a("p",Ot," 当前没有填品牌商自己的联系邮箱(平台默认邮箱不算),凭据将无法邮件送达,只会在创建后弹窗显示一次。 "))])):v("",!0)])):v("",!0),t("div",Ht,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[12]||(e[12]=n=>$())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:A.value},"保存",8,Gt)])],32)])],512),[[R,h.value==="form"]]),st(p,{info:U.value,onClose:e[13]||(e[13]=n=>U.value=null)},null,8,["info"])])}}});export{te as default}; +import{_ as J}from"./DPKLCcBs.js";import{g as Q,j as W,C as X,c as a,q as r,H as R,a as t,l as v,F as y,r as _,t as i,p as S,v as m,s as Y,O as Z,m as tt,x as et,b as st,y as u,z as lt,A as j,o,d as nt}from"./6O01ZZML.js";import{u as at}from"./BgasD__e.js";import{u as ot}from"./xsgK-Nup.js";const rt={class:"flex items-center justify-between mb-5"},it={class:"bg-white rounded-xl shadow-sm border border-slate-100"},dt={class:"overflow-x-auto"},ut={class:"table table-zebra"},ct={key:0},mt={key:1},pt={class:"font-mono text-sm"},bt={class:"font-medium"},vt={class:"badge badge-ghost badge-sm"},ft={class:"text-sm"},xt={class:"text-sm"},ht={key:1,class:"text-slate-300"},gt={class:"text-sm text-slate-500"},wt={class:"flex gap-1"},yt=["onClick"],_t=["onClick"],kt={class:"flex items-center gap-3 mb-5"},Ct={class:"text-lg font-semibold text-slate-800"},Nt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},At={class:"form-control mb-4"},Ut={class:"form-control mb-4"},Vt=["value"],Mt={class:"form-control mb-4"},$t={class:"form-control mb-4"},Bt={class:"form-control mb-6"},Pt={class:"space-y-2"},Lt={key:0,class:"text-xs text-slate-400"},Et={class:"badge badge-lg gap-1 bg-slate-100 border-slate-200"},Rt=["onClick"],St={class:"flex gap-2 mt-2"},jt=["onKeydown"],Dt={key:0,class:"form-control mb-6 border-t border-slate-100 pt-4"},Ft=["placeholder"],Tt={class:"label-text-alt text-slate-400 mt-1"},qt={key:1,class:"form-control mb-6 border-t border-slate-100 pt-4"},zt={class:"flex items-center gap-2 cursor-pointer"},It={key:0,class:"grid grid-cols-2 gap-3 mt-3"},Kt={class:"col-span-2"},Ot={key:0,class:"col-span-2 text-xs text-amber-600"},Ht={class:"flex gap-3"},Gt=["disabled"],Jt="358030594@qq.com",te=Q({__name:"factory",setup(Qt){const{webApi:x}=at(),{success:k,error:C,warn:D}=ot(),F=W(),h=u("list"),g=u([]),w=u([]),N=u(!1),A=u(!1),c=u(!1),d=u([]),f=u(""),s=lt({id:0,brand:"",providerid:0,description:"",sharepct:0,officialChannelName:"",createAccount:!1,accountUsername:"",accountPassword:"",accountRemark:""}),B=j(()=>(s.brand.trim()||"品牌")+"官方渠道"),T=j(()=>d.value.filter(l=>l.toLowerCase()!==Jt)),U=u(null);function q(l){return((Number(l)||0)/100).toFixed(2)+"%"}function z(l){return l?Number(l).toString(16).toUpperCase():""}function V(l){return(l||"").split(",").map(e=>e.trim()).filter(Boolean)}function I(l){if(!l)return"-";const e=w.value.find(p=>p.id===l);return e?e.name:"方案商#"+l}async function K(){try{const l=await x("getsolutionproviders",{});w.value=l?.providers??[]}catch{w.value=[]}}async function M(){N.value=!0;try{await K();const l=await x("getbrands",{});g.value=l?.brands??[]}catch(l){C(l?.message??"获取品牌商列表失败"),g.value=[]}finally{N.value=!1}}function $(){h.value="list",M()}function P(l){l?(c.value=!0,s.id=l.id,s.brand=l.brand||"",s.providerid=l.providerid||0,s.description=l.description||"",s.sharepct=(Number(l.sharerate)||0)/100,d.value=V(l.contactmails)):(c.value=!1,s.id=0,s.brand="",s.providerid=0,s.description="",s.sharepct=0,d.value=[]),s.officialChannelName="",s.createAccount=!1,s.accountUsername="",s.accountPassword="",s.accountRemark="",f.value="",h.value="form"}function L(){const l=f.value.trim();if(l){if(d.value.includes(l)){D("邮箱已存在");return}d.value.push(l),f.value=""}}function O(l){d.value.splice(l,1)}async function H(){A.value=!0;try{const l={brand:{brand:s.brand,providerid:Number(s.providerid)||0,description:s.description,sharerate:Math.round((Number(s.sharepct)||0)*100),contactmails:d.value.join(",")}};c.value?l.brand.id=Number(s.id):(l.official_channel_name=s.officialChannelName.trim(),l.create_account=s.createAccount,s.createAccount&&(l.account_username=s.accountUsername.trim(),l.account_password=s.accountPassword,l.account_remark=s.accountRemark.trim()));const e=await x(c.value?"updatebrand":"addbrand",l);if(c.value)k("保存成功");else{const p=["品牌商已创建"];e?.channel?.id&&p.push(`官方渠道「${e.channel.name}」(${e.channel.id})`),k(p.join(",")),e?.account&&(U.value={title:`品牌账号「${e.account}」已创建`,username:e.account,password:e.account_password??"",mailTo:e.mail_to??"",mailError:e.mail_error??""})}$()}catch(l){C(l?.message??"保存失败")}finally{A.value=!1}}function G(l){window.confirm(`确定删除品牌商 "${l.brand}" 吗?`)&&x("delbrand",{id:l.id}).then(()=>{k("删除成功"),M()}).catch(e=>C(e?.message??"删除失败"))}return X(M),(l,e)=>{const p=J;return o(),a("div",null,[r(t("div",null,[t("div",rt,[e[14]||(e[14]=t("h2",{class:"text-lg font-semibold text-slate-800"},"品牌商列表",-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=n=>P())},"+ 新增品牌商")]),t("div",it,[t("div",dt,[t("table",ut,[e[17]||(e[17]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"品牌名称"),t("th",null,"归属方案商"),t("th",null,"分成比例"),t("th",null,"联系邮箱"),t("th",null,"产品"),t("th",null,"操作")])],-1)),t("tbody",null,[N.value?(o(),a("tr",ct,[...e[15]||(e[15]=[t("td",{colspan:"7",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):g.value.length?v("",!0):(o(),a("tr",mt,[...e[16]||(e[16]=[t("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(o(!0),a(y,null,_(g.value,n=>(o(),a("tr",{key:n.id},[t("td",pt,i(z(n.id)),1),t("td",bt,i(n.brand),1),t("td",null,[t("span",vt,i(I(n.providerid)),1)]),t("td",ft,i(q(n.sharerate)),1),t("td",xt,[V(n.contactmails).length?(o(!0),a(y,{key:0},_(V(n.contactmails),(b,E)=>(o(),a("span",{key:E,class:"badge badge-ghost badge-sm mr-1"},i(b),1))),128)):(o(),a("span",ht,"-"))]),t("td",gt,i(n.productlists||""),1),t("td",null,[t("div",wt,[t("button",{class:"btn btn-ghost btn-xs",onClick:b=>P(n)},"编辑",8,yt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:b=>G(n)},"删除",8,_t)])])]))),128))])])])])],512),[[R,h.value==="list"]]),r(t("div",null,[t("div",kt,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[1]||(e[1]=n=>$())},"← 返回列表"),t("h2",Ct,i(c.value?"编辑品牌商":"新增品牌商"),1)]),t("div",Nt,[t("form",{onSubmit:S(H,["prevent"])},[t("div",At,[e[18]||(e[18]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"品牌名称 *")],-1)),r(t("input",{"onUpdate:modelValue":e[2]||(e[2]=n=>s.brand=n),type:"text",class:"input input-bordered w-full",required:""},null,512),[[m,s.brand]])]),t("div",Ut,[e[20]||(e[20]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"归属方案商")],-1)),r(t("select",{"onUpdate:modelValue":e[3]||(e[3]=n=>s.providerid=n),class:"select select-bordered w-full"},[e[19]||(e[19]=t("option",{value:0},"请选择方案商",-1)),(o(!0),a(y,null,_(w.value,n=>(o(),a("option",{key:n.id,value:n.id},i(n.name),9,Vt))),128))],512),[[Y,s.providerid,void 0,{number:!0}]])]),t("div",Mt,[e[21]||(e[21]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"分成比例(%)")],-1)),r(t("input",{"onUpdate:modelValue":e[4]||(e[4]=n=>s.sharepct=n),type:"number",step:"0.01",min:"0",max:"100",class:"input input-bordered w-full"},null,512),[[m,s.sharepct,void 0,{number:!0}]]),e[22]||(e[22]=t("span",{class:"label-text-alt text-slate-400 mt-1"},"平台从订单实付里分给该品牌商的总提成;其名下渠道商再从这份里切自己的比例。",-1))]),t("div",$t,[e[23]||(e[23]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),r(t("textarea",{"onUpdate:modelValue":e[5]||(e[5]=n=>s.description=n),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[m,s.description]])]),t("div",Bt,[e[25]||(e[25]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),t("div",Pt,[d.value.length?v("",!0):(o(),a("p",Lt,"暂无邮箱")),(o(!0),a(y,null,_(d.value,(n,b)=>(o(),a("div",{key:b,class:"flex items-center gap-2"},[t("span",Et,[e[24]||(e[24]=t("svg",{class:"h-3 w-3 text-slate-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})],-1)),nt(" "+i(n),1)]),t("button",{type:"button",class:"btn btn-ghost btn-xs text-red-400 hover:text-red-600",onClick:E=>O(b)},"×",8,Rt)]))),128))]),t("div",St,[r(t("input",{"onUpdate:modelValue":e[6]||(e[6]=n=>f.value=n),type:"email",class:"input input-bordered input-sm flex-1",placeholder:"输入邮箱地址",onKeydown:Z(S(L,["prevent"]),["enter"])},null,40,jt),[[m,f.value]]),t("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",onClick:L},"添加")])]),c.value?v("",!0):(o(),a("div",Dt,[e[26]||(e[26]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"品牌官方渠道")],-1)),r(t("input",{"onUpdate:modelValue":e[7]||(e[7]=n=>s.officialChannelName=n),type:"text",class:"input input-bordered w-full",placeholder:B.value},null,8,Ft),[[m,s.officialChannelName]]),t("span",Tt," 新建品牌商时自动创建一条该品牌自己的渠道(直接启用、分成 0%、不创建渠道账号),用于品牌直销的授权码归属;留空则叫「"+i(B.value)+"」。 ",1)])),!c.value&&tt(F).isAdmin?(o(),a("div",qt,[t("label",zt,[r(t("input",{"onUpdate:modelValue":e[8]||(e[8]=n=>s.createAccount=n),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[et,s.createAccount]]),e[27]||(e[27]=t("span",{class:"label-text font-medium"},"同时创建品牌账号",-1))]),e[31]||(e[31]=t("span",{class:"label-text-alt text-slate-400 mt-1"}," 建一个绑定本品牌商的「品牌商」角色登录账号,可见本品牌及名下全部渠道商的数据。 用户名/密码留空则自动生成,创建后凭据会邮件发给上面填的品牌商联系邮箱。 ",-1)),s.createAccount?(o(),a("div",It,[t("div",null,[e[28]||(e[28]=t("label",{class:"text-xs text-slate-500"},"登录用户名",-1)),r(t("input",{"onUpdate:modelValue":e[9]||(e[9]=n=>s.accountUsername=n),type:"text",class:"input input-bordered input-sm w-full",placeholder:"留空自动生成,如 Brand-A001",autocomplete:"off"},null,512),[[m,s.accountUsername]])]),t("div",null,[e[29]||(e[29]=t("label",{class:"text-xs text-slate-500"},"登录密码",-1)),r(t("input",{"onUpdate:modelValue":e[10]||(e[10]=n=>s.accountPassword=n),type:"text",class:"input input-bordered input-sm w-full font-mono",placeholder:"留空自动生成 12 位随机密码",autocomplete:"off"},null,512),[[m,s.accountPassword]])]),t("div",Kt,[e[30]||(e[30]=t("label",{class:"text-xs text-slate-500"},"备注",-1)),r(t("input",{"onUpdate:modelValue":e[11]||(e[11]=n=>s.accountRemark=n),type:"text",class:"input input-bordered input-sm w-full",placeholder:"可选"},null,512),[[m,s.accountRemark]])]),T.value.length?v("",!0):(o(),a("p",Ot," 当前没有填品牌商自己的联系邮箱(平台默认邮箱不算),凭据将无法邮件送达,只会在创建后弹窗显示一次。 "))])):v("",!0)])):v("",!0),t("div",Ht,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[12]||(e[12]=n=>$())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:A.value},"保存",8,Gt)])],32)])],512),[[R,h.value==="form"]]),st(p,{info:U.value,onClose:e[13]||(e[13]=n=>U.value=null)},null,8,["info"])])}}});export{te as default}; diff --git a/apps/admin/.output/public/_nuxt/BSO50kj0.js b/apps/admin/.output/public/_nuxt/B-G7qD0T.js similarity index 98% rename from apps/admin/.output/public/_nuxt/BSO50kj0.js rename to apps/admin/.output/public/_nuxt/B-G7qD0T.js index e11d00be..40c04904 100644 --- a/apps/admin/.output/public/_nuxt/BSO50kj0.js +++ b/apps/admin/.output/public/_nuxt/B-G7qD0T.js @@ -1 +1 @@ -import{g as q,C as G,c as o,a as t,t as l,q as E,s as K,N as j,v as H,F as m,r as f,l as v,y as d,A as w,o as n,n as h,L as C,d as J,_ as Q}from"./DSy_gLdM.js";import{u as W}from"./NtXZuCUg.js";import{u as X}from"./EeX3zgoF.js";import{h as R,S as B,P as M,R as Y,C as Z,p as tt,a as et}from"./PN667bHc.js";const st={class:"panel p-4 mb-5"},at={class:"flex flex-wrap items-center gap-3"},lt={class:"flex items-center gap-2 mr-2"},ot={class:"text-xs text-slate-400"},nt={class:"ml-auto flex items-center gap-2"},rt=["disabled"],it=["disabled"],ct={class:"grid grid-cols-2 md:grid-cols-5 gap-3 mt-4"},ut=["onClick"],dt={class:"sum-lbl"},pt={class:"panel"},vt={class:"panel-head"},_t={class:"text-xs text-slate-400"},mt={class:"overflow-x-auto"},ft={class:"table w-full"},bt={key:0,class:"streak"},kt={class:"font-semibold text-slate-700"},xt={class:"text-xs text-slate-400 font-mono"},yt={key:0},gt={class:"chip chip-scope"},wt={key:0,class:"chip chip-region"},ht={key:1,class:"chip"},Ct={key:0,class:"text-xs text-slate-300"},$t=["title"],Lt={class:"reason-cell"},Tt={key:0,class:"issue-list"},At={class:"text-right text-xs text-slate-400"},St={class:"text-xs text-slate-400"},Et=["disabled","onClick"],Rt={key:0},Bt={colspan:"9",class:"text-center text-slate-400 py-8"},Mt=q({__name:"svcinspect",setup(Nt){const{webApi:b}=W(),p=X(),k=d([]),u=d({total:0,ok:0,warn:0,error:0,skip:0}),$=d(0),i=d(!1),c=d(""),x=d(""),N=w(()=>R($.value)),V=w(()=>[{key:"error",label:"不可用",value:u.value.error,ico:"🚨",color:"#be123c",bg:"#ffe4e6"},{key:"warn",label:"有隐患",value:u.value.warn,ico:"⚠️",color:"#b45309",bg:"#fef3c7"},{key:"ok",label:"正常",value:u.value.ok,ico:"✅",color:"#047857",bg:"#d1fae5"},{key:"skip",label:"已停用",value:u.value.skip,ico:"⏸️",color:"#64748b",bg:"#f1f5f9"},{key:"",label:"巡检配置总数",value:u.value.total,ico:"📋",color:"#334155",bg:"#e2e8f0"}]),y=w(()=>{const s=x.value.trim().toLowerCase();return k.value.filter(a=>c.value&&a.status!==c.value?!1:s?`${a.name} ${a.svc_id} ${a.provider} ${a.app_name}`.toLowerCase().includes(s):!0)});function O(s){return`${s.app_name}/${s.svc_id}/${s.region}`}function g(s){return B[s]||B.skip}function L(s){return M[s]||M.none}function D(s){return Y[s]||`区域 ${s}`}function I(s){return Z[s]||`类别 ${s}`}function T(s){return tt(s)}function A(s){return et(s)}function U(s){return R(s)}function S(s){const a=(s.config_issues||[]).map(r=>r.replace("[致命] ","")),e=A(s);return a.filter(r=>r!==e&&!e.includes(r))}async function _(){try{const s=await b("getsvchealth",{});k.value=s.items||[],u.value=s.summary||{total:0,ok:0,warn:0,error:0,skip:0},$.value=s.last_run||0}catch(s){p.error(s?.message||"加载巡检结果失败")}}async function z(){i.value=!0;try{const s=await b("runsvcinspect",{});p.success(`巡检完成,已检查 ${s.count} 份配置`),await _()}catch(s){p.error(s?.message||"巡检失败")}finally{i.value=!1}}async function F(s){i.value=!0;try{await b("runsvcinspect",{app_name:s.app_name,svc_id:s.svc_id}),p.success(`已重新检测:${s.name||s.svc_id}`),await _()}catch(a){p.error(a?.message||"检测失败")}finally{i.value=!1}}return G(_),(s,a)=>(n(),o("div",null,[t("div",st,[t("div",at,[t("div",lt,[a[2]||(a[2]=t("h2",{class:"text-base font-bold text-slate-800"},"服务巡检",-1)),t("span",ot," 定时校验第三方服务配置并探测可用性 · 最近巡检 "+l(N.value),1)]),t("div",nt,[E(t("select",{"onUpdate:modelValue":a[0]||(a[0]=e=>c.value=e),class:"select select-bordered select-sm w-32"},[...a[3]||(a[3]=[j('',5)])],512),[[K,c.value]]),E(t("input",{"onUpdate:modelValue":a[1]||(a[1]=e=>x.value=e),class:"input input-bordered input-sm w-44",placeholder:"搜索服务名/ID/服务商"},null,512),[[H,x.value]]),t("button",{class:"btn btn-sm",disabled:i.value,onClick:_},"刷新",8,rt),t("button",{class:"btn btn-primary btn-sm text-white",disabled:i.value,onClick:z},l(i.value?"巡检中…":"立即巡检"),9,it)])]),t("div",ct,[(n(!0),o(m,null,f(V.value,e=>(n(),o("div",{key:e.key,class:h(["sum-card",{on:c.value===e.key}]),onClick:r=>c.value=c.value===e.key?"":e.key},[t("span",{class:"sum-ico",style:C({background:e.bg,color:e.color})},l(e.ico),5),t("div",null,[t("div",dt,l(e.label),1),t("div",{class:"sum-val",style:C({color:e.color})},l(e.value),5)])],10,ut))),128))])]),t("div",pt,[t("div",vt,[a[4]||(a[4]=t("span",{class:"font-semibold text-slate-700 text-sm"},"巡检明细",-1)),t("span",_t,"共 "+l(y.value.length)+" 份配置",1),a[5]||(a[5]=t("span",{class:"ml-auto text-xs text-slate-400"}," 一个服务在不同区域可能配着不同凭据,故按「服务 × 区域」分别巡检 ",-1))]),t("div",mt,[t("table",ft,[a[6]||(a[6]=t("thead",null,[t("tr",null,[t("th",null,"状态"),t("th",null,"服务"),t("th",null,"作用域 / 区域"),t("th",null,"类别"),t("th",null,"探测方式"),t("th",null,"巡检结论"),t("th",{class:"text-right"},"耗时"),t("th",null,"检查时间"),t("th")])],-1)),t("tbody",null,[(n(!0),o(m,null,f(y.value,e=>(n(),o("tr",{key:O(e)},[t("td",null,[t("span",{class:"st-badge",style:C({background:g(e.status).bg,color:g(e.status).color})},l(g(e.status).label),5),e.fail_streak>1?(n(),o("div",bt,"连续 "+l(e.fail_streak)+" 次",1)):v("",!0)]),t("td",null,[t("div",kt,l(e.name||e.svc_id),1),t("div",xt,[J(l(e.svc_id),1),e.provider?(n(),o("span",yt," · "+l(e.provider),1)):v("",!0)])]),t("td",null,[t("span",gt,l(e.app_name||"全局默认"),1),e.region?(n(),o("span",wt,l(D(e.region)),1)):(n(),o("span",ht,"默认配置"))]),t("td",null,[(n(!0),o(m,null,f(T(e.categories),r=>(n(),o("span",{key:r,class:"chip"},l(I(r)),1))),128)),T(e.categories).length?v("",!0):(n(),o("span",Ct,"—"))]),t("td",null,[t("span",{class:h(["chip","pk-"+e.probe_kind]),title:L(e.probe_kind).hint},l(L(e.probe_kind).label),11,$t)]),t("td",Lt,[t("div",{class:h(e.status==="error"?"text-rose-600":"text-slate-500")},l(A(e)||"—"),3),S(e).length?(n(),o("div",Tt,[(n(!0),o(m,null,f(S(e),(r,P)=>(n(),o("div",{key:P,class:"issue"},"· "+l(r),1))),128))])):v("",!0)]),t("td",At,l(e.probe_kind==="none"?"—":e.latency_ms+" ms"),1),t("td",St,l(U(e.checked_at)),1),t("td",null,[t("button",{class:"btn btn-xs",disabled:i.value,onClick:r=>F(e)},"重测",8,Et)])]))),128)),y.value.length?v("",!0):(n(),o("tr",Rt,[t("td",Bt,l(k.value.length?"当前筛选下没有匹配的记录":"暂无巡检记录,点击右上角「立即巡检」执行一次"),1)]))])])])])]))}}),Ut=Q(Mt,[["__scopeId","data-v-a9764f3a"]]);export{Ut as default}; +import{g as q,C as G,c as o,a as t,t as l,q as E,s as K,N as j,v as H,F as m,r as f,l as v,y as d,A as w,o as n,n as h,L as C,d as J,_ as Q}from"./6O01ZZML.js";import{u as W}from"./BgasD__e.js";import{u as X}from"./xsgK-Nup.js";import{h as R,S as B,P as M,R as Y,C as Z,p as tt,a as et}from"./PN667bHc.js";const st={class:"panel p-4 mb-5"},at={class:"flex flex-wrap items-center gap-3"},lt={class:"flex items-center gap-2 mr-2"},ot={class:"text-xs text-slate-400"},nt={class:"ml-auto flex items-center gap-2"},rt=["disabled"],it=["disabled"],ct={class:"grid grid-cols-2 md:grid-cols-5 gap-3 mt-4"},ut=["onClick"],dt={class:"sum-lbl"},pt={class:"panel"},vt={class:"panel-head"},_t={class:"text-xs text-slate-400"},mt={class:"overflow-x-auto"},ft={class:"table w-full"},bt={key:0,class:"streak"},kt={class:"font-semibold text-slate-700"},xt={class:"text-xs text-slate-400 font-mono"},yt={key:0},gt={class:"chip chip-scope"},wt={key:0,class:"chip chip-region"},ht={key:1,class:"chip"},Ct={key:0,class:"text-xs text-slate-300"},$t=["title"],Lt={class:"reason-cell"},Tt={key:0,class:"issue-list"},At={class:"text-right text-xs text-slate-400"},St={class:"text-xs text-slate-400"},Et=["disabled","onClick"],Rt={key:0},Bt={colspan:"9",class:"text-center text-slate-400 py-8"},Mt=q({__name:"svcinspect",setup(Nt){const{webApi:b}=W(),p=X(),k=d([]),u=d({total:0,ok:0,warn:0,error:0,skip:0}),$=d(0),i=d(!1),c=d(""),x=d(""),N=w(()=>R($.value)),V=w(()=>[{key:"error",label:"不可用",value:u.value.error,ico:"🚨",color:"#be123c",bg:"#ffe4e6"},{key:"warn",label:"有隐患",value:u.value.warn,ico:"⚠️",color:"#b45309",bg:"#fef3c7"},{key:"ok",label:"正常",value:u.value.ok,ico:"✅",color:"#047857",bg:"#d1fae5"},{key:"skip",label:"已停用",value:u.value.skip,ico:"⏸️",color:"#64748b",bg:"#f1f5f9"},{key:"",label:"巡检配置总数",value:u.value.total,ico:"📋",color:"#334155",bg:"#e2e8f0"}]),y=w(()=>{const s=x.value.trim().toLowerCase();return k.value.filter(a=>c.value&&a.status!==c.value?!1:s?`${a.name} ${a.svc_id} ${a.provider} ${a.app_name}`.toLowerCase().includes(s):!0)});function O(s){return`${s.app_name}/${s.svc_id}/${s.region}`}function g(s){return B[s]||B.skip}function L(s){return M[s]||M.none}function D(s){return Y[s]||`区域 ${s}`}function I(s){return Z[s]||`类别 ${s}`}function T(s){return tt(s)}function A(s){return et(s)}function U(s){return R(s)}function S(s){const a=(s.config_issues||[]).map(r=>r.replace("[致命] ","")),e=A(s);return a.filter(r=>r!==e&&!e.includes(r))}async function _(){try{const s=await b("getsvchealth",{});k.value=s.items||[],u.value=s.summary||{total:0,ok:0,warn:0,error:0,skip:0},$.value=s.last_run||0}catch(s){p.error(s?.message||"加载巡检结果失败")}}async function z(){i.value=!0;try{const s=await b("runsvcinspect",{});p.success(`巡检完成,已检查 ${s.count} 份配置`),await _()}catch(s){p.error(s?.message||"巡检失败")}finally{i.value=!1}}async function F(s){i.value=!0;try{await b("runsvcinspect",{app_name:s.app_name,svc_id:s.svc_id}),p.success(`已重新检测:${s.name||s.svc_id}`),await _()}catch(a){p.error(a?.message||"检测失败")}finally{i.value=!1}}return G(_),(s,a)=>(n(),o("div",null,[t("div",st,[t("div",at,[t("div",lt,[a[2]||(a[2]=t("h2",{class:"text-base font-bold text-slate-800"},"服务巡检",-1)),t("span",ot," 定时校验第三方服务配置并探测可用性 · 最近巡检 "+l(N.value),1)]),t("div",nt,[E(t("select",{"onUpdate:modelValue":a[0]||(a[0]=e=>c.value=e),class:"select select-bordered select-sm w-32"},[...a[3]||(a[3]=[j('',5)])],512),[[K,c.value]]),E(t("input",{"onUpdate:modelValue":a[1]||(a[1]=e=>x.value=e),class:"input input-bordered input-sm w-44",placeholder:"搜索服务名/ID/服务商"},null,512),[[H,x.value]]),t("button",{class:"btn btn-sm",disabled:i.value,onClick:_},"刷新",8,rt),t("button",{class:"btn btn-primary btn-sm text-white",disabled:i.value,onClick:z},l(i.value?"巡检中…":"立即巡检"),9,it)])]),t("div",ct,[(n(!0),o(m,null,f(V.value,e=>(n(),o("div",{key:e.key,class:h(["sum-card",{on:c.value===e.key}]),onClick:r=>c.value=c.value===e.key?"":e.key},[t("span",{class:"sum-ico",style:C({background:e.bg,color:e.color})},l(e.ico),5),t("div",null,[t("div",dt,l(e.label),1),t("div",{class:"sum-val",style:C({color:e.color})},l(e.value),5)])],10,ut))),128))])]),t("div",pt,[t("div",vt,[a[4]||(a[4]=t("span",{class:"font-semibold text-slate-700 text-sm"},"巡检明细",-1)),t("span",_t,"共 "+l(y.value.length)+" 份配置",1),a[5]||(a[5]=t("span",{class:"ml-auto text-xs text-slate-400"}," 一个服务在不同区域可能配着不同凭据,故按「服务 × 区域」分别巡检 ",-1))]),t("div",mt,[t("table",ft,[a[6]||(a[6]=t("thead",null,[t("tr",null,[t("th",null,"状态"),t("th",null,"服务"),t("th",null,"作用域 / 区域"),t("th",null,"类别"),t("th",null,"探测方式"),t("th",null,"巡检结论"),t("th",{class:"text-right"},"耗时"),t("th",null,"检查时间"),t("th")])],-1)),t("tbody",null,[(n(!0),o(m,null,f(y.value,e=>(n(),o("tr",{key:O(e)},[t("td",null,[t("span",{class:"st-badge",style:C({background:g(e.status).bg,color:g(e.status).color})},l(g(e.status).label),5),e.fail_streak>1?(n(),o("div",bt,"连续 "+l(e.fail_streak)+" 次",1)):v("",!0)]),t("td",null,[t("div",kt,l(e.name||e.svc_id),1),t("div",xt,[J(l(e.svc_id),1),e.provider?(n(),o("span",yt," · "+l(e.provider),1)):v("",!0)])]),t("td",null,[t("span",gt,l(e.app_name||"全局默认"),1),e.region?(n(),o("span",wt,l(D(e.region)),1)):(n(),o("span",ht,"默认配置"))]),t("td",null,[(n(!0),o(m,null,f(T(e.categories),r=>(n(),o("span",{key:r,class:"chip"},l(I(r)),1))),128)),T(e.categories).length?v("",!0):(n(),o("span",Ct,"—"))]),t("td",null,[t("span",{class:h(["chip","pk-"+e.probe_kind]),title:L(e.probe_kind).hint},l(L(e.probe_kind).label),11,$t)]),t("td",Lt,[t("div",{class:h(e.status==="error"?"text-rose-600":"text-slate-500")},l(A(e)||"—"),3),S(e).length?(n(),o("div",Tt,[(n(!0),o(m,null,f(S(e),(r,P)=>(n(),o("div",{key:P,class:"issue"},"· "+l(r),1))),128))])):v("",!0)]),t("td",At,l(e.probe_kind==="none"?"—":e.latency_ms+" ms"),1),t("td",St,l(U(e.checked_at)),1),t("td",null,[t("button",{class:"btn btn-xs",disabled:i.value,onClick:r=>F(e)},"重测",8,Et)])]))),128)),y.value.length?v("",!0):(n(),o("tr",Rt,[t("td",Bt,l(k.value.length?"当前筛选下没有匹配的记录":"暂无巡检记录,点击右上角「立即巡检」执行一次"),1)]))])])])])]))}}),Ut=Q(Mt,[["__scopeId","data-v-a9764f3a"]]);export{Ut as default}; diff --git a/apps/admin/.output/public/_nuxt/BAkLwAvM.js b/apps/admin/.output/public/_nuxt/BAkLwAvM.js deleted file mode 100644 index b95532af..00000000 --- a/apps/admin/.output/public/_nuxt/BAkLwAvM.js +++ /dev/null @@ -1 +0,0 @@ -import{g as pt,G as ct,C as bt,c as o,q as u,H as w,a as e,l as A,F as x,r as f,t as r,v as _,s as O,m as L,J as z,K as mt,M as xt,d as b,y as m,A as tt,z as q,o as a,n as vt,x as P,_ as ft}from"./DSy_gLdM.js";import{u as yt}from"./NtXZuCUg.js";import{u as gt}from"./EeX3zgoF.js";import{R as kt}from"./7m3DvxFn.js";const wt={class:"flex items-center justify-between mb-4"},_t={class:"bg-white rounded-xl shadow-sm border border-slate-100 overflow-hidden"},ht={class:"table table-sm"},Ct={key:0},Vt={key:1},St={class:"font-mono"},Ut={class:"font-medium"},Nt={key:0,class:"text-green-600 text-xs"},It={key:1,class:"text-slate-400 text-xs"},$t={key:0,class:"text-xs text-slate-500"},Et={key:1,class:"text-xs text-slate-300"},Mt={key:0,class:"text-xs text-slate-500"},At={key:1,class:"text-xs text-slate-300"},Ot={key:2,class:"text-xs text-slate-300"},Lt={key:3,class:"text-[11px] text-emerald-600 mt-0.5"},Pt={class:"text-xs text-slate-500"},Tt={class:"flex gap-1 justify-end"},jt=["onClick"],Dt=["onClick"],Rt=["onClick"],Bt=["onClick"],Gt={class:"flex items-center gap-3 mb-5"},Ft={class:"text-lg font-semibold text-slate-800"},zt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},qt={class:"grid grid-cols-2 gap-3"},Ht=["disabled"],Jt={class:"col-span-2"},Kt={class:"mt-4 border-t border-slate-100 pt-4"},Qt={class:"flex items-center justify-between mb-1"},Wt={class:"flex gap-1"},Xt={class:"text-xs text-slate-500 mb-1.5"},Yt={key:0,class:"text-amber-500 ml-1"},Zt={class:"flex flex-wrap gap-2"},te=["value"],ee={class:"mt-4 border-t border-slate-100 pt-4"},se={class:"grid grid-cols-2 gap-3"},le=["value"],ne=["disabled"],oe={value:""},ae=["value"],ie={class:"mt-4 border-t border-slate-100 pt-4"},de={class:"mb-3"},re={class:"flex flex-wrap gap-2"},ue=["value"],pe={key:1,class:"text-xs text-slate-300"},ce={class:"mb-3"},be={class:"flex flex-wrap gap-2"},me=["value"],xe={class:"max-h-56 overflow-y-auto pr-1 border border-slate-100 rounded-lg p-2"},ve={key:0,class:"text-xs text-slate-300"},fe={key:1,class:"text-xs text-slate-300"},ye={class:"text-[11px] font-semibold text-slate-500 mb-1 sticky top-0 bg-white py-0.5"},ge={class:"flex flex-wrap gap-2"},ke=["value"],we={class:"flex gap-3 justify-end mt-6"},_e=["disabled"],he={class:"modal-box max-w-md"},Ce={class:"text-xs text-slate-400 mb-3"},Ve={class:"font-medium text-slate-600"},Se={class:"text-emerald-600"},Ue={class:"grid grid-cols-3 gap-3"},Ne={class:"modal-action"},Ie=pt({__name:"accounts",setup($e){const{webApi:T,consoleApi:g}=yt(),{success:V,error:y,warn:et}=gt(),st={1:"超管",2:"管理员",3:"品牌商",4:"运营",5:"渠道商"},lt={1:"badge-error",2:"badge-primary",3:"badge-warning",4:"badge-info",5:"badge-accent"},S=m("list"),U=m([]),j=m([]),H=tt(()=>[...new Set(j.value.map(l=>l.app_name||l.name).filter(Boolean))].sort()),D=m(!1),N=m(!1),k=m(0),n=q({username:"",password:"",identity:2,enabled:"1",remark:"",brandid:0,channelid:""}),J=m([]),R=tt(()=>n.brandid?J.value.filter(l=>l.brandid===n.brandid):[]),i=q({access:[],apps:[],regions:[],products:[]}),K=m([]),h=m([]),B=m(!1);function v(l){return(l||"").split(",").map(t=>t.trim()).filter(t=>t)}function I(l){return l.join(",")}function Q(l){const t=[];return l.apps&&t.push("应用:"+v(l.apps).length),l.regions&&t.push("区域:"+v(l.regions).length),l.products&&t.push("产品:"+v(l.products).length),l.access&&t.push("页面:"+v(l.access).length),t}async function $(){D.value=!0;try{try{j.value=await g("apps/list",{})??[]}catch{j.value=[]}const l=await g("accounts/list",{});U.value=l??[]}catch(l){y(l?.message??"获取账号列表失败"),U.value=[]}finally{D.value=!1}}async function nt(){B.value=!0,h.value=[];try{const[l,t,s]=await Promise.all([T("getbrands",{}),T("getproducts",{}),T("getchannels",{status:-1})]),d=l?.brands??[];K.value=d,J.value=s?.channels??[];const C=t?.products??[],Z={};d.forEach(c=>{Z[c.id]=c.brand||"品牌商#"+c.id});const E={};C.forEach(c=>{const M=String(c.brandid||0);(E[M]=E[M]||[]).push(c)});const ut=Object.keys(E).sort((c,M)=>(parseInt(c)||0)-(parseInt(M)||0));h.value=ut.map(c=>({fid:c,label:Z[c]||(parseInt(c)?"品牌商#"+c:"未分组"),products:E[c]??[]}))}catch{h.value=[]}finally{B.value=!1}}function W(l){k.value=l?l.id:0,n.username=l&&l.username||"",n.password="",n.identity=l?l.identity:2,n.enabled=l&&!l.enabled?"0":"1",n.remark=l&&l.remark||"",n.brandid=l&&Number(l.brandid)||0,n.channelid=l&&l.channelid||"",i.access=v(l?.access),n.identity===2&&!i.access.length&&(i.access=z.slice()),i.apps=v(l?.apps),i.regions=v(l?.regions),i.products=v(l?.products),nt(),S.value="form"}ct(()=>n.identity,l=>{l===2&&i.access.length===0&&(i.access=z.slice())});function G(){S.value="list",$()}async function ot(){const l=n.identity,t={identity:l,enabled:n.enabled==="1",remark:n.remark.trim(),access:"",apps:"",regions:"",products:""};if(l!==1&&(t.access=I(i.access)),(l===3||l===4)&&(t.apps=I(i.apps),t.regions=I(i.regions),t.products=I(i.products)),t.brandid=0,t.channelid="",l===3||l===5){if(!n.brandid){y("请选择所属品牌商");return}if(t.brandid=Number(n.brandid),l===5){if(!n.channelid){y("请选择所属渠道商");return}t.channelid=n.channelid}}N.value=!0;try{if(k.value)t.id=k.value,await g("accounts/update",t);else{if(t.username=n.username.trim(),t.password=n.password,!t.username||!t.password){y("用户名和密码必填"),N.value=!1;return}await g("accounts/add",t)}V("已保存"),G()}catch(s){y(s?.message??"保存失败")}finally{N.value=!1}}async function at(l,t){const s=window.prompt("为账号【"+t+"】设置新密码:");if(s)try{await g("accounts/resetpwd",{id:l,password:s}),V("密码已重置")}catch(d){y(d?.message??"失败")}}function it(l,t){window.confirm("确认删除账号【"+t+"】?该操作不可恢复。")&&g("accounts/del",{id:l}).then(()=>{V("已删除"),$()}).catch(s=>y(s?.message??"失败"))}const F=m(null),X=m(0),p=q({name:"",cur:"",vipday:0,trademin:0,meetmin:0});function dt(l){X.value=l.id,p.name=l.username||"#"+l.id,p.cur="VIP"+(l.balance_vipday||0)+"天 · 翻译"+(l.balance_trademin||0)+"分 · 会议"+(l.balance_meetmin||0)+"分",p.vipday=0,p.trademin=0,p.meetmin=0,F.value?.showModal()}function Y(){F.value?.close()}async function rt(){const l=Number(p.vipday)||0,t=Number(p.trademin)||0,s=Number(p.meetmin)||0;if(!l&&!t&&!s){et("请至少填写一项");return}try{await g("accounts/topup",{account_id:X.value,vipday:l,trademin:t,meetmin:s}),V("余额已更新"),Y(),$()}catch(d){y(d?.message??"操作失败")}}return bt($),(l,t)=>(a(),o("div",null,[u(e("div",null,[e("div",wt,[t[24]||(t[24]=e("div",null,[e("h2",{class:"text-lg font-bold text-slate-700"},"后台账号"),e("p",{class:"text-xs text-slate-400 mt-0.5"},"超管 / 管理员 / 代理 / 运营。代理·运营可绑定应用·区域·产品,登录后仪表盘按绑定限制。")],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=s=>W())},"+ 新建账号")]),e("div",_t,[e("table",ht,[t[27]||(t[27]=e("thead",null,[e("tr",{class:"text-slate-500"},[e("th",null,"ID"),e("th",null,"用户名"),e("th",null,"角色"),e("th",null,"状态"),e("th",null,"绑定作用域"),e("th",null,"备注"),e("th",{class:"text-right"},"操作")])],-1)),e("tbody",null,[D.value?(a(),o("tr",Ct,[...t[25]||(t[25]=[e("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"加载中...",-1)])])):U.value.length?A("",!0):(a(),o("tr",Vt,[...t[26]||(t[26]=[e("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无账号(引导超管不在此列)",-1)])])),(a(!0),o(x,null,f(U.value,s=>(a(),o("tr",{key:s.id},[e("td",St,r(s.id),1),e("td",Ut,r(s.username||""),1),e("td",null,[e("span",{class:vt(["badge badge-sm",lt[s.identity]||""])},r(st[s.identity]||s.identity),3)]),e("td",null,[s.enabled?(a(),o("span",Nt,"启用")):(a(),o("span",It,"停用"))]),e("td",null,[s.identity===3||s.identity===4?(a(),o(x,{key:0},[Q(s).length?(a(),o("span",$t,r(Q(s).join(" · ")),1)):(a(),o("span",Et,"未绑定(不限)"))],64)):s.identity===2?(a(),o(x,{key:1},[s.access?(a(),o("span",Mt,"菜单:"+r(v(s.access).length),1)):(a(),o("span",At,"默认(除SaaS/系统管理)"))],64)):(a(),o("span",Ot,"全部权限")),s.identity===3?(a(),o("div",Lt," 余额 VIP"+r(s.balance_vipday||0)+"天 · 翻译"+r(s.balance_trademin||0)+"分 · 会议"+r(s.balance_meetmin||0)+"分 ",1)):A("",!0)]),e("td",Pt,r(s.remark||""),1),e("td",null,[e("div",Tt,[s.identity===3?(a(),o("button",{key:0,class:"btn btn-ghost btn-xs text-emerald-600",onClick:d=>dt(s)},"充值",8,jt)):A("",!0),e("button",{class:"btn btn-ghost btn-xs",onClick:d=>W(s)},"编辑",8,Dt),e("button",{class:"btn btn-ghost btn-xs text-amber-600",onClick:d=>at(s.id,s.username)},"改密",8,Rt),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:d=>it(s.id,s.username)},"删除",8,Bt)])])]))),128))])])])],512),[[w,S.value==="list"]]),u(e("div",null,[e("div",Gt,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[1]||(t[1]=s=>G())},"← 返回列表"),e("h2",Ft,r(k.value?"编辑账号 #"+k.value:"新建账号"),1)]),e("div",zt,[e("div",qt,[e("div",null,[t[28]||(t[28]=e("label",{class:"text-xs text-slate-500"},"用户名",-1)),u(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>n.username=s),disabled:!!k.value,class:"input input-bordered input-sm w-full",placeholder:"登录用户名"},null,8,Ht),[[_,n.username]])]),u(e("div",null,[t[29]||(t[29]=e("label",{class:"text-xs text-slate-500"},"密码",-1)),u(e("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>n.password=s),type:"password",class:"input input-bordered input-sm w-full",placeholder:"登录密码"},null,512),[[_,n.password]])],512),[[w,!k.value]]),e("div",null,[t[31]||(t[31]=e("label",{class:"text-xs text-slate-500"},"角色",-1)),u(e("select",{"onUpdate:modelValue":t[4]||(t[4]=s=>n.identity=s),class:"select select-bordered select-sm w-full"},[...t[30]||(t[30]=[e("option",{value:2},"管理员(默认除 SaaS/系统管理外全部)",-1),e("option",{value:3},"品牌商(绑定品牌商,见名下全部渠道商)",-1),e("option",{value:5},"渠道商(绑定单个渠道商,只见自己数据)",-1),e("option",{value:4},"运营(内部,按绑定限制)",-1),e("option",{value:1},"超管(全部权限)",-1)])],512),[[O,n.identity,void 0,{number:!0}]])]),e("div",null,[t[33]||(t[33]=e("label",{class:"text-xs text-slate-500"},"状态",-1)),u(e("select",{"onUpdate:modelValue":t[5]||(t[5]=s=>n.enabled=s),class:"select select-bordered select-sm w-full"},[...t[32]||(t[32]=[e("option",{value:"1"},"启用",-1),e("option",{value:"0"},"停用",-1)])],512),[[O,n.enabled]])]),e("div",Jt,[t[34]||(t[34]=e("label",{class:"text-xs text-slate-500"},"备注",-1)),u(e("input",{"onUpdate:modelValue":t[6]||(t[6]=s=>n.remark=s),class:"input input-bordered input-sm w-full",placeholder:"可选"},null,512),[[_,n.remark]])])]),u(e("div",Kt,[e("div",Qt,[t[35]||(t[35]=e("div",{class:"text-sm font-semibold text-slate-600"},"菜单权限",-1)),e("div",Wt,[e("button",{type:"button",class:"btn btn-ghost btn-xs",onClick:t[7]||(t[7]=s=>i.access=L(z).slice())},"管理员默认"),e("button",{type:"button",class:"btn btn-ghost btn-xs",onClick:t[8]||(t[8]=s=>i.access=L(mt).slice())},"全选"),e("button",{type:"button",class:"btn btn-ghost btn-xs",onClick:t[9]||(t[9]=s=>i.access=[])},"清空")])]),t[36]||(t[36]=e("p",{class:"text-xs text-slate-400 mb-3"},"管理员默认开放除「SaaS 管理 / 系统管理」以外的全部菜单(权限留空时按默认生效);代理/运营需显式勾选。",-1)),(a(!0),o(x,null,f(L(xt),s=>(a(),o("div",{key:s.label,class:"mb-2.5"},[e("div",Xt,[b(r(s.label),1),s.restricted?(a(),o("span",Yt,"(管理员默认不开放)")):A("",!0)]),e("div",Zt,[(a(!0),o(x,null,f(s.items,d=>(a(),o("label",{key:d.id,class:"chk"},[u(e("input",{"onUpdate:modelValue":t[10]||(t[10]=C=>i.access=C),type:"checkbox",value:d.id},null,8,te),[[P,i.access]]),b(r(d.label),1)]))),128))])]))),128))],512),[[w,n.identity!==1]]),u(e("div",ee,[t[40]||(t[40]=e("div",{class:"text-sm font-semibold text-slate-600 mb-2"},[b(" 归属绑定 "),e("span",{class:"text-xs text-slate-400 font-normal"},"(品牌商账号只绑品牌商;渠道商账号两者都要绑)")],-1)),e("div",se,[e("div",null,[t[38]||(t[38]=e("label",{class:"text-xs text-slate-500"},"所属品牌商 *",-1)),u(e("select",{"onUpdate:modelValue":t[11]||(t[11]=s=>n.brandid=s),class:"select select-bordered select-sm w-full",onChange:t[12]||(t[12]=s=>n.channelid="")},[t[37]||(t[37]=e("option",{value:0},"请选择品牌商",-1)),(a(!0),o(x,null,f(K.value,s=>(a(),o("option",{key:s.id,value:s.id},r(s.brand),9,le))),128))],544),[[O,n.brandid,void 0,{number:!0}]])]),u(e("div",null,[t[39]||(t[39]=e("label",{class:"text-xs text-slate-500"},"所属渠道商 *",-1)),u(e("select",{"onUpdate:modelValue":t[13]||(t[13]=s=>n.channelid=s),class:"select select-bordered select-sm w-full",disabled:!R.value.length},[e("option",oe,r(n.brandid?R.value.length?"请选择渠道商":"该品牌商暂无渠道商":"请先选择品牌商"),1),(a(!0),o(x,null,f(R.value,s=>(a(),o("option",{key:s.id,value:s.id},r(s.name)+" ("+r(s.id)+")",9,ae))),128))],8,ne),[[O,n.channelid]])],512),[[w,n.identity===5]])]),t[41]||(t[41]=e("p",{class:"text-xs text-slate-400 mt-2"}," 数据隔离由后端强制:品牌商账号只能看到本品牌商及其名下渠道商的数据,渠道商账号只能看到自己渠道的数据。 ",-1))],512),[[w,n.identity===3||n.identity===5]]),u(e("div",ie,[t[45]||(t[45]=e("div",{class:"text-sm font-semibold text-slate-600 mb-2"},[b("作用域绑定 "),e("span",{class:"text-xs text-slate-400 font-normal"},"(代理/运营生效;限制仪表盘数据范围)")],-1)),e("div",de,[t[42]||(t[42]=e("div",{class:"text-xs text-slate-500 mb-1.5"},[b("绑定应用 "),e("span",{class:"text-slate-300"},"(仪表盘只显示这些应用数据;不勾=不限)")],-1)),e("div",re,[H.value.length?(a(!0),o(x,{key:0},f(H.value,s=>(a(),o("label",{key:s,class:"chk"},[u(e("input",{"onUpdate:modelValue":t[14]||(t[14]=d=>i.apps=d),type:"checkbox",value:s},null,8,ue),[[P,i.apps]]),b(r(s),1)]))),128)):(a(),o("span",pe,"无注册应用"))])]),e("div",ce,[t[43]||(t[43]=e("div",{class:"text-xs text-slate-500 mb-1.5"},[b("绑定区域 "),e("span",{class:"text-slate-300"},"(不勾=不限)")],-1)),e("div",be,[(a(!0),o(x,null,f(L(kt),s=>(a(),o("label",{key:s.value,class:"chk"},[u(e("input",{"onUpdate:modelValue":t[15]||(t[15]=d=>i.regions=d),type:"checkbox",value:s.value},null,8,me),[[P,i.regions]]),b(r(s.label),1)]))),128))])]),e("div",null,[t[44]||(t[44]=e("div",{class:"text-xs text-slate-500 mb-1.5"},[b("绑定产品 "),e("span",{class:"text-slate-300"},"(按厂家分组;仪表盘只显示这些产品数据;不勾=不限)")],-1)),e("div",xe,[B.value?(a(),o("span",ve,"加载产品中...")):h.value.length?(a(!0),o(x,{key:2},f(h.value,s=>(a(),o("div",{key:s.fid,class:"mb-2 last:mb-0"},[e("div",ye,"🏭 "+r(s.label),1),e("div",ge,[(a(!0),o(x,null,f(s.products,d=>(a(),o("label",{key:d.id,class:"chk"},[u(e("input",{"onUpdate:modelValue":t[16]||(t[16]=C=>i.products=C),type:"checkbox",value:String(d.id)},null,8,ke),[[P,i.products]]),b(r((d.devicename||"产品")+" #"+d.id),1)]))),128))])]))),128)):(a(),o("span",fe,"无产品"))])])],512),[[w,n.identity===3||n.identity===4]]),e("div",we,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[17]||(t[17]=s=>G())},"取消"),e("button",{class:"btn btn-primary btn-sm text-white",disabled:N.value,onClick:t[18]||(t[18]=s=>ot())},"保存",8,_e)])])],512),[[w,S.value==="form"]]),e("dialog",{ref_key:"topupModal",ref:F,class:"modal"},[e("div",he,[t[51]||(t[51]=e("h3",{class:"font-bold text-lg mb-1"},"充值 / 调整资源点",-1)),e("p",Ce,[t[46]||(t[46]=b("代理:",-1)),e("span",Ve,r(p.name),1),t[47]||(t[47]=b("。填增量(可填负数下调),当前余额:",-1)),e("span",Se,r(p.cur),1)]),e("div",Ue,[e("div",null,[t[48]||(t[48]=e("label",{class:"text-xs text-slate-500"},"VIP天数",-1)),u(e("input",{"onUpdate:modelValue":t[19]||(t[19]=s=>p.vipday=s),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,p.vipday,void 0,{number:!0}]])]),e("div",null,[t[49]||(t[49]=e("label",{class:"text-xs text-slate-500"},"翻译分钟",-1)),u(e("input",{"onUpdate:modelValue":t[20]||(t[20]=s=>p.trademin=s),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,p.trademin,void 0,{number:!0}]])]),e("div",null,[t[50]||(t[50]=e("label",{class:"text-xs text-slate-500"},"会议分钟",-1)),u(e("input",{"onUpdate:modelValue":t[21]||(t[21]=s=>p.meetmin=s),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,p.meetmin,void 0,{number:!0}]])])]),e("div",Ne,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[22]||(t[22]=s=>Y())},"取消"),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[23]||(t[23]=s=>rt())},"确认")])]),t[52]||(t[52]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512)]))}}),Le=ft(Ie,[["__scopeId","data-v-b47e60f8"]]);export{Le as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DhKR78CK.js b/apps/admin/.output/public/_nuxt/BCmMvQNl.js similarity index 92% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DhKR78CK.js rename to apps/admin/.output/public/_nuxt/BCmMvQNl.js index ce6f3d26..c8ea61e9 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DhKR78CK.js +++ b/apps/admin/.output/public/_nuxt/BCmMvQNl.js @@ -1 +1 @@ -import{_ as P}from"./32rNuZwS.js";import{u as L}from"./EeX3zgoF.js";import{g as C,o,c as l,F as m,r as k,n as G,a as t,t as i,m as c,I as M,w as N,l as v,T as H,_ as q,j as W,k as J,E as K,C as Q,d as X,M as Y,N as Z,q as w,v as y,b as B,R as tt,y as E,z as et,A as h}from"./DSy_gLdM.js";import{a as st,u as ot}from"./NtXZuCUg.js";const nt={class:"toast toast-bottom toast-end z-50"},lt=C({__name:"AppToast",setup(A){const{toasts:n}=L();function p(r){switch(r){case"success":return"alert-success";case"error":return"alert-error";case"warning":return"alert-warning";default:return"alert-info"}}return(r,z)=>(o(),l("div",nt,[(o(!0),l(m,null,k(c(n),u=>(o(),l("div",{key:u.id,class:G(["alert",p(u.type)])},[t("span",null,i(u.msg),1)],2))),128))]))}}),at=Object.assign(lt,{__name:"AppToast"}),it={key:0,class:"fixed inset-0 z-[100] flex items-center justify-center bg-black/30 backdrop-blur-[1px]","aria-busy":"true",role:"alert"},rt=C({__name:"AppLoading",setup(A){const{loading:n}=st();return(p,r)=>(o(),M(H,{name:"fade"},{default:N(()=>[c(n)?(o(),l("div",it,[...r[0]||(r[0]=[t("div",{class:"flex flex-col items-center gap-3 rounded-2xl bg-white px-10 py-7 shadow-xl"},[t("span",{class:"loading loading-spinner loading-lg text-primary"}),t("span",{class:"text-sm text-slate-600"},"处理中,请稍候…")],-1)])])):v("",!0)]),_:1}))}}),dt=Object.assign(q(rt,[["__scopeId","data-v-c1ace0c2"]]),{__name:"AppLoading"}),ct={class:"flex min-h-screen"},pt={class:"fixed top-0 left-0 bottom-0 z-30 overflow-y-auto flex flex-col",style:{width:"256px",background:"#1E293B"}},ut={style:{padding:"20px 20px 16px","border-bottom":"1px solid rgba(255,255,255,0.06)"}},xt={style:{display:"flex","align-items":"center",gap:"12px"}},mt={style:{width:"40px",height:"40px",background:"linear-gradient(135deg,#4F46E5,#7C3AED)","border-radius":"12px",display:"flex","align-items":"center","justify-content":"center","box-shadow":"0 6px 20px rgba(79,70,229,0.35)","flex-shrink":"0"}},ft={style:{width:"22px",height:"22px",color:"#fff"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},_t={style:{color:"#fff","font-weight":"700","font-size":"15px","letter-spacing":"-0.02em"}},ht={style:{padding:"12px 0",flex:"1"}},vt={class:"icon",width:"18",height:"18",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},gt=["d"],bt={style:{"margin-top":"auto",padding:"14px 18px","border-top":"1px solid rgba(255,255,255,0.06)"}},wt={style:{display:"flex","align-items":"center",gap:"10px"}},yt={style:{width:"32px",height:"32px","border-radius":"9px",background:"linear-gradient(135deg,#4F46E5,#7C3AED)",color:"#fff",display:"flex","align-items":"center","justify-content":"center","font-weight":"700","flex-shrink":"0"}},kt={style:{"min-width":"0"}},Ct={style:{color:"#E2E8F0","font-size":"13px","font-weight":"600","line-height":"1.2",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},At={style:{color:"#64748B","font-size":"11px","margin-top":"2px"}},zt={class:"flex-1",style:{"margin-left":"256px"}},Vt={class:"bg-white shadow-sm sticky top-0 z-20 h-16 flex items-center justify-between px-6"},jt={class:"flex items-center gap-2 text-sm"},Tt={class:"text-slate-700 font-medium"},Bt={class:"flex items-center gap-2"},Et={class:"dropdown dropdown-end"},Lt={tabindex:"0",class:"flex items-center gap-2 cursor-pointer hover:bg-slate-50 rounded-lg px-3 py-1.5"},Mt={class:"avatar placeholder"},Nt={class:"bg-indigo-600 text-white rounded-full w-8"},St={class:"text-sm"},Ut={class:"text-sm text-slate-700 leading-tight"},$t={class:"text-[10px] text-slate-400"},Ft={key:0,class:"modal modal-open"},Dt={class:"modal-box max-w-sm"},Ot={class:"space-y-3"},Rt={class:"modal-action"},It=["disabled"],Pt={class:"p-6"},Jt=C({__name:"default",setup(A){const n=W(),p=J(),r=K(),{consoleApi:z}=ot(),{success:u,error:f}=L();function V(){n.logout(),p.push("/")}const _=E(!1),g=E(!1),s=et({old:"",next:"",confirm:""});function S(){s.old="",s.next="",s.confirm="",_.value=!0}async function U(){if(!s.old||!s.next){f("原密码和新密码必填");return}if(s.next.length<6){f("新密码至少 6 位");return}if(s.next!==s.confirm){f("两次输入的新密码不一致");return}g.value=!0;try{await z("accounts/changepwd",{old_password:s.old,new_password:s.next}),_.value=!1,u("密码已修改,请重新登录"),setTimeout(V,800)}catch(d){f(d?.message??"修改失败")}finally{g.value=!1}}const $=h(()=>({1:"超级管理员",2:"管理员",3:"代理",4:"运营"})[n.identity]??""),F=h(()=>({1:"超管",2:"管理员",3:"代理",4:"运营"})[n.identity]??""),j=h(()=>(n.account||"A").charAt(0).toUpperCase()),T=Y;function D(d){return d.items.some(e=>n.hasAccess(e.id))}const O=h(()=>{if(r.meta?.title)return r.meta.title;for(const d of T){const e=d.items.find(b=>r.path.startsWith(b.to));if(e)return e.label}return"Console"});return Q(()=>{n.token||p.push("/")}),(d,e)=>{const b=P,R=at,I=dt;return o(),l("div",ct,[t("aside",pt,[t("div",ut,[t("div",xt,[t("div",mt,[(o(),l("svg",ft,[...e[4]||(e[4]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"},null,-1)])]))]),t("div",null,[t("div",_t,i(c(n).siteTitle||"Admin"),1),e[5]||(e[5]=t("div",{style:{color:"#64748B","font-size":"11px","font-weight":"500"}},"Admin Console · v1.0.1",-1))])])]),t("nav",ht,[(o(!0),l(m,null,k(c(T),a=>(o(),l(m,null,[D(a)?(o(),l("div",{key:a.label,class:"group-title"},i(a.label),1)):v("",!0),(o(!0),l(m,null,k(a.items,x=>(o(),l(m,null,[c(n).hasAccess(x.id)?(o(),M(b,{key:x.id,to:x.to,class:"sidebar-link","active-class":"active"},{default:N(()=>[(o(),l("svg",vt,[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:x.icon},null,8,gt)])),X(" "+i(x.label),1)]),_:2},1032,["to"])):v("",!0)],64))),256))],64))),256))]),t("div",bt,[t("div",wt,[t("div",yt,i(j.value),1),t("div",kt,[t("div",Ct,i(c(n).account||"-"),1),t("div",At,i($.value),1)])])])]),t("main",zt,[t("header",Vt,[t("div",jt,[e[6]||(e[6]=t("span",{class:"text-slate-400"},"首页",-1)),e[7]||(e[7]=t("span",{class:"text-slate-300"},"/",-1)),t("span",Tt,i(O.value),1)]),t("div",Bt,[e[8]||(e[8]=Z('',1)),t("div",Et,[t("div",Lt,[t("div",Mt,[t("div",Nt,[t("span",St,i(j.value),1)])]),t("div",null,[t("div",Ut,i(c(n).account),1),t("div",$t,i(F.value),1)])]),t("ul",{tabindex:"0",class:"dropdown-content z-[1] menu p-2 shadow-lg bg-white rounded-lg w-44 border"},[t("li",null,[t("a",{class:"text-sm cursor-pointer",onClick:S},"修改密码")]),t("li",null,[t("a",{class:"text-sm text-red-500 cursor-pointer",onClick:V},"退出登录")])])])])]),_.value?(o(),l("div",Ft,[t("div",Dt,[e[12]||(e[12]=t("h3",{class:"font-bold text-base mb-3"},"修改密码",-1)),t("div",Ot,[t("div",null,[e[9]||(e[9]=t("label",{class:"text-xs text-slate-500"},"原密码",-1)),w(t("input",{"onUpdate:modelValue":e[0]||(e[0]=a=>s.old=a),type:"password",class:"input input-bordered input-sm w-full",autocomplete:"current-password"},null,512),[[y,s.old]])]),t("div",null,[e[10]||(e[10]=t("label",{class:"text-xs text-slate-500"},"新密码(至少 6 位)",-1)),w(t("input",{"onUpdate:modelValue":e[1]||(e[1]=a=>s.next=a),type:"password",class:"input input-bordered input-sm w-full",autocomplete:"new-password"},null,512),[[y,s.next]])]),t("div",null,[e[11]||(e[11]=t("label",{class:"text-xs text-slate-500"},"确认新密码",-1)),w(t("input",{"onUpdate:modelValue":e[2]||(e[2]=a=>s.confirm=a),type:"password",class:"input input-bordered input-sm w-full",autocomplete:"new-password"},null,512),[[y,s.confirm]])])]),e[13]||(e[13]=t("p",{class:"text-xs text-slate-400 mt-3"},"改完需要重新登录。",-1)),t("div",Rt,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[3]||(e[3]=a=>_.value=!1)},"取消"),t("button",{class:"btn btn-primary btn-sm text-white",disabled:g.value,onClick:U},"确认修改",8,It)])])])):v("",!0),B(R),B(I),t("div",Pt,[tt(d.$slots,"default")])])])}}});export{Jt as default}; +import{_ as R}from"./CDB8L8go.js";import{u as L}from"./xsgK-Nup.js";import{g as C,o,c as l,F as m,r as k,n as G,a as t,t as i,m as c,I as M,w as N,l as v,T as H,_ as q,j as W,k as J,E as K,C as Q,d as X,M as Y,N as Z,q as w,v as y,b as B,S as tt,y as E,z as et,A as h}from"./6O01ZZML.js";import{a as st,u as ot}from"./BgasD__e.js";const nt={class:"toast toast-bottom toast-end z-50"},lt=C({__name:"AppToast",setup(A){const{toasts:n}=L();function p(r){switch(r){case"success":return"alert-success";case"error":return"alert-error";case"warning":return"alert-warning";default:return"alert-info"}}return(r,z)=>(o(),l("div",nt,[(o(!0),l(m,null,k(c(n),u=>(o(),l("div",{key:u.id,class:G(["alert",p(u.type)])},[t("span",null,i(u.msg),1)],2))),128))]))}}),at=Object.assign(lt,{__name:"AppToast"}),it={key:0,class:"fixed inset-0 z-[100] flex items-center justify-center bg-black/30 backdrop-blur-[1px]","aria-busy":"true",role:"alert"},rt=C({__name:"AppLoading",setup(A){const{loading:n}=st();return(p,r)=>(o(),M(H,{name:"fade"},{default:N(()=>[c(n)?(o(),l("div",it,[...r[0]||(r[0]=[t("div",{class:"flex flex-col items-center gap-3 rounded-2xl bg-white px-10 py-7 shadow-xl"},[t("span",{class:"loading loading-spinner loading-lg text-primary"}),t("span",{class:"text-sm text-slate-600"},"处理中,请稍候…")],-1)])])):v("",!0)]),_:1}))}}),dt=Object.assign(q(rt,[["__scopeId","data-v-c1ace0c2"]]),{__name:"AppLoading"}),ct={class:"flex min-h-screen"},pt={class:"fixed top-0 left-0 bottom-0 z-30 overflow-y-auto flex flex-col",style:{width:"256px",background:"#1E293B"}},ut={style:{padding:"20px 20px 16px","border-bottom":"1px solid rgba(255,255,255,0.06)"}},xt={style:{display:"flex","align-items":"center",gap:"12px"}},mt={style:{width:"40px",height:"40px",background:"linear-gradient(135deg,#4F46E5,#7C3AED)","border-radius":"12px",display:"flex","align-items":"center","justify-content":"center","box-shadow":"0 6px 20px rgba(79,70,229,0.35)","flex-shrink":"0"}},ft={style:{width:"22px",height:"22px",color:"#fff"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},_t={style:{color:"#fff","font-weight":"700","font-size":"15px","letter-spacing":"-0.02em"}},ht={style:{padding:"12px 0",flex:"1"}},vt={class:"icon",width:"18",height:"18",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},gt=["d"],bt={style:{"margin-top":"auto",padding:"14px 18px","border-top":"1px solid rgba(255,255,255,0.06)"}},wt={style:{display:"flex","align-items":"center",gap:"10px"}},yt={style:{width:"32px",height:"32px","border-radius":"9px",background:"linear-gradient(135deg,#4F46E5,#7C3AED)",color:"#fff",display:"flex","align-items":"center","justify-content":"center","font-weight":"700","flex-shrink":"0"}},kt={style:{"min-width":"0"}},Ct={style:{color:"#E2E8F0","font-size":"13px","font-weight":"600","line-height":"1.2",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},At={style:{color:"#64748B","font-size":"11px","margin-top":"2px"}},zt={class:"flex-1",style:{"margin-left":"256px"}},Vt={class:"bg-white shadow-sm sticky top-0 z-20 h-16 flex items-center justify-between px-6"},jt={class:"flex items-center gap-2 text-sm"},Tt={class:"text-slate-700 font-medium"},Bt={class:"flex items-center gap-2"},Et={class:"dropdown dropdown-end"},Lt={tabindex:"0",class:"flex items-center gap-2 cursor-pointer hover:bg-slate-50 rounded-lg px-3 py-1.5"},Mt={class:"avatar placeholder"},Nt={class:"bg-indigo-600 text-white rounded-full w-8"},St={class:"text-sm"},Ut={class:"text-sm text-slate-700 leading-tight"},$t={class:"text-[10px] text-slate-400"},Ft={key:0,class:"modal modal-open"},Dt={class:"modal-box max-w-sm"},Ot={class:"space-y-3"},It={class:"modal-action"},Pt=["disabled"],Rt={class:"p-6"},Jt=C({__name:"default",setup(A){const n=W(),p=J(),r=K(),{consoleApi:z}=ot(),{success:u,error:f}=L();function V(){n.logout(),p.push("/")}const _=E(!1),g=E(!1),s=et({old:"",next:"",confirm:""});function S(){s.old="",s.next="",s.confirm="",_.value=!0}async function U(){if(!s.old||!s.next){f("原密码和新密码必填");return}if(s.next.length<6){f("新密码至少 6 位");return}if(s.next!==s.confirm){f("两次输入的新密码不一致");return}g.value=!0;try{await z("accounts/changepwd",{old_password:s.old,new_password:s.next}),_.value=!1,u("密码已修改,请重新登录"),setTimeout(V,800)}catch(d){f(d?.message??"修改失败")}finally{g.value=!1}}const $=h(()=>({1:"超级管理员",2:"管理员",3:"代理",4:"运营"})[n.identity]??""),F=h(()=>({1:"超管",2:"管理员",3:"代理",4:"运营"})[n.identity]??""),j=h(()=>(n.account||"A").charAt(0).toUpperCase()),T=Y;function D(d){return d.items.some(e=>n.hasAccess(e.id))}const O=h(()=>{if(r.meta?.title)return r.meta.title;for(const d of T){const e=d.items.find(b=>r.path.startsWith(b.to));if(e)return e.label}return"Console"});return Q(()=>{n.token||p.push("/")}),(d,e)=>{const b=R,I=at,P=dt;return o(),l("div",ct,[t("aside",pt,[t("div",ut,[t("div",xt,[t("div",mt,[(o(),l("svg",ft,[...e[4]||(e[4]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"},null,-1)])]))]),t("div",null,[t("div",_t,i(c(n).siteTitle||"Admin"),1),e[5]||(e[5]=t("div",{style:{color:"#64748B","font-size":"11px","font-weight":"500"}},"Admin Console · v1.0.1",-1))])])]),t("nav",ht,[(o(!0),l(m,null,k(c(T),a=>(o(),l(m,null,[D(a)?(o(),l("div",{key:a.label,class:"group-title"},i(a.label),1)):v("",!0),(o(!0),l(m,null,k(a.items,x=>(o(),l(m,null,[c(n).hasAccess(x.id)?(o(),M(b,{key:x.id,to:x.to,class:"sidebar-link","active-class":"active"},{default:N(()=>[(o(),l("svg",vt,[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:x.icon},null,8,gt)])),X(" "+i(x.label),1)]),_:2},1032,["to"])):v("",!0)],64))),256))],64))),256))]),t("div",bt,[t("div",wt,[t("div",yt,i(j.value),1),t("div",kt,[t("div",Ct,i(c(n).account||"-"),1),t("div",At,i($.value),1)])])])]),t("main",zt,[t("header",Vt,[t("div",jt,[e[6]||(e[6]=t("span",{class:"text-slate-400"},"首页",-1)),e[7]||(e[7]=t("span",{class:"text-slate-300"},"/",-1)),t("span",Tt,i(O.value),1)]),t("div",Bt,[e[8]||(e[8]=Z('',1)),t("div",Et,[t("div",Lt,[t("div",Mt,[t("div",Nt,[t("span",St,i(j.value),1)])]),t("div",null,[t("div",Ut,i(c(n).account),1),t("div",$t,i(F.value),1)])]),t("ul",{tabindex:"0",class:"dropdown-content z-[1] menu p-2 shadow-lg bg-white rounded-lg w-44 border"},[t("li",null,[t("a",{class:"text-sm cursor-pointer",onClick:S},"修改密码")]),t("li",null,[t("a",{class:"text-sm text-red-500 cursor-pointer",onClick:V},"退出登录")])])])])]),_.value?(o(),l("div",Ft,[t("div",Dt,[e[12]||(e[12]=t("h3",{class:"font-bold text-base mb-3"},"修改密码",-1)),t("div",Ot,[t("div",null,[e[9]||(e[9]=t("label",{class:"text-xs text-slate-500"},"原密码",-1)),w(t("input",{"onUpdate:modelValue":e[0]||(e[0]=a=>s.old=a),type:"password",class:"input input-bordered input-sm w-full",autocomplete:"current-password"},null,512),[[y,s.old]])]),t("div",null,[e[10]||(e[10]=t("label",{class:"text-xs text-slate-500"},"新密码(至少 6 位)",-1)),w(t("input",{"onUpdate:modelValue":e[1]||(e[1]=a=>s.next=a),type:"password",class:"input input-bordered input-sm w-full",autocomplete:"new-password"},null,512),[[y,s.next]])]),t("div",null,[e[11]||(e[11]=t("label",{class:"text-xs text-slate-500"},"确认新密码",-1)),w(t("input",{"onUpdate:modelValue":e[2]||(e[2]=a=>s.confirm=a),type:"password",class:"input input-bordered input-sm w-full",autocomplete:"new-password"},null,512),[[y,s.confirm]])])]),e[13]||(e[13]=t("p",{class:"text-xs text-slate-400 mt-3"},"改完需要重新登录。",-1)),t("div",It,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[3]||(e[3]=a=>_.value=!1)},"取消"),t("button",{class:"btn btn-primary btn-sm text-white",disabled:g.value,onClick:U},"确认修改",8,Pt)])])])):v("",!0),B(I),B(P),t("div",Rt,[tt(d.$slots,"default")])])])}}});export{Jt as default}; diff --git a/apps/admin/.output/public/_nuxt/D5UrQ7F3.js b/apps/admin/.output/public/_nuxt/BIYq6SKh.js similarity index 71% rename from apps/admin/.output/public/_nuxt/D5UrQ7F3.js rename to apps/admin/.output/public/_nuxt/BIYq6SKh.js index a5d4d8fc..cd51589c 100644 --- a/apps/admin/.output/public/_nuxt/D5UrQ7F3.js +++ b/apps/admin/.output/public/_nuxt/BIYq6SKh.js @@ -1 +1 @@ -import{_ as t,o,c as s,R as c}from"./DSy_gLdM.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default}; +import{_ as t,o,c as s,S as c}from"./6O01ZZML.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default}; diff --git a/apps/admin/.output/public/_nuxt/BNW9rRgN.js b/apps/admin/.output/public/_nuxt/BNW9rRgN.js new file mode 100644 index 00000000..ac93c362 --- /dev/null +++ b/apps/admin/.output/public/_nuxt/BNW9rRgN.js @@ -0,0 +1 @@ +import{g as vt,G as ft,C as yt,c as o,q as r,H as w,a as e,l as S,F as x,r as f,t as u,v as _,s as P,m as et,J as q,d as m,y as b,A as V,z as H,R as st,K as gt,M as lt,o as a,n as kt,x as R,_ as wt}from"./6O01ZZML.js";import{u as _t}from"./BgasD__e.js";import{u as ht}from"./xsgK-Nup.js";import{R as Ct}from"./7m3DvxFn.js";const St={class:"flex items-center justify-between mb-4"},Vt={class:"bg-white rounded-xl shadow-sm border border-slate-100 overflow-hidden"},Ut={class:"table table-sm"},It={key:0},Nt={key:1},Et={class:"font-mono"},$t={class:"font-medium"},Mt={key:0,class:"text-green-600 text-xs"},At={key:1,class:"text-slate-400 text-xs"},Lt={key:0,class:"text-xs text-slate-500"},Ot={key:1,class:"text-xs text-slate-300"},Pt={key:0,class:"text-xs text-slate-500"},Rt={key:1,class:"text-xs text-slate-300"},Tt={key:2,class:"text-xs text-slate-300"},jt={key:3,class:"text-[11px] text-emerald-600 mt-0.5"},Dt={class:"text-xs text-slate-500"},Gt={class:"flex gap-1 justify-end"},Bt=["onClick"],Ft=["onClick"],zt=["onClick"],qt=["onClick"],Ht={class:"flex items-center gap-3 mb-5"},Jt={class:"text-lg font-semibold text-slate-800"},Kt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},Qt={class:"grid grid-cols-2 gap-3"},Wt=["disabled"],Xt={class:"col-span-2"},Yt={class:"mt-4 border-t border-slate-100 pt-4"},Zt={class:"flex items-center justify-between mb-1"},te={class:"flex gap-1"},ee={key:0,class:"text-xs text-slate-400 mb-3"},se={key:1,class:"text-xs text-slate-400 mb-3"},le={class:"text-xs text-slate-500 mb-1.5"},ne={key:0,class:"text-amber-500 ml-1"},oe={class:"flex flex-wrap gap-2"},ae=["value"],ie={class:"mt-4 border-t border-slate-100 pt-4"},de={class:"grid grid-cols-2 gap-3"},ue=["value"],re=["disabled"],ce={value:""},pe=["value"],me={class:"mt-4 border-t border-slate-100 pt-4"},be={class:"mb-3"},xe={class:"flex flex-wrap gap-2"},ve=["value"],fe={key:1,class:"text-xs text-slate-300"},ye={class:"mb-3"},ge={class:"flex flex-wrap gap-2"},ke=["value"],we={class:"max-h-56 overflow-y-auto pr-1 border border-slate-100 rounded-lg p-2"},_e={key:0,class:"text-xs text-slate-300"},he={key:1,class:"text-xs text-slate-300"},Ce={class:"text-[11px] font-semibold text-slate-500 mb-1 sticky top-0 bg-white py-0.5"},Se={class:"flex flex-wrap gap-2"},Ve=["value"],Ue={class:"flex gap-3 justify-end mt-6"},Ie=["disabled"],Ne={class:"modal-box max-w-md"},Ee={class:"text-xs text-slate-400 mb-3"},$e={class:"font-medium text-slate-600"},Me={class:"text-emerald-600"},Ae={class:"grid grid-cols-3 gap-3"},Le={class:"modal-action"},Oe=vt({__name:"accounts",setup(Pe){const{webApi:T,consoleApi:g}=_t(),{success:U,error:y,warn:nt}=ht(),ot={1:"超管",2:"管理员",3:"品牌商",4:"运营",5:"渠道商"},at={1:"badge-error",2:"badge-primary",3:"badge-warning",4:"badge-info",5:"badge-accent"},I=b("list"),N=b([]),j=b([]),J=V(()=>[...new Set(j.value.map(l=>l.app_name||l.name).filter(Boolean))].sort()),D=b(!1),E=b(!1),k=b(0),n=H({username:"",password:"",identity:2,enabled:"1",remark:"",brandid:0,channelid:""}),$=V(()=>st[n.identity]??null),it=V(()=>$.value??gt),dt=V(()=>{const l=$.value;return l?lt.map(t=>({...t,items:t.items.filter(s=>l.includes(s.id))})).filter(t=>t.items.length>0):lt}),K=b([]),G=V(()=>n.brandid?K.value.filter(l=>l.brandid===n.brandid):[]),i=H({access:[],apps:[],regions:[],products:[]}),Q=b([]),h=b([]),B=b(!1);function v(l){return(l||"").split(",").map(t=>t.trim()).filter(t=>t)}function M(l){return l.join(",")}function W(l){const t=[];return l.apps&&t.push("应用:"+v(l.apps).length),l.regions&&t.push("区域:"+v(l.regions).length),l.products&&t.push("产品:"+v(l.products).length),l.access&&t.push("页面:"+v(l.access).length),t}async function A(){D.value=!0;try{try{j.value=await g("apps/list",{})??[]}catch{j.value=[]}const l=await g("accounts/list",{});N.value=l??[]}catch(l){y(l?.message??"获取账号列表失败"),N.value=[]}finally{D.value=!1}}async function ut(){B.value=!0,h.value=[];try{const[l,t,s]=await Promise.all([T("getbrands",{}),T("getproducts",{}),T("getchannels",{status:-1})]),d=l?.brands??[];Q.value=d,K.value=s?.channels??[];const C=t?.products??[],tt={};d.forEach(p=>{tt[p.id]=p.brand||"品牌商#"+p.id});const L={};C.forEach(p=>{const O=String(p.brandid||0);(L[O]=L[O]||[]).push(p)});const xt=Object.keys(L).sort((p,O)=>(parseInt(p)||0)-(parseInt(O)||0));h.value=xt.map(p=>({fid:p,label:tt[p]||(parseInt(p)?"品牌商#"+p:"未分组"),products:L[p]??[]}))}catch{h.value=[]}finally{B.value=!1}}function X(l){k.value=l?l.id:0,n.username=l&&l.username||"",n.password="",n.identity=l?l.identity:2,n.enabled=l&&!l.enabled?"0":"1",n.remark=l&&l.remark||"",n.brandid=l&&Number(l.brandid)||0,n.channelid=l&&l.channelid||"",i.access=v(l?.access),n.identity===2&&!i.access.length&&(i.access=q.slice()),i.apps=v(l?.apps),i.regions=v(l?.regions),i.products=v(l?.products),ut(),I.value="form"}ft(()=>n.identity,l=>{l===2&&i.access.length===0&&(i.access=q.slice());const t=st[l];t&&(i.access=i.access.filter(s=>t.includes(s)))});function F(){I.value="list",A()}async function rt(){const l=n.identity,t={identity:l,enabled:n.enabled==="1",remark:n.remark.trim(),access:"",apps:"",regions:"",products:""};if(l!==1&&(t.access=M(i.access)),(l===3||l===4)&&(t.apps=M(i.apps),t.regions=M(i.regions),t.products=M(i.products)),t.brandid=0,t.channelid="",l===3||l===5){if(!n.brandid){y("请选择所属品牌商");return}if(t.brandid=Number(n.brandid),l===5){if(!n.channelid){y("请选择所属渠道商");return}t.channelid=n.channelid}}E.value=!0;try{if(k.value)t.id=k.value,await g("accounts/update",t);else{if(t.username=n.username.trim(),t.password=n.password,!t.username||!t.password){y("用户名和密码必填"),E.value=!1;return}await g("accounts/add",t)}U("已保存"),F()}catch(s){y(s?.message??"保存失败")}finally{E.value=!1}}async function ct(l,t){const s=window.prompt("为账号【"+t+"】设置新密码:");if(s)try{await g("accounts/resetpwd",{id:l,password:s}),U("密码已重置")}catch(d){y(d?.message??"失败")}}function pt(l,t){window.confirm("确认删除账号【"+t+"】?该操作不可恢复。")&&g("accounts/del",{id:l}).then(()=>{U("已删除"),A()}).catch(s=>y(s?.message??"失败"))}const z=b(null),Y=b(0),c=H({name:"",cur:"",vipday:0,trademin:0,meetmin:0});function mt(l){Y.value=l.id,c.name=l.username||"#"+l.id,c.cur="VIP"+(l.balance_vipday||0)+"天 · 翻译"+(l.balance_trademin||0)+"分 · 会议"+(l.balance_meetmin||0)+"分",c.vipday=0,c.trademin=0,c.meetmin=0,z.value?.showModal()}function Z(){z.value?.close()}async function bt(){const l=Number(c.vipday)||0,t=Number(c.trademin)||0,s=Number(c.meetmin)||0;if(!l&&!t&&!s){nt("请至少填写一项");return}try{await g("accounts/topup",{account_id:Y.value,vipday:l,trademin:t,meetmin:s}),U("余额已更新"),Z(),A()}catch(d){y(d?.message??"操作失败")}}return yt(A),(l,t)=>(a(),o("div",null,[r(e("div",null,[e("div",St,[t[24]||(t[24]=e("div",null,[e("h2",{class:"text-lg font-bold text-slate-700"},"后台账号"),e("p",{class:"text-xs text-slate-400 mt-0.5"},"超管 / 管理员 / 代理 / 运营。代理·运营可绑定应用·区域·产品,登录后仪表盘按绑定限制。")],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=s=>X())},"+ 新建账号")]),e("div",Vt,[e("table",Ut,[t[27]||(t[27]=e("thead",null,[e("tr",{class:"text-slate-500"},[e("th",null,"ID"),e("th",null,"用户名"),e("th",null,"角色"),e("th",null,"状态"),e("th",null,"绑定作用域"),e("th",null,"备注"),e("th",{class:"text-right"},"操作")])],-1)),e("tbody",null,[D.value?(a(),o("tr",It,[...t[25]||(t[25]=[e("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"加载中...",-1)])])):N.value.length?S("",!0):(a(),o("tr",Nt,[...t[26]||(t[26]=[e("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无账号(引导超管不在此列)",-1)])])),(a(!0),o(x,null,f(N.value,s=>(a(),o("tr",{key:s.id},[e("td",Et,u(s.id),1),e("td",$t,u(s.username||""),1),e("td",null,[e("span",{class:kt(["badge badge-sm",at[s.identity]||""])},u(ot[s.identity]||s.identity),3)]),e("td",null,[s.enabled?(a(),o("span",Mt,"启用")):(a(),o("span",At,"停用"))]),e("td",null,[s.identity===3||s.identity===4?(a(),o(x,{key:0},[W(s).length?(a(),o("span",Lt,u(W(s).join(" · ")),1)):(a(),o("span",Ot,"未绑定(不限)"))],64)):s.identity===2?(a(),o(x,{key:1},[s.access?(a(),o("span",Pt,"菜单:"+u(v(s.access).length),1)):(a(),o("span",Rt,"默认(除SaaS/系统管理)"))],64)):(a(),o("span",Tt,"全部权限")),s.identity===3?(a(),o("div",jt," 余额 VIP"+u(s.balance_vipday||0)+"天 · 翻译"+u(s.balance_trademin||0)+"分 · 会议"+u(s.balance_meetmin||0)+"分 ",1)):S("",!0)]),e("td",Dt,u(s.remark||""),1),e("td",null,[e("div",Gt,[s.identity===3?(a(),o("button",{key:0,class:"btn btn-ghost btn-xs text-emerald-600",onClick:d=>mt(s)},"充值",8,Bt)):S("",!0),e("button",{class:"btn btn-ghost btn-xs",onClick:d=>X(s)},"编辑",8,Ft),e("button",{class:"btn btn-ghost btn-xs text-amber-600",onClick:d=>ct(s.id,s.username)},"改密",8,zt),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:d=>pt(s.id,s.username)},"删除",8,qt)])])]))),128))])])])],512),[[w,I.value==="list"]]),r(e("div",null,[e("div",Ht,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[1]||(t[1]=s=>F())},"← 返回列表"),e("h2",Jt,u(k.value?"编辑账号 #"+k.value:"新建账号"),1)]),e("div",Kt,[e("div",Qt,[e("div",null,[t[28]||(t[28]=e("label",{class:"text-xs text-slate-500"},"用户名",-1)),r(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>n.username=s),disabled:!!k.value,class:"input input-bordered input-sm w-full",placeholder:"登录用户名"},null,8,Wt),[[_,n.username]])]),r(e("div",null,[t[29]||(t[29]=e("label",{class:"text-xs text-slate-500"},"密码",-1)),r(e("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>n.password=s),type:"password",class:"input input-bordered input-sm w-full",placeholder:"登录密码"},null,512),[[_,n.password]])],512),[[w,!k.value]]),e("div",null,[t[31]||(t[31]=e("label",{class:"text-xs text-slate-500"},"角色",-1)),r(e("select",{"onUpdate:modelValue":t[4]||(t[4]=s=>n.identity=s),class:"select select-bordered select-sm w-full"},[...t[30]||(t[30]=[e("option",{value:2},"管理员(默认除 SaaS/系统管理外全部)",-1),e("option",{value:3},"品牌商(绑定品牌商,见名下全部渠道商)",-1),e("option",{value:5},"渠道商(绑定单个渠道商,只见自己数据)",-1),e("option",{value:4},"运营(内部,按绑定限制)",-1),e("option",{value:1},"超管(全部权限)",-1)])],512),[[P,n.identity,void 0,{number:!0}]])]),e("div",null,[t[33]||(t[33]=e("label",{class:"text-xs text-slate-500"},"状态",-1)),r(e("select",{"onUpdate:modelValue":t[5]||(t[5]=s=>n.enabled=s),class:"select select-bordered select-sm w-full"},[...t[32]||(t[32]=[e("option",{value:"1"},"启用",-1),e("option",{value:"0"},"停用",-1)])],512),[[P,n.enabled]])]),e("div",Xt,[t[34]||(t[34]=e("label",{class:"text-xs text-slate-500"},"备注",-1)),r(e("input",{"onUpdate:modelValue":t[6]||(t[6]=s=>n.remark=s),class:"input input-bordered input-sm w-full",placeholder:"可选"},null,512),[[_,n.remark]])])]),r(e("div",Yt,[e("div",Zt,[t[35]||(t[35]=e("div",{class:"text-sm font-semibold text-slate-600"},"菜单权限",-1)),e("div",te,[$.value?S("",!0):(a(),o("button",{key:0,type:"button",class:"btn btn-ghost btn-xs",onClick:t[7]||(t[7]=s=>i.access=et(q).slice())},"管理员默认")),e("button",{type:"button",class:"btn btn-ghost btn-xs",onClick:t[8]||(t[8]=s=>i.access=it.value.slice())},"全选"),e("button",{type:"button",class:"btn btn-ghost btn-xs",onClick:t[9]||(t[9]=s=>i.access=[])},"清空")])]),$.value?(a(),o("p",ee,"该角色为外部账号,可见页面固定在下列范围内(留空即全部开放这些页面)。")):(a(),o("p",se,"管理员默认开放除「SaaS 管理 / 系统管理」以外的全部菜单(权限留空时按默认生效);代理/运营需显式勾选。")),(a(!0),o(x,null,f(dt.value,s=>(a(),o("div",{key:s.label,class:"mb-2.5"},[e("div",le,[m(u(s.label),1),s.restricted?(a(),o("span",ne,"(管理员默认不开放)")):S("",!0)]),e("div",oe,[(a(!0),o(x,null,f(s.items,d=>(a(),o("label",{key:d.id,class:"chk"},[r(e("input",{"onUpdate:modelValue":t[10]||(t[10]=C=>i.access=C),type:"checkbox",value:d.id},null,8,ae),[[R,i.access]]),m(u(d.label),1)]))),128))])]))),128))],512),[[w,n.identity!==1]]),r(e("div",ie,[t[39]||(t[39]=e("div",{class:"text-sm font-semibold text-slate-600 mb-2"},[m(" 归属绑定 "),e("span",{class:"text-xs text-slate-400 font-normal"},"(品牌商账号只绑品牌商;渠道商账号两者都要绑)")],-1)),e("div",de,[e("div",null,[t[37]||(t[37]=e("label",{class:"text-xs text-slate-500"},"所属品牌商 *",-1)),r(e("select",{"onUpdate:modelValue":t[11]||(t[11]=s=>n.brandid=s),class:"select select-bordered select-sm w-full",onChange:t[12]||(t[12]=s=>n.channelid="")},[t[36]||(t[36]=e("option",{value:0},"请选择品牌商",-1)),(a(!0),o(x,null,f(Q.value,s=>(a(),o("option",{key:s.id,value:s.id},u(s.brand),9,ue))),128))],544),[[P,n.brandid,void 0,{number:!0}]])]),r(e("div",null,[t[38]||(t[38]=e("label",{class:"text-xs text-slate-500"},"所属渠道商 *",-1)),r(e("select",{"onUpdate:modelValue":t[13]||(t[13]=s=>n.channelid=s),class:"select select-bordered select-sm w-full",disabled:!G.value.length},[e("option",ce,u(n.brandid?G.value.length?"请选择渠道商":"该品牌商暂无渠道商":"请先选择品牌商"),1),(a(!0),o(x,null,f(G.value,s=>(a(),o("option",{key:s.id,value:s.id},u(s.name)+" ("+u(s.id)+")",9,pe))),128))],8,re),[[P,n.channelid]])],512),[[w,n.identity===5]])]),t[40]||(t[40]=e("p",{class:"text-xs text-slate-400 mt-2"}," 数据隔离由后端强制:品牌商账号只能看到本品牌商及其名下渠道商的数据,渠道商账号只能看到自己渠道的数据。 ",-1))],512),[[w,n.identity===3||n.identity===5]]),r(e("div",me,[t[44]||(t[44]=e("div",{class:"text-sm font-semibold text-slate-600 mb-2"},[m("作用域绑定 "),e("span",{class:"text-xs text-slate-400 font-normal"},"(代理/运营生效;限制仪表盘数据范围)")],-1)),e("div",be,[t[41]||(t[41]=e("div",{class:"text-xs text-slate-500 mb-1.5"},[m("绑定应用 "),e("span",{class:"text-slate-300"},"(仪表盘只显示这些应用数据;不勾=不限)")],-1)),e("div",xe,[J.value.length?(a(!0),o(x,{key:0},f(J.value,s=>(a(),o("label",{key:s,class:"chk"},[r(e("input",{"onUpdate:modelValue":t[14]||(t[14]=d=>i.apps=d),type:"checkbox",value:s},null,8,ve),[[R,i.apps]]),m(u(s),1)]))),128)):(a(),o("span",fe,"无注册应用"))])]),e("div",ye,[t[42]||(t[42]=e("div",{class:"text-xs text-slate-500 mb-1.5"},[m("绑定区域 "),e("span",{class:"text-slate-300"},"(不勾=不限)")],-1)),e("div",ge,[(a(!0),o(x,null,f(et(Ct),s=>(a(),o("label",{key:s.value,class:"chk"},[r(e("input",{"onUpdate:modelValue":t[15]||(t[15]=d=>i.regions=d),type:"checkbox",value:s.value},null,8,ke),[[R,i.regions]]),m(u(s.label),1)]))),128))])]),e("div",null,[t[43]||(t[43]=e("div",{class:"text-xs text-slate-500 mb-1.5"},[m("绑定产品 "),e("span",{class:"text-slate-300"},"(按厂家分组;仪表盘只显示这些产品数据;不勾=不限)")],-1)),e("div",we,[B.value?(a(),o("span",_e,"加载产品中...")):h.value.length?(a(!0),o(x,{key:2},f(h.value,s=>(a(),o("div",{key:s.fid,class:"mb-2 last:mb-0"},[e("div",Ce,"🏭 "+u(s.label),1),e("div",Se,[(a(!0),o(x,null,f(s.products,d=>(a(),o("label",{key:d.id,class:"chk"},[r(e("input",{"onUpdate:modelValue":t[16]||(t[16]=C=>i.products=C),type:"checkbox",value:String(d.id)},null,8,Ve),[[R,i.products]]),m(u((d.devicename||"产品")+" #"+d.id),1)]))),128))])]))),128)):(a(),o("span",he,"无产品"))])])],512),[[w,n.identity===3||n.identity===4]]),e("div",Ue,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[17]||(t[17]=s=>F())},"取消"),e("button",{class:"btn btn-primary btn-sm text-white",disabled:E.value,onClick:t[18]||(t[18]=s=>rt())},"保存",8,Ie)])])],512),[[w,I.value==="form"]]),e("dialog",{ref_key:"topupModal",ref:z,class:"modal"},[e("div",Ne,[t[50]||(t[50]=e("h3",{class:"font-bold text-lg mb-1"},"充值 / 调整资源点",-1)),e("p",Ee,[t[45]||(t[45]=m("代理:",-1)),e("span",$e,u(c.name),1),t[46]||(t[46]=m("。填增量(可填负数下调),当前余额:",-1)),e("span",Me,u(c.cur),1)]),e("div",Ae,[e("div",null,[t[47]||(t[47]=e("label",{class:"text-xs text-slate-500"},"VIP天数",-1)),r(e("input",{"onUpdate:modelValue":t[19]||(t[19]=s=>c.vipday=s),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,c.vipday,void 0,{number:!0}]])]),e("div",null,[t[48]||(t[48]=e("label",{class:"text-xs text-slate-500"},"翻译分钟",-1)),r(e("input",{"onUpdate:modelValue":t[20]||(t[20]=s=>c.trademin=s),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,c.trademin,void 0,{number:!0}]])]),e("div",null,[t[49]||(t[49]=e("label",{class:"text-xs text-slate-500"},"会议分钟",-1)),r(e("input",{"onUpdate:modelValue":t[21]||(t[21]=s=>c.meetmin=s),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,c.meetmin,void 0,{number:!0}]])])]),e("div",Le,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[22]||(t[22]=s=>Z())},"取消"),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[23]||(t[23]=s=>bt())},"确认")])]),t[51]||(t[51]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512)]))}}),Ge=wt(Oe,[["__scopeId","data-v-a2832f1b"]]);export{Ge as default}; diff --git a/apps/admin/.output/public/_nuxt/B8hrjpgL.js b/apps/admin/.output/public/_nuxt/BSXoR6Yx.js similarity index 98% rename from apps/admin/.output/public/_nuxt/B8hrjpgL.js rename to apps/admin/.output/public/_nuxt/BSXoR6Yx.js index eb40608e..ef9a9bf7 100644 --- a/apps/admin/.output/public/_nuxt/B8hrjpgL.js +++ b/apps/admin/.output/public/_nuxt/BSXoR6Yx.js @@ -1 +1 @@ -import{g as P,C as R,c as r,q as n,H as V,a as t,l as B,F as H,r as I,t as i,p as z,v as a,x as L,y as b,z as E,A as O,o as u,n as T,d as q}from"./DSy_gLdM.js";import{u as G}from"./NtXZuCUg.js";import{u as K}from"./EeX3zgoF.js";const Y={class:"flex items-center justify-between mb-5"},J={class:"bg-white rounded-xl shadow-sm border border-slate-100"},Q={class:"overflow-x-auto"},W={class:"table table-zebra text-sm"},X={key:0},Z={key:1},tt={class:"font-mono"},st={class:"font-medium"},et={class:"font-mono text-xs text-slate-500"},lt={class:"text-xs text-slate-500"},ot={key:0,class:"text-green-600"},nt={key:1,class:"text-slate-400"},at={class:"flex gap-1"},dt=["onClick"],it=["onClick"],rt={class:"flex items-center gap-3 mb-5"},ut={class:"text-lg font-semibold text-slate-800"},pt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-3xl"},mt={class:"grid grid-cols-2 gap-4"},bt={class:"form-control"},ft={class:"form-control"},ct={class:"grid grid-cols-3 gap-4"},xt={class:"form-control col-span-2"},vt={class:"form-control"},gt={class:"form-control mt-4"},yt={class:"form-control mt-4"},_t={class:"grid grid-cols-2 gap-4"},kt={class:"form-control"},wt={class:"form-control"},ht={class:"form-control"},St={class:"form-control"},Vt={class:"grid grid-cols-2 gap-4"},Ct={class:"form-control"},Ut={class:"form-control"},Ht={class:"grid grid-cols-2 gap-4 mt-4"},It={class:"form-control"},Et={class:"form-control"},Tt={class:"form-control mt-4"},Dt={class:"flex items-center gap-2 mt-4"},Nt={class:"flex items-center gap-2 cursor-pointer"},$t={class:"mt-4 text-sm space-y-0.5"},At={class:"flex gap-3 mt-6"},jt=["disabled"],Ft=["disabled"],zt=P({__name:"environments",setup(Mt){const{consoleApi:c}=G(),{success:_,error:m}=K(),x=b("list"),v=b([]),k=b(!1),g=b(!1),f=b(!1),y=b(!1),d=E({show:!1,ok:!1,ssh_ok:!1,ssh_msg:"",etcd_ok:!1,etcd_msg:"",redis_ok:!1,redis_msg:"",nats_ok:!1,nats_msg:""}),D=O(()=>[{key:"ssh",label:"SSH 部署机",ok:d.ssh_ok,msg:d.ssh_msg},{key:"etcd",label:"ETCD",ok:d.etcd_ok,msg:d.etcd_msg},{key:"redis",label:"Redis",ok:d.redis_ok,msg:d.redis_msg},{key:"nats",label:"NATS",ok:d.nats_ok,msg:d.nats_msg}]);function w(){return{id:0,name:"",code:"",remark:"",enabled:!0,ssh_host:"",ssh_port:22,ssh_user:"root",ssh_private_key:"",registry:"",registry_user:"",registry_pass:"",docker_network:"1panel-network",etcd_servers:"",redis_addr:"",redis_pwd:"",nats_url:""}}const l=E(w());function C(o){Object.assign(l,w(),o)}function N(o){return o.ssh_host?`${o.ssh_user||"root"}@${o.ssh_host}:${o.ssh_port||22}`:"-"}function $(o){return o.registry||"-"}async function h(){k.value=!0;try{const o=await c("envs/list",{});v.value=o??[]}catch(o){m(o?.message??"获取环境列表失败"),v.value=[]}finally{k.value=!1}}function p(){f.value=!1,d.show=!1}function S(){x.value="list",h()}function U(o){o?(g.value=!0,C(o)):(g.value=!1,C(w())),p(),x.value="form"}async function A(){if(!l.ssh_host.trim()){m("请先填 SSH 主机");return}y.value=!0;try{const o=await c("envs/test",{...l});Object.assign(d,o,{show:!0}),f.value=!!o.ok,f.value?_("SSH 握手成功,可以保存"):m("SSH 未通过,请检查主机/私钥/用户")}catch(o){m(o?.message??"测试失败")}finally{y.value=!1}}async function j(){if(!f.value){m("请先「测试连接」通过再保存");return}const o={...l};let s="envs/add";g.value&&l.id?(o.id=Number(l.id),s="envs/update"):delete o.id;try{await c(s,o),_("保存成功"),S()}catch(e){m(e?.message??"失败")}}function F(o){window.confirm(`删除环境 #${o} ?(该环境下若有应用关联将被拒绝)`)&&c("envs/del",{id:o}).then(()=>{_("已删除"),h()}).catch(s=>m(s?.message??"失败"))}return R(h),(o,s)=>(u(),r("div",null,[n(t("div",null,[t("div",Y,[s[19]||(s[19]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"环境节点(部署服务器)"),t("p",{class:"text-sm text-slate-400 mt-1"},"部署服务器节点(如 上海 / 日本 / 新加坡):远端 IP、SSH 登录账号与私钥、私有镜像仓库、区域共享基础设施。应用管理里「部署到目标环境」从这里选择、两边对应;下一期即可从页面直接更新服务/部署应用。密钥加密存储,不回显明文。")],-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:s[0]||(s[0]=e=>U())},"+ 新增节点")]),t("div",J,[t("div",Q,[t("table",W,[s[22]||(s[22]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"名称"),t("th",null,"区域码"),t("th",null,"SSH 目标"),t("th",null,"镜像仓库"),t("th",null,"启用"),t("th",null,"操作")])],-1)),t("tbody",null,[k.value?(u(),r("tr",X,[...s[20]||(s[20]=[t("td",{colspan:"7",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):v.value.length?B("",!0):(u(),r("tr",Z,[...s[21]||(s[21]=[t("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无环境",-1)])])),(u(!0),r(H,null,I(v.value,e=>(u(),r("tr",{key:e.id},[t("td",tt,i(e.id),1),t("td",st,i(e.name||""),1),t("td",null,i(e.code||""),1),t("td",et,i(N(e)),1),t("td",lt,i($(e)),1),t("td",null,[e.enabled?(u(),r("span",ot,"是")):(u(),r("span",nt,"否"))]),t("td",null,[t("div",at,[t("button",{class:"btn btn-ghost btn-xs",onClick:M=>U(e)},"编辑",8,dt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:M=>F(e.id)},"删除",8,it)])])]))),128))])])])])],512),[[V,x.value==="list"]]),n(t("div",null,[t("div",rt,[t("button",{class:"btn btn-ghost btn-sm",onClick:s[1]||(s[1]=e=>S())},"← 返回"),t("h2",ut,i(g.value?"编辑节点":"新增节点"),1)]),t("div",pt,[t("form",{onSubmit:z(j,["prevent"])},[t("div",mt,[t("div",bt,[s[23]||(s[23]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"名称 *")],-1)),n(t("input",{"onUpdate:modelValue":s[2]||(s[2]=e=>l.name=e),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 上海生产"},null,512),[[a,l.name]])]),t("div",ft,[s[24]||(s[24]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"区域码")],-1)),n(t("input",{"onUpdate:modelValue":s[3]||(s[3]=e=>l.code=e),type:"text",class:"input input-bordered w-full",list:"env-code-list",placeholder:"shanghai / japan / singapore"},null,512),[[a,l.code]]),s[25]||(s[25]=t("datalist",{id:"env-code-list"},[t("option",{value:"shanghai"}),t("option",{value:"japan"}),t("option",{value:"singapore"})],-1))])]),s[41]||(s[41]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"SSH 部署目标",-1)),t("div",ct,[t("div",xt,[s[26]||(s[26]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 主机")],-1)),n(t("input",{"onUpdate:modelValue":s[4]||(s[4]=e=>l.ssh_host=e),type:"text",class:"input input-bordered w-full",placeholder:"139.224.212.237",onInput:p},null,544),[[a,l.ssh_host]])]),t("div",vt,[s[27]||(s[27]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"端口")],-1)),n(t("input",{"onUpdate:modelValue":s[5]||(s[5]=e=>l.ssh_port=e),type:"number",class:"input input-bordered w-full",placeholder:"22",onInput:p},null,544),[[a,l.ssh_port,void 0,{number:!0}]])])]),t("div",gt,[s[28]||(s[28]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 用户")],-1)),n(t("input",{"onUpdate:modelValue":s[6]||(s[6]=e=>l.ssh_user=e),type:"text",class:"input input-bordered w-full",placeholder:"root",onInput:p},null,544),[[a,l.ssh_user]])]),t("div",yt,[s[29]||(s[29]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 私钥 (PEM)")],-1)),n(t("textarea",{"onUpdate:modelValue":s[7]||(s[7]=e=>l.ssh_private_key=e),class:"textarea textarea-bordered w-full font-mono text-xs h-28",placeholder:"-----BEGIN OPENSSH PRIVATE KEY-----",onInput:p},null,544),[[a,l.ssh_private_key]]),s[30]||(s[30]=t("span",{class:"text-xs text-slate-400 mt-1"},"加密存储;编辑时显示 [encrypted] 表示不改,如需更换直接粘贴新私钥。",-1))]),s[42]||(s[42]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"私有镜像仓库 + Docker 网络",-1)),t("div",_t,[t("div",kt,[s[31]||(s[31]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库地址")],-1)),n(t("input",{"onUpdate:modelValue":s[8]||(s[8]=e=>l.registry=e),type:"text",class:"input input-bordered w-full",placeholder:"docker-registry.ideapsound.com"},null,512),[[a,l.registry]])]),t("div",wt,[s[32]||(s[32]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Docker 网络")],-1)),n(t("input",{"onUpdate:modelValue":s[9]||(s[9]=e=>l.docker_network=e),type:"text",class:"input input-bordered w-full",placeholder:"1panel-network"},null,512),[[a,l.docker_network]])]),t("div",ht,[s[33]||(s[33]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库账号")],-1)),n(t("input",{"onUpdate:modelValue":s[10]||(s[10]=e=>l.registry_user=e),type:"text",class:"input input-bordered w-full",autocomplete:"off"},null,512),[[a,l.registry_user]])]),t("div",St,[s[34]||(s[34]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库密码")],-1)),n(t("input",{"onUpdate:modelValue":s[11]||(s[11]=e=>l.registry_pass=e),type:"password",class:"input input-bordered w-full",autocomplete:"new-password",placeholder:"[encrypted]"},null,512),[[a,l.registry_pass]])])]),s[43]||(s[43]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"节点共享集群服务",-1)),s[44]||(s[44]=t("p",{class:"text-xs text-slate-400 -mt-2 mb-2"},"该服务器上各应用共用的地址。各应用自己的部署目录、业务库 DSN、镜像、redis 库号等,在「应用管理 → 部署到目标环境」里按应用填。",-1)),t("div",Vt,[t("div",Ct,[s[35]||(s[35]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"ETCD")],-1)),n(t("input",{"onUpdate:modelValue":s[12]||(s[12]=e=>l.etcd_servers=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"etcd:2379",onInput:p},null,544),[[a,l.etcd_servers]])]),t("div",Ut,[s[36]||(s[36]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"NATS")],-1)),n(t("input",{"onUpdate:modelValue":s[13]||(s[13]=e=>l.nats_url=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"nats://nats:4222",onInput:p},null,544),[[a,l.nats_url]])])]),t("div",Ht,[t("div",It,[s[37]||(s[37]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Redis 地址")],-1)),n(t("input",{"onUpdate:modelValue":s[14]||(s[14]=e=>l.redis_addr=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"redis:6379",onInput:p},null,544),[[a,l.redis_addr]])]),t("div",Et,[s[38]||(s[38]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Redis 密码")],-1)),n(t("input",{"onUpdate:modelValue":s[15]||(s[15]=e=>l.redis_pwd=e),type:"password",class:"input input-bordered w-full",autocomplete:"new-password",placeholder:"[encrypted]"},null,512),[[a,l.redis_pwd]])])]),t("div",Tt,[s[39]||(s[39]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"备注")],-1)),n(t("input",{"onUpdate:modelValue":s[16]||(s[16]=e=>l.remark=e),type:"text",class:"input input-bordered w-full"},null,512),[[a,l.remark]])]),t("div",Dt,[t("label",Nt,[n(t("input",{"onUpdate:modelValue":s[17]||(s[17]=e=>l.enabled=e),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[L,l.enabled]]),s[40]||(s[40]=t("span",{class:"text-sm"},"启用",-1))])]),n(t("div",$t,[(u(!0),r(H,null,I(D.value,e=>(u(),r("div",{key:e.key,class:T(e.ok?"text-green-700":"text-red-600")},[t("span",{class:T(e.ok?"text-green-600":"text-red-500")},i(e.ok?"✓":"✗"),3),q(" "+i(e.label)+":"+i(e.msg),1)],2))),128))],512),[[V,d.show]]),t("div",At,[t("button",{type:"button",class:"btn btn-ghost",onClick:s[18]||(s[18]=e=>S())},"取消"),t("button",{type:"button",class:"btn btn-outline",disabled:y.value,onClick:A},i(y.value?"测试中...":"测试连接"),9,jt),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:!f.value},"保存",8,Ft)]),s[45]||(s[45]=t("p",{class:"text-xs text-slate-400 mt-2"},"需先「测试连接」(SSH 握手成功即可保存;基础设施逐项仅作提示)。",-1))],32)])],512),[[V,x.value==="form"]])]))}});export{zt as default}; +import{g as P,C as R,c as r,q as n,H as V,a as t,l as B,F as H,r as I,t as i,p as z,v as a,x as L,y as b,z as E,A as O,o as u,n as T,d as q}from"./6O01ZZML.js";import{u as G}from"./BgasD__e.js";import{u as K}from"./xsgK-Nup.js";const Y={class:"flex items-center justify-between mb-5"},J={class:"bg-white rounded-xl shadow-sm border border-slate-100"},Q={class:"overflow-x-auto"},W={class:"table table-zebra text-sm"},X={key:0},Z={key:1},tt={class:"font-mono"},st={class:"font-medium"},et={class:"font-mono text-xs text-slate-500"},lt={class:"text-xs text-slate-500"},ot={key:0,class:"text-green-600"},nt={key:1,class:"text-slate-400"},at={class:"flex gap-1"},dt=["onClick"],it=["onClick"],rt={class:"flex items-center gap-3 mb-5"},ut={class:"text-lg font-semibold text-slate-800"},pt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-3xl"},mt={class:"grid grid-cols-2 gap-4"},bt={class:"form-control"},ft={class:"form-control"},ct={class:"grid grid-cols-3 gap-4"},xt={class:"form-control col-span-2"},vt={class:"form-control"},gt={class:"form-control mt-4"},yt={class:"form-control mt-4"},_t={class:"grid grid-cols-2 gap-4"},kt={class:"form-control"},wt={class:"form-control"},ht={class:"form-control"},St={class:"form-control"},Vt={class:"grid grid-cols-2 gap-4"},Ct={class:"form-control"},Ut={class:"form-control"},Ht={class:"grid grid-cols-2 gap-4 mt-4"},It={class:"form-control"},Et={class:"form-control"},Tt={class:"form-control mt-4"},Dt={class:"flex items-center gap-2 mt-4"},Nt={class:"flex items-center gap-2 cursor-pointer"},$t={class:"mt-4 text-sm space-y-0.5"},At={class:"flex gap-3 mt-6"},jt=["disabled"],Ft=["disabled"],zt=P({__name:"environments",setup(Mt){const{consoleApi:c}=G(),{success:_,error:m}=K(),x=b("list"),v=b([]),k=b(!1),g=b(!1),f=b(!1),y=b(!1),d=E({show:!1,ok:!1,ssh_ok:!1,ssh_msg:"",etcd_ok:!1,etcd_msg:"",redis_ok:!1,redis_msg:"",nats_ok:!1,nats_msg:""}),D=O(()=>[{key:"ssh",label:"SSH 部署机",ok:d.ssh_ok,msg:d.ssh_msg},{key:"etcd",label:"ETCD",ok:d.etcd_ok,msg:d.etcd_msg},{key:"redis",label:"Redis",ok:d.redis_ok,msg:d.redis_msg},{key:"nats",label:"NATS",ok:d.nats_ok,msg:d.nats_msg}]);function w(){return{id:0,name:"",code:"",remark:"",enabled:!0,ssh_host:"",ssh_port:22,ssh_user:"root",ssh_private_key:"",registry:"",registry_user:"",registry_pass:"",docker_network:"1panel-network",etcd_servers:"",redis_addr:"",redis_pwd:"",nats_url:""}}const l=E(w());function C(o){Object.assign(l,w(),o)}function N(o){return o.ssh_host?`${o.ssh_user||"root"}@${o.ssh_host}:${o.ssh_port||22}`:"-"}function $(o){return o.registry||"-"}async function h(){k.value=!0;try{const o=await c("envs/list",{});v.value=o??[]}catch(o){m(o?.message??"获取环境列表失败"),v.value=[]}finally{k.value=!1}}function p(){f.value=!1,d.show=!1}function S(){x.value="list",h()}function U(o){o?(g.value=!0,C(o)):(g.value=!1,C(w())),p(),x.value="form"}async function A(){if(!l.ssh_host.trim()){m("请先填 SSH 主机");return}y.value=!0;try{const o=await c("envs/test",{...l});Object.assign(d,o,{show:!0}),f.value=!!o.ok,f.value?_("SSH 握手成功,可以保存"):m("SSH 未通过,请检查主机/私钥/用户")}catch(o){m(o?.message??"测试失败")}finally{y.value=!1}}async function j(){if(!f.value){m("请先「测试连接」通过再保存");return}const o={...l};let s="envs/add";g.value&&l.id?(o.id=Number(l.id),s="envs/update"):delete o.id;try{await c(s,o),_("保存成功"),S()}catch(e){m(e?.message??"失败")}}function F(o){window.confirm(`删除环境 #${o} ?(该环境下若有应用关联将被拒绝)`)&&c("envs/del",{id:o}).then(()=>{_("已删除"),h()}).catch(s=>m(s?.message??"失败"))}return R(h),(o,s)=>(u(),r("div",null,[n(t("div",null,[t("div",Y,[s[19]||(s[19]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"环境节点(部署服务器)"),t("p",{class:"text-sm text-slate-400 mt-1"},"部署服务器节点(如 上海 / 日本 / 新加坡):远端 IP、SSH 登录账号与私钥、私有镜像仓库、区域共享基础设施。应用管理里「部署到目标环境」从这里选择、两边对应;下一期即可从页面直接更新服务/部署应用。密钥加密存储,不回显明文。")],-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:s[0]||(s[0]=e=>U())},"+ 新增节点")]),t("div",J,[t("div",Q,[t("table",W,[s[22]||(s[22]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"名称"),t("th",null,"区域码"),t("th",null,"SSH 目标"),t("th",null,"镜像仓库"),t("th",null,"启用"),t("th",null,"操作")])],-1)),t("tbody",null,[k.value?(u(),r("tr",X,[...s[20]||(s[20]=[t("td",{colspan:"7",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):v.value.length?B("",!0):(u(),r("tr",Z,[...s[21]||(s[21]=[t("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无环境",-1)])])),(u(!0),r(H,null,I(v.value,e=>(u(),r("tr",{key:e.id},[t("td",tt,i(e.id),1),t("td",st,i(e.name||""),1),t("td",null,i(e.code||""),1),t("td",et,i(N(e)),1),t("td",lt,i($(e)),1),t("td",null,[e.enabled?(u(),r("span",ot,"是")):(u(),r("span",nt,"否"))]),t("td",null,[t("div",at,[t("button",{class:"btn btn-ghost btn-xs",onClick:M=>U(e)},"编辑",8,dt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:M=>F(e.id)},"删除",8,it)])])]))),128))])])])])],512),[[V,x.value==="list"]]),n(t("div",null,[t("div",rt,[t("button",{class:"btn btn-ghost btn-sm",onClick:s[1]||(s[1]=e=>S())},"← 返回"),t("h2",ut,i(g.value?"编辑节点":"新增节点"),1)]),t("div",pt,[t("form",{onSubmit:z(j,["prevent"])},[t("div",mt,[t("div",bt,[s[23]||(s[23]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"名称 *")],-1)),n(t("input",{"onUpdate:modelValue":s[2]||(s[2]=e=>l.name=e),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 上海生产"},null,512),[[a,l.name]])]),t("div",ft,[s[24]||(s[24]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"区域码")],-1)),n(t("input",{"onUpdate:modelValue":s[3]||(s[3]=e=>l.code=e),type:"text",class:"input input-bordered w-full",list:"env-code-list",placeholder:"shanghai / japan / singapore"},null,512),[[a,l.code]]),s[25]||(s[25]=t("datalist",{id:"env-code-list"},[t("option",{value:"shanghai"}),t("option",{value:"japan"}),t("option",{value:"singapore"})],-1))])]),s[41]||(s[41]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"SSH 部署目标",-1)),t("div",ct,[t("div",xt,[s[26]||(s[26]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 主机")],-1)),n(t("input",{"onUpdate:modelValue":s[4]||(s[4]=e=>l.ssh_host=e),type:"text",class:"input input-bordered w-full",placeholder:"139.224.212.237",onInput:p},null,544),[[a,l.ssh_host]])]),t("div",vt,[s[27]||(s[27]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"端口")],-1)),n(t("input",{"onUpdate:modelValue":s[5]||(s[5]=e=>l.ssh_port=e),type:"number",class:"input input-bordered w-full",placeholder:"22",onInput:p},null,544),[[a,l.ssh_port,void 0,{number:!0}]])])]),t("div",gt,[s[28]||(s[28]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 用户")],-1)),n(t("input",{"onUpdate:modelValue":s[6]||(s[6]=e=>l.ssh_user=e),type:"text",class:"input input-bordered w-full",placeholder:"root",onInput:p},null,544),[[a,l.ssh_user]])]),t("div",yt,[s[29]||(s[29]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 私钥 (PEM)")],-1)),n(t("textarea",{"onUpdate:modelValue":s[7]||(s[7]=e=>l.ssh_private_key=e),class:"textarea textarea-bordered w-full font-mono text-xs h-28",placeholder:"-----BEGIN OPENSSH PRIVATE KEY-----",onInput:p},null,544),[[a,l.ssh_private_key]]),s[30]||(s[30]=t("span",{class:"text-xs text-slate-400 mt-1"},"加密存储;编辑时显示 [encrypted] 表示不改,如需更换直接粘贴新私钥。",-1))]),s[42]||(s[42]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"私有镜像仓库 + Docker 网络",-1)),t("div",_t,[t("div",kt,[s[31]||(s[31]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库地址")],-1)),n(t("input",{"onUpdate:modelValue":s[8]||(s[8]=e=>l.registry=e),type:"text",class:"input input-bordered w-full",placeholder:"docker-registry.ideapsound.com"},null,512),[[a,l.registry]])]),t("div",wt,[s[32]||(s[32]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Docker 网络")],-1)),n(t("input",{"onUpdate:modelValue":s[9]||(s[9]=e=>l.docker_network=e),type:"text",class:"input input-bordered w-full",placeholder:"1panel-network"},null,512),[[a,l.docker_network]])]),t("div",ht,[s[33]||(s[33]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库账号")],-1)),n(t("input",{"onUpdate:modelValue":s[10]||(s[10]=e=>l.registry_user=e),type:"text",class:"input input-bordered w-full",autocomplete:"off"},null,512),[[a,l.registry_user]])]),t("div",St,[s[34]||(s[34]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库密码")],-1)),n(t("input",{"onUpdate:modelValue":s[11]||(s[11]=e=>l.registry_pass=e),type:"password",class:"input input-bordered w-full",autocomplete:"new-password",placeholder:"[encrypted]"},null,512),[[a,l.registry_pass]])])]),s[43]||(s[43]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"节点共享集群服务",-1)),s[44]||(s[44]=t("p",{class:"text-xs text-slate-400 -mt-2 mb-2"},"该服务器上各应用共用的地址。各应用自己的部署目录、业务库 DSN、镜像、redis 库号等,在「应用管理 → 部署到目标环境」里按应用填。",-1)),t("div",Vt,[t("div",Ct,[s[35]||(s[35]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"ETCD")],-1)),n(t("input",{"onUpdate:modelValue":s[12]||(s[12]=e=>l.etcd_servers=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"etcd:2379",onInput:p},null,544),[[a,l.etcd_servers]])]),t("div",Ut,[s[36]||(s[36]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"NATS")],-1)),n(t("input",{"onUpdate:modelValue":s[13]||(s[13]=e=>l.nats_url=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"nats://nats:4222",onInput:p},null,544),[[a,l.nats_url]])])]),t("div",Ht,[t("div",It,[s[37]||(s[37]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Redis 地址")],-1)),n(t("input",{"onUpdate:modelValue":s[14]||(s[14]=e=>l.redis_addr=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"redis:6379",onInput:p},null,544),[[a,l.redis_addr]])]),t("div",Et,[s[38]||(s[38]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Redis 密码")],-1)),n(t("input",{"onUpdate:modelValue":s[15]||(s[15]=e=>l.redis_pwd=e),type:"password",class:"input input-bordered w-full",autocomplete:"new-password",placeholder:"[encrypted]"},null,512),[[a,l.redis_pwd]])])]),t("div",Tt,[s[39]||(s[39]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"备注")],-1)),n(t("input",{"onUpdate:modelValue":s[16]||(s[16]=e=>l.remark=e),type:"text",class:"input input-bordered w-full"},null,512),[[a,l.remark]])]),t("div",Dt,[t("label",Nt,[n(t("input",{"onUpdate:modelValue":s[17]||(s[17]=e=>l.enabled=e),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[L,l.enabled]]),s[40]||(s[40]=t("span",{class:"text-sm"},"启用",-1))])]),n(t("div",$t,[(u(!0),r(H,null,I(D.value,e=>(u(),r("div",{key:e.key,class:T(e.ok?"text-green-700":"text-red-600")},[t("span",{class:T(e.ok?"text-green-600":"text-red-500")},i(e.ok?"✓":"✗"),3),q(" "+i(e.label)+":"+i(e.msg),1)],2))),128))],512),[[V,d.show]]),t("div",At,[t("button",{type:"button",class:"btn btn-ghost",onClick:s[18]||(s[18]=e=>S())},"取消"),t("button",{type:"button",class:"btn btn-outline",disabled:y.value,onClick:A},i(y.value?"测试中...":"测试连接"),9,jt),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:!f.value},"保存",8,Ft)]),s[45]||(s[45]=t("p",{class:"text-xs text-slate-400 mt-2"},"需先「测试连接」(SSH 握手成功即可保存;基础设施逐项仅作提示)。",-1))],32)])],512),[[V,x.value==="form"]])]))}});export{zt as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Bad2XFSd.js b/apps/admin/.output/public/_nuxt/BZR1IKC1.js similarity index 99% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Bad2XFSd.js rename to apps/admin/.output/public/_nuxt/BZR1IKC1.js index 6a4f9c5a..97e335a7 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Bad2XFSd.js +++ b/apps/admin/.output/public/_nuxt/BZR1IKC1.js @@ -1 +1 @@ -import{g as Ee,C as Le,c as n,a as s,d,q as S,s as q,F as c,r as C,t as i,l as g,n as h,m as Oe,v as he,x as fe,y as m,z as ke,A as O,o as a,_ as De}from"./DSy_gLdM.js";import{u as Be}from"./NtXZuCUg.js";import{u as je}from"./EeX3zgoF.js";import{L as de}from"./DD3V9C6_.js";const Fe={class:"scopebar"},Ie={class:"flex items-center gap-2"},Te=["value"],ze=["value"],Ge={class:"text-[11px] text-slate-400"},He={key:0,class:"bg-white rounded-xl border border-slate-100 py-16 text-center"},Ke={class:"langsum-head"},Re={class:"langsum-formula"},Xe={key:0,class:"langsum-msg bad"},Pe={key:1,class:"langsum-msg bad"},We={key:2,class:"langsum-langs"},qe=["title"],Je={key:3,class:"langsum-msg"},Qe={key:0,class:"alert alert-warning py-2 text-sm mb-4"},Ye={class:"card"},Ze={class:"card-head"},es={class:"flex gap-2 shrink-0"},ss=["disabled"],ts=["disabled"],ls={class:"probe-bar"},ns=["value"],as={key:0,class:"probe-out"},is={key:1,class:"probe-out bad"},os={key:0,class:"py-10 text-center text-slate-400 text-sm"},ds={class:"min-w-0"},us={class:"svc-prov"},cs={class:"flex flex-wrap gap-1"},rs={key:0,class:"lang"},vs={key:1,class:"text-[11px] text-slate-400"},bs={class:"svc-cost"},_s={key:1,class:"text-slate-300"},ms=["checked","disabled","onChange"],gs={class:"svc-acts"},ps=["disabled","onClick"],hs=["disabled","onClick"],fs=["onClick"],ks=["onClick"],xs={class:"card mt-4"},ys={class:"card-head"},ws={class:"flex gap-2 shrink-0"},Cs=["disabled"],$s=["disabled"],Ns={key:0,class:"py-10 text-center text-slate-400 text-sm"},As={class:"min-w-0"},Vs={class:"svc-name"},Ss={class:"svc-prov"},Ms={class:"svc-cost"},Us={key:1,class:"text-slate-300"},Es=["checked","disabled","onChange"],Ls={class:"svc-acts"},Os=["disabled","onClick"],Ds=["disabled","onClick"],Bs=["onClick"],js=["onClick"],Fs={class:"card mt-4"},Is={class:"card-head"},Ts=["disabled"],zs={class:"mode-bar"},Gs={class:"flex items-center gap-2 cursor-pointer shrink-0"},Hs=["checked","disabled"],Ks={class:"mode-txt"},Rs={key:0,class:"py-10 text-center text-slate-400 text-sm"},Xs={class:"grid place-items-center"},Ps=["checked","disabled","onChange"],Ws={class:"min-w-0"},qs={class:"svc-name"},Js={key:0,title:"多媒体大模型,能识图"},Qs={key:1,class:"chip chip-app ml-1"},Ys={class:"svc-prov"},Zs={class:"svc-cost"},et={key:1,class:"text-slate-300"},st=["checked","disabled","title","onChange"],tt=["checked","disabled","onChange"],lt={class:"svc-acts"},nt=["onClick"],at=["onClick"],it={class:"modal-box max-w-md"},ot={class:"font-bold text-lg"},dt={class:"mt-4 space-y-3"},ut={class:"form-control"},ct=["value"],rt={key:0,class:"text-[11px] text-amber-600 mt-1"},vt={class:"form-control"},bt={class:"label py-1"},_t={class:"label-text text-sm font-medium"},mt={key:0,class:"flex gap-4"},gt={class:"flex items-center gap-2 cursor-pointer"},pt={class:"flex items-center gap-2 cursor-pointer"},ht={class:"modal-action"},ft=["disabled"],kt={class:"modal-box max-w-sm"},xt={class:"text-xs text-slate-400 mt-1"},yt={class:"modal-action"},wt=["disabled"],Ct=Ee({__name:"meetingsvc",setup($t){const{webApi:D,consoleApi:xe}=Be(),{success:J,error:M}=je(),ue=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}];function ye(l){return ue.find(e=>e.value===l)?.label??"区域"+l}const Q=m([]),$=m(""),N=m(0),B=m([]),I=m([]),Y=m({1:[8],2:[3],3:[5,9]}),U=m(!1),ce=m(!1),Z=m(!1),E=m(!1),r=m(!1),f=m("zh-CN"),T=m(null),z=m(null),k=m(1),v=ke({svc_id:"",cost_hint:0,is_default:!1,client_visible:!1}),y=ke({row_id:0,name:"",kind:1,cost_hint:0});function G(l){return l===1?"识别":l===2?"翻译":"总结"}function re(l){return l===1?"元/小时":l===2?"元/百万字符":"元/百万token"}function H(l){return de.find(e=>e.code===l)?.name??l}function ve(l,e){return(l||"").split(",").map(t=>Number(t.trim())).includes(e)}const K=O(()=>{const l=new Map;for(const e of I.value)l.set(e.id,e);return l});function w(l){return K.value.get(l)?.name??l}function ee(l){return K.value.get(l)?.provider??"?"}function L(l){return K.value.get(l)?.languages??""}function we(l){return ve(K.value.get(l)?.categories??"",9)}function b(l){return B.value.filter(e=>e.kind===l).sort((e,t)=>e.priority-t.priority)}function j(l){const e=Y.value[String(l)]??[],t=new Set(B.value.filter(o=>o.kind===l).map(o=>o.svc_id));return I.value.filter(o=>!t.has(o.id)&&o.categories.split(",").some(u=>e.includes(Number(u.trim()))))}function R(l,e){const t=L(l);return t?t.split(",").map(o=>o.trim()).includes(e):!0}const x=O(()=>b(1).find(l=>l.enabled&&R(l.svc_id,f.value))??null),A=O(()=>b(2).find(l=>l.enabled)??null);function Ce(l){return x.value?.row_id!==l.row_id&&(!l.enabled||!R(l.svc_id,f.value))}function $e(l){return x.value?.row_id===l.row_id?"ok":!l.enabled||!R(l.svc_id,f.value)?"no":""}function Ne(l){return x.value?.row_id===l.row_id?L(l.svc_id)?`✓ 当前源语言(${H(f.value)})由它承接`:"✓ 未限定语言,先落到它(实际支持由引擎判断)":l.enabled?R(l.svc_id,f.value)?"备用:前面都跳过时接手":`不支持 ${H(f.value)}(${f.value}),跳过 → 顺延下一个`:"已停用,跳过"}const _=O(()=>{const l=[],e=[];let t=0;for(const u of[1,2,3]){const V=b(u).filter(ie=>ie.enabled);if(!V.length){l.push(u);continue}const W=new Set;let ge=!1;for(const ie of V){const pe=L(ie.svc_id).split(",").map(oe=>oe.trim()).filter(Boolean);if(!pe.length){ge=!0;break}pe.forEach(oe=>W.add(oe))}ge?t++:e.push({kind:u,langs:[...W]})}if(!e.length)return{missing:l,unlimited:!0,langs:[],groups:e,unlimitedKinds:t};const o=e.reduce((u,V)=>u.filter(W=>V.langs.includes(W)),[...e[0].langs]).sort((u,V)=>be(u)-be(V));return{missing:l,unlimited:!1,langs:o,groups:e,unlimitedKinds:t}});function be(l){const e=de.findIndex(t=>t.code===l);return e<0?Number.MAX_SAFE_INTEGER:e}const Ae=O(()=>{const l=[];for(const e of[1,2,3]){if(_.value.missing.includes(e)){l.push(`${G(e)} 未配置`);continue}const t=_.value.groups.find(o=>o.kind===e);l.push(`${G(e)} ${t?t.langs.length+" 种":"全语种"}`)}return l.join(" ∩ ")}),X=O(()=>b(3).find(l=>l.is_default)??null),se=O(()=>b(3).filter(l=>l.enabled&&l.client_visible));async function Ve(){try{const l=await xe("products/list",{});Q.value=(l??[]).map(e=>e.name).filter(Boolean)}catch{Q.value=[]}}async function p(){Z.value=!0;try{const l=await D("getechoorch",{app_name:$.value,region:N.value});B.value=l?.items??[],I.value=l?.available??[],Y.value=l?.kind_cats??Y.value,U.value=!!l?.setting?.llm_client_choice,ce.value=(!!$.value||N.value!==0)&&(B.value.length>0||U.value)}catch(l){M(l?.message??"加载失败")}finally{Z.value=!1}}async function te(l){await D("saveechoorch",{app_name:$.value,region:N.value,orch:l})}function le(l){k.value=l,v.svc_id="",v.cost_hint=0,v.is_default=!1,v.client_visible=!1,T.value?.showModal()}async function Se(){if(v.svc_id){E.value=!0;try{const l=b(k.value),e=l.length?l[l.length-1].priority+10:10;await te({kind:k.value,svc_id:v.svc_id,priority:e,cost_hint:Number(v.cost_hint)||0,is_default:k.value===3?v.is_default:!1,client_visible:k.value===3?v.client_visible:!1,enabled:!0}),J("已添加"),T.value?.close(),await p()}catch(l){M(l?.message??"添加失败")}finally{E.value=!1}}}async function F(l,e){r.value=!0;try{await te({...l,...e}),await p()}catch(t){M(t?.message??"操作失败"),await p()}finally{r.value=!1}}async function ne(l){if(confirm(`从本段移除「${w(l.svc_id)}」?(不影响第三方服务配置里的服务本身)`))try{await D("delechoorch",{row_id:l.row_id}),J("已移除"),await p()}catch(e){M(e?.message??"移除失败")}}async function _e(l){r.value=!0;try{await D("reorderechoorch",{items:l.map((e,t)=>({row_id:e.row_id,priority:(t+1)*10}))}),await p()}catch(e){M(e?.message??"排序失败"),await p()}finally{r.value=!1}}function P(l,e,t){const o=[...b(l)],u=e+t;if(u<0||u>=o.length)return;const V=o[e];o[e]=o[u],o[u]=V,_e(o)}function me(l){const e=[...b(l)].sort((t,o)=>t.enabled!==o.enabled?t.enabled?-1:1:(t.cost_hint||Number.MAX_VALUE)-(o.cost_hint||Number.MAX_VALUE));_e(e)}function ae(l){y.row_id=l.row_id,y.name=w(l.svc_id),y.kind=l.kind,y.cost_hint=l.cost_hint,z.value?.showModal()}async function Me(){const l=B.value.find(e=>e.row_id===y.row_id);if(l){E.value=!0;try{await te({...l,cost_hint:Number(y.cost_hint)||0}),J("已保存"),z.value?.close(),await p()}catch(e){M(e?.message??"保存失败")}finally{E.value=!1}}}async function Ue(){r.value=!0;try{await D("saveechoorchsetting",{app_name:$.value,region:N.value,llm_client_choice:!U.value}),await p()}catch(l){M(l?.message??"保存失败"),await p()}finally{r.value=!1}}return Le(async()=>{await Ve(),await p()}),(l,e)=>(a(),n("div",null,[e[45]||(e[45]=s("div",{class:"flex items-start justify-between mb-4 flex-wrap gap-3"},[s("div",null,[s("h2",{class:"text-lg font-semibold text-slate-800"},"会议记录服务"),s("p",{class:"text-xs text-slate-400 mt-1 max-w-3xl"},[d(" 识别 / 翻译 / 总结三段,从"),s("b",null,"第三方服务配置"),d("里选已配好的服务来编排(不再单独填凭据)。 "),s("span",{class:"text-slate-500"},"先配「全局默认」作兜底,再按应用 / 区域覆盖"),d("——没配覆盖的应用自动继承全局默认。 ")])])],-1)),s("div",Fe,[s("div",Ie,[e[17]||(e[17]=s("span",{class:"text-xs text-slate-500 font-semibold"},"作用域",-1)),S(s("select",{"onUpdate:modelValue":e[0]||(e[0]=t=>$.value=t),class:"select select-bordered select-sm",onChange:p},[e[15]||(e[15]=s("option",{value:""},"全局默认(兜底)",-1)),(a(!0),n(c,null,C(Q.value,t=>(a(),n("option",{key:t,value:t},"应用:"+i(t),9,Te))),128))],544),[[q,$.value]]),S(s("select",{"onUpdate:modelValue":e[1]||(e[1]=t=>N.value=t),class:"select select-bordered select-sm",onChange:p},[e[16]||(e[16]=s("option",{value:0},"全区域",-1)),(a(),n(c,null,C(ue,t=>s("option",{key:t.value,value:t.value},i(t.label),9,ze)),64))],544),[[q,N.value,void 0,{number:!0}]])]),s("span",Ge,[d(i($.value?`正在编辑「${$.value}」`:"正在编辑全局默认")+i(N.value?` · ${ye(N.value)}`:" · 全区域")+" ",1),ce.value?(a(),n(c,{key:0},[d("(覆盖全局默认)")],64)):g("",!0)])]),Z.value?(a(),n("div",He,[...e[18]||(e[18]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1)])])):(a(),n(c,{key:1},[s("div",{class:h(["langsum",{bad:!_.value.unlimited&&!_.value.langs.length,warn:_.value.missing.length}])},[s("div",Ke,[e[19]||(e[19]=s("span",{class:"langsum-title"},"当前配置支持的语言",-1)),_.value.unlimited?(a(),n("span",{key:0,class:h(["langsum-count",{off:_.value.missing.length}])},"未限定(各引擎自行判断)",2)):(a(),n("span",{key:1,class:h(["langsum-count",{off:_.value.missing.length}])},[d(i(_.value.langs.length)+" 种",1),_.value.missing.length?(a(),n(c,{key:0},[d("(链路未配全,尚不可用)")],64)):g("",!0)],2)),s("span",Re,i(Ae.value),1)]),_.value.missing.length?(a(),n("div",Xe," ⚠ "+i(_.value.missing.map(G).join("、"))+"段没有启用中的服务,整条链路走不通——先把这些段配上。 ",1)):!_.value.unlimited&&!_.value.langs.length?(a(),n("div",Pe," ⚠ 各段语言无交集,任何语种都走不完整条链路。放宽某一段的支持语言,或补一个覆盖面更广的服务。 ")):g("",!0),_.value.langs.length?(a(),n("div",We,[(a(!0),n(c,null,C(_.value.langs,t=>(a(),n("span",{key:t,class:"lang on",title:H(t)},i(t),9,qe))),128))])):_.value.unlimited&&!_.value.missing.length?(a(),n("div",Je," 各段都没限定支持语言(服务未填 languages 字段),实际能否处理由引擎判断。 ")):g("",!0)],2),I.value.length?g("",!0):(a(),n("div",Qe,[...e[20]||(e[20]=[s("span",null,[d(" 该作用域没有可选服务。先去"),s("b",null,"第三方服务配置"),d("添加「录音文件识别 / 机器翻译 / 文本或多媒体大模型」类的服务 (全局默认或该应用作用域),这里才能选。 ")],-1)])])),s("div",Ye,[s("div",Ze,[e[21]||(e[21]=s("div",null,[s("div",{class:"card-title"},"识别(录音文件转写)"),s("div",{class:"card-desc"},[d("按顺序找"),s("b",null,"第一个「已启用 + 支持源语言」"),d('的服务,不支持则跳到下一个。把便宜的排前面即"优先用性价比高的"。')])],-1)),s("div",es,[s("button",{class:"btn btn-xs",disabled:b(1).length<2||r.value,onClick:e[2]||(e[2]=t=>me(1))},"⇅ 按参考单价重排",8,ss),s("button",{class:"btn btn-primary btn-xs text-white",disabled:!j(1).length,onClick:e[3]||(e[3]=t=>le(1))},"+ 添加识别服务",8,ts)])]),s("div",ls,[e[22]||(e[22]=s("span",{class:"text-xs text-slate-500 font-semibold"},"选路预览",-1)),S(s("select",{"onUpdate:modelValue":e[4]||(e[4]=t=>f.value=t),class:"select select-bordered select-xs w-44 text-xs"},[(a(!0),n(c,null,C(Oe(de),t=>(a(),n("option",{key:t.code,value:t.code},i(t.code)+" · "+i(t.name),9,ns))),128))],512),[[q,f.value]]),x.value?(a(),n("span",as,[d("命中 "+i(w(x.value.svc_id)),1),x.value.cost_hint?(a(),n(c,{key:0},[d(" · ¥"+i(x.value.cost_hint)+"/时",1)],64)):g("",!0)])):(a(),n("span",is,"无可用服务 —— "+i(H(f.value))+" 会转写失败",1))]),b(1).length?g("",!0):(a(),n("div",os,"暂无识别服务,点右上「+ 添加识别服务」")),(a(!0),n(c,null,C(b(1),(t,o)=>(a(),n("div",{key:t.row_id,class:h(["svc asr",{hit:x.value&&x.value.row_id===t.row_id,off:!t.enabled}])},[s("div",{class:h(["svc-rank",{hit:x.value&&x.value.row_id===t.row_id}])},i(o+1),3),s("div",ds,[s("div",{class:h(["svc-name",{skip:Ce(t)}])},i(w(t.svc_id)),3),s("div",us,i(ee(t.svc_id))+" · "+i(t.svc_id),1)]),s("div",cs,[L(t.svc_id)?(a(),n(c,{key:0},[(a(!0),n(c,null,C(L(t.svc_id).split(",").slice(0,5),u=>(a(),n("span",{key:u,class:h(["lang",{on:u===f.value}])},i(u),3))),128)),L(t.svc_id).split(",").length>5?(a(),n("span",rs,"+"+i(L(t.svc_id).split(",").length-5),1)):g("",!0)],64)):(a(),n("span",vs,"未限定"))]),s("div",bs,[t.cost_hint?(a(),n(c,{key:0},[d("¥"+i(t.cost_hint),1),e[23]||(e[23]=s("small",null," /时",-1))],64)):(a(),n("span",_s,"—"))]),s("div",null,[s("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:t.enabled,disabled:r.value,onChange:u=>F(t,{enabled:!t.enabled})},null,40,ms)]),s("div",gs,[s("button",{class:"arrow",disabled:o===0||r.value,"aria-label":"上移",onClick:u=>P(1,o,-1)},"↑",8,ps),s("button",{class:"arrow",disabled:o===b(1).length-1||r.value,"aria-label":"下移",onClick:u=>P(1,o,1)},"↓",8,hs),s("button",{class:"btn btn-ghost btn-xs",onClick:u=>ae(t)},"单价",8,fs),s("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>ne(t)},"移除",8,ks)]),s("div",{class:h(["svc-why",$e(t)])},i(Ne(t)),3)],2))),128))]),s("div",xs,[s("div",ys,[e[24]||(e[24]=s("div",null,[s("div",{class:"card-title"},"翻译"),s("div",{class:"card-desc"},[d("按顺序取"),s("b",null,"第一个已启用"),d("的服务;调用失败自动回退下一个。")])],-1)),s("div",ws,[s("button",{class:"btn btn-xs",disabled:b(2).length<2||r.value,onClick:e[5]||(e[5]=t=>me(2))},"⇅ 按参考单价重排",8,Cs),s("button",{class:"btn btn-primary btn-xs text-white",disabled:!j(2).length,onClick:e[6]||(e[6]=t=>le(2))},"+ 添加翻译服务",8,$s)])]),b(2).length?g("",!0):(a(),n("div",Ns,"暂无翻译服务")),(a(!0),n(c,null,C(b(2),(t,o)=>(a(),n("div",{key:t.row_id,class:h(["svc mt",{hit:A.value&&A.value.row_id===t.row_id,off:!t.enabled}])},[s("div",{class:h(["svc-rank",{hit:A.value&&A.value.row_id===t.row_id}])},i(o+1),3),s("div",As,[s("div",Vs,i(w(t.svc_id)),1),s("div",Ss,i(ee(t.svc_id))+" · "+i(t.svc_id),1)]),s("div",Ms,[t.cost_hint?(a(),n(c,{key:0},[d("¥"+i(t.cost_hint),1),e[25]||(e[25]=s("small",null," /百万字符",-1))],64)):(a(),n("span",Us,"—"))]),s("div",null,[s("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:t.enabled,disabled:r.value,onChange:u=>F(t,{enabled:!t.enabled})},null,40,Es)]),s("div",Ls,[s("button",{class:"arrow",disabled:o===0||r.value,"aria-label":"上移",onClick:u=>P(2,o,-1)},"↑",8,Os),s("button",{class:"arrow",disabled:o===b(2).length-1||r.value,"aria-label":"下移",onClick:u=>P(2,o,1)},"↓",8,Ds),s("button",{class:"btn btn-ghost btn-xs",onClick:u=>ae(t)},"单价",8,Bs),s("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>ne(t)},"移除",8,js)]),s("div",{class:h(["svc-why",t.enabled?A.value&&A.value.row_id===t.row_id?"ok":"":"no"])},[t.enabled?A.value&&A.value.row_id===t.row_id?(a(),n(c,{key:1},[d("✓ 默认由它承接,失败顺延")],64)):(a(),n(c,{key:2},[d("备用:前面失败时接手")],64)):(a(),n(c,{key:0},[d("已停用,跳过")],64))],2)],2))),128))]),s("div",Fs,[s("div",Is,[e[26]||(e[26]=s("div",null,[s("div",{class:"card-title"},"总结(大模型)"),s("div",{class:"card-desc"},[d("后台指定默认模型,客户端可在允许范围内自选。带 🖼 的是"),s("b",null,"多媒体大模型"),d(",能识别会议里的图片。")])],-1)),s("button",{class:"btn btn-primary btn-xs text-white shrink-0",disabled:!j(3).length,onClick:e[7]||(e[7]=t=>le(3))},"+ 添加模型",8,Ts)]),s("div",zs,[s("label",Gs,[s("input",{type:"checkbox",class:"toggle toggle-primary toggle-sm",checked:U.value,disabled:r.value,onChange:Ue},null,40,Hs),e[27]||(e[27]=s("span",{class:"text-sm font-semibold text-slate-700"},"允许客户端指定模型",-1))]),s("p",Ks,[U.value?(a(),n(c,{key:0},[e[28]||(e[28]=d(" 前端能选 ",-1)),s("b",null,i(se.value.length),1),e[29]||(e[29]=d(" 个模型",-1)),se.value.length?(a(),n(c,{key:0},[d(":"+i(se.value.map(t=>w(t.svc_id)).join("、")),1)],64)):(a(),n(c,{key:1},[d("(一个都没勾「前端可见」,等同强制默认)")],64)),e[30]||(e[30]=d("。不传则用默认 ",-1)),s("b",null,i(X.value?w(X.value.svc_id):"—"),1),e[31]||(e[31]=d("。 ",-1))],64)):(a(),n(c,{key:1},[e[32]||(e[32]=d(" 前端不下发模型列表,一律走默认模型 ",-1)),s("b",null,i(X.value?w(X.value.svc_id):"—"),1),e[33]||(e[33]=d(";客户端传了也忽略。 ",-1))],64))])]),b(3).length?g("",!0):(a(),n("div",Rs,"暂无模型")),(a(!0),n(c,null,C(b(3),t=>(a(),n("div",{key:t.row_id,class:h(["svc llm",{isdefault:t.is_default,off:!t.enabled}])},[s("div",Xs,[s("input",{type:"radio",name:"llmdef",class:"radio radio-primary radio-xs",checked:t.is_default,disabled:!t.enabled||r.value,onChange:o=>F(t,{is_default:!0})},null,40,Ps)]),s("div",Ws,[s("div",qs,[d(i(w(t.svc_id))+" ",1),we(t.svc_id)?(a(),n("span",Js,"🖼")):g("",!0),t.is_default?(a(),n("span",Qs,"默认")):g("",!0)]),s("div",Ys,i(ee(t.svc_id))+" · "+i(t.svc_id),1)]),s("div",Zs,[t.cost_hint?(a(),n(c,{key:0},[d("¥"+i(t.cost_hint),1),e[34]||(e[34]=s("small",null," /百万token",-1))],64)):(a(),n("span",et,"—"))]),s("div",null,[s("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:t.client_visible,disabled:!U.value||!t.enabled||r.value,title:U.value?"":"先打开「允许客户端指定模型」",onChange:o=>F(t,{client_visible:!t.client_visible})},null,40,st)]),s("div",null,[s("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:t.enabled,disabled:r.value,onChange:o=>F(t,{enabled:!t.enabled})},null,40,tt)]),s("div",lt,[s("button",{class:"btn btn-ghost btn-xs",onClick:o=>ae(t)},"单价",8,nt),s("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:o=>ne(t)},"移除",8,at)])],2))),128)),e[35]||(e[35]=s("div",{class:"col-h llm-h"},[s("div"),s("div"),s("div",null,"参考单价"),s("div",null,"前端可见"),s("div",null,"启用"),s("div")],-1))])],64)),s("dialog",{ref_key:"addDlg",ref:T,class:"modal"},[s("div",it,[s("h3",ot,"添加"+i(G(k.value))+"服务",1),e[41]||(e[41]=s("p",{class:"text-xs text-slate-400 mt-1"},"从第三方服务配置里选一个已配好的服务加入本段编排。",-1)),s("div",dt,[s("div",ut,[e[37]||(e[37]=s("label",{class:"label py-1"},[s("span",{class:"label-text text-sm font-medium"},"服务")],-1)),S(s("select",{"onUpdate:modelValue":e[8]||(e[8]=t=>v.svc_id=t),class:"select select-bordered select-sm"},[e[36]||(e[36]=s("option",{value:""},"请选择服务…",-1)),(a(!0),n(c,null,C(j(k.value),t=>(a(),n("option",{key:t.id,value:t.id},i(t.name)+i(k.value===3&&ve(t.categories,9)?" 🖼":"")+"("+i(t.provider||t.id)+") ",9,ct))),128))],512),[[q,v.svc_id]]),j(k.value).length?g("",!0):(a(),n("span",rt,"没有可添加的服务了(都加过了,或服务池里没这类服务)。"))]),s("div",vt,[s("label",bt,[s("span",_t,"参考单价("+i(re(k.value))+",可空)",1)]),S(s("input",{"onUpdate:modelValue":e[9]||(e[9]=t=>v.cost_hint=t),type:"number",step:"0.01",min:"0",class:"input input-bordered input-sm font-mono text-xs",placeholder:"0"},null,512),[[he,v.cost_hint,void 0,{number:!0}]]),e[38]||(e[38]=s("span",{class:"text-[11px] text-slate-400 mt-1"},"仅用于排序/展示,填你的实付价。",-1))]),k.value===3?(a(),n("div",mt,[s("label",gt,[S(s("input",{"onUpdate:modelValue":e[10]||(e[10]=t=>v.is_default=t),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[fe,v.is_default]]),e[39]||(e[39]=s("span",{class:"text-sm"},"设为默认",-1))]),s("label",pt,[S(s("input",{"onUpdate:modelValue":e[11]||(e[11]=t=>v.client_visible=t),type:"checkbox",class:"toggle toggle-success toggle-sm"},null,512),[[fe,v.client_visible]]),e[40]||(e[40]=s("span",{class:"text-sm"},"前端可见",-1))])])):g("",!0)]),s("div",ht,[s("button",{class:"btn btn-ghost btn-sm",onClick:e[12]||(e[12]=t=>T.value?.close())},"取消"),s("button",{class:"btn btn-primary btn-sm text-white",disabled:!v.svc_id||E.value,onClick:Se},i(E.value?"添加中…":"添加"),9,ft)])]),e[42]||(e[42]=s("form",{method:"dialog",class:"modal-backdrop"},[s("button",null,"close")],-1))],512),s("dialog",{ref_key:"costDlg",ref:z,class:"modal"},[s("div",kt,[e[43]||(e[43]=s("h3",{class:"font-bold text-lg"},"参考单价",-1)),s("p",xt,i(y.name)+"("+i(re(y.kind))+")",1),S(s("input",{"onUpdate:modelValue":e[13]||(e[13]=t=>y.cost_hint=t),type:"number",step:"0.01",min:"0",class:"input input-bordered input-sm w-full font-mono text-xs mt-3",placeholder:"0"},null,512),[[he,y.cost_hint,void 0,{number:!0}]]),s("div",yt,[s("button",{class:"btn btn-ghost btn-sm",onClick:e[14]||(e[14]=t=>z.value?.close())},"取消"),s("button",{class:"btn btn-primary btn-sm text-white",disabled:E.value,onClick:Me},"保存",8,wt)])]),e[44]||(e[44]=s("form",{method:"dialog",class:"modal-backdrop"},[s("button",null,"close")],-1))],512)]))}}),Mt=De(Ct,[["__scopeId","data-v-512b8191"]]);export{Mt as default}; +import{g as Ee,C as Le,c as n,a as s,d,q as S,s as q,F as c,r as C,t as i,l as g,n as h,m as Oe,v as he,x as fe,y as m,z as ke,A as O,o as a,_ as De}from"./6O01ZZML.js";import{u as Be}from"./BgasD__e.js";import{u as je}from"./xsgK-Nup.js";import{L as de}from"./DD3V9C6_.js";const Fe={class:"scopebar"},Ie={class:"flex items-center gap-2"},Te=["value"],ze=["value"],Ge={class:"text-[11px] text-slate-400"},He={key:0,class:"bg-white rounded-xl border border-slate-100 py-16 text-center"},Ke={class:"langsum-head"},Re={class:"langsum-formula"},Xe={key:0,class:"langsum-msg bad"},Pe={key:1,class:"langsum-msg bad"},We={key:2,class:"langsum-langs"},qe=["title"],Je={key:3,class:"langsum-msg"},Qe={key:0,class:"alert alert-warning py-2 text-sm mb-4"},Ye={class:"card"},Ze={class:"card-head"},es={class:"flex gap-2 shrink-0"},ss=["disabled"],ts=["disabled"],ls={class:"probe-bar"},ns=["value"],as={key:0,class:"probe-out"},is={key:1,class:"probe-out bad"},os={key:0,class:"py-10 text-center text-slate-400 text-sm"},ds={class:"min-w-0"},us={class:"svc-prov"},cs={class:"flex flex-wrap gap-1"},rs={key:0,class:"lang"},vs={key:1,class:"text-[11px] text-slate-400"},bs={class:"svc-cost"},_s={key:1,class:"text-slate-300"},ms=["checked","disabled","onChange"],gs={class:"svc-acts"},ps=["disabled","onClick"],hs=["disabled","onClick"],fs=["onClick"],ks=["onClick"],xs={class:"card mt-4"},ys={class:"card-head"},ws={class:"flex gap-2 shrink-0"},Cs=["disabled"],$s=["disabled"],Ns={key:0,class:"py-10 text-center text-slate-400 text-sm"},As={class:"min-w-0"},Vs={class:"svc-name"},Ss={class:"svc-prov"},Ms={class:"svc-cost"},Us={key:1,class:"text-slate-300"},Es=["checked","disabled","onChange"],Ls={class:"svc-acts"},Os=["disabled","onClick"],Ds=["disabled","onClick"],Bs=["onClick"],js=["onClick"],Fs={class:"card mt-4"},Is={class:"card-head"},Ts=["disabled"],zs={class:"mode-bar"},Gs={class:"flex items-center gap-2 cursor-pointer shrink-0"},Hs=["checked","disabled"],Ks={class:"mode-txt"},Rs={key:0,class:"py-10 text-center text-slate-400 text-sm"},Xs={class:"grid place-items-center"},Ps=["checked","disabled","onChange"],Ws={class:"min-w-0"},qs={class:"svc-name"},Js={key:0,title:"多媒体大模型,能识图"},Qs={key:1,class:"chip chip-app ml-1"},Ys={class:"svc-prov"},Zs={class:"svc-cost"},et={key:1,class:"text-slate-300"},st=["checked","disabled","title","onChange"],tt=["checked","disabled","onChange"],lt={class:"svc-acts"},nt=["onClick"],at=["onClick"],it={class:"modal-box max-w-md"},ot={class:"font-bold text-lg"},dt={class:"mt-4 space-y-3"},ut={class:"form-control"},ct=["value"],rt={key:0,class:"text-[11px] text-amber-600 mt-1"},vt={class:"form-control"},bt={class:"label py-1"},_t={class:"label-text text-sm font-medium"},mt={key:0,class:"flex gap-4"},gt={class:"flex items-center gap-2 cursor-pointer"},pt={class:"flex items-center gap-2 cursor-pointer"},ht={class:"modal-action"},ft=["disabled"],kt={class:"modal-box max-w-sm"},xt={class:"text-xs text-slate-400 mt-1"},yt={class:"modal-action"},wt=["disabled"],Ct=Ee({__name:"meetingsvc",setup($t){const{webApi:D,consoleApi:xe}=Be(),{success:J,error:M}=je(),ue=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}];function ye(l){return ue.find(e=>e.value===l)?.label??"区域"+l}const Q=m([]),$=m(""),N=m(0),B=m([]),I=m([]),Y=m({1:[8],2:[3],3:[5,9]}),U=m(!1),ce=m(!1),Z=m(!1),E=m(!1),r=m(!1),f=m("zh-CN"),T=m(null),z=m(null),k=m(1),v=ke({svc_id:"",cost_hint:0,is_default:!1,client_visible:!1}),y=ke({row_id:0,name:"",kind:1,cost_hint:0});function G(l){return l===1?"识别":l===2?"翻译":"总结"}function re(l){return l===1?"元/小时":l===2?"元/百万字符":"元/百万token"}function H(l){return de.find(e=>e.code===l)?.name??l}function ve(l,e){return(l||"").split(",").map(t=>Number(t.trim())).includes(e)}const K=O(()=>{const l=new Map;for(const e of I.value)l.set(e.id,e);return l});function w(l){return K.value.get(l)?.name??l}function ee(l){return K.value.get(l)?.provider??"?"}function L(l){return K.value.get(l)?.languages??""}function we(l){return ve(K.value.get(l)?.categories??"",9)}function b(l){return B.value.filter(e=>e.kind===l).sort((e,t)=>e.priority-t.priority)}function j(l){const e=Y.value[String(l)]??[],t=new Set(B.value.filter(o=>o.kind===l).map(o=>o.svc_id));return I.value.filter(o=>!t.has(o.id)&&o.categories.split(",").some(u=>e.includes(Number(u.trim()))))}function R(l,e){const t=L(l);return t?t.split(",").map(o=>o.trim()).includes(e):!0}const x=O(()=>b(1).find(l=>l.enabled&&R(l.svc_id,f.value))??null),A=O(()=>b(2).find(l=>l.enabled)??null);function Ce(l){return x.value?.row_id!==l.row_id&&(!l.enabled||!R(l.svc_id,f.value))}function $e(l){return x.value?.row_id===l.row_id?"ok":!l.enabled||!R(l.svc_id,f.value)?"no":""}function Ne(l){return x.value?.row_id===l.row_id?L(l.svc_id)?`✓ 当前源语言(${H(f.value)})由它承接`:"✓ 未限定语言,先落到它(实际支持由引擎判断)":l.enabled?R(l.svc_id,f.value)?"备用:前面都跳过时接手":`不支持 ${H(f.value)}(${f.value}),跳过 → 顺延下一个`:"已停用,跳过"}const _=O(()=>{const l=[],e=[];let t=0;for(const u of[1,2,3]){const V=b(u).filter(ie=>ie.enabled);if(!V.length){l.push(u);continue}const W=new Set;let ge=!1;for(const ie of V){const pe=L(ie.svc_id).split(",").map(oe=>oe.trim()).filter(Boolean);if(!pe.length){ge=!0;break}pe.forEach(oe=>W.add(oe))}ge?t++:e.push({kind:u,langs:[...W]})}if(!e.length)return{missing:l,unlimited:!0,langs:[],groups:e,unlimitedKinds:t};const o=e.reduce((u,V)=>u.filter(W=>V.langs.includes(W)),[...e[0].langs]).sort((u,V)=>be(u)-be(V));return{missing:l,unlimited:!1,langs:o,groups:e,unlimitedKinds:t}});function be(l){const e=de.findIndex(t=>t.code===l);return e<0?Number.MAX_SAFE_INTEGER:e}const Ae=O(()=>{const l=[];for(const e of[1,2,3]){if(_.value.missing.includes(e)){l.push(`${G(e)} 未配置`);continue}const t=_.value.groups.find(o=>o.kind===e);l.push(`${G(e)} ${t?t.langs.length+" 种":"全语种"}`)}return l.join(" ∩ ")}),X=O(()=>b(3).find(l=>l.is_default)??null),se=O(()=>b(3).filter(l=>l.enabled&&l.client_visible));async function Ve(){try{const l=await xe("products/list",{});Q.value=(l??[]).map(e=>e.name).filter(Boolean)}catch{Q.value=[]}}async function p(){Z.value=!0;try{const l=await D("getechoorch",{app_name:$.value,region:N.value});B.value=l?.items??[],I.value=l?.available??[],Y.value=l?.kind_cats??Y.value,U.value=!!l?.setting?.llm_client_choice,ce.value=(!!$.value||N.value!==0)&&(B.value.length>0||U.value)}catch(l){M(l?.message??"加载失败")}finally{Z.value=!1}}async function te(l){await D("saveechoorch",{app_name:$.value,region:N.value,orch:l})}function le(l){k.value=l,v.svc_id="",v.cost_hint=0,v.is_default=!1,v.client_visible=!1,T.value?.showModal()}async function Se(){if(v.svc_id){E.value=!0;try{const l=b(k.value),e=l.length?l[l.length-1].priority+10:10;await te({kind:k.value,svc_id:v.svc_id,priority:e,cost_hint:Number(v.cost_hint)||0,is_default:k.value===3?v.is_default:!1,client_visible:k.value===3?v.client_visible:!1,enabled:!0}),J("已添加"),T.value?.close(),await p()}catch(l){M(l?.message??"添加失败")}finally{E.value=!1}}}async function F(l,e){r.value=!0;try{await te({...l,...e}),await p()}catch(t){M(t?.message??"操作失败"),await p()}finally{r.value=!1}}async function ne(l){if(confirm(`从本段移除「${w(l.svc_id)}」?(不影响第三方服务配置里的服务本身)`))try{await D("delechoorch",{row_id:l.row_id}),J("已移除"),await p()}catch(e){M(e?.message??"移除失败")}}async function _e(l){r.value=!0;try{await D("reorderechoorch",{items:l.map((e,t)=>({row_id:e.row_id,priority:(t+1)*10}))}),await p()}catch(e){M(e?.message??"排序失败"),await p()}finally{r.value=!1}}function P(l,e,t){const o=[...b(l)],u=e+t;if(u<0||u>=o.length)return;const V=o[e];o[e]=o[u],o[u]=V,_e(o)}function me(l){const e=[...b(l)].sort((t,o)=>t.enabled!==o.enabled?t.enabled?-1:1:(t.cost_hint||Number.MAX_VALUE)-(o.cost_hint||Number.MAX_VALUE));_e(e)}function ae(l){y.row_id=l.row_id,y.name=w(l.svc_id),y.kind=l.kind,y.cost_hint=l.cost_hint,z.value?.showModal()}async function Me(){const l=B.value.find(e=>e.row_id===y.row_id);if(l){E.value=!0;try{await te({...l,cost_hint:Number(y.cost_hint)||0}),J("已保存"),z.value?.close(),await p()}catch(e){M(e?.message??"保存失败")}finally{E.value=!1}}}async function Ue(){r.value=!0;try{await D("saveechoorchsetting",{app_name:$.value,region:N.value,llm_client_choice:!U.value}),await p()}catch(l){M(l?.message??"保存失败"),await p()}finally{r.value=!1}}return Le(async()=>{await Ve(),await p()}),(l,e)=>(a(),n("div",null,[e[45]||(e[45]=s("div",{class:"flex items-start justify-between mb-4 flex-wrap gap-3"},[s("div",null,[s("h2",{class:"text-lg font-semibold text-slate-800"},"会议记录服务"),s("p",{class:"text-xs text-slate-400 mt-1 max-w-3xl"},[d(" 识别 / 翻译 / 总结三段,从"),s("b",null,"第三方服务配置"),d("里选已配好的服务来编排(不再单独填凭据)。 "),s("span",{class:"text-slate-500"},"先配「全局默认」作兜底,再按应用 / 区域覆盖"),d("——没配覆盖的应用自动继承全局默认。 ")])])],-1)),s("div",Fe,[s("div",Ie,[e[17]||(e[17]=s("span",{class:"text-xs text-slate-500 font-semibold"},"作用域",-1)),S(s("select",{"onUpdate:modelValue":e[0]||(e[0]=t=>$.value=t),class:"select select-bordered select-sm",onChange:p},[e[15]||(e[15]=s("option",{value:""},"全局默认(兜底)",-1)),(a(!0),n(c,null,C(Q.value,t=>(a(),n("option",{key:t,value:t},"应用:"+i(t),9,Te))),128))],544),[[q,$.value]]),S(s("select",{"onUpdate:modelValue":e[1]||(e[1]=t=>N.value=t),class:"select select-bordered select-sm",onChange:p},[e[16]||(e[16]=s("option",{value:0},"全区域",-1)),(a(),n(c,null,C(ue,t=>s("option",{key:t.value,value:t.value},i(t.label),9,ze)),64))],544),[[q,N.value,void 0,{number:!0}]])]),s("span",Ge,[d(i($.value?`正在编辑「${$.value}」`:"正在编辑全局默认")+i(N.value?` · ${ye(N.value)}`:" · 全区域")+" ",1),ce.value?(a(),n(c,{key:0},[d("(覆盖全局默认)")],64)):g("",!0)])]),Z.value?(a(),n("div",He,[...e[18]||(e[18]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1)])])):(a(),n(c,{key:1},[s("div",{class:h(["langsum",{bad:!_.value.unlimited&&!_.value.langs.length,warn:_.value.missing.length}])},[s("div",Ke,[e[19]||(e[19]=s("span",{class:"langsum-title"},"当前配置支持的语言",-1)),_.value.unlimited?(a(),n("span",{key:0,class:h(["langsum-count",{off:_.value.missing.length}])},"未限定(各引擎自行判断)",2)):(a(),n("span",{key:1,class:h(["langsum-count",{off:_.value.missing.length}])},[d(i(_.value.langs.length)+" 种",1),_.value.missing.length?(a(),n(c,{key:0},[d("(链路未配全,尚不可用)")],64)):g("",!0)],2)),s("span",Re,i(Ae.value),1)]),_.value.missing.length?(a(),n("div",Xe," ⚠ "+i(_.value.missing.map(G).join("、"))+"段没有启用中的服务,整条链路走不通——先把这些段配上。 ",1)):!_.value.unlimited&&!_.value.langs.length?(a(),n("div",Pe," ⚠ 各段语言无交集,任何语种都走不完整条链路。放宽某一段的支持语言,或补一个覆盖面更广的服务。 ")):g("",!0),_.value.langs.length?(a(),n("div",We,[(a(!0),n(c,null,C(_.value.langs,t=>(a(),n("span",{key:t,class:"lang on",title:H(t)},i(t),9,qe))),128))])):_.value.unlimited&&!_.value.missing.length?(a(),n("div",Je," 各段都没限定支持语言(服务未填 languages 字段),实际能否处理由引擎判断。 ")):g("",!0)],2),I.value.length?g("",!0):(a(),n("div",Qe,[...e[20]||(e[20]=[s("span",null,[d(" 该作用域没有可选服务。先去"),s("b",null,"第三方服务配置"),d("添加「录音文件识别 / 机器翻译 / 文本或多媒体大模型」类的服务 (全局默认或该应用作用域),这里才能选。 ")],-1)])])),s("div",Ye,[s("div",Ze,[e[21]||(e[21]=s("div",null,[s("div",{class:"card-title"},"识别(录音文件转写)"),s("div",{class:"card-desc"},[d("按顺序找"),s("b",null,"第一个「已启用 + 支持源语言」"),d('的服务,不支持则跳到下一个。把便宜的排前面即"优先用性价比高的"。')])],-1)),s("div",es,[s("button",{class:"btn btn-xs",disabled:b(1).length<2||r.value,onClick:e[2]||(e[2]=t=>me(1))},"⇅ 按参考单价重排",8,ss),s("button",{class:"btn btn-primary btn-xs text-white",disabled:!j(1).length,onClick:e[3]||(e[3]=t=>le(1))},"+ 添加识别服务",8,ts)])]),s("div",ls,[e[22]||(e[22]=s("span",{class:"text-xs text-slate-500 font-semibold"},"选路预览",-1)),S(s("select",{"onUpdate:modelValue":e[4]||(e[4]=t=>f.value=t),class:"select select-bordered select-xs w-44 text-xs"},[(a(!0),n(c,null,C(Oe(de),t=>(a(),n("option",{key:t.code,value:t.code},i(t.code)+" · "+i(t.name),9,ns))),128))],512),[[q,f.value]]),x.value?(a(),n("span",as,[d("命中 "+i(w(x.value.svc_id)),1),x.value.cost_hint?(a(),n(c,{key:0},[d(" · ¥"+i(x.value.cost_hint)+"/时",1)],64)):g("",!0)])):(a(),n("span",is,"无可用服务 —— "+i(H(f.value))+" 会转写失败",1))]),b(1).length?g("",!0):(a(),n("div",os,"暂无识别服务,点右上「+ 添加识别服务」")),(a(!0),n(c,null,C(b(1),(t,o)=>(a(),n("div",{key:t.row_id,class:h(["svc asr",{hit:x.value&&x.value.row_id===t.row_id,off:!t.enabled}])},[s("div",{class:h(["svc-rank",{hit:x.value&&x.value.row_id===t.row_id}])},i(o+1),3),s("div",ds,[s("div",{class:h(["svc-name",{skip:Ce(t)}])},i(w(t.svc_id)),3),s("div",us,i(ee(t.svc_id))+" · "+i(t.svc_id),1)]),s("div",cs,[L(t.svc_id)?(a(),n(c,{key:0},[(a(!0),n(c,null,C(L(t.svc_id).split(",").slice(0,5),u=>(a(),n("span",{key:u,class:h(["lang",{on:u===f.value}])},i(u),3))),128)),L(t.svc_id).split(",").length>5?(a(),n("span",rs,"+"+i(L(t.svc_id).split(",").length-5),1)):g("",!0)],64)):(a(),n("span",vs,"未限定"))]),s("div",bs,[t.cost_hint?(a(),n(c,{key:0},[d("¥"+i(t.cost_hint),1),e[23]||(e[23]=s("small",null," /时",-1))],64)):(a(),n("span",_s,"—"))]),s("div",null,[s("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:t.enabled,disabled:r.value,onChange:u=>F(t,{enabled:!t.enabled})},null,40,ms)]),s("div",gs,[s("button",{class:"arrow",disabled:o===0||r.value,"aria-label":"上移",onClick:u=>P(1,o,-1)},"↑",8,ps),s("button",{class:"arrow",disabled:o===b(1).length-1||r.value,"aria-label":"下移",onClick:u=>P(1,o,1)},"↓",8,hs),s("button",{class:"btn btn-ghost btn-xs",onClick:u=>ae(t)},"单价",8,fs),s("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>ne(t)},"移除",8,ks)]),s("div",{class:h(["svc-why",$e(t)])},i(Ne(t)),3)],2))),128))]),s("div",xs,[s("div",ys,[e[24]||(e[24]=s("div",null,[s("div",{class:"card-title"},"翻译"),s("div",{class:"card-desc"},[d("按顺序取"),s("b",null,"第一个已启用"),d("的服务;调用失败自动回退下一个。")])],-1)),s("div",ws,[s("button",{class:"btn btn-xs",disabled:b(2).length<2||r.value,onClick:e[5]||(e[5]=t=>me(2))},"⇅ 按参考单价重排",8,Cs),s("button",{class:"btn btn-primary btn-xs text-white",disabled:!j(2).length,onClick:e[6]||(e[6]=t=>le(2))},"+ 添加翻译服务",8,$s)])]),b(2).length?g("",!0):(a(),n("div",Ns,"暂无翻译服务")),(a(!0),n(c,null,C(b(2),(t,o)=>(a(),n("div",{key:t.row_id,class:h(["svc mt",{hit:A.value&&A.value.row_id===t.row_id,off:!t.enabled}])},[s("div",{class:h(["svc-rank",{hit:A.value&&A.value.row_id===t.row_id}])},i(o+1),3),s("div",As,[s("div",Vs,i(w(t.svc_id)),1),s("div",Ss,i(ee(t.svc_id))+" · "+i(t.svc_id),1)]),s("div",Ms,[t.cost_hint?(a(),n(c,{key:0},[d("¥"+i(t.cost_hint),1),e[25]||(e[25]=s("small",null," /百万字符",-1))],64)):(a(),n("span",Us,"—"))]),s("div",null,[s("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:t.enabled,disabled:r.value,onChange:u=>F(t,{enabled:!t.enabled})},null,40,Es)]),s("div",Ls,[s("button",{class:"arrow",disabled:o===0||r.value,"aria-label":"上移",onClick:u=>P(2,o,-1)},"↑",8,Os),s("button",{class:"arrow",disabled:o===b(2).length-1||r.value,"aria-label":"下移",onClick:u=>P(2,o,1)},"↓",8,Ds),s("button",{class:"btn btn-ghost btn-xs",onClick:u=>ae(t)},"单价",8,Bs),s("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>ne(t)},"移除",8,js)]),s("div",{class:h(["svc-why",t.enabled?A.value&&A.value.row_id===t.row_id?"ok":"":"no"])},[t.enabled?A.value&&A.value.row_id===t.row_id?(a(),n(c,{key:1},[d("✓ 默认由它承接,失败顺延")],64)):(a(),n(c,{key:2},[d("备用:前面失败时接手")],64)):(a(),n(c,{key:0},[d("已停用,跳过")],64))],2)],2))),128))]),s("div",Fs,[s("div",Is,[e[26]||(e[26]=s("div",null,[s("div",{class:"card-title"},"总结(大模型)"),s("div",{class:"card-desc"},[d("后台指定默认模型,客户端可在允许范围内自选。带 🖼 的是"),s("b",null,"多媒体大模型"),d(",能识别会议里的图片。")])],-1)),s("button",{class:"btn btn-primary btn-xs text-white shrink-0",disabled:!j(3).length,onClick:e[7]||(e[7]=t=>le(3))},"+ 添加模型",8,Ts)]),s("div",zs,[s("label",Gs,[s("input",{type:"checkbox",class:"toggle toggle-primary toggle-sm",checked:U.value,disabled:r.value,onChange:Ue},null,40,Hs),e[27]||(e[27]=s("span",{class:"text-sm font-semibold text-slate-700"},"允许客户端指定模型",-1))]),s("p",Ks,[U.value?(a(),n(c,{key:0},[e[28]||(e[28]=d(" 前端能选 ",-1)),s("b",null,i(se.value.length),1),e[29]||(e[29]=d(" 个模型",-1)),se.value.length?(a(),n(c,{key:0},[d(":"+i(se.value.map(t=>w(t.svc_id)).join("、")),1)],64)):(a(),n(c,{key:1},[d("(一个都没勾「前端可见」,等同强制默认)")],64)),e[30]||(e[30]=d("。不传则用默认 ",-1)),s("b",null,i(X.value?w(X.value.svc_id):"—"),1),e[31]||(e[31]=d("。 ",-1))],64)):(a(),n(c,{key:1},[e[32]||(e[32]=d(" 前端不下发模型列表,一律走默认模型 ",-1)),s("b",null,i(X.value?w(X.value.svc_id):"—"),1),e[33]||(e[33]=d(";客户端传了也忽略。 ",-1))],64))])]),b(3).length?g("",!0):(a(),n("div",Rs,"暂无模型")),(a(!0),n(c,null,C(b(3),t=>(a(),n("div",{key:t.row_id,class:h(["svc llm",{isdefault:t.is_default,off:!t.enabled}])},[s("div",Xs,[s("input",{type:"radio",name:"llmdef",class:"radio radio-primary radio-xs",checked:t.is_default,disabled:!t.enabled||r.value,onChange:o=>F(t,{is_default:!0})},null,40,Ps)]),s("div",Ws,[s("div",qs,[d(i(w(t.svc_id))+" ",1),we(t.svc_id)?(a(),n("span",Js,"🖼")):g("",!0),t.is_default?(a(),n("span",Qs,"默认")):g("",!0)]),s("div",Ys,i(ee(t.svc_id))+" · "+i(t.svc_id),1)]),s("div",Zs,[t.cost_hint?(a(),n(c,{key:0},[d("¥"+i(t.cost_hint),1),e[34]||(e[34]=s("small",null," /百万token",-1))],64)):(a(),n("span",et,"—"))]),s("div",null,[s("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:t.client_visible,disabled:!U.value||!t.enabled||r.value,title:U.value?"":"先打开「允许客户端指定模型」",onChange:o=>F(t,{client_visible:!t.client_visible})},null,40,st)]),s("div",null,[s("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:t.enabled,disabled:r.value,onChange:o=>F(t,{enabled:!t.enabled})},null,40,tt)]),s("div",lt,[s("button",{class:"btn btn-ghost btn-xs",onClick:o=>ae(t)},"单价",8,nt),s("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:o=>ne(t)},"移除",8,at)])],2))),128)),e[35]||(e[35]=s("div",{class:"col-h llm-h"},[s("div"),s("div"),s("div",null,"参考单价"),s("div",null,"前端可见"),s("div",null,"启用"),s("div")],-1))])],64)),s("dialog",{ref_key:"addDlg",ref:T,class:"modal"},[s("div",it,[s("h3",ot,"添加"+i(G(k.value))+"服务",1),e[41]||(e[41]=s("p",{class:"text-xs text-slate-400 mt-1"},"从第三方服务配置里选一个已配好的服务加入本段编排。",-1)),s("div",dt,[s("div",ut,[e[37]||(e[37]=s("label",{class:"label py-1"},[s("span",{class:"label-text text-sm font-medium"},"服务")],-1)),S(s("select",{"onUpdate:modelValue":e[8]||(e[8]=t=>v.svc_id=t),class:"select select-bordered select-sm"},[e[36]||(e[36]=s("option",{value:""},"请选择服务…",-1)),(a(!0),n(c,null,C(j(k.value),t=>(a(),n("option",{key:t.id,value:t.id},i(t.name)+i(k.value===3&&ve(t.categories,9)?" 🖼":"")+"("+i(t.provider||t.id)+") ",9,ct))),128))],512),[[q,v.svc_id]]),j(k.value).length?g("",!0):(a(),n("span",rt,"没有可添加的服务了(都加过了,或服务池里没这类服务)。"))]),s("div",vt,[s("label",bt,[s("span",_t,"参考单价("+i(re(k.value))+",可空)",1)]),S(s("input",{"onUpdate:modelValue":e[9]||(e[9]=t=>v.cost_hint=t),type:"number",step:"0.01",min:"0",class:"input input-bordered input-sm font-mono text-xs",placeholder:"0"},null,512),[[he,v.cost_hint,void 0,{number:!0}]]),e[38]||(e[38]=s("span",{class:"text-[11px] text-slate-400 mt-1"},"仅用于排序/展示,填你的实付价。",-1))]),k.value===3?(a(),n("div",mt,[s("label",gt,[S(s("input",{"onUpdate:modelValue":e[10]||(e[10]=t=>v.is_default=t),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[fe,v.is_default]]),e[39]||(e[39]=s("span",{class:"text-sm"},"设为默认",-1))]),s("label",pt,[S(s("input",{"onUpdate:modelValue":e[11]||(e[11]=t=>v.client_visible=t),type:"checkbox",class:"toggle toggle-success toggle-sm"},null,512),[[fe,v.client_visible]]),e[40]||(e[40]=s("span",{class:"text-sm"},"前端可见",-1))])])):g("",!0)]),s("div",ht,[s("button",{class:"btn btn-ghost btn-sm",onClick:e[12]||(e[12]=t=>T.value?.close())},"取消"),s("button",{class:"btn btn-primary btn-sm text-white",disabled:!v.svc_id||E.value,onClick:Se},i(E.value?"添加中…":"添加"),9,ft)])]),e[42]||(e[42]=s("form",{method:"dialog",class:"modal-backdrop"},[s("button",null,"close")],-1))],512),s("dialog",{ref_key:"costDlg",ref:z,class:"modal"},[s("div",kt,[e[43]||(e[43]=s("h3",{class:"font-bold text-lg"},"参考单价",-1)),s("p",xt,i(y.name)+"("+i(re(y.kind))+")",1),S(s("input",{"onUpdate:modelValue":e[13]||(e[13]=t=>y.cost_hint=t),type:"number",step:"0.01",min:"0",class:"input input-bordered input-sm w-full font-mono text-xs mt-3",placeholder:"0"},null,512),[[he,y.cost_hint,void 0,{number:!0}]]),s("div",yt,[s("button",{class:"btn btn-ghost btn-sm",onClick:e[14]||(e[14]=t=>z.value?.close())},"取消"),s("button",{class:"btn btn-primary btn-sm text-white",disabled:E.value,onClick:Me},"保存",8,wt)])]),e[44]||(e[44]=s("form",{method:"dialog",class:"modal-backdrop"},[s("button",null,"close")],-1))],512)]))}}),Mt=De(Ct,[["__scopeId","data-v-512b8191"]]);export{Mt as default}; diff --git a/apps/admin/.output/public/_nuxt/BgasD__e.js b/apps/admin/.output/public/_nuxt/BgasD__e.js new file mode 100644 index 00000000..84bd998c --- /dev/null +++ b/apps/admin/.output/public/_nuxt/BgasD__e.js @@ -0,0 +1 @@ +import{e as y,aa as h,ab as w,A as g,j as d,k as b}from"./6O01ZZML.js";const k="$s";function A(...t){const s=typeof t[t.length-1]=="string"?t.pop():void 0;typeof t[0]!="string"&&t.unshift(s);const[a,o]=t;if(!a||typeof a!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+a);if(o!==void 0&&typeof o!="function")throw new Error("[nuxt] [useState] init must be a function: "+o);const i=k+a,r=y(),n=h(r.payload.state,i);if(o&&(r._state[i]??={_default:o}),n.value===void 0&&o){const e=o();if(w(e))return r.payload.state[i]=e,e;n.value=e}return n}function m(){const t=A("app:loading",()=>0),s=g(()=>t.value>0);function a(){t.value++}function o(){t.value=Math.max(0,t.value-1)}return{count:t,loading:s,begin:a,end:o}}async function f(t,s,a){const o=d(),i=b(),r={"Content-Type":"application/json"};o.token&&(r.Authorization=o.token),a&&Object.assign(r,a);const n=await fetch(t,{method:"POST",headers:r,body:JSON.stringify(s)});if(!n.ok)throw new Error(`HTTP error: ${n.status}`);const e=await n.json();if(e.code===18)throw o.logout(),i.push("/"),new Error(e.msg||"Unauthorized");if(e.code!==0)throw new Error(e.msg||"Unknown error");return e.data}const S=/^(get|list|load|query|fetch|search|count|stat|export|check)/i;function v(t){return!S.test(t)}function x(){const t=d(),{begin:s,end:a}=m();async function o(n,e){const u={};if(t.currentAppId&&(u["X-App-Id"]=String(t.currentAppId)),!v(n))return f(`/web/api/api_${n}`,e??{},u);s();try{return await f(`/web/api/api_${n}`,e??{},u)}finally{a()}}async function i(n,e){return f(`/console/api/${n}`,e??{})}async function r(n,e){const u=n.type||"application/octet-stream",c=await o("getcostoken",{path:e,filename:n.name,content_type:u}),p=c.upload_url||c.url||"";if(!p)throw new Error("未获取到上传地址:请确认已在【第三方服务配置→存储】配置并启用「阿里云 OSS」");const l=await fetch(p,{method:"PUT",headers:{"Content-Type":u},body:n});if(!l.ok)throw new Error(`Upload failed: ${l.status}`);return c.url||p.split("?")[0]}return{webApi:o,consoleApi:i,uploadFile:r}}export{m as a,A as b,x as u}; diff --git a/apps/admin/.output/public/_nuxt/yis2MfHE.js b/apps/admin/.output/public/_nuxt/BqBJfKQo.js similarity index 99% rename from apps/admin/.output/public/_nuxt/yis2MfHE.js rename to apps/admin/.output/public/_nuxt/BqBJfKQo.js index e6c14e7c..ab9fa6c8 100644 --- a/apps/admin/.output/public/_nuxt/yis2MfHE.js +++ b/apps/admin/.output/public/_nuxt/BqBJfKQo.js @@ -1 +1 @@ -import{g as Q,C as J,c as o,a,l as r,d as f,t as i,F as k,r as M,L as D,q,x as W,v as X,y as h,A as I,z as Y,o as n,n as A,p as $,s as Z,D as ee,_ as te}from"./DSy_gLdM.js";import{u as se}from"./EeX3zgoF.js";import{u as le}from"./NtXZuCUg.js";const ae={class:"flex items-center gap-2 mb-1"},oe={class:"text-lg font-semibold text-slate-800"},ne={key:0,class:"text-slate-400 font-normal"},ie={key:0,class:"grid grid-cols-3 gap-4"},re=["onClick"],de={class:"flex items-start justify-between"},ce={width:"22",height:"22",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},ue=["d"],ve={key:0,class:"badge badge-success badge-sm text-white"},ye={key:1,class:"badge badge-ghost badge-sm"},me={class:"text-base font-semibold text-slate-800 mt-3"},pe={class:"text-xs text-slate-400 mt-1"},_e={class:"text-[11px] text-slate-400 mt-3 pt-3 border-t border-slate-100"},be={key:0},fe={class:"text-slate-600"},ke={key:1,class:"text-slate-300"},he={key:1},ge={class:"grid grid-cols-4 gap-3 mb-5"},xe=["onClick"],we={class:"flex items-center justify-between"},Ce={key:0,class:"text-[10px] text-emerald-500 font-semibold"},Se={key:1,class:"text-[10px] text-slate-300 font-semibold"},Me={class:"text-sm font-semibold text-slate-700 mt-2"},qe={class:"text-[11px] text-slate-400 mb-2.5"},Ae=["onClick"],Te=["checked","onClick"],Pe={key:1,class:"bg-white rounded-2xl border border-slate-100 shadow-sm p-6 max-w-3xl"},De={class:"flex items-center justify-between mb-5"},Ie={class:"flex items-center gap-3"},Ve={class:"text-base font-semibold text-slate-800"},Ke={class:"text-xs text-slate-400 mt-0.5"},Le={class:"flex items-center gap-2"},Re={class:"flex items-center gap-2 mr-1"},$e=["disabled"],je={key:0,class:"loading loading-spinner loading-xs"},ze={class:"grid grid-cols-2 gap-x-5 gap-y-4"},Ee={class:"label py-1"},Ne={class:"label-text text-sm"},Ue={key:0,class:"text-rose-500 ml-0.5"},Be={key:1,class:"lock-tag ml-1.5"},Oe=["onUpdate:modelValue"],Fe=["value"],Ge={key:1,class:"relative"},He=["onUpdate:modelValue","type","placeholder"],Qe=["onClick"],Je={key:2,class:"text-[11px] text-slate-400 mt-1"},We={class:"flex items-end gap-3"},Xe={class:"form-control flex-1"},Ye=["disabled"],Ze={key:0,class:"loading loading-spinner loading-xs"},et=Q({__name:"systemconfig",setup(tt){const{success:T,info:V,error:P}=se(),{webApi:g}=le();function v(l,t,e,s,c,p,_){return{id:l,provider:t,name:e,short:s,tag:c,color:p,enable:!1,is_default:!1,fields:_}}const y=Y([{id:"storage",label:"对象存储",desc:"固件 / 头像等文件直传(默认阿里云 OSS)",color:"#6366f1",icon:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8",multi:!0,services:[v("storage_aliyun_oss","aliyun_oss","阿里云 OSS","OSS","Aliyun · 固件/头像上传所用","#ff6a00",[{key:"endpoint",label:"Endpoint",value:"",placeholder:"oss-cn-shanghai.aliyuncs.com",mono:!0,required:!0},{key:"bucket",label:"Bucket",value:"",placeholder:"yunyan-firmware",mono:!0,required:!0},{key:"access_key_id",label:"AccessKey ID",value:"",mono:!0,encrypted:!0,required:!0},{key:"access_key_secret",label:"AccessKey Secret",value:"",mono:!0,encrypted:!0,required:!0},{key:"domain",label:"自定义域名 (CDN)",value:"",placeholder:"cdn.yunyan.com",wide:!0,hint:"可选,配置后文件下载 URL 走该域名"}]),v("storage_tencent_cos","tencent_cos","腾讯云 COS","COS","Tencent","#00a4ff",[{key:"region",label:"Region",value:"",placeholder:"ap-guangzhou",mono:!0,required:!0},{key:"appid",label:"AppId",value:"",mono:!0,required:!0},{key:"bucket",label:"Bucket",value:"",mono:!0,required:!0},{key:"secret_id",label:"SecretId",value:"",mono:!0,encrypted:!0,required:!0},{key:"secret_key",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"domain",label:"自定义域名 (CDN)",value:"",wide:!0,hint:"可选"}])]},{id:"email",label:"邮件服务",desc:"生产通知 / 账号告警发信(支持 SMTP 与 Resend)",color:"#f59e0b",icon:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z",multi:!1,services:[v("email","auto","邮件服务","MAIL","生产通知 / 账号告警","#f59e0b",[{key:"EmailType",label:"邮箱类型",value:"1",type:"select",required:!0,options:[{value:"0",label:"QQ 邮箱 (SMTP)"},{value:"1",label:"腾讯企业邮箱 (SMTP)"},{value:"2",label:"Gmail (SMTP)"},{value:"3",label:"Resend(HTTP API,海外送达率优)"}]},{key:"FromEmail",label:"发件人邮箱",value:"",mono:!0,required:!0,placeholder:"noreply@yourdomain.com",hint:"Resend 须为已在其后台验证域名下的地址"},{key:"FromName",label:"发件人昵称",value:"",placeholder:"云岩科技"},{key:"Password",label:"SMTP 授权码 / Resend API Key",value:"",mono:!0,encrypted:!0,required:!0,hint:"SMTP 类型填邮箱授权码;Resend 填 re_ 开头的 API Key"}])]},{id:"translate",label:"翻译服务",desc:"后台文案多语言同步",color:"#14b8a6",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129",multi:!0,services:[v("translate_volc","volc","火山引擎翻译","火山","Volcengine MT","#1664ff",[{key:"region",label:"Region",value:"cn-beijing",mono:!0,required:!0},{key:"access_key",label:"AccessKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"secret_key",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_aliyun","aliyun_mt","阿里云翻译","阿里","Aliyun MT","#ff6a00",[{key:"region",label:"Region",value:"cn-hangzhou",mono:!0,required:!0},{key:"access_key_id",label:"AccessKey ID",value:"",mono:!0,encrypted:!0,required:!0},{key:"access_key_secret",label:"AccessKey Secret",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_google","google_mt","Google 翻译","G","Cloud Translation","#ea4335",[{key:"project",label:"Project ID",value:"",mono:!0,required:!0},{key:"api_key",label:"API Key",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_deepl","deepl","DeepL","DL","DeepL API","#0f2b46",[{key:"auth_key",label:"Auth Key",value:"",mono:!0,encrypted:!0,required:!0}])]}]),m=h("cards"),K=h(""),x=h(""),C=h(!1),S=h(!1),w=h(""),d=I(()=>y.find(l=>l.id===K.value)||y[0]),j=I(()=>d.value.services),u=I(()=>d.value.multi&&d.value.services.find(l=>l.id===x.value)||d.value.services[0]);function z(l){return y.find(t=>t.id===l)?.services||[]}function E(l){return z(l).some(t=>t.enable)}function L(l){const t=y.find(s=>s.id===l);if(!t)return"";if(!t.multi){const s=t.services[0];return s.enable?s.name:""}const e=t.services.find(s=>s.is_default&&s.enable);return e?e.name:""}function N(l){K.value=l;const t=y.find(s=>s.id===l),e=t.services.find(s=>s.is_default)||t.services[0];x.value=e.id,m.value="edit"}function U(){m.value="cards"}async function B(){try{const t=(await g("getsysconfigs",{}))?.items||[],e={};for(const s of t)e[s.id]=s;for(const s of y)for(const c of s.services){const p=e[c.id];if(p){c.enable=!!p.enable,c.is_default=!!p.is_default;for(const _ of p.fields||[]){const b=c.fields.find(H=>H.key===_.key);b&&(_.encrypted?(b.value="",_.def_value==="[encrypted]"&&(b.hint=(b.hint?b.hint+";":"")+"已配置(留空保留原密文)")):b.value=_.def_value||"")}}}}catch(l){V("系统配置读取失败:"+(l?.message??l))}}J(B);async function O(){const l=u.value;if(!l)return;const t=d.value;C.value=!0;const e={id:l.id,category:t.id,name:l.name,provider:l.provider,enable:l.enable,is_default:t.multi?l.is_default:!0,fields:l.fields.map((s,c)=>({key:s.key,description:s.label,type:s.type==="select"?"select":"",encrypted:!!s.encrypted,def_value:s.value||"",sort:c}))};try{await g("savesysconfig",e),T(`「${l.name}」配置已保存${l.enable?"并启用":""}`)}catch(s){P(s?.message??"保存失败")}finally{C.value=!1}}async function R(l){const t=d.value;t.services.forEach(e=>{e.is_default=e.id===l.id}),l.enable=!0,x.value=l.id;try{await F(l,t),await g("setsysdefault",{id:l.id,category:t.id}),T(`已将「${l.name}」设为默认`)}catch(e){P(e?.message??"设置失败")}}async function F(l,t){const e={id:l.id,category:t.id,name:l.name,provider:l.provider,enable:!0,is_default:!0,fields:l.fields.map((s,c)=>({key:s.key,description:s.label,type:s.type==="select"?"select":"",encrypted:!!s.encrypted,def_value:s.value||"",sort:c}))};await g("savesysconfig",e)}async function G(){if(!w.value.trim()){V("请先填测试收件邮箱");return}S.value=!0;try{await g("testsysemail",{to:w.value.trim()}),T(`测试邮件已发送至 ${w.value.trim()}`)}catch(l){P(l?.message??"发送失败")}finally{S.value=!1}}return(l,t)=>(n(),o("div",null,[a("div",ae,[m.value==="edit"?(n(),o("button",{key:0,class:"btn btn-ghost btn-sm",onClick:U},"← 返回")):r("",!0),a("h2",oe,[t[2]||(t[2]=f("系统配置",-1)),m.value==="edit"?(n(),o("span",ne," / "+i(d.value.label),1)):r("",!0)])]),t[11]||(t[11]=a("p",{class:"text-xs text-slate-400 mb-5"}," 平台自用服务配置(与「第三方服务配置」分库存储,不下发客户端):对象存储(固件 / 头像直传)、邮件服务(生产通知发信)、翻译服务(后台文案多语言)。 ",-1)),m.value==="cards"?(n(),o("div",ie,[(n(!0),o(k,null,M(y,e=>(n(),o("div",{key:e.id,class:"cat-card",onClick:s=>N(e.id)},[a("div",de,[a("div",{class:"cat-icon",style:D({background:e.color})},[(n(),o("svg",ce,[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:e.icon},null,8,ue)]))],4),E(e.id)?(n(),o("span",ve,"已启用")):(n(),o("span",ye,"未配置"))]),a("div",me,i(e.label),1),a("div",pe,i(e.desc),1),a("div",_e,[L(e.id)?(n(),o("span",be,[t[3]||(t[3]=f("当前:",-1)),a("b",fe,i(L(e.id)),1)])):(n(),o("span",ke,"尚未配置,点击设置"))])],8,re))),128))])):m.value==="edit"?(n(),o("div",he,[d.value.multi?(n(),o(k,{key:0},[t[4]||(t[4]=a("div",{class:"text-xs font-semibold text-slate-500 mb-2"},[f("选择服务商 "),a("span",{class:"text-slate-400 font-normal"},"(勾选设为默认,平台调用走默认项)")],-1)),a("div",ge,[(n(!0),o(k,null,M(j.value,e=>(n(),o("div",{key:e.id,class:A(["provider-card",{active:x.value===e.id,"is-default":e.is_default}]),onClick:s=>x.value=e.id},[a("div",we,[a("div",{class:"provider-logo",style:D({background:e.color})},i(e.short),5),e.enable?(n(),o("span",Ce,"已配置")):(n(),o("span",Se,"未配置"))]),a("div",Me,i(e.name),1),a("div",qe,i(e.tag),1),a("label",{class:A(["default-pick",{on:e.is_default}]),onClick:$(s=>R(e),["stop"])},[a("input",{type:"radio",class:"radio radio-xs radio-primary",checked:e.is_default,onClick:$(s=>R(e),["stop"])},null,8,Te),a("span",null,i(e.is_default?"默认使用":"设为默认"),1)],10,Ae)],10,xe))),128))])],64)):r("",!0),u.value?(n(),o("div",Pe,[a("div",De,[a("div",Ie,[a("div",{class:"provider-logo",style:D({background:u.value.color,width:"44px",height:"44px",fontSize:"14px"})},i(u.value.short),5),a("div",null,[a("h3",Ve,i(u.value.name),1),a("p",Ke,i(u.value.tag),1)])]),a("div",Le,[a("label",Re,[t[5]||(t[5]=a("span",{class:"text-xs text-slate-500"},"启用",-1)),q(a("input",{"onUpdate:modelValue":t[0]||(t[0]=e=>u.value.enable=e),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[W,u.value.enable]])]),a("button",{class:"btn btn-primary btn-sm text-white",disabled:C.value,onClick:O},[C.value?(n(),o("span",je)):r("",!0),t[6]||(t[6]=f("保存 ",-1))],8,$e)])]),t[10]||(t[10]=a("div",{class:"divider text-xs text-slate-400 my-3"},"配置项",-1)),a("div",ze,[(n(!0),o(k,null,M(u.value.fields,e=>(n(),o("div",{key:e.key,class:A(["form-control",{"col-span-2":e.wide}])},[a("label",Ee,[a("span",Ne,[f(i(e.label),1),e.required?(n(),o("span",Ue,"*")):r("",!0),e.encrypted?(n(),o("span",Be,"🔒 加密存储")):r("",!0)])]),e.type==="select"?q((n(),o("select",{key:0,"onUpdate:modelValue":s=>e.value=s,class:"select select-bordered select-sm"},[(n(!0),o(k,null,M(e.options,s=>(n(),o("option",{key:s.value,value:s.value},i(s.label),9,Fe))),128))],8,Oe)),[[Z,e.value]]):(n(),o("div",Ge,[q(a("input",{"onUpdate:modelValue":s=>e.value=s,type:e.encrypted&&!e._show?"password":"text",class:A(["input input-bordered input-sm w-full",{"font-mono":e.mono,"pr-14":e.encrypted}]),placeholder:e.placeholder},null,10,He),[[ee,e.value]]),e.encrypted?(n(),o("button",{key:0,type:"button",class:"absolute right-3 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:s=>e._show=!e._show},i(e._show?"隐藏":"显示"),9,Qe)):r("",!0)])),e.hint?(n(),o("span",Je,i(e.hint),1)):r("",!0)],2))),128))]),d.value.id==="email"?(n(),o(k,{key:0},[t[9]||(t[9]=a("div",{class:"divider text-xs text-slate-400 my-4"},"测试发信",-1)),a("div",We,[a("div",Xe,[t[7]||(t[7]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-sm"},"测试收件邮箱")],-1)),q(a("input",{"onUpdate:modelValue":t[1]||(t[1]=e=>w.value=e),class:"input input-bordered input-sm font-mono",placeholder:"填一个邮箱,发送测试邮件验证配置(需先保存)"},null,512),[[X,w.value]])]),a("button",{class:"btn btn-outline btn-sm",disabled:S.value,onClick:G},[S.value?(n(),o("span",Ze)):r("",!0),t[8]||(t[8]=f("发送测试 ",-1))],8,Ye)])],64)):r("",!0)])):r("",!0)])):r("",!0)]))}}),ot=te(et,[["__scopeId","data-v-6ea4e757"]]);export{ot as default}; +import{g as Q,C as J,c as o,a,l as r,d as f,t as i,F as k,r as M,L as D,q,x as W,v as X,y as h,A as I,z as Y,o as n,n as A,p as $,s as Z,D as ee,_ as te}from"./6O01ZZML.js";import{u as se}from"./xsgK-Nup.js";import{u as le}from"./BgasD__e.js";const ae={class:"flex items-center gap-2 mb-1"},oe={class:"text-lg font-semibold text-slate-800"},ne={key:0,class:"text-slate-400 font-normal"},ie={key:0,class:"grid grid-cols-3 gap-4"},re=["onClick"],de={class:"flex items-start justify-between"},ce={width:"22",height:"22",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},ue=["d"],ve={key:0,class:"badge badge-success badge-sm text-white"},ye={key:1,class:"badge badge-ghost badge-sm"},me={class:"text-base font-semibold text-slate-800 mt-3"},pe={class:"text-xs text-slate-400 mt-1"},_e={class:"text-[11px] text-slate-400 mt-3 pt-3 border-t border-slate-100"},be={key:0},fe={class:"text-slate-600"},ke={key:1,class:"text-slate-300"},he={key:1},ge={class:"grid grid-cols-4 gap-3 mb-5"},xe=["onClick"],we={class:"flex items-center justify-between"},Ce={key:0,class:"text-[10px] text-emerald-500 font-semibold"},Se={key:1,class:"text-[10px] text-slate-300 font-semibold"},Me={class:"text-sm font-semibold text-slate-700 mt-2"},qe={class:"text-[11px] text-slate-400 mb-2.5"},Ae=["onClick"],Te=["checked","onClick"],Pe={key:1,class:"bg-white rounded-2xl border border-slate-100 shadow-sm p-6 max-w-3xl"},De={class:"flex items-center justify-between mb-5"},Ie={class:"flex items-center gap-3"},Ve={class:"text-base font-semibold text-slate-800"},Ke={class:"text-xs text-slate-400 mt-0.5"},Le={class:"flex items-center gap-2"},Re={class:"flex items-center gap-2 mr-1"},$e=["disabled"],je={key:0,class:"loading loading-spinner loading-xs"},ze={class:"grid grid-cols-2 gap-x-5 gap-y-4"},Ee={class:"label py-1"},Ne={class:"label-text text-sm"},Ue={key:0,class:"text-rose-500 ml-0.5"},Be={key:1,class:"lock-tag ml-1.5"},Oe=["onUpdate:modelValue"],Fe=["value"],Ge={key:1,class:"relative"},He=["onUpdate:modelValue","type","placeholder"],Qe=["onClick"],Je={key:2,class:"text-[11px] text-slate-400 mt-1"},We={class:"flex items-end gap-3"},Xe={class:"form-control flex-1"},Ye=["disabled"],Ze={key:0,class:"loading loading-spinner loading-xs"},et=Q({__name:"systemconfig",setup(tt){const{success:T,info:V,error:P}=se(),{webApi:g}=le();function v(l,t,e,s,c,p,_){return{id:l,provider:t,name:e,short:s,tag:c,color:p,enable:!1,is_default:!1,fields:_}}const y=Y([{id:"storage",label:"对象存储",desc:"固件 / 头像等文件直传(默认阿里云 OSS)",color:"#6366f1",icon:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8",multi:!0,services:[v("storage_aliyun_oss","aliyun_oss","阿里云 OSS","OSS","Aliyun · 固件/头像上传所用","#ff6a00",[{key:"endpoint",label:"Endpoint",value:"",placeholder:"oss-cn-shanghai.aliyuncs.com",mono:!0,required:!0},{key:"bucket",label:"Bucket",value:"",placeholder:"yunyan-firmware",mono:!0,required:!0},{key:"access_key_id",label:"AccessKey ID",value:"",mono:!0,encrypted:!0,required:!0},{key:"access_key_secret",label:"AccessKey Secret",value:"",mono:!0,encrypted:!0,required:!0},{key:"domain",label:"自定义域名 (CDN)",value:"",placeholder:"cdn.yunyan.com",wide:!0,hint:"可选,配置后文件下载 URL 走该域名"}]),v("storage_tencent_cos","tencent_cos","腾讯云 COS","COS","Tencent","#00a4ff",[{key:"region",label:"Region",value:"",placeholder:"ap-guangzhou",mono:!0,required:!0},{key:"appid",label:"AppId",value:"",mono:!0,required:!0},{key:"bucket",label:"Bucket",value:"",mono:!0,required:!0},{key:"secret_id",label:"SecretId",value:"",mono:!0,encrypted:!0,required:!0},{key:"secret_key",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"domain",label:"自定义域名 (CDN)",value:"",wide:!0,hint:"可选"}])]},{id:"email",label:"邮件服务",desc:"生产通知 / 账号告警发信(支持 SMTP 与 Resend)",color:"#f59e0b",icon:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z",multi:!1,services:[v("email","auto","邮件服务","MAIL","生产通知 / 账号告警","#f59e0b",[{key:"EmailType",label:"邮箱类型",value:"1",type:"select",required:!0,options:[{value:"0",label:"QQ 邮箱 (SMTP)"},{value:"1",label:"腾讯企业邮箱 (SMTP)"},{value:"2",label:"Gmail (SMTP)"},{value:"3",label:"Resend(HTTP API,海外送达率优)"}]},{key:"FromEmail",label:"发件人邮箱",value:"",mono:!0,required:!0,placeholder:"noreply@yourdomain.com",hint:"Resend 须为已在其后台验证域名下的地址"},{key:"FromName",label:"发件人昵称",value:"",placeholder:"云岩科技"},{key:"Password",label:"SMTP 授权码 / Resend API Key",value:"",mono:!0,encrypted:!0,required:!0,hint:"SMTP 类型填邮箱授权码;Resend 填 re_ 开头的 API Key"}])]},{id:"translate",label:"翻译服务",desc:"后台文案多语言同步",color:"#14b8a6",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129",multi:!0,services:[v("translate_volc","volc","火山引擎翻译","火山","Volcengine MT","#1664ff",[{key:"region",label:"Region",value:"cn-beijing",mono:!0,required:!0},{key:"access_key",label:"AccessKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"secret_key",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_aliyun","aliyun_mt","阿里云翻译","阿里","Aliyun MT","#ff6a00",[{key:"region",label:"Region",value:"cn-hangzhou",mono:!0,required:!0},{key:"access_key_id",label:"AccessKey ID",value:"",mono:!0,encrypted:!0,required:!0},{key:"access_key_secret",label:"AccessKey Secret",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_google","google_mt","Google 翻译","G","Cloud Translation","#ea4335",[{key:"project",label:"Project ID",value:"",mono:!0,required:!0},{key:"api_key",label:"API Key",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_deepl","deepl","DeepL","DL","DeepL API","#0f2b46",[{key:"auth_key",label:"Auth Key",value:"",mono:!0,encrypted:!0,required:!0}])]}]),m=h("cards"),K=h(""),x=h(""),C=h(!1),S=h(!1),w=h(""),d=I(()=>y.find(l=>l.id===K.value)||y[0]),j=I(()=>d.value.services),u=I(()=>d.value.multi&&d.value.services.find(l=>l.id===x.value)||d.value.services[0]);function z(l){return y.find(t=>t.id===l)?.services||[]}function E(l){return z(l).some(t=>t.enable)}function L(l){const t=y.find(s=>s.id===l);if(!t)return"";if(!t.multi){const s=t.services[0];return s.enable?s.name:""}const e=t.services.find(s=>s.is_default&&s.enable);return e?e.name:""}function N(l){K.value=l;const t=y.find(s=>s.id===l),e=t.services.find(s=>s.is_default)||t.services[0];x.value=e.id,m.value="edit"}function U(){m.value="cards"}async function B(){try{const t=(await g("getsysconfigs",{}))?.items||[],e={};for(const s of t)e[s.id]=s;for(const s of y)for(const c of s.services){const p=e[c.id];if(p){c.enable=!!p.enable,c.is_default=!!p.is_default;for(const _ of p.fields||[]){const b=c.fields.find(H=>H.key===_.key);b&&(_.encrypted?(b.value="",_.def_value==="[encrypted]"&&(b.hint=(b.hint?b.hint+";":"")+"已配置(留空保留原密文)")):b.value=_.def_value||"")}}}}catch(l){V("系统配置读取失败:"+(l?.message??l))}}J(B);async function O(){const l=u.value;if(!l)return;const t=d.value;C.value=!0;const e={id:l.id,category:t.id,name:l.name,provider:l.provider,enable:l.enable,is_default:t.multi?l.is_default:!0,fields:l.fields.map((s,c)=>({key:s.key,description:s.label,type:s.type==="select"?"select":"",encrypted:!!s.encrypted,def_value:s.value||"",sort:c}))};try{await g("savesysconfig",e),T(`「${l.name}」配置已保存${l.enable?"并启用":""}`)}catch(s){P(s?.message??"保存失败")}finally{C.value=!1}}async function R(l){const t=d.value;t.services.forEach(e=>{e.is_default=e.id===l.id}),l.enable=!0,x.value=l.id;try{await F(l,t),await g("setsysdefault",{id:l.id,category:t.id}),T(`已将「${l.name}」设为默认`)}catch(e){P(e?.message??"设置失败")}}async function F(l,t){const e={id:l.id,category:t.id,name:l.name,provider:l.provider,enable:!0,is_default:!0,fields:l.fields.map((s,c)=>({key:s.key,description:s.label,type:s.type==="select"?"select":"",encrypted:!!s.encrypted,def_value:s.value||"",sort:c}))};await g("savesysconfig",e)}async function G(){if(!w.value.trim()){V("请先填测试收件邮箱");return}S.value=!0;try{await g("testsysemail",{to:w.value.trim()}),T(`测试邮件已发送至 ${w.value.trim()}`)}catch(l){P(l?.message??"发送失败")}finally{S.value=!1}}return(l,t)=>(n(),o("div",null,[a("div",ae,[m.value==="edit"?(n(),o("button",{key:0,class:"btn btn-ghost btn-sm",onClick:U},"← 返回")):r("",!0),a("h2",oe,[t[2]||(t[2]=f("系统配置",-1)),m.value==="edit"?(n(),o("span",ne," / "+i(d.value.label),1)):r("",!0)])]),t[11]||(t[11]=a("p",{class:"text-xs text-slate-400 mb-5"}," 平台自用服务配置(与「第三方服务配置」分库存储,不下发客户端):对象存储(固件 / 头像直传)、邮件服务(生产通知发信)、翻译服务(后台文案多语言)。 ",-1)),m.value==="cards"?(n(),o("div",ie,[(n(!0),o(k,null,M(y,e=>(n(),o("div",{key:e.id,class:"cat-card",onClick:s=>N(e.id)},[a("div",de,[a("div",{class:"cat-icon",style:D({background:e.color})},[(n(),o("svg",ce,[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:e.icon},null,8,ue)]))],4),E(e.id)?(n(),o("span",ve,"已启用")):(n(),o("span",ye,"未配置"))]),a("div",me,i(e.label),1),a("div",pe,i(e.desc),1),a("div",_e,[L(e.id)?(n(),o("span",be,[t[3]||(t[3]=f("当前:",-1)),a("b",fe,i(L(e.id)),1)])):(n(),o("span",ke,"尚未配置,点击设置"))])],8,re))),128))])):m.value==="edit"?(n(),o("div",he,[d.value.multi?(n(),o(k,{key:0},[t[4]||(t[4]=a("div",{class:"text-xs font-semibold text-slate-500 mb-2"},[f("选择服务商 "),a("span",{class:"text-slate-400 font-normal"},"(勾选设为默认,平台调用走默认项)")],-1)),a("div",ge,[(n(!0),o(k,null,M(j.value,e=>(n(),o("div",{key:e.id,class:A(["provider-card",{active:x.value===e.id,"is-default":e.is_default}]),onClick:s=>x.value=e.id},[a("div",we,[a("div",{class:"provider-logo",style:D({background:e.color})},i(e.short),5),e.enable?(n(),o("span",Ce,"已配置")):(n(),o("span",Se,"未配置"))]),a("div",Me,i(e.name),1),a("div",qe,i(e.tag),1),a("label",{class:A(["default-pick",{on:e.is_default}]),onClick:$(s=>R(e),["stop"])},[a("input",{type:"radio",class:"radio radio-xs radio-primary",checked:e.is_default,onClick:$(s=>R(e),["stop"])},null,8,Te),a("span",null,i(e.is_default?"默认使用":"设为默认"),1)],10,Ae)],10,xe))),128))])],64)):r("",!0),u.value?(n(),o("div",Pe,[a("div",De,[a("div",Ie,[a("div",{class:"provider-logo",style:D({background:u.value.color,width:"44px",height:"44px",fontSize:"14px"})},i(u.value.short),5),a("div",null,[a("h3",Ve,i(u.value.name),1),a("p",Ke,i(u.value.tag),1)])]),a("div",Le,[a("label",Re,[t[5]||(t[5]=a("span",{class:"text-xs text-slate-500"},"启用",-1)),q(a("input",{"onUpdate:modelValue":t[0]||(t[0]=e=>u.value.enable=e),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[W,u.value.enable]])]),a("button",{class:"btn btn-primary btn-sm text-white",disabled:C.value,onClick:O},[C.value?(n(),o("span",je)):r("",!0),t[6]||(t[6]=f("保存 ",-1))],8,$e)])]),t[10]||(t[10]=a("div",{class:"divider text-xs text-slate-400 my-3"},"配置项",-1)),a("div",ze,[(n(!0),o(k,null,M(u.value.fields,e=>(n(),o("div",{key:e.key,class:A(["form-control",{"col-span-2":e.wide}])},[a("label",Ee,[a("span",Ne,[f(i(e.label),1),e.required?(n(),o("span",Ue,"*")):r("",!0),e.encrypted?(n(),o("span",Be,"🔒 加密存储")):r("",!0)])]),e.type==="select"?q((n(),o("select",{key:0,"onUpdate:modelValue":s=>e.value=s,class:"select select-bordered select-sm"},[(n(!0),o(k,null,M(e.options,s=>(n(),o("option",{key:s.value,value:s.value},i(s.label),9,Fe))),128))],8,Oe)),[[Z,e.value]]):(n(),o("div",Ge,[q(a("input",{"onUpdate:modelValue":s=>e.value=s,type:e.encrypted&&!e._show?"password":"text",class:A(["input input-bordered input-sm w-full",{"font-mono":e.mono,"pr-14":e.encrypted}]),placeholder:e.placeholder},null,10,He),[[ee,e.value]]),e.encrypted?(n(),o("button",{key:0,type:"button",class:"absolute right-3 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:s=>e._show=!e._show},i(e._show?"隐藏":"显示"),9,Qe)):r("",!0)])),e.hint?(n(),o("span",Je,i(e.hint),1)):r("",!0)],2))),128))]),d.value.id==="email"?(n(),o(k,{key:0},[t[9]||(t[9]=a("div",{class:"divider text-xs text-slate-400 my-4"},"测试发信",-1)),a("div",We,[a("div",Xe,[t[7]||(t[7]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-sm"},"测试收件邮箱")],-1)),q(a("input",{"onUpdate:modelValue":t[1]||(t[1]=e=>w.value=e),class:"input input-bordered input-sm font-mono",placeholder:"填一个邮箱,发送测试邮件验证配置(需先保存)"},null,512),[[X,w.value]])]),a("button",{class:"btn btn-outline btn-sm",disabled:S.value,onClick:G},[S.value?(n(),o("span",Ze)):r("",!0),t[8]||(t[8]=f("发送测试 ",-1))],8,Ye)])],64)):r("",!0)])):r("",!0)])):r("",!0)]))}}),ot=te(et,[["__scopeId","data-v-6ea4e757"]]);export{ot as default}; diff --git a/apps/admin/.output/public/_nuxt/D4Um3zt0.js b/apps/admin/.output/public/_nuxt/BrJ9pewm.js similarity index 97% rename from apps/admin/.output/public/_nuxt/D4Um3zt0.js rename to apps/admin/.output/public/_nuxt/BrJ9pewm.js index 5e5b0e97..f8a49f41 100644 --- a/apps/admin/.output/public/_nuxt/D4Um3zt0.js +++ b/apps/admin/.output/public/_nuxt/BrJ9pewm.js @@ -1 +1 @@ -import{L as y,l as x}from"./DD3V9C6_.js";import{g as V,c as t,F as u,a as l,n as C,r,l as g,t as o,A as h,o as s,d as B,_ as N}from"./DSy_gLdM.js";const L={class:"lang-select"},O={class:"lang-chip-name"},S=["onClick"],j={key:0,class:"lang-empty"},A={key:0,class:"lang-dd"},F={class:"lang-dd-sum"},I={class:"lang-dd-panel"},T=["checked","onChange"],$={class:"lang-opt-code"},w={class:"lang-opt-name"},z=["value","disabled"],D=["value"],E=V({__name:"LangSelect",props:{modelValue:{},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},options:{default:void 0}},emits:["update:modelValue"],setup(c,{emit:f}){const d=c,m=f,p=h(()=>d.options&&d.options.length?d.options:y),i=h(()=>(d.modelValue||"").split(",").map(a=>a.trim()).filter(Boolean));function v(a){return x(a)}function _(a){if(d.disabled)return;const n=i.value.slice(),e=n.indexOf(a);e>=0?n.splice(e,1):n.push(a),m("update:modelValue",n.join(","))}function b(a){m("update:modelValue",a.target.value)}return(a,n)=>(s(),t("div",L,[c.multiple?(s(),t(u,{key:0},[l("div",{class:C(["lang-chips",{"lang-disabled":c.disabled}])},[(s(!0),t(u,null,r(i.value,e=>(s(),t("span",{key:e,class:"lang-chip"},[B(o(e),1),l("span",O,o(v(e)),1),l("button",{type:"button",class:"lang-x",onClick:k=>_(e)},"×",8,S)]))),128)),i.value.length?g("",!0):(s(),t("span",j,"未选择语言"))],2),c.disabled?g("",!0):(s(),t("details",A,[l("summary",F,"+ 选择语言(已选 "+o(i.value.length)+")",1),l("div",I,[(s(!0),t(u,null,r(p.value,e=>(s(),t("label",{key:e.code,class:"lang-opt"},[l("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:i.value.includes(e.code),onChange:k=>_(e.code)},null,40,T),l("span",$,o(e.code),1),l("span",w,o(e.name),1)]))),128))])]))],64)):(s(),t("select",{key:1,class:"select select-bordered select-sm w-full text-xs",value:c.modelValue,disabled:c.disabled,onChange:b},[n[0]||(n[0]=l("option",{value:""},"(未设置)",-1)),(s(!0),t(u,null,r(p.value,e=>(s(),t("option",{key:e.code,value:e.code},o(e.code)+" · "+o(e.name),9,D))),128))],40,z))]))}}),q=Object.assign(N(E,[["__scopeId","data-v-4903af59"]]),{__name:"LangSelect"});export{q as _}; +import{L as y,l as x}from"./DD3V9C6_.js";import{g as V,c as t,F as u,a as l,n as C,r,l as g,t as o,A as h,o as s,d as B,_ as N}from"./6O01ZZML.js";const L={class:"lang-select"},O={class:"lang-chip-name"},S=["onClick"],j={key:0,class:"lang-empty"},A={key:0,class:"lang-dd"},F={class:"lang-dd-sum"},I={class:"lang-dd-panel"},T=["checked","onChange"],$={class:"lang-opt-code"},w={class:"lang-opt-name"},z=["value","disabled"],D=["value"],E=V({__name:"LangSelect",props:{modelValue:{},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},options:{default:void 0}},emits:["update:modelValue"],setup(c,{emit:f}){const d=c,m=f,p=h(()=>d.options&&d.options.length?d.options:y),i=h(()=>(d.modelValue||"").split(",").map(a=>a.trim()).filter(Boolean));function v(a){return x(a)}function _(a){if(d.disabled)return;const n=i.value.slice(),e=n.indexOf(a);e>=0?n.splice(e,1):n.push(a),m("update:modelValue",n.join(","))}function b(a){m("update:modelValue",a.target.value)}return(a,n)=>(s(),t("div",L,[c.multiple?(s(),t(u,{key:0},[l("div",{class:C(["lang-chips",{"lang-disabled":c.disabled}])},[(s(!0),t(u,null,r(i.value,e=>(s(),t("span",{key:e,class:"lang-chip"},[B(o(e),1),l("span",O,o(v(e)),1),l("button",{type:"button",class:"lang-x",onClick:k=>_(e)},"×",8,S)]))),128)),i.value.length?g("",!0):(s(),t("span",j,"未选择语言"))],2),c.disabled?g("",!0):(s(),t("details",A,[l("summary",F,"+ 选择语言(已选 "+o(i.value.length)+")",1),l("div",I,[(s(!0),t(u,null,r(p.value,e=>(s(),t("label",{key:e.code,class:"lang-opt"},[l("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:i.value.includes(e.code),onChange:k=>_(e.code)},null,40,T),l("span",$,o(e.code),1),l("span",w,o(e.name),1)]))),128))])]))],64)):(s(),t("select",{key:1,class:"select select-bordered select-sm w-full text-xs",value:c.modelValue,disabled:c.disabled,onChange:b},[n[0]||(n[0]=l("option",{value:""},"(未设置)",-1)),(s(!0),t(u,null,r(p.value,e=>(s(),t("option",{key:e.code,value:e.code},o(e.code)+" · "+o(e.name),9,D))),128))],40,z))]))}}),q=Object.assign(N(E,[["__scopeId","data-v-4903af59"]]),{__name:"LangSelect"});export{q as _}; diff --git a/apps/admin/.output/public/_nuxt/obp34o1K.js b/apps/admin/.output/public/_nuxt/BvvkbLjV.js similarity index 80% rename from apps/admin/.output/public/_nuxt/obp34o1K.js rename to apps/admin/.output/public/_nuxt/BvvkbLjV.js index 30eb0984..29ee6bc4 100644 --- a/apps/admin/.output/public/_nuxt/obp34o1K.js +++ b/apps/admin/.output/public/_nuxt/BvvkbLjV.js @@ -1 +1 @@ -import{u as a,e as s,h as u,i as r,f as h}from"./DSy_gLdM.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u}; +import{u as a,e as s,h as u,i as r,f as h}from"./6O01ZZML.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u}; diff --git a/apps/admin/.output/public/_nuxt/w_7nuVJ9.js b/apps/admin/.output/public/_nuxt/C8kc9IUa.js similarity index 98% rename from apps/admin/.output/public/_nuxt/w_7nuVJ9.js rename to apps/admin/.output/public/_nuxt/C8kc9IUa.js index 450ed538..46e47554 100644 --- a/apps/admin/.output/public/_nuxt/w_7nuVJ9.js +++ b/apps/admin/.output/public/_nuxt/C8kc9IUa.js @@ -1 +1 @@ -import{g as ke,C as Ce,c as a,a as t,q as r,s as h,F as u,r as p,l as m,H as we,t as c,d as S,v,b as X,x as K,y as g,z as Ve,A as x,o as i,L as I,p as Te,n as Q,_ as Ae}from"./DSy_gLdM.js";import{u as Se}from"./NtXZuCUg.js";import{u as Ue}from"./EeX3zgoF.js";import{L as W}from"./DD3V9C6_.js";import{_ as Z}from"./D4Um3zt0.js";const Le={class:"flex items-center justify-between mb-5 flex-wrap gap-3"},Me={class:"flex items-center gap-3"},Oe=["value"],Ne={key:0,class:"text-center py-20 text-slate-300"},$e={class:"flex items-center gap-2 mb-3"},Pe={class:"text-xs text-slate-400"},Be={class:"text-xs text-slate-400"},je={class:"agent-grid"},Ee=["onClick"],Ie={class:"flex items-start justify-between gap-2"},ze={class:"min-w-0"},De={class:"font-semibold text-sm text-slate-800 truncate"},qe={class:"text-[11px] text-slate-400 mt-0.5 truncate"},Fe={class:"flex items-center gap-1 flex-shrink-0"},Ge={key:0,class:"badge badge-success badge-xs"},Ye={key:1,class:"badge badge-ghost badge-xs"},Je=["onClick"],Re={key:0,class:"text-xs text-slate-500 mt-2 line-clamp-2"},He={class:"flex flex-wrap items-center gap-1.5 mt-3"},Xe={key:1,class:"text-[11px] text-slate-400 mt-2 truncate"},Ke={class:"ag-overlay"},Qe={class:"ag-box"},We={class:"flex items-center justify-between mb-4"},Ze={class:"flex items-center gap-3"},et={class:"text-base font-semibold text-slate-800"},tt={class:"scope-chip"},st={class:"ed-section"},lt={class:"type-row"},nt=["disabled","onClick"],ot={class:"ttab-title"},at={class:"ttab-desc"},it={key:0,class:"ed-tip"},dt={class:"ed-section"},ct={class:"grid grid-cols-2 gap-3"},rt=["disabled"],ut={class:"mt-3"},pt={class:"grid grid-cols-3 gap-3 mt-3"},vt={class:"ed-section"},_t={class:"slot-row"},mt={class:"slot-item"},bt={class:"ed-label inline"},gt=["onUpdate:modelValue"],ft={value:"",disabled:""},xt=["value"],yt={key:0,class:"slot-arrow"},ht={class:"ed-section"},kt={class:"grid grid-cols-2 gap-3"},Ct={class:"mt-3"},wt={class:"flex items-center justify-between mb-1"},Vt={class:"flex gap-1"},Tt=["disabled"],At={class:"ed-tip mb-1"},St={key:0,class:"text-xs text-slate-300 py-2"},Ut=["onUpdate:modelValue","onChange"],Lt=["value"],Mt=["onUpdate:modelValue","onChange"],Ot=["onUpdate:modelValue"],Nt=["value"],$t=["onUpdate:modelValue"],Pt=["onClick"],Bt={key:0,class:"ed-section"},jt={class:"mt-3"},Et={class:"flex items-center gap-2 text-sm cursor-pointer"},It={class:"ed-section"},zt={key:0,class:"ed-tip"},Dt={key:1,class:"mcp-grid"},qt=["checked","onChange"],Ft={class:"min-w-0"},Gt={class:"block truncate"},Yt={class:"block truncate text-[10px] text-slate-400 font-mono"},Jt={class:"ed-section"},Rt={key:0,class:"text-xs text-slate-300 py-2"},Ht=["onUpdate:modelValue"],Xt=["onUpdate:modelValue"],Kt=["onUpdate:modelValue"],Qt=["onClick"],Wt={class:"ed-footer"},Zt={class:"flex items-center gap-2 text-sm cursor-pointer"},es={class:"flex gap-2"},ts=["disabled"],ee=1,te=2,ss=3,ls=4,ns=5,os=7,se=9,as=10,is=ke({__name:"agents",setup(ds){const z=[{value:"chat",label:"chat-agent 对话",icon:"💬",hint:"STT → LLM → TTS 三段拼接",color:"#b45309",bg:"#fef9c3"},{value:"sts-chat",label:"sts-chat-agent 端到端对话",icon:"⚡",hint:"单个 STS 服务直接完成语音对话",color:"#be185d",bg:"#fce7f3"}],le={translate:{label:"翻译(已下线)",icon:"🧩",color:"#64748b",bg:"#f1f5f9"},"ast-translate":{label:"端到端翻译(已下线)",icon:"🚀",color:"#64748b",bg:"#f1f5f9"}},ne={chat:[{key:"stt_svc_id",slot:"STT",label:"语音识别",cats:[ee],color:"#1664ff"},{key:"llm_svc_id",slot:"LLM",label:"大语言模型",cats:[ns,se],color:"#b45309"},{key:"tts_svc_id",slot:"TTS",label:"语音合成",cats:[te],color:"#7c3aed"}],translate:[{key:"stt_svc_id",slot:"STT",label:"语音识别",cats:[ee],color:"#1664ff"},{key:"mt_svc_id",slot:"MT",label:"机器翻译",cats:[ss],color:"#059669"},{key:"tts_svc_id",slot:"TTS",label:"语音合成",cats:[te],color:"#7c3aed"}],"sts-chat":[{key:"sts_svc_id",slot:"STS",label:"端到端语音对话",cats:[os],color:"#be185d"}],"ast-translate":[{key:"ast_svc_id",slot:"AST",label:"端到端语音翻译",cats:[ls],color:"#f97316"}]};function k(l){return ne[l]??[]}const{webApi:C,consoleApi:oe}=Se(),{success:U,error:y}=Ue(),f=g(""),O=g([]),w=g([]),V=g([]),T=g([]),L=g(!1),b=g(!1),N=g(!1);function $(){return{app_name:"",id:"",name:"",type:"chat",description:"",avatar_url:"",enable:!0,stt_svc_id:"",llm_svc_id:"",tts_svc_id:"",mt_svc_id:"",sts_svc_id:"",ast_svc_id:"",system_prompt:"",gender:0,greeting_enabled:!1,greeting_text:"",support_langs:"",default_lang:"",voice_map:[],mcp_svc_ids:[],variables:[],sort:0}}const n=Ve($()),ae=x(()=>n.type==="chat"||n.type==="sts-chat"),D=x(()=>{const l=(n.support_langs||"").split(",").map(e=>e.trim()).filter(Boolean);return l.length?W.filter(e=>l.includes(e.code)):W}),q=(l,e)=>(e.sort||0)-(l.sort||0)||(l.name||"").localeCompare(e.name||""),ie=x(()=>{const l=z.map(e=>({...e,type:e.value,items:w.value.filter(s=>s.type===e.value).sort(q)})).filter(e=>e.items.length);for(const[e,s]of Object.entries(le)){const d=w.value.filter(o=>o.type===e).sort(q);d.length&&l.push({value:e,type:e,hint:"已下线的类型,仅供查看与清理",...s,items:d})}return l});async function de(){try{const l=await oe("products/list",{});O.value=(l??[]).map(e=>e.name).filter(Boolean)}catch{O.value=[]}}async function ce(){try{const l=await C("getsvcconfigs",{app_name:f.value});V.value=l?.items??[]}catch{V.value=[]}}async function P(){try{const l=await C("getagents",{app_name:f.value});w.value=(l?.items??[]).map(e=>({...e,voice_map:e.voice_map??[],mcp_svc_ids:e.mcp_svc_ids??[],variables:e.variables??[]}))}catch(l){y(l?.message??"加载失败"),w.value=[]}}async function re(){try{const l=await C("getttsvoices",{});T.value=l?.voices??[]}catch{T.value=[]}}async function F(){await Promise.all([ce(),P()])}const G=x(()=>n.type==="sts-chat"?n.sts_svc_id:n.tts_svc_id),A=x(()=>V.value.find(l=>l.id===G.value)?.provider??""),B=x(()=>!!A.value&&T.value.some(l=>l.provider===A.value));function M(l,e){const s=A.value;if(!s||!l)return[];const d=(l.split("-")[0]||"").toLowerCase(),o=T.value.filter(_=>_.provider!==s||e&&_.gender!==e?!1:_.language.toLowerCase()===l.toLowerCase());return o.length?o:T.value.filter(_=>_.provider!==s||e&&_.gender!==e?!1:(_.language.split("-")[0]||"").toLowerCase()===d)}function Y(l,e){return M(l,e)[0]?.voice_id??""}function J(l){const e=M(l.language,l.gender);e.length&&(!l.voice||!e.some(s=>s.voice_id===l.voice))&&(l.voice=e[0].voice_id)}function ue(){const l=(n.support_langs||"").split(",").map(s=>s.trim()).filter(Boolean);if(!l.length){y("请先选择支持语言");return}let e=0;for(const s of l){if(n.voice_map.some(o=>o.language===s&&o.gender===n.gender))continue;const d=Y(s,n.gender);d&&(n.voice_map.push({language:s,gender:n.gender,voice:d}),e++)}U(e?`已补全 ${e} 种语言的默认音色`:"已是最新,无需补全")}const R=x(()=>j([as]));function pe(l){const e=n.mcp_svc_ids.indexOf(l);e>=0?n.mcp_svc_ids.splice(e,1):n.mcp_svc_ids.push(l)}function ve(){n.variables.push({key:"",label:"",def_value:"",description:""})}function H(l){return(l.categories||"").split(",").map(Number)}function j(l){return V.value.filter(e=>e.enable&&H(e).some(s=>l.includes(s)))}function _e(l){return H(l).includes(se)}function me(l){if(!l)return"未配置";const e=V.value.find(s=>s.id===l);return e?e.name:l}function be(l){return k(l.type).map(e=>({slot:e.slot,color:e.color,id:l[e.key]}))}function ge(){Object.assign(n,$()),b.value=!1,L.value=!0}function fe(l){Object.assign(n,$(),l,{voice_map:(l.voice_map??[]).map(e=>({...e})),mcp_svc_ids:[...l.mcp_svc_ids??[]],variables:(l.variables??[]).map(e=>({...e}))}),b.value=!0,L.value=!0}function E(){L.value=!1}function xe(){const l=n.default_lang||"";n.voice_map.push({language:l,gender:n.gender,voice:Y(l,n.gender)})}async function ye(){if(!n.id.trim()||!n.name.trim()){y("Agent ID 和 名称 必填");return}for(const l of k(n.type))if(!(n[l.key]||"").trim()){y(`${l.slot} ${l.label} 必选`);return}N.value=!0;try{const l={...JSON.parse(JSON.stringify(n)),app_name:f.value,id:n.id.trim(),name:n.name.trim(),stt_svc_id:"",llm_svc_id:"",tts_svc_id:"",mt_svc_id:"",sts_svc_id:"",ast_svc_id:""};for(const e of k(n.type))l[e.key]=n[e.key];l.voice_map=n.voice_map.filter(e=>e.language&&e.voice),l.mcp_svc_ids=n.mcp_svc_ids.filter(Boolean),l.variables=n.variables.filter(e=>(e.key||"").trim()),await C(b.value?"updateagent":"addagent",l),U("保存成功"),E(),await P()}catch(l){y(l?.message??"保存失败")}finally{N.value=!1}}function he(l){window.confirm(`确定删除 Agent「${l.name||l.id}」吗?引用它的通话翻译规则会失效。`)&&C("delagent",{app_name:f.value,id:l.id}).then(()=>{U("已删除"),P()}).catch(e=>y(e?.message??"删除失败"))}return Ce(async()=>{await de(),await Promise.all([F(),re()])}),(l,e)=>(i(),a("div",null,[t("div",Le,[e[15]||(e[15]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"Agent 配置"),t("p",{class:"text-xs text-slate-400 mt-1"}," 把已配置的第三方服务编排成可下发客户端的智能体。四种类型按需引用不同服务;通话翻译规则只能引用「翻译」与「端到端翻译」两类。 ")],-1)),t("div",Me,[e[14]||(e[14]=t("span",{class:"text-sm text-slate-500"},"作用域",-1)),r(t("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>f.value=s),class:"select select-bordered select-sm",onChange:F},[e[13]||(e[13]=t("option",{value:""},"全局默认",-1)),(i(!0),a(u,null,p(O.value,s=>(i(),a("option",{key:s,value:s},c(s),9,Oe))),128))],544),[[h,f.value]]),t("button",{class:"btn btn-primary btn-sm text-white",onClick:ge},"+ 新建 Agent")])]),w.value.length?m("",!0):(i(),a("div",Ne,[...e[16]||(e[16]=[t("div",{class:"text-5xl mb-3"},"🤖",-1),t("p",{class:"text-sm"},"当前作用域下还没有 Agent",-1),t("p",{class:"text-xs mt-1"},"先在「第三方服务配置」里配好服务,再来把它们组装成 Agent",-1)])])),(i(!0),a(u,null,p(ie.value,s=>(i(),a("div",{key:s.type,class:"mb-6"},[t("div",$e,[t("span",{class:"type-tag",style:I({background:s.bg,color:s.color})},c(s.icon)+" "+c(s.label),5),t("span",Pe,c(s.hint),1),e[17]||(e[17]=t("span",{class:"text-xs text-slate-300"},"·",-1)),t("span",Be,c(s.items.length)+" 个",1)]),t("div",je,[(i(!0),a(u,null,p(s.items,d=>(i(),a("div",{key:d.id,class:"agent-card",onClick:o=>fe(d)},[t("div",Ie,[t("div",ze,[t("div",De,c(d.name||d.id),1),t("div",qe,c(d.id),1)]),t("div",Fe,[d.enable?(i(),a("span",Ge,"启用")):(i(),a("span",Ye,"停用")),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:Te(o=>he(d),["stop"])},"删除",8,Je)])]),d.description?(i(),a("p",Re,c(d.description),1)):m("",!0),t("div",He,[(i(!0),a(u,null,p(be(d),o=>(i(),a("span",{key:o.slot,class:"svc-pill",style:I({background:o.color})},c(o.slot)+": "+c(me(o.id)),5))),128))]),d.support_langs?(i(),a("div",Xe," 支持语言:"+c(d.support_langs),1)):m("",!0)],8,Ee))),128))])]))),128)),r(t("div",Ke,[t("div",Qe,[t("div",We,[t("div",Ze,[t("h3",et,c(b.value?"编辑 Agent":"新建 Agent"),1),t("span",tt,c(f.value||"全局默认"),1)]),t("button",{class:"btn btn-ghost btn-xs",onClick:E},"✕ 关闭")]),t("section",st,[e[18]||(e[18]=t("div",{class:"ed-section-title"},"类型",-1)),t("div",lt,[(i(),a(u,null,p(z,s=>t("button",{key:s.value,type:"button",class:Q(["ttab",{on:n.type===s.value,locked:b.value&&n.type!==s.value}]),disabled:b.value,onClick:d=>n.type=s.value},[t("span",ot,c(s.icon)+" "+c(s.label),1),t("span",at,c(s.hint),1)],10,nt)),64))]),b.value?(i(),a("p",it,"类型创建后不可更改;需要换类型请新建一个 Agent。")):m("",!0)]),t("section",dt,[e[26]||(e[26]=t("div",{class:"ed-section-title"},"基本信息",-1)),t("div",ct,[t("div",null,[e[19]||(e[19]=t("span",{class:"ed-label"},[S("Agent ID "),t("i",{class:"req"},"*")],-1)),r(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>n.id=s),disabled:b.value,class:"input input-bordered input-sm w-full",placeholder:"如 trans-cn-en(作用域内唯一,创建后不可改)"},null,8,rt),[[v,n.id]])]),t("div",null,[e[20]||(e[20]=t("span",{class:"ed-label"},[S("名称 "),t("i",{class:"req"},"*")],-1)),r(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>n.name=s),class:"input input-bordered input-sm w-full",placeholder:"展示名,如 中英实时翻译"},null,512),[[v,n.name]])])]),t("div",ut,[e[21]||(e[21]=t("span",{class:"ed-label"},"描述",-1)),r(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>n.description=s),class:"input input-bordered input-sm w-full",placeholder:"这个 Agent 用在什么场景"},null,512),[[v,n.description]])]),t("div",pt,[t("div",null,[e[22]||(e[22]=t("span",{class:"ed-label"},"头像 URL",-1)),r(t("input",{"onUpdate:modelValue":e[4]||(e[4]=s=>n.avatar_url=s),class:"input input-bordered input-sm w-full",placeholder:"可留空"},null,512),[[v,n.avatar_url]])]),t("div",null,[e[23]||(e[23]=t("span",{class:"ed-label"},"排序(越大越靠前)",-1)),r(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>n.sort=s),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[v,n.sort,void 0,{number:!0}]])]),t("div",null,[e[25]||(e[25]=t("span",{class:"ed-label"},"音色性别偏好",-1)),r(t("select",{"onUpdate:modelValue":e[6]||(e[6]=s=>n.gender=s),class:"select select-bordered select-sm w-full"},[...e[24]||(e[24]=[t("option",{value:0},"不限",-1),t("option",{value:1},"男",-1),t("option",{value:2},"女",-1)])],512),[[h,n.gender,void 0,{number:!0}]])])])]),t("section",vt,[e[27]||(e[27]=t("div",{class:"ed-section-title"},"服务编排",-1)),t("div",_t,[(i(!0),a(u,null,p(k(n.type),(s,d)=>(i(),a(u,{key:s.key},[t("div",mt,[t("span",{class:"stage-tag",style:I({background:s.color})},c(s.slot),5),t("span",bt,c(s.label),1),r(t("select",{"onUpdate:modelValue":o=>n[s.key]=o,class:"select select-bordered select-sm w-full"},[t("option",ft,c(j(s.cats).length?"请选择服务":"(无可用服务,请先去第三方服务配置里添加)"),1),(i(!0),a(u,null,p(j(s.cats),o=>(i(),a("option",{key:o.id,value:o.id},c(o.name)+c(_e(o)?" 🖼":""),9,xt))),128))],8,gt),[[h,n[s.key]]])]),dn.support_langs=s),multiple:""},null,8,["modelValue"])]),t("div",null,[e[29]||(e[29]=t("span",{class:"ed-label"},"默认语言",-1)),X(Z,{modelValue:n.default_lang,"onUpdate:modelValue":e[8]||(e[8]=s=>n.default_lang=s),options:D.value},null,8,["modelValue","options"])])]),t("div",Ct,[t("div",wt,[e[30]||(e[30]=t("span",{class:"ed-label mb-0"},"音色(按语言+性别配,Agent 切语言时自动换音色)",-1)),t("div",Vt,[t("button",{class:"btn btn-ghost btn-xs",disabled:!B.value,onClick:ue},"按支持语言补全",8,Tt),t("button",{class:"btn btn-ghost btn-xs",onClick:xe},"+ 添加一行")])]),t("p",At,[G.value?B.value?(i(),a(u,{key:1},[S(" 候选来自内置音色表("+c(A.value)+");同一语言+性别有多个时默认第一个,可在下拉里换。没配到的语言走服务商默认音色。 ",1)],64)):(i(),a(u,{key:2},[S("「"+c(A.value||"该服务商")+"」不在内置音色表里,请手填服务商的音色 id。",1)],64)):(i(),a(u,{key:0},[S("先在上方选好语音服务,这里才能列出可用音色。")],64))]),n.voice_map.length?m("",!0):(i(),a("div",St,"未设置,全部走服务商默认音色")),(i(!0),a(u,null,p(n.voice_map,(s,d)=>(i(),a("div",{key:d,class:"voice-row"},[r(t("select",{"onUpdate:modelValue":o=>s.language=o,class:"select select-bordered select-xs",onChange:o=>J(s)},[e[31]||(e[31]=t("option",{value:""},"(语言)",-1)),(i(!0),a(u,null,p(D.value,o=>(i(),a("option",{key:o.code,value:o.code},c(o.code)+" · "+c(o.name),9,Lt))),128))],40,Ut),[[h,s.language]]),r(t("select",{"onUpdate:modelValue":o=>s.gender=o,class:"select select-bordered select-xs",onChange:o=>J(s)},[...e[32]||(e[32]=[t("option",{value:0},"不限",-1),t("option",{value:1},"男",-1),t("option",{value:2},"女",-1)])],40,Mt),[[h,s.gender,void 0,{number:!0}]]),B.value&&M(s.language,s.gender).length?r((i(),a("select",{key:0,"onUpdate:modelValue":o=>s.voice=o,class:"select select-bordered select-xs flex-1"},[(i(!0),a(u,null,p(M(s.language,s.gender),(o,_)=>(i(),a("option",{key:o.voice_id,value:o.voice_id},c(o.name)+" · "+c(o.voice_id)+c(_===0?"(默认)":""),9,Nt))),128))],8,Ot)),[[h,s.voice]]):r((i(),a("input",{key:1,"onUpdate:modelValue":o=>s.voice=o,class:"input input-bordered input-xs flex-1",placeholder:"音色 id,如 zh-CN-XiaoxiaoNeural"},null,8,$t)),[[v,s.voice]]),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:o=>n.voice_map.splice(d,1)},"删除",8,Pt)]))),128))])]),ae.value?(i(),a("section",Bt,[e[36]||(e[36]=t("div",{class:"ed-section-title"},"对话设定",-1)),t("div",null,[e[34]||(e[34]=t("span",{class:"ed-label"},"系统提示词",-1)),r(t("textarea",{"onUpdate:modelValue":e[9]||(e[9]=s=>n.system_prompt=s),class:"textarea textarea-bordered w-full text-xs",rows:"3",placeholder:"定义这个智能体的人设与行为"},null,512),[[v,n.system_prompt]])]),t("div",jt,[t("label",Et,[r(t("input",{"onUpdate:modelValue":e[10]||(e[10]=s=>n.greeting_enabled=s),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[K,n.greeting_enabled]]),e[35]||(e[35]=t("span",null,"开场白",-1))]),n.greeting_enabled?r((i(),a("input",{key:0,"onUpdate:modelValue":e[11]||(e[11]=s=>n.greeting_text=s),class:"input input-bordered input-sm w-full mt-2",placeholder:"接通后先说的一句话"},null,512)),[[v,n.greeting_text]]):m("",!0)])])):m("",!0),t("section",It,[e[37]||(e[37]=t("div",{class:"ed-section-title"},"MCP 服务(可选,给 Agent 挂工具)",-1)),R.value.length?(i(),a("div",Dt,[(i(!0),a(u,null,p(R.value,s=>(i(),a("label",{key:s.id,class:Q(["mcp-item",{on:n.mcp_svc_ids.includes(s.id)}])},[t("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:n.mcp_svc_ids.includes(s.id),onChange:d=>pe(s.id)},null,40,qt),t("span",Ft,[t("span",Gt,c(s.name),1),t("span",Yt,c(s.id),1)])],2))),128))])):(i(),a("p",zt,"还没有启用的 MCP 服务,先去「第三方服务配置 → MCP 服务」添加。"))]),t("section",Jt,[t("div",{class:"flex items-center justify-between mb-1"},[e[38]||(e[38]=t("div",{class:"ed-section-title mb-0"},"变量(提示词/开场白里用 {{key}} 占位)",-1)),t("button",{class:"btn btn-ghost btn-xs",onClick:ve},"+ 添加变量")]),n.variables.length?m("",!0):(i(),a("div",Rt,"未定义变量")),(i(!0),a(u,null,p(n.variables,(s,d)=>(i(),a("div",{key:d,class:"var-row"},[r(t("input",{"onUpdate:modelValue":o=>s.key=o,class:"input input-bordered input-xs",placeholder:"key"},null,8,Ht),[[v,s.key]]),r(t("input",{"onUpdate:modelValue":o=>s.label=o,class:"input input-bordered input-xs",placeholder:"展示名"},null,8,Xt),[[v,s.label]]),r(t("input",{"onUpdate:modelValue":o=>s.def_value=o,class:"input input-bordered input-xs flex-1",placeholder:"默认值(客户端没传时用它)"},null,8,Kt),[[v,s.def_value]]),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:o=>n.variables.splice(d,1)},"删除",8,Qt)]))),128))]),t("div",Wt,[t("label",Zt,[r(t("input",{"onUpdate:modelValue":e[12]||(e[12]=s=>n.enable=s),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[K,n.enable]]),e[39]||(e[39]=t("span",null,"启用",-1))]),t("div",es,[t("button",{class:"btn btn-ghost btn-sm",onClick:E},"取消"),t("button",{class:"btn btn-primary btn-sm text-white",disabled:N.value,onClick:ye},"保存",8,ts)])])])],512),[[we,L.value]])]))}}),_s=Ae(is,[["__scopeId","data-v-dcf87e76"]]);export{_s as default}; +import{g as ke,C as Ce,c as a,a as t,q as r,s as h,F as u,r as p,l as m,H as we,t as c,d as S,v,b as X,x as K,y as g,z as Ve,A as x,o as i,L as I,p as Te,n as Q,_ as Ae}from"./6O01ZZML.js";import{u as Se}from"./BgasD__e.js";import{u as Ue}from"./xsgK-Nup.js";import{L as W}from"./DD3V9C6_.js";import{_ as Z}from"./BrJ9pewm.js";const Le={class:"flex items-center justify-between mb-5 flex-wrap gap-3"},Me={class:"flex items-center gap-3"},Oe=["value"],Ne={key:0,class:"text-center py-20 text-slate-300"},$e={class:"flex items-center gap-2 mb-3"},Pe={class:"text-xs text-slate-400"},Be={class:"text-xs text-slate-400"},je={class:"agent-grid"},Ee=["onClick"],Ie={class:"flex items-start justify-between gap-2"},ze={class:"min-w-0"},De={class:"font-semibold text-sm text-slate-800 truncate"},qe={class:"text-[11px] text-slate-400 mt-0.5 truncate"},Fe={class:"flex items-center gap-1 flex-shrink-0"},Ge={key:0,class:"badge badge-success badge-xs"},Ye={key:1,class:"badge badge-ghost badge-xs"},Je=["onClick"],Re={key:0,class:"text-xs text-slate-500 mt-2 line-clamp-2"},He={class:"flex flex-wrap items-center gap-1.5 mt-3"},Xe={key:1,class:"text-[11px] text-slate-400 mt-2 truncate"},Ke={class:"ag-overlay"},Qe={class:"ag-box"},We={class:"flex items-center justify-between mb-4"},Ze={class:"flex items-center gap-3"},et={class:"text-base font-semibold text-slate-800"},tt={class:"scope-chip"},st={class:"ed-section"},lt={class:"type-row"},nt=["disabled","onClick"],ot={class:"ttab-title"},at={class:"ttab-desc"},it={key:0,class:"ed-tip"},dt={class:"ed-section"},ct={class:"grid grid-cols-2 gap-3"},rt=["disabled"],ut={class:"mt-3"},pt={class:"grid grid-cols-3 gap-3 mt-3"},vt={class:"ed-section"},_t={class:"slot-row"},mt={class:"slot-item"},bt={class:"ed-label inline"},gt=["onUpdate:modelValue"],ft={value:"",disabled:""},xt=["value"],yt={key:0,class:"slot-arrow"},ht={class:"ed-section"},kt={class:"grid grid-cols-2 gap-3"},Ct={class:"mt-3"},wt={class:"flex items-center justify-between mb-1"},Vt={class:"flex gap-1"},Tt=["disabled"],At={class:"ed-tip mb-1"},St={key:0,class:"text-xs text-slate-300 py-2"},Ut=["onUpdate:modelValue","onChange"],Lt=["value"],Mt=["onUpdate:modelValue","onChange"],Ot=["onUpdate:modelValue"],Nt=["value"],$t=["onUpdate:modelValue"],Pt=["onClick"],Bt={key:0,class:"ed-section"},jt={class:"mt-3"},Et={class:"flex items-center gap-2 text-sm cursor-pointer"},It={class:"ed-section"},zt={key:0,class:"ed-tip"},Dt={key:1,class:"mcp-grid"},qt=["checked","onChange"],Ft={class:"min-w-0"},Gt={class:"block truncate"},Yt={class:"block truncate text-[10px] text-slate-400 font-mono"},Jt={class:"ed-section"},Rt={key:0,class:"text-xs text-slate-300 py-2"},Ht=["onUpdate:modelValue"],Xt=["onUpdate:modelValue"],Kt=["onUpdate:modelValue"],Qt=["onClick"],Wt={class:"ed-footer"},Zt={class:"flex items-center gap-2 text-sm cursor-pointer"},es={class:"flex gap-2"},ts=["disabled"],ee=1,te=2,ss=3,ls=4,ns=5,os=7,se=9,as=10,is=ke({__name:"agents",setup(ds){const z=[{value:"chat",label:"chat-agent 对话",icon:"💬",hint:"STT → LLM → TTS 三段拼接",color:"#b45309",bg:"#fef9c3"},{value:"sts-chat",label:"sts-chat-agent 端到端对话",icon:"⚡",hint:"单个 STS 服务直接完成语音对话",color:"#be185d",bg:"#fce7f3"}],le={translate:{label:"翻译(已下线)",icon:"🧩",color:"#64748b",bg:"#f1f5f9"},"ast-translate":{label:"端到端翻译(已下线)",icon:"🚀",color:"#64748b",bg:"#f1f5f9"}},ne={chat:[{key:"stt_svc_id",slot:"STT",label:"语音识别",cats:[ee],color:"#1664ff"},{key:"llm_svc_id",slot:"LLM",label:"大语言模型",cats:[ns,se],color:"#b45309"},{key:"tts_svc_id",slot:"TTS",label:"语音合成",cats:[te],color:"#7c3aed"}],translate:[{key:"stt_svc_id",slot:"STT",label:"语音识别",cats:[ee],color:"#1664ff"},{key:"mt_svc_id",slot:"MT",label:"机器翻译",cats:[ss],color:"#059669"},{key:"tts_svc_id",slot:"TTS",label:"语音合成",cats:[te],color:"#7c3aed"}],"sts-chat":[{key:"sts_svc_id",slot:"STS",label:"端到端语音对话",cats:[os],color:"#be185d"}],"ast-translate":[{key:"ast_svc_id",slot:"AST",label:"端到端语音翻译",cats:[ls],color:"#f97316"}]};function k(l){return ne[l]??[]}const{webApi:C,consoleApi:oe}=Se(),{success:U,error:y}=Ue(),f=g(""),O=g([]),w=g([]),V=g([]),T=g([]),L=g(!1),b=g(!1),N=g(!1);function $(){return{app_name:"",id:"",name:"",type:"chat",description:"",avatar_url:"",enable:!0,stt_svc_id:"",llm_svc_id:"",tts_svc_id:"",mt_svc_id:"",sts_svc_id:"",ast_svc_id:"",system_prompt:"",gender:0,greeting_enabled:!1,greeting_text:"",support_langs:"",default_lang:"",voice_map:[],mcp_svc_ids:[],variables:[],sort:0}}const n=Ve($()),ae=x(()=>n.type==="chat"||n.type==="sts-chat"),D=x(()=>{const l=(n.support_langs||"").split(",").map(e=>e.trim()).filter(Boolean);return l.length?W.filter(e=>l.includes(e.code)):W}),q=(l,e)=>(e.sort||0)-(l.sort||0)||(l.name||"").localeCompare(e.name||""),ie=x(()=>{const l=z.map(e=>({...e,type:e.value,items:w.value.filter(s=>s.type===e.value).sort(q)})).filter(e=>e.items.length);for(const[e,s]of Object.entries(le)){const d=w.value.filter(o=>o.type===e).sort(q);d.length&&l.push({value:e,type:e,hint:"已下线的类型,仅供查看与清理",...s,items:d})}return l});async function de(){try{const l=await oe("products/list",{});O.value=(l??[]).map(e=>e.name).filter(Boolean)}catch{O.value=[]}}async function ce(){try{const l=await C("getsvcconfigs",{app_name:f.value});V.value=l?.items??[]}catch{V.value=[]}}async function P(){try{const l=await C("getagents",{app_name:f.value});w.value=(l?.items??[]).map(e=>({...e,voice_map:e.voice_map??[],mcp_svc_ids:e.mcp_svc_ids??[],variables:e.variables??[]}))}catch(l){y(l?.message??"加载失败"),w.value=[]}}async function re(){try{const l=await C("getttsvoices",{});T.value=l?.voices??[]}catch{T.value=[]}}async function F(){await Promise.all([ce(),P()])}const G=x(()=>n.type==="sts-chat"?n.sts_svc_id:n.tts_svc_id),A=x(()=>V.value.find(l=>l.id===G.value)?.provider??""),B=x(()=>!!A.value&&T.value.some(l=>l.provider===A.value));function M(l,e){const s=A.value;if(!s||!l)return[];const d=(l.split("-")[0]||"").toLowerCase(),o=T.value.filter(_=>_.provider!==s||e&&_.gender!==e?!1:_.language.toLowerCase()===l.toLowerCase());return o.length?o:T.value.filter(_=>_.provider!==s||e&&_.gender!==e?!1:(_.language.split("-")[0]||"").toLowerCase()===d)}function Y(l,e){return M(l,e)[0]?.voice_id??""}function J(l){const e=M(l.language,l.gender);e.length&&(!l.voice||!e.some(s=>s.voice_id===l.voice))&&(l.voice=e[0].voice_id)}function ue(){const l=(n.support_langs||"").split(",").map(s=>s.trim()).filter(Boolean);if(!l.length){y("请先选择支持语言");return}let e=0;for(const s of l){if(n.voice_map.some(o=>o.language===s&&o.gender===n.gender))continue;const d=Y(s,n.gender);d&&(n.voice_map.push({language:s,gender:n.gender,voice:d}),e++)}U(e?`已补全 ${e} 种语言的默认音色`:"已是最新,无需补全")}const R=x(()=>j([as]));function pe(l){const e=n.mcp_svc_ids.indexOf(l);e>=0?n.mcp_svc_ids.splice(e,1):n.mcp_svc_ids.push(l)}function ve(){n.variables.push({key:"",label:"",def_value:"",description:""})}function H(l){return(l.categories||"").split(",").map(Number)}function j(l){return V.value.filter(e=>e.enable&&H(e).some(s=>l.includes(s)))}function _e(l){return H(l).includes(se)}function me(l){if(!l)return"未配置";const e=V.value.find(s=>s.id===l);return e?e.name:l}function be(l){return k(l.type).map(e=>({slot:e.slot,color:e.color,id:l[e.key]}))}function ge(){Object.assign(n,$()),b.value=!1,L.value=!0}function fe(l){Object.assign(n,$(),l,{voice_map:(l.voice_map??[]).map(e=>({...e})),mcp_svc_ids:[...l.mcp_svc_ids??[]],variables:(l.variables??[]).map(e=>({...e}))}),b.value=!0,L.value=!0}function E(){L.value=!1}function xe(){const l=n.default_lang||"";n.voice_map.push({language:l,gender:n.gender,voice:Y(l,n.gender)})}async function ye(){if(!n.id.trim()||!n.name.trim()){y("Agent ID 和 名称 必填");return}for(const l of k(n.type))if(!(n[l.key]||"").trim()){y(`${l.slot} ${l.label} 必选`);return}N.value=!0;try{const l={...JSON.parse(JSON.stringify(n)),app_name:f.value,id:n.id.trim(),name:n.name.trim(),stt_svc_id:"",llm_svc_id:"",tts_svc_id:"",mt_svc_id:"",sts_svc_id:"",ast_svc_id:""};for(const e of k(n.type))l[e.key]=n[e.key];l.voice_map=n.voice_map.filter(e=>e.language&&e.voice),l.mcp_svc_ids=n.mcp_svc_ids.filter(Boolean),l.variables=n.variables.filter(e=>(e.key||"").trim()),await C(b.value?"updateagent":"addagent",l),U("保存成功"),E(),await P()}catch(l){y(l?.message??"保存失败")}finally{N.value=!1}}function he(l){window.confirm(`确定删除 Agent「${l.name||l.id}」吗?引用它的通话翻译规则会失效。`)&&C("delagent",{app_name:f.value,id:l.id}).then(()=>{U("已删除"),P()}).catch(e=>y(e?.message??"删除失败"))}return Ce(async()=>{await de(),await Promise.all([F(),re()])}),(l,e)=>(i(),a("div",null,[t("div",Le,[e[15]||(e[15]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"Agent 配置"),t("p",{class:"text-xs text-slate-400 mt-1"}," 把已配置的第三方服务编排成可下发客户端的智能体。四种类型按需引用不同服务;通话翻译规则只能引用「翻译」与「端到端翻译」两类。 ")],-1)),t("div",Me,[e[14]||(e[14]=t("span",{class:"text-sm text-slate-500"},"作用域",-1)),r(t("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>f.value=s),class:"select select-bordered select-sm",onChange:F},[e[13]||(e[13]=t("option",{value:""},"全局默认",-1)),(i(!0),a(u,null,p(O.value,s=>(i(),a("option",{key:s,value:s},c(s),9,Oe))),128))],544),[[h,f.value]]),t("button",{class:"btn btn-primary btn-sm text-white",onClick:ge},"+ 新建 Agent")])]),w.value.length?m("",!0):(i(),a("div",Ne,[...e[16]||(e[16]=[t("div",{class:"text-5xl mb-3"},"🤖",-1),t("p",{class:"text-sm"},"当前作用域下还没有 Agent",-1),t("p",{class:"text-xs mt-1"},"先在「第三方服务配置」里配好服务,再来把它们组装成 Agent",-1)])])),(i(!0),a(u,null,p(ie.value,s=>(i(),a("div",{key:s.type,class:"mb-6"},[t("div",$e,[t("span",{class:"type-tag",style:I({background:s.bg,color:s.color})},c(s.icon)+" "+c(s.label),5),t("span",Pe,c(s.hint),1),e[17]||(e[17]=t("span",{class:"text-xs text-slate-300"},"·",-1)),t("span",Be,c(s.items.length)+" 个",1)]),t("div",je,[(i(!0),a(u,null,p(s.items,d=>(i(),a("div",{key:d.id,class:"agent-card",onClick:o=>fe(d)},[t("div",Ie,[t("div",ze,[t("div",De,c(d.name||d.id),1),t("div",qe,c(d.id),1)]),t("div",Fe,[d.enable?(i(),a("span",Ge,"启用")):(i(),a("span",Ye,"停用")),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:Te(o=>he(d),["stop"])},"删除",8,Je)])]),d.description?(i(),a("p",Re,c(d.description),1)):m("",!0),t("div",He,[(i(!0),a(u,null,p(be(d),o=>(i(),a("span",{key:o.slot,class:"svc-pill",style:I({background:o.color})},c(o.slot)+": "+c(me(o.id)),5))),128))]),d.support_langs?(i(),a("div",Xe," 支持语言:"+c(d.support_langs),1)):m("",!0)],8,Ee))),128))])]))),128)),r(t("div",Ke,[t("div",Qe,[t("div",We,[t("div",Ze,[t("h3",et,c(b.value?"编辑 Agent":"新建 Agent"),1),t("span",tt,c(f.value||"全局默认"),1)]),t("button",{class:"btn btn-ghost btn-xs",onClick:E},"✕ 关闭")]),t("section",st,[e[18]||(e[18]=t("div",{class:"ed-section-title"},"类型",-1)),t("div",lt,[(i(),a(u,null,p(z,s=>t("button",{key:s.value,type:"button",class:Q(["ttab",{on:n.type===s.value,locked:b.value&&n.type!==s.value}]),disabled:b.value,onClick:d=>n.type=s.value},[t("span",ot,c(s.icon)+" "+c(s.label),1),t("span",at,c(s.hint),1)],10,nt)),64))]),b.value?(i(),a("p",it,"类型创建后不可更改;需要换类型请新建一个 Agent。")):m("",!0)]),t("section",dt,[e[26]||(e[26]=t("div",{class:"ed-section-title"},"基本信息",-1)),t("div",ct,[t("div",null,[e[19]||(e[19]=t("span",{class:"ed-label"},[S("Agent ID "),t("i",{class:"req"},"*")],-1)),r(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>n.id=s),disabled:b.value,class:"input input-bordered input-sm w-full",placeholder:"如 trans-cn-en(作用域内唯一,创建后不可改)"},null,8,rt),[[v,n.id]])]),t("div",null,[e[20]||(e[20]=t("span",{class:"ed-label"},[S("名称 "),t("i",{class:"req"},"*")],-1)),r(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>n.name=s),class:"input input-bordered input-sm w-full",placeholder:"展示名,如 中英实时翻译"},null,512),[[v,n.name]])])]),t("div",ut,[e[21]||(e[21]=t("span",{class:"ed-label"},"描述",-1)),r(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>n.description=s),class:"input input-bordered input-sm w-full",placeholder:"这个 Agent 用在什么场景"},null,512),[[v,n.description]])]),t("div",pt,[t("div",null,[e[22]||(e[22]=t("span",{class:"ed-label"},"头像 URL",-1)),r(t("input",{"onUpdate:modelValue":e[4]||(e[4]=s=>n.avatar_url=s),class:"input input-bordered input-sm w-full",placeholder:"可留空"},null,512),[[v,n.avatar_url]])]),t("div",null,[e[23]||(e[23]=t("span",{class:"ed-label"},"排序(越大越靠前)",-1)),r(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>n.sort=s),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[v,n.sort,void 0,{number:!0}]])]),t("div",null,[e[25]||(e[25]=t("span",{class:"ed-label"},"音色性别偏好",-1)),r(t("select",{"onUpdate:modelValue":e[6]||(e[6]=s=>n.gender=s),class:"select select-bordered select-sm w-full"},[...e[24]||(e[24]=[t("option",{value:0},"不限",-1),t("option",{value:1},"男",-1),t("option",{value:2},"女",-1)])],512),[[h,n.gender,void 0,{number:!0}]])])])]),t("section",vt,[e[27]||(e[27]=t("div",{class:"ed-section-title"},"服务编排",-1)),t("div",_t,[(i(!0),a(u,null,p(k(n.type),(s,d)=>(i(),a(u,{key:s.key},[t("div",mt,[t("span",{class:"stage-tag",style:I({background:s.color})},c(s.slot),5),t("span",bt,c(s.label),1),r(t("select",{"onUpdate:modelValue":o=>n[s.key]=o,class:"select select-bordered select-sm w-full"},[t("option",ft,c(j(s.cats).length?"请选择服务":"(无可用服务,请先去第三方服务配置里添加)"),1),(i(!0),a(u,null,p(j(s.cats),o=>(i(),a("option",{key:o.id,value:o.id},c(o.name)+c(_e(o)?" 🖼":""),9,xt))),128))],8,gt),[[h,n[s.key]]])]),dn.support_langs=s),multiple:""},null,8,["modelValue"])]),t("div",null,[e[29]||(e[29]=t("span",{class:"ed-label"},"默认语言",-1)),X(Z,{modelValue:n.default_lang,"onUpdate:modelValue":e[8]||(e[8]=s=>n.default_lang=s),options:D.value},null,8,["modelValue","options"])])]),t("div",Ct,[t("div",wt,[e[30]||(e[30]=t("span",{class:"ed-label mb-0"},"音色(按语言+性别配,Agent 切语言时自动换音色)",-1)),t("div",Vt,[t("button",{class:"btn btn-ghost btn-xs",disabled:!B.value,onClick:ue},"按支持语言补全",8,Tt),t("button",{class:"btn btn-ghost btn-xs",onClick:xe},"+ 添加一行")])]),t("p",At,[G.value?B.value?(i(),a(u,{key:1},[S(" 候选来自内置音色表("+c(A.value)+");同一语言+性别有多个时默认第一个,可在下拉里换。没配到的语言走服务商默认音色。 ",1)],64)):(i(),a(u,{key:2},[S("「"+c(A.value||"该服务商")+"」不在内置音色表里,请手填服务商的音色 id。",1)],64)):(i(),a(u,{key:0},[S("先在上方选好语音服务,这里才能列出可用音色。")],64))]),n.voice_map.length?m("",!0):(i(),a("div",St,"未设置,全部走服务商默认音色")),(i(!0),a(u,null,p(n.voice_map,(s,d)=>(i(),a("div",{key:d,class:"voice-row"},[r(t("select",{"onUpdate:modelValue":o=>s.language=o,class:"select select-bordered select-xs",onChange:o=>J(s)},[e[31]||(e[31]=t("option",{value:""},"(语言)",-1)),(i(!0),a(u,null,p(D.value,o=>(i(),a("option",{key:o.code,value:o.code},c(o.code)+" · "+c(o.name),9,Lt))),128))],40,Ut),[[h,s.language]]),r(t("select",{"onUpdate:modelValue":o=>s.gender=o,class:"select select-bordered select-xs",onChange:o=>J(s)},[...e[32]||(e[32]=[t("option",{value:0},"不限",-1),t("option",{value:1},"男",-1),t("option",{value:2},"女",-1)])],40,Mt),[[h,s.gender,void 0,{number:!0}]]),B.value&&M(s.language,s.gender).length?r((i(),a("select",{key:0,"onUpdate:modelValue":o=>s.voice=o,class:"select select-bordered select-xs flex-1"},[(i(!0),a(u,null,p(M(s.language,s.gender),(o,_)=>(i(),a("option",{key:o.voice_id,value:o.voice_id},c(o.name)+" · "+c(o.voice_id)+c(_===0?"(默认)":""),9,Nt))),128))],8,Ot)),[[h,s.voice]]):r((i(),a("input",{key:1,"onUpdate:modelValue":o=>s.voice=o,class:"input input-bordered input-xs flex-1",placeholder:"音色 id,如 zh-CN-XiaoxiaoNeural"},null,8,$t)),[[v,s.voice]]),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:o=>n.voice_map.splice(d,1)},"删除",8,Pt)]))),128))])]),ae.value?(i(),a("section",Bt,[e[36]||(e[36]=t("div",{class:"ed-section-title"},"对话设定",-1)),t("div",null,[e[34]||(e[34]=t("span",{class:"ed-label"},"系统提示词",-1)),r(t("textarea",{"onUpdate:modelValue":e[9]||(e[9]=s=>n.system_prompt=s),class:"textarea textarea-bordered w-full text-xs",rows:"3",placeholder:"定义这个智能体的人设与行为"},null,512),[[v,n.system_prompt]])]),t("div",jt,[t("label",Et,[r(t("input",{"onUpdate:modelValue":e[10]||(e[10]=s=>n.greeting_enabled=s),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[K,n.greeting_enabled]]),e[35]||(e[35]=t("span",null,"开场白",-1))]),n.greeting_enabled?r((i(),a("input",{key:0,"onUpdate:modelValue":e[11]||(e[11]=s=>n.greeting_text=s),class:"input input-bordered input-sm w-full mt-2",placeholder:"接通后先说的一句话"},null,512)),[[v,n.greeting_text]]):m("",!0)])])):m("",!0),t("section",It,[e[37]||(e[37]=t("div",{class:"ed-section-title"},"MCP 服务(可选,给 Agent 挂工具)",-1)),R.value.length?(i(),a("div",Dt,[(i(!0),a(u,null,p(R.value,s=>(i(),a("label",{key:s.id,class:Q(["mcp-item",{on:n.mcp_svc_ids.includes(s.id)}])},[t("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:n.mcp_svc_ids.includes(s.id),onChange:d=>pe(s.id)},null,40,qt),t("span",Ft,[t("span",Gt,c(s.name),1),t("span",Yt,c(s.id),1)])],2))),128))])):(i(),a("p",zt,"还没有启用的 MCP 服务,先去「第三方服务配置 → MCP 服务」添加。"))]),t("section",Jt,[t("div",{class:"flex items-center justify-between mb-1"},[e[38]||(e[38]=t("div",{class:"ed-section-title mb-0"},"变量(提示词/开场白里用 {{key}} 占位)",-1)),t("button",{class:"btn btn-ghost btn-xs",onClick:ve},"+ 添加变量")]),n.variables.length?m("",!0):(i(),a("div",Rt,"未定义变量")),(i(!0),a(u,null,p(n.variables,(s,d)=>(i(),a("div",{key:d,class:"var-row"},[r(t("input",{"onUpdate:modelValue":o=>s.key=o,class:"input input-bordered input-xs",placeholder:"key"},null,8,Ht),[[v,s.key]]),r(t("input",{"onUpdate:modelValue":o=>s.label=o,class:"input input-bordered input-xs",placeholder:"展示名"},null,8,Xt),[[v,s.label]]),r(t("input",{"onUpdate:modelValue":o=>s.def_value=o,class:"input input-bordered input-xs flex-1",placeholder:"默认值(客户端没传时用它)"},null,8,Kt),[[v,s.def_value]]),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:o=>n.variables.splice(d,1)},"删除",8,Qt)]))),128))]),t("div",Wt,[t("label",Zt,[r(t("input",{"onUpdate:modelValue":e[12]||(e[12]=s=>n.enable=s),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[K,n.enable]]),e[39]||(e[39]=t("span",null,"启用",-1))]),t("div",es,[t("button",{class:"btn btn-ghost btn-sm",onClick:E},"取消"),t("button",{class:"btn btn-primary btn-sm text-white",disabled:N.value,onClick:ye},"保存",8,ts)])])])],512),[[we,L.value]])]))}}),_s=Ae(is,[["__scopeId","data-v-dcf87e76"]]);export{_s as default}; diff --git a/apps/admin/.output/public/_nuxt/C9zSjFPi.js b/apps/admin/.output/public/_nuxt/C9zSjFPi.js deleted file mode 100644 index 9e236842..00000000 --- a/apps/admin/.output/public/_nuxt/C9zSjFPi.js +++ /dev/null @@ -1 +0,0 @@ -import{g as ue,z as O,C as ce,c as o,q as i,H as L,a as e,l as g,F as h,r as C,t as r,p as Y,v,s as B,d as P,x as Q,y as b,A as be,o as a,n as me}from"./DSy_gLdM.js";import{u as pe}from"./NtXZuCUg.js";import{u as ve}from"./EeX3zgoF.js";const fe={class:"flex items-center justify-between mb-5"},ge={class:"bg-white rounded-xl shadow-sm border border-slate-100"},xe={class:"overflow-x-auto"},ye={class:"table table-zebra text-sm"},we={key:0},ke={key:1},he={class:"font-mono text-sm"},_e=["src"],Ve={key:1,class:"w-10 h-10 rounded bg-slate-100 flex items-center justify-center text-slate-300"},Ce={class:"font-medium"},Ue={class:"badge badge-outline badge-sm"},Ee={class:"text-sm"},Ie={key:0},Ne={key:1,class:"text-slate-300"},$e={class:"text-xs text-slate-500"},De={class:"flex gap-1"},Le=["onClick"],Be=["onClick"],Se=["onClick"],Me={class:"flex items-center gap-3 mb-5"},Te={class:"text-lg font-semibold text-slate-800"},ze={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-3xl"},Fe={class:"form-control mb-4"},Ae={class:"grid grid-cols-2 gap-4 mb-4"},Oe={class:"form-control"},Pe=["value"],je={class:"form-control"},qe=["value"],He={class:"grid grid-cols-2 gap-4 mb-4"},Je={class:"form-control"},Ke={class:"form-control"},Ye={class:"grid grid-cols-2 gap-4 mb-4"},Qe={class:"form-control"},Re={class:"mb-4"},Ge={class:"grid grid-cols-3 gap-4"},We={class:"form-control"},Xe={class:"form-control"},Ze={class:"form-control"},et={class:"form-control mb-4"},tt={class:"flex items-start gap-4"},st={class:"flex-1"},lt={class:"flex items-center gap-2"},nt=["disabled"],ot={key:0,class:"loading loading-spinner loading-xs"},at={key:0},it=["src"],dt={class:"grid grid-cols-3 gap-4 mb-4"},rt={class:"form-control"},ut={class:"form-control"},ct={class:"form-control"},bt={class:"grid grid-cols-3 gap-3 mb-6"},mt=["onUpdate:modelValue"],pt={class:"text-sm"},vt={class:"flex gap-3"},ft=["disabled"],gt={key:0,class:"loading loading-spinner loading-xs"},xt={class:"flex items-center gap-3 mb-5"},yt={class:"text-lg font-semibold text-slate-800"},wt={key:0,class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4 mb-5"},kt={class:"flex items-center gap-6 text-sm flex-wrap"},ht={class:"font-mono"},_t={class:"badge badge-primary badge-sm"},Vt={class:"text-xs"},Ct={class:"text-xs max-w-md truncate"},Ut={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5 mb-5"},Et={class:"grid grid-cols-2 gap-4 mb-3"},It={class:"form-control"},Nt={class:"form-control"},$t={class:"form-control mb-3"},Dt={class:"flex items-center gap-3"},Lt={class:"flex items-center gap-2 cursor-pointer"},Bt=["disabled"],St={key:0,class:"loading loading-spinner loading-xs"},Mt={class:"bg-white rounded-xl shadow-sm border border-slate-100"},Tt={class:"overflow-x-auto"},zt={class:"table table-zebra text-sm"},Ft={key:0},At={key:0,class:"badge badge-success badge-xs ml-1"},Ot={class:"text-sm"},Pt={class:"text-xs text-slate-400 max-w-xs truncate"},jt={class:"flex gap-1"},qt={key:0,class:"text-xs text-slate-400"},Ht=["onClick"],Jt=["onClick"],Gt=ue({__name:"product",setup(Kt){const{webApi:p,uploadFile:j}=pe(),{success:x,error:f,warn:S}=ve(),R={0:"未知",1:"经典蓝牙",2:"BLE双端",3:"BLE单端",4:"录音笔",5:"智能眼镜",6:"激活码卡片"},G={0:"未知",1:"经典蓝牙耳机",2:"BLE双端",3:"BLE单端",4:"智能录音笔",5:"智能眼镜",6:"激活码卡片"},y=[{key:"iscanbindagain",label:"可重复绑定奖励"},{key:"iscontinuouschat",label:"连续对话"},{key:"eqenable",label:"EQ 均衡器"},{key:"keyenable",label:"按键控制"},{key:"workmodeenable",label:"工作模式"},{key:"callmodeenable",label:"通话模式"},{key:"ledenable",label:"LED 灯"},{key:"finddeviceenable",label:"查找设备"},{key:"noisereductionenable",label:"降噪"},{key:"shutdownenable",label:"定时关机"},{key:"showcasebattery",label:"充电盒电量"},{key:"wakeupenable",label:"唤醒控制"},{key:"broadcastpeertranslate",label:"播报对方翻译"},{key:"hideaiassistant",label:"隐藏AI助手"}],w=b("list"),U=b([]),q=b({}),M=b([]),T=b(!1),E=b(!1),_=b(!1);function W(){const l={};return y.forEach(t=>{l[t.key]=!1}),l}const n=O({id:0,devicename:"",brandid:0,devicetype:0,scanuuid:"",devicecodecount:1,productimage:"",channel:"official",bindrewardvpitime:0,bindrewardtranslate:0,bindrewardmeeting:0,toggles:W()}),c=O({platform_id:"",platform_key:"",tui:""});function H(l){return l?Number(l).toString(16).toUpperCase():""}function X(l){return y.filter(t=>!!l[t.key]).length}async function z(){T.value=!0;try{const l=await p("getbrands",{}),t={};(l?.brands??[]).forEach(m=>{t[m.id]=m.brand}),q.value=t;const s=await p("getproducts",{});U.value=s?.products??[]}catch(l){f(l?.message??"获取产品列表失败"),U.value=[]}finally{T.value=!1}}async function Z(){try{const l=await p("getbrands",{});M.value=l?.brands??[]}catch{M.value=[]}}function I(){w.value="list",z()}function J(l){if(Z(),l){_.value=!0,n.id=l.id,n.devicename=l.devicename||"",n.brandid=l.brandid||0,n.devicetype=l.devicetype||0,n.scanuuid=l.scanuuid||"",n.devicecodecount=l.devicecodecount===2?2:1,n.productimage=l.productimage||"",n.channel=l.channel||"official",n.bindrewardvpitime=l.bindrewardvpitime||0,n.bindrewardtranslate=l.bindrewardtranslate||0,n.bindrewardmeeting=l.bindrewardmeeting||0;let t={};try{t=l.channelextra?JSON.parse(l.channelextra):{}}catch{t={}}c.platform_id=t.platform_id||"",c.platform_key=t.platform_key||"",c.tui=t.tui||"",y.forEach(s=>{n.toggles[s.key]=!!l[s.key]})}else _.value=!1,n.id=0,n.devicename="",n.brandid=0,n.devicetype=0,n.scanuuid="",n.devicecodecount=1,n.productimage="",n.channel="official",n.bindrewardvpitime=0,n.bindrewardtranslate=0,n.bindrewardmeeting=0,c.platform_id="",c.platform_key="",c.tui="",y.forEach(t=>{n.toggles[t.key]=!1});w.value="form"}async function ee(){E.value=!0;try{let l="";n.channel==="mobile"&&(l=JSON.stringify({platform_id:c.platform_id||"",platform_key:c.platform_key||"",tui:c.tui||""}));const t={devicename:n.devicename,brandid:Number(n.brandid)||0,devicetype:Number(n.devicetype)||0,scanuuid:n.scanuuid,devicecodecount:Number(n.devicecodecount)||1,productimage:n.productimage,channel:n.channel,channelextra:l,bindrewardvpitime:Number(n.bindrewardvpitime)||0,bindrewardtranslate:Number(n.bindrewardtranslate)||0,bindrewardmeeting:Number(n.bindrewardmeeting)||0};y.forEach(s=>{t[s.key]=n.toggles[s.key]}),_.value&&(t.id=Number(n.id)),await p(_.value?"updateproduct":"addproduct",{product:t}),x("保存成功"),I()}catch(l){f(l?.message??"保存失败")}finally{E.value=!1}}function te(l){window.confirm(`确定删除产品 "${l.devicename}" 吗?`)&&p("delproduct",{id:l.id}).then(()=>{x("已删除"),z()}).catch(t=>f(t?.message??"删除失败"))}const F=b(null),N=b(!1);function se(l){F.value=l.target.files?.[0]??null}async function le(){if(!F.value){S("请先选择图片");return}N.value=!0;try{const l=n.id?`product/${n.id}/images/`:"product/images/",t=await j(F.value,l);n.productimage=t,x("上传成功")}catch(l){f(l?.message??"上传失败")}finally{N.value=!1}}const d=b(null),V=b([]),$=b(!1),u=O({version:"",desc:"",isuse:!1}),k=b(null),ne=be(()=>!!u.version.trim()&&!!k.value);function A(l){return!!d.value?.versionid&&l.id===d.value.versionid}async function oe(l){w.value="version",d.value=null,V.value=[],u.version="",u.desc="",u.isuse=!1,k.value=null;try{const t=await p("getproduct",{id:l.id});d.value=t?.product??l}catch{d.value=l}await D(l.id)}async function D(l){try{const t=await p("getproductversions",{pid:l});V.value=t?.versions??[]}catch{V.value=[]}}function ae(l){k.value=l.target.files?.[0]??null}async function K(l){if(!d.value)return f("产品信息未加载"),!1;const t={...d.value,versionid:l.id};try{await p("updateproduct",{product:t});const s=await p("getproduct",{id:t.id});return d.value=s?.product??t,!0}catch(s){return f(s?.message??"切换失败"),!1}}function ie(l){window.confirm(`确定将版本 "${l.version}" 设为当前使用版本?`)&&K(l).then(t=>{t&&(x("切换成功"),d.value&&D(d.value.id))})}async function de(){const l=d.value?.id;if(!l){f("产品ID不存在");return}if(!u.version.trim()){S("请输入版本号");return}if(!k.value){S("请选择固件文件");return}$.value=!0;try{const t=await j(k.value,`product/${l}/`),s=await p("addproductversion",{version:{productid:l,version:u.version.trim(),description:u.desc,updatepackageaddress:t},isuse:!1});x("添加成功"),u.isuse&&s?.version&&await K(s.version),u.version="",u.desc="",u.isuse=!1,k.value=null,await D(l)}catch(t){f(t?.message??"添加失败")}finally{$.value=!1}}function re(l){if(d.value?.versionid===l.id){f("不能删除当前使用中的版本");return}window.confirm("删除此版本?")&&p("delproductversion",{id:l.id}).then(()=>{x("已删除"),d.value&&D(d.value.id)}).catch(t=>f(t?.message??"删除失败"))}return ce(z),(l,t)=>(a(),o("div",null,[i(e("div",null,[e("div",fe,[t[20]||(t[20]=e("h2",{class:"text-lg font-semibold text-slate-800"},"产品列表",-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=s=>J())},"+ 新增产品")]),e("div",ge,[e("div",xe,[e("table",ye,[t[24]||(t[24]=e("thead",null,[e("tr",null,[e("th",null,"ID"),e("th",null,"图片"),e("th",null,"名称"),e("th",null,"品牌商"),e("th",null,"类型"),e("th",null,"版本"),e("th",null,"功能"),e("th",null,"操作")])],-1)),e("tbody",null,[T.value?(a(),o("tr",we,[...t[21]||(t[21]=[e("td",{colspan:"8",class:"text-center py-8"},[e("span",{class:"loading loading-spinner loading-sm"})],-1)])])):U.value.length?g("",!0):(a(),o("tr",ke,[...t[22]||(t[22]=[e("td",{colspan:"8",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(a(!0),o(h,null,C(U.value,s=>(a(),o("tr",{key:s.id},[e("td",he,r(H(s.id)),1),e("td",null,[s.productimage?(a(),o("img",{key:0,src:s.productimage,class:"w-10 h-10 rounded object-cover"},null,8,_e)):(a(),o("div",Ve,[...t[23]||(t[23]=[e("svg",{class:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})],-1)])]))]),e("td",Ce,r(s.devicename),1),e("td",null,r(q.value[s.brandid]||""),1),e("td",null,[e("span",Ue,r(R[s.devicetype]||s.devicetype),1)]),e("td",Ee,[s.version?(a(),o("span",Ie,r(s.version),1)):(a(),o("span",Ne,"-"))]),e("td",null,[e("span",$e,r(X(s))+"/14",1)]),e("td",null,[e("div",De,[e("button",{class:"btn btn-ghost btn-xs",onClick:m=>J(s)},"编辑",8,Le),e("button",{class:"btn btn-ghost btn-xs text-indigo-600",onClick:m=>oe(s)},"版本",8,Be),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:m=>te(s)},"删除",8,Se)])])]))),128))])])])])],512),[[L,w.value==="list"]]),i(e("div",null,[e("div",Me,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[1]||(t[1]=s=>I())},"← 返回列表"),e("h2",Te,r(_.value?"编辑产品":"新增产品"),1)]),e("div",ze,[e("form",{onSubmit:Y(ee,["prevent"])},[t[43]||(t[43]=e("h3",{class:"text-sm font-semibold text-slate-500 mb-3"},"基本信息",-1)),e("div",Fe,[t[25]||(t[25]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"产品名称 *")],-1)),i(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>n.devicename=s),type:"text",class:"input input-bordered w-full",required:""},null,512),[[v,n.devicename]])]),e("div",Ae,[e("div",Oe,[t[27]||(t[27]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"所属品牌商")],-1)),i(e("select",{"onUpdate:modelValue":t[3]||(t[3]=s=>n.brandid=s),class:"select select-bordered w-full"},[t[26]||(t[26]=e("option",{value:0},"请选择",-1)),(a(!0),o(h,null,C(M.value,s=>(a(),o("option",{key:s.id,value:s.id},r(s.brand),9,Pe))),128))],512),[[B,n.brandid,void 0,{number:!0}]])]),e("div",je,[t[28]||(t[28]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"设备类型")],-1)),i(e("select",{"onUpdate:modelValue":t[4]||(t[4]=s=>n.devicetype=s),class:"select select-bordered w-full"},[(a(),o(h,null,C(G,(s,m)=>e("option",{key:m,value:Number(m)},r(s),9,qe)),64))],512),[[B,n.devicetype,void 0,{number:!0}]])])]),e("div",He,[e("div",Je,[t[29]||(t[29]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"扫描UUID")],-1)),i(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>n.scanuuid=s),type:"text",class:"input input-bordered w-full"},null,512),[[v,n.scanuuid]])]),e("div",Ke,[t[31]||(t[31]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"设备码数量(每副)")],-1)),i(e("select",{"onUpdate:modelValue":t[6]||(t[6]=s=>n.devicecodecount=s),class:"select select-bordered w-full"},[...t[30]||(t[30]=[e("option",{value:1},"单份 (1个/副)",-1),e("option",{value:2},"双份 (2个/副)",-1)])],512),[[B,n.devicecodecount,void 0,{number:!0}]])])]),e("div",Ye,[e("div",Qe,[t[33]||(t[33]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"渠道方")],-1)),i(e("select",{"onUpdate:modelValue":t[7]||(t[7]=s=>n.channel=s),class:"select select-bordered w-full"},[...t[32]||(t[32]=[e("option",{value:"official"},"官方",-1),e("option",{value:"mobile"},"移动",-1)])],512),[[B,n.channel]])])]),i(e("div",Re,[e("div",Ge,[e("div",We,[t[34]||(t[34]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"移动平台ID")],-1)),i(e("input",{"onUpdate:modelValue":t[8]||(t[8]=s=>c.platform_id=s),type:"text",class:"input input-bordered w-full",placeholder:"移动平台分配的 ID"},null,512),[[v,c.platform_id]])]),e("div",Xe,[t[35]||(t[35]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"移动平台KEY")],-1)),i(e("input",{"onUpdate:modelValue":t[9]||(t[9]=s=>c.platform_key=s),type:"text",class:"input input-bordered w-full",placeholder:"移动平台分配的 KEY"},null,512),[[v,c.platform_key]])]),e("div",Ze,[t[36]||(t[36]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"TUI(8位)")],-1)),i(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>c.tui=s),type:"text",maxlength:"8",class:"input input-bordered w-full",placeholder:"CMEI 前缀,如 11113396"},null,512),[[v,c.tui]])])])],512),[[L,n.channel==="mobile"]]),e("div",et,[t[38]||(t[38]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"产品图片")],-1)),e("div",tt,[e("div",st,[i(e("input",{"onUpdate:modelValue":t[11]||(t[11]=s=>n.productimage=s),type:"text",class:"input input-bordered w-full input-sm mb-2",placeholder:"图片URL(可手动输入或上传)"},null,512),[[v,n.productimage]]),e("div",lt,[e("input",{type:"file",accept:"image/*",class:"file-input file-input-bordered file-input-sm flex-1",onChange:se},null,32),e("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",disabled:N.value,onClick:le},[N.value?(a(),o("span",ot)):g("",!0),t[37]||(t[37]=P("上传 ",-1))],8,nt)])]),n.productimage?(a(),o("div",at,[e("img",{src:n.productimage,class:"w-20 h-20 object-cover rounded-lg border"},null,8,it)])):g("",!0)])]),t[44]||(t[44]=e("div",{class:"divider text-sm text-slate-400"},"绑定奖励设置",-1)),e("div",dt,[e("div",rt,[t[39]||(t[39]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"VIP时长(天)")],-1)),i(e("input",{"onUpdate:modelValue":t[12]||(t[12]=s=>n.bindrewardvpitime=s),type:"number",min:"0",class:"input input-bordered w-full"},null,512),[[v,n.bindrewardvpitime,void 0,{number:!0}]])]),e("div",ut,[t[40]||(t[40]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"翻译时长(分钟)")],-1)),i(e("input",{"onUpdate:modelValue":t[13]||(t[13]=s=>n.bindrewardtranslate=s),type:"number",min:"0",class:"input input-bordered w-full"},null,512),[[v,n.bindrewardtranslate,void 0,{number:!0}]])]),e("div",ct,[t[41]||(t[41]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"会议时长(分钟)")],-1)),i(e("input",{"onUpdate:modelValue":t[14]||(t[14]=s=>n.bindrewardmeeting=s),type:"number",min:"0",class:"input input-bordered w-full"},null,512),[[v,n.bindrewardmeeting,void 0,{number:!0}]])])]),t[45]||(t[45]=e("div",{class:"divider text-sm text-slate-400"},"功能开关",-1)),e("div",bt,[(a(),o(h,null,C(y,s=>e("label",{key:s.key,class:"flex items-center gap-2 cursor-pointer"},[i(e("input",{"onUpdate:modelValue":m=>n.toggles[s.key]=m,type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,8,mt),[[Q,n.toggles[s.key]]]),e("span",pt,r(s.label),1)])),64))]),e("div",vt,[e("button",{type:"button",class:"btn btn-ghost",onClick:t[15]||(t[15]=s=>I())},"取消"),e("button",{type:"submit",class:"btn btn-primary text-white",disabled:E.value},[E.value?(a(),o("span",gt)):g("",!0),t[42]||(t[42]=P("保存 ",-1))],8,ft)])],32)])],512),[[L,w.value==="form"]]),i(e("div",null,[e("div",xt,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[16]||(t[16]=s=>I())},"← 返回产品列表"),e("h2",yt,"版本管理 - "+r(d.value?.devicename||""),1)]),d.value?(a(),o("div",wt,[e("div",kt,[t[46]||(t[46]=e("span",{class:"text-slate-400"},"产品ID:",-1)),e("span",ht,r(H(d.value.id)),1),t[47]||(t[47]=e("span",{class:"text-slate-400"},"当前版本:",-1)),e("span",_t,r(d.value.version||"无"),1),t[48]||(t[48]=e("span",{class:"text-slate-400"},"版本ID:",-1)),e("span",Vt,r(d.value.versionid||"无"),1),t[49]||(t[49]=e("span",{class:"text-slate-400"},"更新包:",-1)),e("span",Ct,r(d.value.updatepackageaddress||"无"),1)])])):g("",!0),e("div",Ut,[t[55]||(t[55]=e("h3",{class:"text-sm font-semibold text-slate-700 mb-3"},"添加新版本",-1)),e("form",{onSubmit:Y(de,["prevent"])},[e("div",Et,[e("div",It,[t[50]||(t[50]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"版本号 *")],-1)),i(e("input",{"onUpdate:modelValue":t[17]||(t[17]=s=>u.version=s),type:"text",class:"input input-bordered input-sm w-full",placeholder:"如 1.2.0"},null,512),[[v,u.version]])]),e("div",Nt,[t[51]||(t[51]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"描述")],-1)),i(e("input",{"onUpdate:modelValue":t[18]||(t[18]=s=>u.desc=s),type:"text",class:"input input-bordered input-sm w-full",placeholder:"版本描述"},null,512),[[v,u.desc]])])]),e("div",$t,[t[52]||(t[52]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"OTA 更新包 *")],-1)),e("input",{type:"file",class:"file-input file-input-bordered file-input-sm w-full",accept:".bin,.hex,.zip,.gz,.tar,.ota,.ufw,.fot",onChange:ae},null,32)]),e("div",Dt,[e("label",Lt,[i(e("input",{"onUpdate:modelValue":t[19]||(t[19]=s=>u.isuse=s),type:"checkbox",class:"checkbox checkbox-primary checkbox-sm"},null,512),[[Q,u.isuse]]),t[53]||(t[53]=e("span",{class:"text-sm"},"设为当前使用版本",-1))]),e("button",{type:"submit",class:"btn btn-primary btn-sm text-white ml-auto",disabled:!ne.value||$.value},[$.value?(a(),o("span",St)):g("",!0),t[54]||(t[54]=P("添加版本 ",-1))],8,Bt)])],32)]),e("div",Mt,[e("div",Tt,[e("table",zt,[t[57]||(t[57]=e("thead",null,[e("tr",null,[e("th",null,"ID"),e("th",null,"版本号"),e("th",null,"描述"),e("th",null,"更新包地址"),e("th",null,"操作")])],-1)),e("tbody",null,[V.value.length?g("",!0):(a(),o("tr",Ft,[...t[56]||(t[56]=[e("td",{colspan:"5",class:"text-center text-slate-400 py-8"},"暂无版本",-1)])])),(a(!0),o(h,null,C(V.value,s=>(a(),o("tr",{key:s.id},[e("td",null,r(s.id),1),e("td",null,[e("span",{class:me(["badge badge-sm",A(s)?"badge-primary":"badge-outline"])},r(s.version),3),A(s)?(a(),o("span",At,"当前")):g("",!0)]),e("td",Ot,r(s.description||""),1),e("td",Pt,r(s.updatepackageaddress||""),1),e("td",null,[e("div",jt,[A(s)?(a(),o("span",qt,"使用中")):(a(),o(h,{key:1},[e("button",{class:"btn btn-ghost btn-xs text-indigo-600",onClick:m=>ie(s)},"设为当前",8,Ht),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:m=>re(s)},"删除",8,Jt)],64))])])]))),128))])])])])],512),[[L,w.value==="version"]])]))}});export{Gt as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DlgycG-C.js b/apps/admin/.output/public/_nuxt/CAhwHUW5.js similarity index 98% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DlgycG-C.js rename to apps/admin/.output/public/_nuxt/CAhwHUW5.js index 21842586..b80f3b7a 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DlgycG-C.js +++ b/apps/admin/.output/public/_nuxt/CAhwHUW5.js @@ -1,4 +1,4 @@ -import{g as G,C as K,Q as P,c as a,a as e,d as u,q as g,s as U,F as f,r as B,v as Q,x as Y,t as n,y as i,A as E,o,n as F,l as A,_ as Z}from"./DSy_gLdM.js";import{u as J}from"./NtXZuCUg.js";import{u as W}from"./EeX3zgoF.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},_t={key:1,class:"muted"},gt={class:"muted"},xt={class:"muted"},yt={class:"muted"},bt={class:"muted"},ht={key:0,class:"muted"},wt={class:"t"},kt={key:0,class:"late"},Ct=G({__name:"statlog",setup(Tt){const{webApi:I}=J(),{success:O,error:R}=W(),H={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?H[l]||l:"-"}const c=i([]),x=i(!1),_=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function M(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function j(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.channel_id||"")+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){x.value=!0,_.value="";try{const l=await I("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){_.value=l?.message||"网络异常"}finally{x.value=!1}}async function q(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗? +import{g as G,C as K,Q as P,c as a,a as e,d as u,q as g,s as U,F as f,r as B,v as Q,x as Y,t as n,y as i,A as E,o,n as F,l as A,_ as Z}from"./6O01ZZML.js";import{u as J}from"./BgasD__e.js";import{u as W}from"./xsgK-Nup.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},_t={key:1,class:"muted"},gt={class:"muted"},xt={class:"muted"},yt={class:"muted"},bt={class:"muted"},ht={key:0,class:"muted"},wt={class:"t"},kt={key:0,class:"late"},Ct=G({__name:"statlog",setup(Tt){const{webApi:I}=J(),{success:O,error:R}=W(),H={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?H[l]||l:"-"}const c=i([]),x=i(!1),_=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function M(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function j(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.channel_id||"")+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){x.value=!0,_.value="";try{const l=await I("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){_.value=l?.message||"网络异常"}finally{x.value=!1}}async function q(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗? 只清除本核对面板的记录,不影响已落库的统计数据。 清空后可重新触发埋点,观察是否正常进来。`))try{const r=await I("clearstatlogs",{day:l});O("已清空 "+(r&&r.cleared!=null?r.cleared:0)+" 条"),m()}catch(r){R("清空失败:"+(r?.message||"网络异常"))}}function z(){w.value?(d=X(m,15e3),y.value="· 每 15 秒自动刷新"):(d&&clearInterval(d),d=null,y.value="")}return K(()=>{v.value=p(0),m()}),P(()=>{d&&clearInterval(d)}),(l,s)=>(o(),a("div",null,[e("div",$,[s[6]||(s[6]=e("div",null,[e("h2",{class:"text-lg font-bold text-slate-700"},"统计日志"),e("p",{class:"text-xs text-slate-400 mt-0.5"},[u("console 从 NATS 收到的「当日统计快照」接收流水(最新在前,按接收时间分天存 Redis)。各业务部署每个同步周期/启动时/0点 推送一次当日绝对快照,console 收到后覆盖落库。用于核对每个部署是否在正常汇报;带 "),e("span",{class:"unreg"},"未注册"),u(" 的应用快照已收到但"),e("b",null,"不会落库"),u("(应用名需与 console 注册表完全一致)。")])],-1)),e("div",tt,[g(e("select",{"onUpdate:modelValue":s[0]||(s[0]=t=>v.value=t),class:"select select-bordered select-sm",onChange:m},[(o(!0),a(f,null,B(V.value,t=>(o(),a("option",{key:t.value,value:t.value},n(t.label),9,et))),128))],544),[[U,v.value,void 0,{number:!0}]]),g(e("select",{"onUpdate:modelValue":s[1]||(s[1]=t=>b.value=t),class:"select select-bordered select-sm"},[...s[4]||(s[4]=[e("option",{value:""},"全部级别",-1),e("option",{value:"info"},"已落库",-1),e("option",{value:"warn"},"未落库",-1),e("option",{value:"error"},"解析失败",-1)])],512),[[U,b.value]]),g(e("input",{"onUpdate:modelValue":s[2]||(s[2]=t=>h.value=t),class:"input input-bordered input-sm w-44",placeholder:"筛选 应用/区域/产品/渠道商"},null,512),[[Q,h.value]]),e("label",st,[g(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>w.value=t),type:"checkbox",class:"checkbox checkbox-xs",onChange:z},null,544),[[Y,w.value]]),s[5]||(s[5]=u(" 自动刷新 ",-1))]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:m},"刷新"),e("button",{class:"btn btn-outline btn-error btn-sm",title:"清空本日核对流水(不影响已落库的统计数据),清空后可重新观察埋点是否正常进来",onClick:q},"清空本日")])]),e("div",lt,[e("span",null,[s[7]||(s[7]=u("该日保留 ",-1)),e("b",nt,n(L.value),1),s[8]||(s[8]=u(" 条",-1))]),e("span",null,[s[9]||(s[9]=u("当前显示 ",-1)),e("b",at,n(T.value.length),1),s[10]||(s[10]=u(" 条",-1))]),e("span",null,[s[11]||(s[11]=u("最近接收 ",-1)),e("b",ot,n(N.value),1)]),e("span",rt,n(y.value),1)]),e("div",ut,[s[12]||(s[12]=e("div",{id:"logHead"},[e("div",null,"接收时间"),e("div",null,"级别"),e("div",null,"应用 · 区域 · 产品 · 渠道商"),e("div",null,"统计日"),e("div",null,"指标摘要 / 说明"),e("div",null,"快照时间")],-1)),e("div",it,[x.value?(o(),a("div",ct,"加载中...")):_.value?(o(),a("div",dt,"加载失败:"+n(_.value),1)):T.value.length?(o(!0),a(f,{key:3},B(T.value,(t,r)=>(o(),a("div",{key:r,class:"logrow"},[e("div",pt,n(C(t.ts)),1),e("div",null,[e("span",{class:F(["lv",M(t.level).cls])},n(M(t.level).txt),3)]),e("div",null,[t.app?(o(),a(f,{key:0},[e("span",mt,n(t.app),1),t.registered?A("",!0):(o(),a("span",ft,"未注册"))],64)):(o(),a("span",_t,"(无应用名)")),e("span",gt," · "+n(D(t.region)),1),e("span",xt," · "+n(S(t.product_id)),1),e("span",yt," · "+n(t.channel_id||"未分配渠道"),1)]),e("div",bt,n(t.stat_day?k(t.stat_day):"-"),1),e("div",null,[t.msg?(o(),a(f,{key:0},[e("span",{class:F(t.level==="error"?"text-red-600":"text-amber-600")},n(t.msg),3),t.summary?(o(),a("span",ht," · "+n(t.summary),1)):A("",!0)],64)):(o(),a(f,{key:1},[u(n(t.summary||"无增量"),1)],64))]),e("div",wt,[u(n(C(t.snap_ts)),1),j(t)?(o(),a("span",kt,"迟到"+n(t.ts-t.snap_ts)+"s",1)):A("",!0)])]))),128)):(o(),a("div",vt,n(c.value.length?"无匹配记录":"该日暂无接收记录"),1))])])]))}}),Lt=Z(Ct,[["__scopeId","data-v-e7a3debc"]]);export{Lt as default}; diff --git a/apps/admin/.output/public/_nuxt/CDB8L8go.js b/apps/admin/.output/public/_nuxt/CDB8L8go.js new file mode 100644 index 00000000..29d8bf83 --- /dev/null +++ b/apps/admin/.output/public/_nuxt/CDB8L8go.js @@ -0,0 +1 @@ +import{g as E,k as L,e as q,C as U,U as j,V as N,Q as H,W as I,X as P,Y as _,Z as F,$ as V,a0 as D,y as W,a1 as O,a2 as z,m as f,P as M,A as x,a3 as $,a4 as B,a5 as Q,a6 as G,a7 as X,a8 as Y,a9 as Z}from"./6O01ZZML.js";const J=(...t)=>t.find(r=>r!==void 0);function T(t){let r=t.replace(/[\u0000-\u001F\s]+/g,"");for(;r.toLowerCase().startsWith("view-source:");)r=r.slice(12);const c=r.indexOf(":");return c>0&&Q(r.slice(0,c+1))?null:t}function K(t){const r=t.componentName||"NuxtLink";function c(e){return typeof e=="string"&&e.startsWith("#")}function w(e,s,d){const a=d??t.trailingSlash;if(!e||a!=="append"&&a!=="remove")return e;if(typeof e=="string")return R(e,a);const i="path"in e&&e.path!==void 0?e.path:s(e).path;return{...e,name:void 0,path:R(i,a)}}function k(e){const s=L(),d=G(),a=x(()=>!!f(e.target)&&f(e.target)!=="_self"),i=x(()=>{const o=f(e.to)||f(e.href)||"";return typeof o=="string"&&B(o,{acceptRelative:!0})}),S=_("RouterLink"),y=typeof S!="string"?S.useLink:void 0,v=x(()=>{if(f(e.external))return!0;const o=f(e.to)||f(e.href)||"";return typeof o=="object"?!1:o===""||i.value}),l=x(()=>{const o=f(e.to)||f(e.href)||"";return v.value?o:w(o,s.resolve,f(e.trailingSlash))}),b=v.value?void 0:y?.({...e,to:l,viewTransition:f(e.viewTransition)}),m=x(()=>{const o=f(e.trailingSlash)??t.trailingSlash;if(!l.value||i.value||c(l.value)){const h=l.value;return typeof h=="string"?T(h):h}if(v.value){const h=typeof l.value=="object"&&"path"in l.value?O(l.value):l.value,p=typeof h=="object"?s.resolve(h).href:h,u=typeof p=="string"?T(p):p;return u===null?null:R(u,o)}return typeof l.value=="object"?s.resolve(l.value)?.href??null:R($(d.app.baseURL,l.value),o)});return{to:l,hasTarget:a,isAbsoluteUrl:i,isExternal:v,href:m,isActive:b?.isActive??x(()=>l.value===s.currentRoute.value.path),isExactActive:b?.isExactActive??x(()=>l.value===s.currentRoute.value.path),route:b?.route??x(()=>s.resolve(l.value)),async navigate(o){m.value!==null&&await M(m.value,{replace:f(e.replace),external:v.value||a.value})}}}return E({name:r,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},prefetchOn:{type:[String,Object],default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1},trailingSlash:{type:String,default:void 0,required:!1}},useLink:k,setup(e,{slots:s}){const d=L(),{to:a,href:i,navigate:S,isExternal:y,hasTarget:v,isAbsoluteUrl:l}=k(e),b=D(!1),m=W(null),o=u=>{m.value=e.custom?u?.$el?.nextElementSibling:u?.$el};function h(u){return!b.value&&(typeof e.prefetchOn=="string"?e.prefetchOn===u:e.prefetchOn?.[u]??t.prefetchOn?.[u])&&(e.prefetch??t.prefetch)!==!1&&e.noPrefetch!==!0&&e.target!=="_blank"&&!ae()}async function p(u=q()){if(b.value||i.value===null)return;b.value=!0;const g=typeof a.value=="string"?a.value:y.value?O(a.value):d.resolve(a.value).fullPath,n=y.value?new URL(g,window.location.href).href:g;await Promise.all([u.hooks.callHook("link:prefetch",n)?.catch(()=>{}),!y.value&&!v.value&&z(a.value,d).catch(()=>{})])}if(h("visibility")){const u=q();let g,n=null;U(()=>{const C=ee();j(()=>{g=N(()=>{m?.value?.tagName&&(n=C.observe(m.value,async()=>{n?.(),n=null,await p(u)}))})})}),H(()=>{g&&I(g),n?.(),n=null})}return()=>{if(!y.value&&!v.value&&!c(a.value)){const n={ref:o,to:a.value,activeClass:e.activeClass||t.activeClass,exactActiveClass:e.exactActiveClass||t.exactActiveClass,replace:e.replace,ariaCurrentValue:e.ariaCurrentValue,custom:e.custom};return e.custom||(h("interaction")&&(n.onPointerenter=p.bind(null,void 0),n.onFocus=p.bind(null,void 0)),b.value&&(n.class=e.prefetchedClass||t.prefetchedClass),n.rel=e.rel||void 0),P(_("RouterLink"),n,s.default)}const u=e.target||null,g=J(e.noRel?"":e.rel,t.externalRelAttribute,l.value||v.value?"noopener noreferrer":"")||null;return e.custom?s.default?s.default({href:i.value,navigate:S,prefetch:p,get route(){if(!i.value)return;const n=new URL(i.value,window.location.href);return{path:n.pathname,fullPath:n.pathname,get query(){return F(n.search)},hash:n.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:i.value}},rel:g,target:u,isExternal:y.value||v.value,isActive:!1,isExactActive:!1}):null:P("a",{ref:m,href:i.value||null,rel:g,target:u,onClick:async n=>{if(!(y.value||v.value)){n.preventDefault();try{const C=V(i.value??"");return await(e.replace?d.replace(C):d.push(C))}finally{if(c(a.value)){const C=a.value.slice(1);let A=C;try{A=decodeURIComponent(C)}catch{}document.getElementById(A)?.focus()}}}}},s.default?.())}}})}const le=K(Z);function R(t,r){const c=r==="append"?X:Y;return B(t)&&!t.startsWith("http")?t:c(t,!0)}function ee(){const t=q();if(t._observer)return t._observer;let r=null;const c=new Map,w=(e,s)=>(r||=new IntersectionObserver(d=>{for(const a of d){const i=c.get(a.target);(a.isIntersecting||a.intersectionRatio>0)&&i&&i()}}),c.set(e,s),r.observe(e),()=>{c.delete(e),r?.unobserve(e),c.size===0&&(r?.disconnect(),r=null)});return t._observer={observe:w}}const te=/2g/;function ae(){const t=navigator.connection;return!!(t&&(t.saveData||te.test(t.effectiveType)))}export{le as _}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DBzpctzV.js b/apps/admin/.output/public/_nuxt/CEFq2Pq9.js similarity index 97% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DBzpctzV.js rename to apps/admin/.output/public/_nuxt/CEFq2Pq9.js index e41469c4..f70a50ea 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DBzpctzV.js +++ b/apps/admin/.output/public/_nuxt/CEFq2Pq9.js @@ -1 +1 @@ -import{g as j,k as G,C as O,c as l,a as e,d as p,F as u,r as g,N as H,l as M,t as d,p as h,q as m,v as N,x as J,y as v,A as k,z as D,o as i,O as F,n as w,m as T,s as Q,_ as W}from"./DSy_gLdM.js";import{u as X}from"./NtXZuCUg.js";import{u as Y}from"./EeX3zgoF.js";import{r as B}from"./7m3DvxFn.js";const Z={class:"flex items-start justify-between mb-5 flex-wrap gap-3"},tt={key:0,class:"bg-white rounded-xl border border-slate-100 py-16 text-center"},et={key:1,class:"bg-white rounded-xl border border-slate-100 py-16 text-center text-slate-400"},st={key:2,class:"app-grid"},at=["onClick","onKeydown"],nt={class:"ac-head"},ot={class:"ac-logo"},lt={class:"min-w-0 flex-1"},it={class:"ac-title"},dt={class:"ac-meta"},rt={key:0,class:"chip"},ct={class:"ac-remark"},pt={class:"ac-stats"},ut={class:"ac-stat"},mt={class:"ac-stat"},vt={class:"ac-stat"},bt={class:"ac-regions"},ft={key:1,class:"text-xs text-slate-300"},xt=["onClick"],_t=["onClick"],yt=["onClick"],gt={key:0,class:"app-card orphan"},ht={class:"orphan-list"},kt={class:"min-w-0"},wt={class:"text-sm font-medium text-slate-700 truncate"},Ct={class:"text-[11px] text-slate-400 font-mono"},$t=["onUpdate:modelValue"],Vt=["value"],Ut=["disabled","onClick"],At={class:"modal-box max-w-lg"},Mt={class:"font-bold text-lg"},Nt={class:"form-control"},zt={class:"form-control"},St={class:"form-control"},Dt={class:"flex items-center gap-2 cursor-pointer pt-1"},Ft={class:"modal-action"},Tt=j({__name:"index",setup(Bt){const{consoleApi:r}=X(),{success:C,error:b}=Y(),K=G(),f=v([]),$=v([]),V=v(!1),c=D({}),P=k(()=>{const a=new Map;for(const t of $.value){const s=t.app_name||"";a.has(s)||a.set(s,[]),a.get(s).push(t)}return a}),z=k(()=>f.value.map(a=>{const t=P.value.get(a.name)||[];return{product:a,deployments:t,okCount:t.filter(s=>s.status!=="pending").length,pendingCount:t.filter(s=>s.status==="pending").length}})),U=k(()=>{const a=new Set(f.value.map(t=>t.name));return $.value.filter(t=>!t.app_name||!a.has(t.app_name))}),q=k(()=>z.value.length+(U.value.length?1:0));function E(a){return(a||"?").charAt(0).toUpperCase()}function x(a){K.push(`/apps/${encodeURIComponent(a)}`)}async function _(){V.value=!0;try{const[a,t]=await Promise.all([r("products/list",{}),r("apps/list",{})]);f.value=a??[],$.value=t??[]}catch(a){b(a?.message??"获取应用列表失败")}finally{V.value=!1}}const y=v(null),A=v(!1),n=D({id:0,name:"",image_name:"",remark:"",enabled:!0});function S(a){A.value=!!a,n.id=a?.id??0,n.name=a?.name??"",n.image_name=a?.image_name??"",n.remark=a?.remark??"",n.enabled=a?!!a.enabled:!0,y.value?.showModal()}async function I(){const a={name:n.name,image_name:n.image_name,remark:n.remark,enabled:n.enabled};let t="products/add";A.value&&n.id&&(a.id=Number(n.id),t="products/update");try{await r(t,a),C("保存成功"),y.value?.close(),await _()}catch(s){b(s?.message??"保存失败")}}function L(a){window.confirm(`删除应用「${a.name}」?(其下若有区域部署将被拒绝)`)&&r("products/del",{id:a.id}).then(()=>{C("已删除"),_()}).catch(t=>b(t?.message??"删除失败"))}async function R(a){const t=c[a.id];if(t)try{await r("apps/assign",{id:a.id,app_name:t}),C(`已归位到「${t}」`),delete c[a.id],await _()}catch(s){b(s?.message??"归位失败")}}return O(_),(a,t)=>(i(),l("div",null,[e("div",Z,[t[7]||(t[7]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"应用中心"),e("p",{class:"text-sm text-slate-400 mt-1 max-w-3xl"},[p(" 一张卡片 = 一个 "),e("span",{class:"chip chip-app"},"应用"),p(",卡片里是它在各区域的 "),e("span",{class:"chip chip-dep"},"部署"),p(" 概况。 点卡片进入应用详情:编辑应用、部署新环境、升级服务、改各项配置。 ")])],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=s=>S())},"+ 添加应用")]),V.value?(i(),l("div",tt,[...t[8]||(t[8]=[e("span",{class:"loading loading-spinner loading-sm"},null,-1)])])):q.value?(i(),l("div",st,[(i(!0),l(u,null,g(z.value,s=>(i(),l("article",{key:s.product.name,class:w(["app-card",{off:!s.product.enabled}]),tabindex:"0",role:"button",onClick:o=>x(s.product.name),onKeydown:[F(h(o=>x(s.product.name),["prevent"]),["enter"]),F(h(o=>x(s.product.name),["prevent"]),["space"])]},[e("div",nt,[e("div",ot,d(E(s.product.name)),1),e("div",lt,[e("div",it,d(s.product.name),1),e("div",dt,d(s.product.image_name?"🐳 "+s.product.image_name:"未设置默认镜像"),1)]),s.product.enabled?M("",!0):(i(),l("span",rt,"停用"))]),e("p",ct,d(s.product.remark||"—"),1),e("div",pt,[e("div",ut,[e("div",{class:w(["ac-stat-n",{zero:!s.deployments.length}])},d(s.deployments.length),3),t[9]||(t[9]=e("div",{class:"ac-stat-l"},"部署",-1))]),e("div",mt,[e("div",{class:w(["ac-stat-n",{zero:!s.okCount}])},d(s.okCount),3),t[10]||(t[10]=e("div",{class:"ac-stat-l"},"已接入",-1))]),e("div",vt,[e("div",{class:w(["ac-stat-n",s.pendingCount?"warn":"zero"])},d(s.pendingCount),3),t[11]||(t[11]=e("div",{class:"ac-stat-l"},"待部署",-1))])]),e("div",bt,[s.deployments.length?(i(!0),l(u,{key:0},g(s.deployments,o=>(i(),l("span",{key:o.id,class:"chip chip-dep"},[p(d(T(B)(o.region)),1),o.status==="pending"?(i(),l(u,{key:0},[p(" · 待部署")],64)):M("",!0)]))),128)):(i(),l("span",ft,"还没有任何部署"))]),e("div",{class:"ac-foot",onClick:t[1]||(t[1]=h(()=>{},["stop"]))},[e("button",{class:"btn btn-ghost btn-xs",onClick:o=>S(s.product)},"编辑",8,xt),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:o=>L(s.product)},"删除",8,_t),e("button",{class:"btn btn-primary btn-xs text-white",onClick:o=>x(s.product.name)},"进入详情 →",8,yt)])],42,at))),128)),U.value.length?(i(),l("article",gt,[t[13]||(t[13]=H('
未分组部署
需要归位到某个应用
待归位

未填所属应用名、或应用已被删除的历史部署。选一个应用把它归位,之后就能在该应用详情里管理。

',2)),e("div",ht,[(i(!0),l(u,null,g(U.value,s=>(i(),l("div",{key:s.id,class:"orphan-row"},[e("div",kt,[e("div",wt,d(s.name||"部署#"+s.id),1),e("div",Ct,"#"+d(s.id)+" · "+d(T(B)(s.region)),1)]),m(e("select",{"onUpdate:modelValue":o=>c[s.id]=o,class:"select select-bordered select-xs w-32"},[t[12]||(t[12]=e("option",{value:""},"选择应用…",-1)),(i(!0),l(u,null,g(f.value,o=>(i(),l("option",{key:o.id,value:o.name},d(o.name),9,Vt))),128))],8,$t),[[Q,c[s.id]]]),e("button",{class:"btn btn-xs",disabled:!c[s.id],onClick:o=>R(s)},"归位",8,Ut)]))),128))])])):M("",!0)])):(i(),l("div",et," 暂无应用,先「添加应用」 ")),e("dialog",{ref_key:"appDlg",ref:y,class:"modal"},[e("div",At,[e("h3",Mt,d(A.value?"编辑应用":"添加应用"),1),t[19]||(t[19]=e("p",{class:"text-xs text-slate-400 mt-1"}," 应用名是关联键:部署、账号作用域、第三方服务配置都按它挂载,改名会断开已有关联。 ",-1)),e("form",{class:"mt-4 space-y-3",onSubmit:h(I,["prevent"])},[e("div",Nt,[t[14]||(t[14]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"应用名 *")],-1)),m(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>n.name=s),type:"text",class:"input input-bordered input-sm w-full",required:"",placeholder:"如 Voitrans"},null,512),[[N,n.name]])]),e("div",zt,[t[15]||(t[15]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"默认镜像名")],-1)),m(e("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>n.image_name=s),type:"text",class:"input input-bordered input-sm w-full font-mono text-xs",placeholder:"voitrans-a11(新建部署时预填)"},null,512),[[N,n.image_name]])]),e("div",St,[t[16]||(t[16]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"备注")],-1)),m(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>n.remark=s),type:"text",class:"input input-bordered input-sm w-full"},null,512),[[N,n.remark]])]),e("label",Dt,[m(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>n.enabled=s),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[J,n.enabled]]),t[17]||(t[17]=e("span",{class:"text-sm"},"启用",-1))]),e("div",Ft,[e("button",{type:"button",class:"btn btn-ghost btn-sm",onClick:t[6]||(t[6]=s=>y.value?.close())},"取消"),t[18]||(t[18]=e("button",{type:"submit",class:"btn btn-primary btn-sm text-white"},"保存",-1))])],32)]),t[20]||(t[20]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512)]))}}),It=W(Tt,[["__scopeId","data-v-80f99751"]]);export{It as default}; +import{g as j,k as G,C as O,c as l,a as e,d as p,F as u,r as g,N as H,l as M,t as d,p as h,q as m,v as N,x as J,y as v,A as k,z as D,o as i,O as F,n as w,m as T,s as Q,_ as W}from"./6O01ZZML.js";import{u as X}from"./BgasD__e.js";import{u as Y}from"./xsgK-Nup.js";import{r as B}from"./7m3DvxFn.js";const Z={class:"flex items-start justify-between mb-5 flex-wrap gap-3"},tt={key:0,class:"bg-white rounded-xl border border-slate-100 py-16 text-center"},et={key:1,class:"bg-white rounded-xl border border-slate-100 py-16 text-center text-slate-400"},st={key:2,class:"app-grid"},at=["onClick","onKeydown"],nt={class:"ac-head"},ot={class:"ac-logo"},lt={class:"min-w-0 flex-1"},it={class:"ac-title"},dt={class:"ac-meta"},rt={key:0,class:"chip"},ct={class:"ac-remark"},pt={class:"ac-stats"},ut={class:"ac-stat"},mt={class:"ac-stat"},vt={class:"ac-stat"},bt={class:"ac-regions"},ft={key:1,class:"text-xs text-slate-300"},xt=["onClick"],_t=["onClick"],yt=["onClick"],gt={key:0,class:"app-card orphan"},ht={class:"orphan-list"},kt={class:"min-w-0"},wt={class:"text-sm font-medium text-slate-700 truncate"},Ct={class:"text-[11px] text-slate-400 font-mono"},$t=["onUpdate:modelValue"],Vt=["value"],Ut=["disabled","onClick"],At={class:"modal-box max-w-lg"},Mt={class:"font-bold text-lg"},Nt={class:"form-control"},zt={class:"form-control"},St={class:"form-control"},Dt={class:"flex items-center gap-2 cursor-pointer pt-1"},Ft={class:"modal-action"},Tt=j({__name:"index",setup(Bt){const{consoleApi:r}=X(),{success:C,error:b}=Y(),K=G(),f=v([]),$=v([]),V=v(!1),c=D({}),P=k(()=>{const a=new Map;for(const t of $.value){const s=t.app_name||"";a.has(s)||a.set(s,[]),a.get(s).push(t)}return a}),z=k(()=>f.value.map(a=>{const t=P.value.get(a.name)||[];return{product:a,deployments:t,okCount:t.filter(s=>s.status!=="pending").length,pendingCount:t.filter(s=>s.status==="pending").length}})),U=k(()=>{const a=new Set(f.value.map(t=>t.name));return $.value.filter(t=>!t.app_name||!a.has(t.app_name))}),q=k(()=>z.value.length+(U.value.length?1:0));function E(a){return(a||"?").charAt(0).toUpperCase()}function x(a){K.push(`/apps/${encodeURIComponent(a)}`)}async function _(){V.value=!0;try{const[a,t]=await Promise.all([r("products/list",{}),r("apps/list",{})]);f.value=a??[],$.value=t??[]}catch(a){b(a?.message??"获取应用列表失败")}finally{V.value=!1}}const y=v(null),A=v(!1),n=D({id:0,name:"",image_name:"",remark:"",enabled:!0});function S(a){A.value=!!a,n.id=a?.id??0,n.name=a?.name??"",n.image_name=a?.image_name??"",n.remark=a?.remark??"",n.enabled=a?!!a.enabled:!0,y.value?.showModal()}async function I(){const a={name:n.name,image_name:n.image_name,remark:n.remark,enabled:n.enabled};let t="products/add";A.value&&n.id&&(a.id=Number(n.id),t="products/update");try{await r(t,a),C("保存成功"),y.value?.close(),await _()}catch(s){b(s?.message??"保存失败")}}function L(a){window.confirm(`删除应用「${a.name}」?(其下若有区域部署将被拒绝)`)&&r("products/del",{id:a.id}).then(()=>{C("已删除"),_()}).catch(t=>b(t?.message??"删除失败"))}async function R(a){const t=c[a.id];if(t)try{await r("apps/assign",{id:a.id,app_name:t}),C(`已归位到「${t}」`),delete c[a.id],await _()}catch(s){b(s?.message??"归位失败")}}return O(_),(a,t)=>(i(),l("div",null,[e("div",Z,[t[7]||(t[7]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"应用中心"),e("p",{class:"text-sm text-slate-400 mt-1 max-w-3xl"},[p(" 一张卡片 = 一个 "),e("span",{class:"chip chip-app"},"应用"),p(",卡片里是它在各区域的 "),e("span",{class:"chip chip-dep"},"部署"),p(" 概况。 点卡片进入应用详情:编辑应用、部署新环境、升级服务、改各项配置。 ")])],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=s=>S())},"+ 添加应用")]),V.value?(i(),l("div",tt,[...t[8]||(t[8]=[e("span",{class:"loading loading-spinner loading-sm"},null,-1)])])):q.value?(i(),l("div",st,[(i(!0),l(u,null,g(z.value,s=>(i(),l("article",{key:s.product.name,class:w(["app-card",{off:!s.product.enabled}]),tabindex:"0",role:"button",onClick:o=>x(s.product.name),onKeydown:[F(h(o=>x(s.product.name),["prevent"]),["enter"]),F(h(o=>x(s.product.name),["prevent"]),["space"])]},[e("div",nt,[e("div",ot,d(E(s.product.name)),1),e("div",lt,[e("div",it,d(s.product.name),1),e("div",dt,d(s.product.image_name?"🐳 "+s.product.image_name:"未设置默认镜像"),1)]),s.product.enabled?M("",!0):(i(),l("span",rt,"停用"))]),e("p",ct,d(s.product.remark||"—"),1),e("div",pt,[e("div",ut,[e("div",{class:w(["ac-stat-n",{zero:!s.deployments.length}])},d(s.deployments.length),3),t[9]||(t[9]=e("div",{class:"ac-stat-l"},"部署",-1))]),e("div",mt,[e("div",{class:w(["ac-stat-n",{zero:!s.okCount}])},d(s.okCount),3),t[10]||(t[10]=e("div",{class:"ac-stat-l"},"已接入",-1))]),e("div",vt,[e("div",{class:w(["ac-stat-n",s.pendingCount?"warn":"zero"])},d(s.pendingCount),3),t[11]||(t[11]=e("div",{class:"ac-stat-l"},"待部署",-1))])]),e("div",bt,[s.deployments.length?(i(!0),l(u,{key:0},g(s.deployments,o=>(i(),l("span",{key:o.id,class:"chip chip-dep"},[p(d(T(B)(o.region)),1),o.status==="pending"?(i(),l(u,{key:0},[p(" · 待部署")],64)):M("",!0)]))),128)):(i(),l("span",ft,"还没有任何部署"))]),e("div",{class:"ac-foot",onClick:t[1]||(t[1]=h(()=>{},["stop"]))},[e("button",{class:"btn btn-ghost btn-xs",onClick:o=>S(s.product)},"编辑",8,xt),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:o=>L(s.product)},"删除",8,_t),e("button",{class:"btn btn-primary btn-xs text-white",onClick:o=>x(s.product.name)},"进入详情 →",8,yt)])],42,at))),128)),U.value.length?(i(),l("article",gt,[t[13]||(t[13]=H('
未分组部署
需要归位到某个应用
待归位

未填所属应用名、或应用已被删除的历史部署。选一个应用把它归位,之后就能在该应用详情里管理。

',2)),e("div",ht,[(i(!0),l(u,null,g(U.value,s=>(i(),l("div",{key:s.id,class:"orphan-row"},[e("div",kt,[e("div",wt,d(s.name||"部署#"+s.id),1),e("div",Ct,"#"+d(s.id)+" · "+d(T(B)(s.region)),1)]),m(e("select",{"onUpdate:modelValue":o=>c[s.id]=o,class:"select select-bordered select-xs w-32"},[t[12]||(t[12]=e("option",{value:""},"选择应用…",-1)),(i(!0),l(u,null,g(f.value,o=>(i(),l("option",{key:o.id,value:o.name},d(o.name),9,Vt))),128))],8,$t),[[Q,c[s.id]]]),e("button",{class:"btn btn-xs",disabled:!c[s.id],onClick:o=>R(s)},"归位",8,Ut)]))),128))])])):M("",!0)])):(i(),l("div",et," 暂无应用,先「添加应用」 ")),e("dialog",{ref_key:"appDlg",ref:y,class:"modal"},[e("div",At,[e("h3",Mt,d(A.value?"编辑应用":"添加应用"),1),t[19]||(t[19]=e("p",{class:"text-xs text-slate-400 mt-1"}," 应用名是关联键:部署、账号作用域、第三方服务配置都按它挂载,改名会断开已有关联。 ",-1)),e("form",{class:"mt-4 space-y-3",onSubmit:h(I,["prevent"])},[e("div",Nt,[t[14]||(t[14]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"应用名 *")],-1)),m(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>n.name=s),type:"text",class:"input input-bordered input-sm w-full",required:"",placeholder:"如 Voitrans"},null,512),[[N,n.name]])]),e("div",zt,[t[15]||(t[15]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"默认镜像名")],-1)),m(e("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>n.image_name=s),type:"text",class:"input input-bordered input-sm w-full font-mono text-xs",placeholder:"voitrans-a11(新建部署时预填)"},null,512),[[N,n.image_name]])]),e("div",St,[t[16]||(t[16]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"备注")],-1)),m(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>n.remark=s),type:"text",class:"input input-bordered input-sm w-full"},null,512),[[N,n.remark]])]),e("label",Dt,[m(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>n.enabled=s),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[J,n.enabled]]),t[17]||(t[17]=e("span",{class:"text-sm"},"启用",-1))]),e("div",Ft,[e("button",{type:"button",class:"btn btn-ghost btn-sm",onClick:t[6]||(t[6]=s=>y.value?.close())},"取消"),t[18]||(t[18]=e("button",{type:"submit",class:"btn btn-primary btn-sm text-white"},"保存",-1))])],32)]),t[20]||(t[20]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512)]))}}),It=W(Tt,[["__scopeId","data-v-80f99751"]]);export{It as default}; diff --git a/apps/admin/.output/public/_nuxt/D5EVRMZE.js b/apps/admin/.output/public/_nuxt/CPoAe5lL.js similarity index 97% rename from apps/admin/.output/public/_nuxt/D5EVRMZE.js rename to apps/admin/.output/public/_nuxt/CPoAe5lL.js index 2cac1ccb..c986aceb 100644 --- a/apps/admin/.output/public/_nuxt/D5EVRMZE.js +++ b/apps/admin/.output/public/_nuxt/CPoAe5lL.js @@ -1 +1 @@ -import{g as H,C as K,c as l,q as b,H as B,a as t,l as E,F as k,r as C,t as r,p as N,v as S,O as q,y as d,z as A,o as a,d as I}from"./DSy_gLdM.js";import{u as P}from"./NtXZuCUg.js";import{u as O}from"./EeX3zgoF.js";const Y={class:"flex items-center justify-between mb-5"},G={class:"bg-white rounded-xl shadow-sm border border-slate-100"},J={class:"overflow-x-auto"},Q={class:"table table-zebra"},R={key:0},W={key:1},X={class:"font-mono text-sm"},Z={class:"font-medium"},tt={class:"text-sm text-slate-500"},et={class:"text-sm"},st={key:1,class:"text-slate-300"},nt={class:"text-sm text-slate-500"},ot={class:"flex gap-1"},lt=["onClick"],at=["onClick"],it={class:"flex items-center gap-3 mb-5"},rt={class:"text-lg font-semibold text-slate-800"},dt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},ut={class:"form-control mb-4"},ct={class:"form-control mb-4"},mt={class:"form-control mb-6"},bt={class:"space-y-2"},vt={key:0,class:"text-xs text-slate-400"},pt={class:"badge badge-lg gap-1 bg-slate-100 border-slate-200"},ft=["onClick"],xt={class:"flex gap-2 mt-2"},gt=["onKeydown"],ht={class:"flex gap-3"},_t=["disabled"],St=H({__name:"provider",setup(yt){const{webApi:f}=P(),{success:M,error:x,warn:F}=O(),v=d("list"),p=d([]),g=d(!1),h=d(!1),c=d(!1),i=d([]),m=d(""),o=A({id:0,name:"",description:""});function L(s){return s?Number(s).toString(16).toUpperCase():""}function _(s){return(s||"").split(",").map(e=>e.trim()).filter(Boolean)}function T(s){if(!s)return"-";const e=new Date(s*1e3);return e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0")+"-"+String(e.getDate()).padStart(2,"0")+" "+String(e.getHours()).padStart(2,"0")+":"+String(e.getMinutes()).padStart(2,"0")}async function y(){g.value=!0;try{const s=await f("getsolutionproviders",{});p.value=s?.providers??[]}catch(s){x(s?.message??"获取方案商列表失败"),p.value=[]}finally{g.value=!1}}function w(){v.value="list",y()}function V(s){s?(c.value=!0,o.id=s.id,o.name=s.name||"",o.description=s.description||"",i.value=_(s.contactmails)):(c.value=!1,o.id=0,o.name="",o.description="",i.value=[]),m.value="",v.value="form"}function $(){const s=m.value.trim();if(s){if(i.value.includes(s)){F("邮箱已存在");return}i.value.push(s),m.value=""}}function U(s){i.value.splice(s,1)}async function j(){h.value=!0;try{const s={provider:{name:o.name,description:o.description,contactmails:i.value.join(",")}};c.value&&(s.provider.id=Number(o.id)),await f(c.value?"updatesolutionprovider":"addsolutionprovider",s),M("保存成功"),w()}catch(s){x(s?.message??"保存失败")}finally{h.value=!1}}function z(s){window.confirm(`确定删除方案商 "${s.name}" 吗?`)&&f("delsolutionprovider",{id:s.id}).then(()=>{M("删除成功"),y()}).catch(e=>x(e?.message??"删除失败"))}return K(y),(s,e)=>(a(),l("div",null,[b(t("div",null,[t("div",Y,[e[6]||(e[6]=t("h2",{class:"text-lg font-semibold text-slate-800"},"方案商列表",-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=n=>V())},"+ 新增方案商")]),t("div",G,[t("div",J,[t("table",Q,[e[9]||(e[9]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"方案商名称"),t("th",null,"描述"),t("th",null,"联系邮箱"),t("th",null,"创建时间"),t("th",null,"操作")])],-1)),t("tbody",null,[g.value?(a(),l("tr",R,[...e[7]||(e[7]=[t("td",{colspan:"6",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):p.value.length?E("",!0):(a(),l("tr",W,[...e[8]||(e[8]=[t("td",{colspan:"6",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(a(!0),l(k,null,C(p.value,n=>(a(),l("tr",{key:n.id},[t("td",X,r(L(n.id)),1),t("td",Z,r(n.name),1),t("td",tt,r(n.description||""),1),t("td",et,[_(n.contactmails).length?(a(!0),l(k,{key:0},C(_(n.contactmails),(u,D)=>(a(),l("span",{key:D,class:"badge badge-ghost badge-sm mr-1"},r(u),1))),128)):(a(),l("span",st,"-"))]),t("td",nt,r(T(n.createtime)),1),t("td",null,[t("div",ot,[t("button",{class:"btn btn-ghost btn-xs",onClick:u=>V(n)},"编辑",8,lt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>z(n)},"删除",8,at)])])]))),128))])])])])],512),[[B,v.value==="list"]]),b(t("div",null,[t("div",it,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[1]||(e[1]=n=>w())},"← 返回列表"),t("h2",rt,r(c.value?"编辑方案商":"新增方案商"),1)]),t("div",dt,[t("form",{onSubmit:N(j,["prevent"])},[t("div",ut,[e[10]||(e[10]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"方案商名称 *")],-1)),b(t("input",{"onUpdate:modelValue":e[2]||(e[2]=n=>o.name=n),type:"text",class:"input input-bordered w-full",required:""},null,512),[[S,o.name]])]),t("div",ct,[e[11]||(e[11]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),b(t("textarea",{"onUpdate:modelValue":e[3]||(e[3]=n=>o.description=n),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[S,o.description]])]),t("div",mt,[e[13]||(e[13]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),t("div",bt,[i.value.length?E("",!0):(a(),l("p",vt,"暂无邮箱")),(a(!0),l(k,null,C(i.value,(n,u)=>(a(),l("div",{key:u,class:"flex items-center gap-2"},[t("span",pt,[e[12]||(e[12]=t("svg",{class:"h-3 w-3 text-slate-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})],-1)),I(" "+r(n),1)]),t("button",{type:"button",class:"btn btn-ghost btn-xs text-red-400 hover:text-red-600",onClick:D=>U(u)},"×",8,ft)]))),128))]),t("div",xt,[b(t("input",{"onUpdate:modelValue":e[4]||(e[4]=n=>m.value=n),type:"email",class:"input input-bordered input-sm flex-1",placeholder:"输入邮箱地址",onKeydown:q(N($,["prevent"]),["enter"])},null,40,gt),[[S,m.value]]),t("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",onClick:$},"添加")])]),t("div",ht,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[5]||(e[5]=n=>w())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:h.value},"保存",8,_t)])],32)])],512),[[B,v.value==="form"]])]))}});export{St as default}; +import{g as H,C as K,c as l,q as b,H as B,a as t,l as E,F as k,r as C,t as r,p as N,v as S,O as q,y as d,z as A,o as a,d as I}from"./6O01ZZML.js";import{u as P}from"./BgasD__e.js";import{u as O}from"./xsgK-Nup.js";const Y={class:"flex items-center justify-between mb-5"},G={class:"bg-white rounded-xl shadow-sm border border-slate-100"},J={class:"overflow-x-auto"},Q={class:"table table-zebra"},R={key:0},W={key:1},X={class:"font-mono text-sm"},Z={class:"font-medium"},tt={class:"text-sm text-slate-500"},et={class:"text-sm"},st={key:1,class:"text-slate-300"},nt={class:"text-sm text-slate-500"},ot={class:"flex gap-1"},lt=["onClick"],at=["onClick"],it={class:"flex items-center gap-3 mb-5"},rt={class:"text-lg font-semibold text-slate-800"},dt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},ut={class:"form-control mb-4"},ct={class:"form-control mb-4"},mt={class:"form-control mb-6"},bt={class:"space-y-2"},vt={key:0,class:"text-xs text-slate-400"},pt={class:"badge badge-lg gap-1 bg-slate-100 border-slate-200"},ft=["onClick"],xt={class:"flex gap-2 mt-2"},gt=["onKeydown"],ht={class:"flex gap-3"},_t=["disabled"],St=H({__name:"provider",setup(yt){const{webApi:f}=P(),{success:M,error:x,warn:F}=O(),v=d("list"),p=d([]),g=d(!1),h=d(!1),c=d(!1),i=d([]),m=d(""),o=A({id:0,name:"",description:""});function L(s){return s?Number(s).toString(16).toUpperCase():""}function _(s){return(s||"").split(",").map(e=>e.trim()).filter(Boolean)}function T(s){if(!s)return"-";const e=new Date(s*1e3);return e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0")+"-"+String(e.getDate()).padStart(2,"0")+" "+String(e.getHours()).padStart(2,"0")+":"+String(e.getMinutes()).padStart(2,"0")}async function y(){g.value=!0;try{const s=await f("getsolutionproviders",{});p.value=s?.providers??[]}catch(s){x(s?.message??"获取方案商列表失败"),p.value=[]}finally{g.value=!1}}function w(){v.value="list",y()}function V(s){s?(c.value=!0,o.id=s.id,o.name=s.name||"",o.description=s.description||"",i.value=_(s.contactmails)):(c.value=!1,o.id=0,o.name="",o.description="",i.value=[]),m.value="",v.value="form"}function $(){const s=m.value.trim();if(s){if(i.value.includes(s)){F("邮箱已存在");return}i.value.push(s),m.value=""}}function U(s){i.value.splice(s,1)}async function j(){h.value=!0;try{const s={provider:{name:o.name,description:o.description,contactmails:i.value.join(",")}};c.value&&(s.provider.id=Number(o.id)),await f(c.value?"updatesolutionprovider":"addsolutionprovider",s),M("保存成功"),w()}catch(s){x(s?.message??"保存失败")}finally{h.value=!1}}function z(s){window.confirm(`确定删除方案商 "${s.name}" 吗?`)&&f("delsolutionprovider",{id:s.id}).then(()=>{M("删除成功"),y()}).catch(e=>x(e?.message??"删除失败"))}return K(y),(s,e)=>(a(),l("div",null,[b(t("div",null,[t("div",Y,[e[6]||(e[6]=t("h2",{class:"text-lg font-semibold text-slate-800"},"方案商列表",-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=n=>V())},"+ 新增方案商")]),t("div",G,[t("div",J,[t("table",Q,[e[9]||(e[9]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"方案商名称"),t("th",null,"描述"),t("th",null,"联系邮箱"),t("th",null,"创建时间"),t("th",null,"操作")])],-1)),t("tbody",null,[g.value?(a(),l("tr",R,[...e[7]||(e[7]=[t("td",{colspan:"6",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):p.value.length?E("",!0):(a(),l("tr",W,[...e[8]||(e[8]=[t("td",{colspan:"6",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(a(!0),l(k,null,C(p.value,n=>(a(),l("tr",{key:n.id},[t("td",X,r(L(n.id)),1),t("td",Z,r(n.name),1),t("td",tt,r(n.description||""),1),t("td",et,[_(n.contactmails).length?(a(!0),l(k,{key:0},C(_(n.contactmails),(u,D)=>(a(),l("span",{key:D,class:"badge badge-ghost badge-sm mr-1"},r(u),1))),128)):(a(),l("span",st,"-"))]),t("td",nt,r(T(n.createtime)),1),t("td",null,[t("div",ot,[t("button",{class:"btn btn-ghost btn-xs",onClick:u=>V(n)},"编辑",8,lt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>z(n)},"删除",8,at)])])]))),128))])])])])],512),[[B,v.value==="list"]]),b(t("div",null,[t("div",it,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[1]||(e[1]=n=>w())},"← 返回列表"),t("h2",rt,r(c.value?"编辑方案商":"新增方案商"),1)]),t("div",dt,[t("form",{onSubmit:N(j,["prevent"])},[t("div",ut,[e[10]||(e[10]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"方案商名称 *")],-1)),b(t("input",{"onUpdate:modelValue":e[2]||(e[2]=n=>o.name=n),type:"text",class:"input input-bordered w-full",required:""},null,512),[[S,o.name]])]),t("div",ct,[e[11]||(e[11]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),b(t("textarea",{"onUpdate:modelValue":e[3]||(e[3]=n=>o.description=n),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[S,o.description]])]),t("div",mt,[e[13]||(e[13]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),t("div",bt,[i.value.length?E("",!0):(a(),l("p",vt,"暂无邮箱")),(a(!0),l(k,null,C(i.value,(n,u)=>(a(),l("div",{key:u,class:"flex items-center gap-2"},[t("span",pt,[e[12]||(e[12]=t("svg",{class:"h-3 w-3 text-slate-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})],-1)),I(" "+r(n),1)]),t("button",{type:"button",class:"btn btn-ghost btn-xs text-red-400 hover:text-red-600",onClick:D=>U(u)},"×",8,ft)]))),128))]),t("div",xt,[b(t("input",{"onUpdate:modelValue":e[4]||(e[4]=n=>m.value=n),type:"email",class:"input input-bordered input-sm flex-1",placeholder:"输入邮箱地址",onKeydown:q(N($,["prevent"]),["enter"])},null,40,gt),[[S,m.value]]),t("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",onClick:$},"添加")])]),t("div",ht,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[5]||(e[5]=n=>w())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:h.value},"保存",8,_t)])],32)])],512),[[B,v.value==="form"]])]))}});export{St as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/rUi_Q6ng.js b/apps/admin/.output/public/_nuxt/CS9TbzfM.js similarity index 98% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/rUi_Q6ng.js rename to apps/admin/.output/public/_nuxt/CS9TbzfM.js index 9d3deea8..f3a17193 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/rUi_Q6ng.js +++ b/apps/admin/.output/public/_nuxt/CS9TbzfM.js @@ -1,2 +1,2 @@ -import{g as W,j as X,z as P,C as Z,c as a,a as e,d as m,l as r,q as F,v as tt,m as L,s as V,F as N,r as U,A as T,y,o as l,t as i,n as z}from"./DSy_gLdM.js";import{u as et}from"./NtXZuCUg.js";import{u as st}from"./EeX3zgoF.js";const nt={class:"flex items-center justify-between mb-5 flex-wrap gap-3"},at={key:0,class:"flex gap-2"},lt=["disabled"],ot={key:0,class:"loading loading-spinner loading-xs"},it=["disabled"],dt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4 mb-4"},rt={class:"flex flex-wrap items-end gap-3"},ut={class:"form-control"},ct={key:0,class:"form-control"},bt=["value"],mt={key:1,class:"form-control"},xt=["value"],pt={class:"form-control"},ht={class:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-4"},gt={class:"text-xs text-slate-500"},ft={class:"bg-white rounded-xl shadow-sm border border-slate-100"},vt={class:"overflow-x-auto"},_t={class:"table table-zebra text-sm"},yt={key:0},wt={key:0},kt=["colspan"],Ct={key:1},St=["colspan"],Ft={class:"font-mono"},Nt={class:"text-right"},Ut={class:"text-right font-medium"},At={class:"text-right text-slate-500"},Mt={class:"text-right text-emerald-600 font-medium"},Lt={class:"text-right text-slate-500"},Vt={class:"text-right text-indigo-600 font-medium"},Tt={class:"text-right text-slate-500"},jt={key:0,class:"text-[11px] text-slate-400 mt-0.5"},Dt={key:0},$t={class:"flex flex-wrap gap-1"},Bt=["onClick"],Rt=["onClick"],Et=["onClick"],qt=W({__name:"settlements",setup(Pt){const{webApi:p}=et(),{success:j,error:w}=st(),k=X(),h=T(()=>k.isAdmin),x=y([]),g=y([]),f=y([]),A=y(!1),C=y(!1),u=P({base:0,brandNet:0,channel:0,platform:0}),o=P({month:q(),brandid:0,channelid:"",status:-1}),O=T(()=>o.brandid?f.value.filter(s=>s.brandid===o.brandid):f.value),I=T(()=>[{label:"结算基数(订单实付)",value:u.base,cls:"text-slate-800"},{label:"品牌商实得",value:u.brandNet,cls:"text-emerald-600"},{label:"渠道商分成",value:u.channel,cls:"text-indigo-600"},{label:"平台留存",value:u.platform,cls:"text-slate-600"}]);function q(){const s=new Date;return s.setDate(1),s.setMonth(s.getMonth()-1),s.getFullYear()+"-"+String(s.getMonth()+1).padStart(2,"0")}function D(s){const t=(s||"").split("-");return t.length!==2?0:parseInt(t[0])*100+parseInt(t[1])}function $(s){return s?Math.floor(s/100)+"-"+String(s%100).padStart(2,"0"):"-"}function v(s){return"¥"+((Number(s)||0)/100).toFixed(2)}function S(s){return((Number(s)||0)/100).toFixed(2)+"%"}function B(s){if(!s)return"未归属品牌商";const t=g.value.find(n=>n.id===s);return t?t.brand:"品牌商#"+Number(s).toString(16).toUpperCase()}function R(s){if(!s)return"未分配渠道";const t=f.value.find(n=>n.id===s);return t?t.name+" ("+t.id+")":s}const Y={0:"草稿",1:"已确认",2:"已支付"},G={0:"badge-ghost",1:"badge-warning",2:"badge-success"};function E(s){return Y[s]??String(s)}function H(s){return G[s]??"badge-ghost"}async function J(){try{const[s,t]=await Promise.all([p("getbrands",{}),p("getchannels",{status:-1})]);g.value=s?.brands??[],f.value=t?.channels??[]}catch{g.value=[],f.value=[]}}async function c(){A.value=!0;try{g.value.length||await J();const s=await p("getsettlements",{period:D(o.month),brandid:Number(o.brandid)||0,channelid:o.channelid,status:Number(o.status)});x.value=s?.items??[],u.base=s?.total_base??0,u.brandNet=s?.total_brand_net??0,u.channel=s?.total_channel??0,u.platform=s?.total_platform??0}catch(s){w(s?.message??"获取结算数据失败"),x.value=[]}finally{A.value=!1}}async function K(){const s=D(o.month);if(!s){w("请选择结算月");return}if(window.confirm(`确定生成/重算 ${o.month} 的结算单吗?已确认的行会被跳过。`)){C.value=!0;try{const t=await p("gensettlement",{period:s});j(`已生成 ${t?.rows??0} 行,跳过(已确认)${t?.skipped??0} 行`),c()}catch(t){w(t?.message??"生成失败")}finally{C.value=!1}}}async function M(s,t){const n={0:"退回草稿",1:"确认",2:"标记已支付"};if(window.confirm(`确定${n[t]}这一行结算吗?`))try{await p("confirmsettlement",{period:s.period,brandid:s.brandid,channelid:s.channelid,status:t,remark:s.remark||""}),j(n[t]+"成功"),c()}catch(_){w(_?.message??"操作失败")}}function Q(){const s=["结算月","品牌商","渠道商","订单数","结算基数(元)","品牌比例","品牌总提成(元)","渠道比例","渠道分成(元)","品牌实得(元)","平台留存(元)","状态"],t=x.value.map(d=>[$(d.period),B(d.brandid),R(d.channelid),d.order_count,(d.base_amount/100).toFixed(2),S(d.brand_rate),(d.brand_gross/100).toFixed(2),S(d.channel_rate),(d.channel_amount/100).toFixed(2),(d.brand_net/100).toFixed(2),(d.platform_amount/100).toFixed(2),E(d.status)]),n=[s.join(",")].concat(t.map(d=>d.join(","))).join(` +import{g as W,j as X,z as P,C as Z,c as a,a as e,d as m,l as r,q as F,v as tt,m as L,s as V,F as N,r as U,A as T,y,o as l,t as i,n as z}from"./6O01ZZML.js";import{u as et}from"./BgasD__e.js";import{u as st}from"./xsgK-Nup.js";const nt={class:"flex items-center justify-between mb-5 flex-wrap gap-3"},at={key:0,class:"flex gap-2"},lt=["disabled"],ot={key:0,class:"loading loading-spinner loading-xs"},it=["disabled"],dt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4 mb-4"},rt={class:"flex flex-wrap items-end gap-3"},ut={class:"form-control"},ct={key:0,class:"form-control"},bt=["value"],mt={key:1,class:"form-control"},xt=["value"],pt={class:"form-control"},ht={class:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-4"},gt={class:"text-xs text-slate-500"},ft={class:"bg-white rounded-xl shadow-sm border border-slate-100"},vt={class:"overflow-x-auto"},_t={class:"table table-zebra text-sm"},yt={key:0},wt={key:0},kt=["colspan"],Ct={key:1},St=["colspan"],Ft={class:"font-mono"},Nt={class:"text-right"},Ut={class:"text-right font-medium"},At={class:"text-right text-slate-500"},Mt={class:"text-right text-emerald-600 font-medium"},Lt={class:"text-right text-slate-500"},Vt={class:"text-right text-indigo-600 font-medium"},Tt={class:"text-right text-slate-500"},jt={key:0,class:"text-[11px] text-slate-400 mt-0.5"},Dt={key:0},$t={class:"flex flex-wrap gap-1"},Bt=["onClick"],Rt=["onClick"],Et=["onClick"],qt=W({__name:"settlements",setup(Pt){const{webApi:p}=et(),{success:j,error:w}=st(),k=X(),h=T(()=>k.isAdmin),x=y([]),g=y([]),f=y([]),A=y(!1),C=y(!1),u=P({base:0,brandNet:0,channel:0,platform:0}),o=P({month:q(),brandid:0,channelid:"",status:-1}),O=T(()=>o.brandid?f.value.filter(s=>s.brandid===o.brandid):f.value),I=T(()=>[{label:"结算基数(订单实付)",value:u.base,cls:"text-slate-800"},{label:"品牌商实得",value:u.brandNet,cls:"text-emerald-600"},{label:"渠道商分成",value:u.channel,cls:"text-indigo-600"},{label:"平台留存",value:u.platform,cls:"text-slate-600"}]);function q(){const s=new Date;return s.setDate(1),s.setMonth(s.getMonth()-1),s.getFullYear()+"-"+String(s.getMonth()+1).padStart(2,"0")}function D(s){const t=(s||"").split("-");return t.length!==2?0:parseInt(t[0])*100+parseInt(t[1])}function $(s){return s?Math.floor(s/100)+"-"+String(s%100).padStart(2,"0"):"-"}function v(s){return"¥"+((Number(s)||0)/100).toFixed(2)}function S(s){return((Number(s)||0)/100).toFixed(2)+"%"}function B(s){if(!s)return"未归属品牌商";const t=g.value.find(n=>n.id===s);return t?t.brand:"品牌商#"+Number(s).toString(16).toUpperCase()}function R(s){if(!s)return"未分配渠道";const t=f.value.find(n=>n.id===s);return t?t.name+" ("+t.id+")":s}const Y={0:"草稿",1:"已确认",2:"已支付"},G={0:"badge-ghost",1:"badge-warning",2:"badge-success"};function E(s){return Y[s]??String(s)}function H(s){return G[s]??"badge-ghost"}async function J(){try{const[s,t]=await Promise.all([p("getbrands",{}),p("getchannels",{status:-1})]);g.value=s?.brands??[],f.value=t?.channels??[]}catch{g.value=[],f.value=[]}}async function c(){A.value=!0;try{g.value.length||await J();const s=await p("getsettlements",{period:D(o.month),brandid:Number(o.brandid)||0,channelid:o.channelid,status:Number(o.status)});x.value=s?.items??[],u.base=s?.total_base??0,u.brandNet=s?.total_brand_net??0,u.channel=s?.total_channel??0,u.platform=s?.total_platform??0}catch(s){w(s?.message??"获取结算数据失败"),x.value=[]}finally{A.value=!1}}async function K(){const s=D(o.month);if(!s){w("请选择结算月");return}if(window.confirm(`确定生成/重算 ${o.month} 的结算单吗?已确认的行会被跳过。`)){C.value=!0;try{const t=await p("gensettlement",{period:s});j(`已生成 ${t?.rows??0} 行,跳过(已确认)${t?.skipped??0} 行`),c()}catch(t){w(t?.message??"生成失败")}finally{C.value=!1}}}async function M(s,t){const n={0:"退回草稿",1:"确认",2:"标记已支付"};if(window.confirm(`确定${n[t]}这一行结算吗?`))try{await p("confirmsettlement",{period:s.period,brandid:s.brandid,channelid:s.channelid,status:t,remark:s.remark||""}),j(n[t]+"成功"),c()}catch(_){w(_?.message??"操作失败")}}function Q(){const s=["结算月","品牌商","渠道商","订单数","结算基数(元)","品牌比例","品牌总提成(元)","渠道比例","渠道分成(元)","品牌实得(元)","平台留存(元)","状态"],t=x.value.map(d=>[$(d.period),B(d.brandid),R(d.channelid),d.order_count,(d.base_amount/100).toFixed(2),S(d.brand_rate),(d.brand_gross/100).toFixed(2),S(d.channel_rate),(d.channel_amount/100).toFixed(2),(d.brand_net/100).toFixed(2),(d.platform_amount/100).toFixed(2),E(d.status)]),n=[s.join(",")].concat(t.map(d=>d.join(","))).join(` `),_=new Blob(["\uFEFF"+n],{type:"text/csv;charset=utf-8;"}),b=document.createElement("a");b.href=URL.createObjectURL(_),b.download="月结算_"+o.month+".csv",b.click(),URL.revokeObjectURL(b.href)}return Z(c),(s,t)=>(l(),a("div",null,[e("div",nt,[t[5]||(t[5]=e("h2",{class:"text-lg font-semibold text-slate-800"},[m(" 月结算"),e("span",{class:"text-xs text-slate-400 font-normal ml-2"},"按订单实付金额分成,渠道商从品牌商那份里再切")],-1)),h.value?(l(),a("div",at,[e("button",{class:"btn btn-primary btn-sm text-white",disabled:C.value,onClick:K},[C.value?(l(),a("span",ot)):r("",!0),t[4]||(t[4]=m("生成 / 重算本月账 ",-1))],8,lt),e("button",{class:"btn btn-ghost btn-sm",disabled:!x.value.length,onClick:Q},"导出 CSV",8,it)])):r("",!0)]),e("div",dt,[e("div",rt,[e("div",ut,[t[6]||(t[6]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs text-slate-500"},"结算月")],-1)),F(e("input",{"onUpdate:modelValue":t[0]||(t[0]=n=>o.month=n),type:"month",class:"input input-bordered input-sm w-44",onChange:c},null,544),[[tt,o.month]])]),!L(k).isBrandAccount&&!L(k).isDealer?(l(),a("div",ct,[t[8]||(t[8]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs text-slate-500"},"品牌商")],-1)),F(e("select",{"onUpdate:modelValue":t[1]||(t[1]=n=>o.brandid=n),class:"select select-bordered select-sm w-48",onChange:c},[t[7]||(t[7]=e("option",{value:0},"全部品牌商",-1)),(l(!0),a(N,null,U(g.value,n=>(l(),a("option",{key:n.id,value:n.id},i(n.brand),9,bt))),128))],544),[[V,o.brandid,void 0,{number:!0}]])])):r("",!0),L(k).isDealer?r("",!0):(l(),a("div",mt,[t[10]||(t[10]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs text-slate-500"},"渠道商")],-1)),F(e("select",{"onUpdate:modelValue":t[2]||(t[2]=n=>o.channelid=n),class:"select select-bordered select-sm w-52",onChange:c},[t[9]||(t[9]=e("option",{value:""},"全部渠道商",-1)),(l(!0),a(N,null,U(O.value,n=>(l(),a("option",{key:n.id,value:n.id},i(n.name)+" ("+i(n.id)+")",9,xt))),128))],544),[[V,o.channelid]])])),e("div",pt,[t[12]||(t[12]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs text-slate-500"},"状态")],-1)),F(e("select",{"onUpdate:modelValue":t[3]||(t[3]=n=>o.status=n),class:"select select-bordered select-sm w-32",onChange:c},[...t[11]||(t[11]=[e("option",{value:-1},"全部状态",-1),e("option",{value:0},"草稿",-1),e("option",{value:1},"已确认",-1),e("option",{value:2},"已支付",-1)])],544),[[V,o.status,void 0,{number:!0}]])]),e("button",{class:"btn btn-sm btn-primary text-white",onClick:c},"查询")])]),e("div",ht,[(l(!0),a(N,null,U(I.value,n=>(l(),a("div",{key:n.label,class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4"},[e("div",gt,i(n.label),1),e("div",{class:z(["text-xl font-semibold mt-1",n.cls])},i(v(n.value)),3)]))),128))]),e("div",ft,[e("div",vt,[e("table",_t,[e("thead",null,[e("tr",null,[t[13]||(t[13]=e("th",null,"结算月",-1)),t[14]||(t[14]=e("th",null,"品牌商",-1)),t[15]||(t[15]=e("th",null,"渠道商",-1)),t[16]||(t[16]=e("th",{class:"text-right"},"订单数",-1)),t[17]||(t[17]=e("th",{class:"text-right"},"结算基数",-1)),t[18]||(t[18]=e("th",{class:"text-right"},"品牌比例",-1)),t[19]||(t[19]=e("th",{class:"text-right"},"品牌实得",-1)),t[20]||(t[20]=e("th",{class:"text-right"},"渠道比例",-1)),t[21]||(t[21]=e("th",{class:"text-right"},"渠道分成",-1)),t[22]||(t[22]=e("th",{class:"text-right"},"平台留存",-1)),t[23]||(t[23]=e("th",null,"状态",-1)),h.value?(l(),a("th",yt,"操作")):r("",!0)])]),e("tbody",null,[A.value?(l(),a("tr",wt,[e("td",{colspan:h.value?12:11,class:"text-center py-8"},[...t[24]||(t[24]=[e("span",{class:"loading loading-spinner loading-sm"},null,-1)])],8,kt)])):x.value.length?(l(!0),a(N,{key:2},U(x.value,(n,_)=>(l(),a("tr",{key:_},[e("td",Ft,i($(n.period)),1),e("td",null,i(B(n.brandid)),1),e("td",null,i(R(n.channelid)),1),e("td",Nt,i(n.order_count),1),e("td",Ut,i(v(n.base_amount)),1),e("td",At,i(S(n.brand_rate)),1),e("td",Mt,i(v(n.brand_net)),1),e("td",Lt,i(S(n.channel_rate)),1),e("td",Vt,i(v(n.channel_amount)),1),e("td",Tt,i(v(n.platform_amount)),1),e("td",null,[e("span",{class:z(["badge badge-sm",H(n.status)])},i(E(n.status)),3),n.confirm_account?(l(),a("div",jt,i(n.confirm_account),1)):r("",!0)]),h.value?(l(),a("td",Dt,[e("div",$t,[n.status===0?(l(),a("button",{key:0,class:"btn btn-ghost btn-xs text-emerald-600",onClick:b=>M(n,1)},"确认",8,Bt)):r("",!0),n.status===1?(l(),a("button",{key:1,class:"btn btn-ghost btn-xs text-indigo-600",onClick:b=>M(n,2)},"标记已付",8,Rt)):r("",!0),n.status>0?(l(),a("button",{key:2,class:"btn btn-ghost btn-xs text-amber-600",onClick:b=>M(n,0)},"退回草稿",8,Et)):r("",!0)])])):r("",!0)]))),128)):(l(),a("tr",Ct,[e("td",{colspan:h.value?12:11,class:"text-center text-slate-400 py-8"},"该月暂无结算数据",8,St)]))])])])]),t[25]||(t[25]=e("p",{class:"text-xs text-slate-400 mt-3 leading-relaxed"},[m(" 结算基数 = 该月"),e("b",null,"已支付"),m("订单实付金额合计,订单按下单时冻结的「来源设备」归属到品牌商与渠道商。"),e("br"),m(" 品牌商总提成 = 基数 × 品牌比例;渠道分成 = 品牌总提成 × 渠道比例;品牌实得 = 品牌总提成 − 渠道分成;平台留存 = 基数 − 品牌总提成。"),e("br"),m(" 比例在生成结算单时快照冻结,之后调整比例不影响已生成的月份;"),e("b",null,"已确认"),m("的行重算时会跳过,需先退回草稿才能重算。 ")],-1))]))}});export{qt as default}; diff --git a/apps/admin/.output/public/_nuxt/Cy52Ecc0.js b/apps/admin/.output/public/_nuxt/CasIUDzx.js similarity index 98% rename from apps/admin/.output/public/_nuxt/Cy52Ecc0.js rename to apps/admin/.output/public/_nuxt/CasIUDzx.js index f331a6e2..e6ee7f98 100644 --- a/apps/admin/.output/public/_nuxt/Cy52Ecc0.js +++ b/apps/admin/.output/public/_nuxt/CasIUDzx.js @@ -1 +1 @@ -import{g as D,C as F,c as n,q as i,H as $,a as e,F as b,r as y,s as A,v,l as j,t as r,p as q,y as d,z as I,A as E,o as u}from"./DSy_gLdM.js";import{u as O}from"./NtXZuCUg.js";import{u as T}from"./EeX3zgoF.js";const z={class:"flex items-center justify-between mb-5"},G={class:"flex items-center gap-3 mb-4"},H=["value"],J={class:"bg-white rounded-xl shadow-sm border border-slate-100"},K={class:"overflow-x-auto"},P={class:"table"},Q={key:0},W={key:1},X={class:"bg-slate-100/80"},Y={colspan:"4",class:"py-2"},Z={class:"font-semibold text-slate-600 text-sm"},ee={class:"text-xs text-slate-400 ml-2"},te={class:"font-mono text-sm font-medium"},le=["title"],se={class:"text-sm text-slate-400"},oe={class:"text-right"},ae={class:"inline-flex gap-1"},ne=["onClick"],ie=["onClick"],ue={class:"flex items-center gap-3 mb-5"},re={class:"text-lg font-semibold text-slate-800"},de={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},me={class:"grid grid-cols-2 gap-4"},be={class:"form-control mb-4"},ve=["value"],pe={class:"form-control mb-4"},ce={class:"form-control mb-4"},fe={class:"form-control mb-4"},ge={class:"form-control mb-6"},xe={class:"flex gap-3"},ye=["disabled"],Ce=D({__name:"globalconfig",setup(we){const V=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}],{webApi:p}=O(),{success:U,error:w}=T(),c=d("list"),f=d([]),k=d(!1),_=d(!1),g=d(!1),m=d(1),h=d(""),s=I({id:0,region:1,group:"",key:"",value:"",description:""}),N=E(()=>{const o=h.value.trim().toLowerCase();return o?f.value.filter(t=>((t.group||"")+(t.key||"")).toLowerCase().includes(o)):f.value}),L=E(()=>{const o={};return N.value.forEach(l=>{const a=l.group||"";(o[a]=o[a]||[]).push(l)}),Object.keys(o).sort((l,a)=>l===""?-1:a===""?1:l({key:l,label:l||"未分组",items:o[l]}))});async function x(){k.value=!0;try{const o=await p("getglobalconfigs",{region:m.value});f.value=o?.items??[]}catch(o){w(o?.message??"获取配置失败"),f.value=[]}finally{k.value=!1}}function C(){c.value="list",x()}function S(o){o?(g.value=!0,s.id=o.id||0,s.region=o.region||1,s.group=o.group||"",s.key=o.key||"",s.value=o.value||"",s.description=o.description||""):(g.value=!1,s.id=0,s.region=m.value>0?m.value:1,s.group="",s.key="",s.value="",s.description=""),c.value="form"}async function M(){_.value=!0;try{const o={region:Number(s.region)||0,group:s.group.trim(),key:s.key.trim(),value:s.value,description:s.description.trim()};g.value?(o.id=Number(s.id),await p("updateglobalconfig",o)):await p("addglobalconfig",o),U("保存成功"),C()}catch(o){w(o?.message??"保存失败")}finally{_.value=!1}}function R(o){window.confirm("确定删除该配置项吗?")&&p("delglobalconfig",{ids:[o.id]}).then(()=>{U("删除成功"),x()}).catch(t=>w(t?.message??"删除失败"))}return F(x),(o,t)=>(u(),n("div",null,[i(e("div",null,[e("div",z,[t[10]||(t[10]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"全局环境配置"),e("p",{class:"text-xs text-slate-400 mt-1"},"全局第三方服务配置(AI / 翻译等),按区域分组,所有应用共享。修改后各服务约 10 分钟内自动同步。")],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=l=>S())},"+ 新增配置")]),e("div",G,[t[11]||(t[11]=e("span",{class:"text-sm text-slate-500"},"区域",-1)),i(e("select",{"onUpdate:modelValue":t[1]||(t[1]=l=>m.value=l),class:"select select-bordered select-sm",onChange:x},[(u(),n(b,null,y(V,l=>e("option",{key:l.value,value:l.value},r(l.label),9,H)),64))],544),[[A,m.value,void 0,{number:!0}]]),i(e("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>h.value=l),class:"input input-bordered input-sm w-48",placeholder:"按分组/键搜索"},null,512),[[v,h.value]])]),e("div",J,[e("div",K,[e("table",P,[t[14]||(t[14]=e("thead",null,[e("tr",null,[e("th",null,"键"),e("th",null,"值"),e("th",null,"描述"),e("th",{class:"text-right"},"操作")])],-1)),e("tbody",null,[k.value?(u(),n("tr",Q,[...t[12]||(t[12]=[e("td",{colspan:"4",class:"text-center py-8"},[e("span",{class:"loading loading-spinner loading-sm"})],-1)])])):N.value.length?j("",!0):(u(),n("tr",W,[...t[13]||(t[13]=[e("td",{colspan:"4",class:"text-center text-slate-400 py-8"},"暂无配置",-1)])])),(u(!0),n(b,null,y(L.value,l=>(u(),n(b,{key:l.key},[e("tr",X,[e("td",Y,[e("span",Z,"▸ "+r(l.label),1),e("span",ee,r(l.items.length)+" 项",1)])]),(u(!0),n(b,null,y(l.items,a=>(u(),n("tr",{key:a.id,class:"hover"},[e("td",te,r(a.key||""),1),e("td",{class:"text-sm text-slate-500 max-w-xs truncate",title:a.value||""},r(a.value||""),9,le),e("td",se,r(a.description||""),1),e("td",oe,[e("div",ae,[e("button",{class:"btn btn-ghost btn-xs",onClick:B=>S(a)},"编辑",8,ne),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:B=>R(a)},"删除",8,ie)])])]))),128))],64))),128))])])])])],512),[[$,c.value==="list"]]),i(e("div",null,[e("div",ue,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[3]||(t[3]=l=>C())},"← 返回列表"),e("h2",re,r(g.value?"编辑配置":"新增配置"),1)]),e("div",de,[e("form",{onSubmit:q(M,["prevent"])},[e("div",me,[e("div",be,[t[15]||(t[15]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"区域 *")],-1)),i(e("select",{"onUpdate:modelValue":t[4]||(t[4]=l=>s.region=l),class:"select select-bordered w-full"},[(u(),n(b,null,y(V,l=>e("option",{key:l.value,value:l.value},r(l.label),9,ve)),64))],512),[[A,s.region,void 0,{number:!0}]])]),e("div",pe,[t[16]||(t[16]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"分组 (group)")],-1)),i(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>s.group=l),type:"text",class:"input input-bordered w-full",placeholder:"如 ai / translate / asr"},null,512),[[v,s.group]])])]),e("div",ce,[t[17]||(t[17]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"键 (key) *")],-1)),i(e("input",{"onUpdate:modelValue":t[6]||(t[6]=l=>s.key=l),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 openai_api_key"},null,512),[[v,s.key]])]),e("div",fe,[t[18]||(t[18]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"值 (value)")],-1)),i(e("textarea",{"onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"3"},null,512),[[v,s.value]])]),e("div",ge,[t[19]||(t[19]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"描述")],-1)),i(e("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>s.description=l),type:"text",class:"input input-bordered w-full"},null,512),[[v,s.description]])]),e("div",xe,[e("button",{type:"button",class:"btn btn-ghost",onClick:t[9]||(t[9]=l=>C())},"取消"),e("button",{type:"submit",class:"btn btn-primary text-white",disabled:_.value},"保存",8,ye)])],32)])],512),[[$,c.value==="form"]])]))}});export{Ce as default}; +import{g as D,C as F,c as n,q as i,H as $,a as e,F as b,r as y,s as A,v,l as j,t as r,p as q,y as d,z as I,A as E,o as u}from"./6O01ZZML.js";import{u as O}from"./BgasD__e.js";import{u as T}from"./xsgK-Nup.js";const z={class:"flex items-center justify-between mb-5"},G={class:"flex items-center gap-3 mb-4"},H=["value"],J={class:"bg-white rounded-xl shadow-sm border border-slate-100"},K={class:"overflow-x-auto"},P={class:"table"},Q={key:0},W={key:1},X={class:"bg-slate-100/80"},Y={colspan:"4",class:"py-2"},Z={class:"font-semibold text-slate-600 text-sm"},ee={class:"text-xs text-slate-400 ml-2"},te={class:"font-mono text-sm font-medium"},le=["title"],se={class:"text-sm text-slate-400"},oe={class:"text-right"},ae={class:"inline-flex gap-1"},ne=["onClick"],ie=["onClick"],ue={class:"flex items-center gap-3 mb-5"},re={class:"text-lg font-semibold text-slate-800"},de={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},me={class:"grid grid-cols-2 gap-4"},be={class:"form-control mb-4"},ve=["value"],pe={class:"form-control mb-4"},ce={class:"form-control mb-4"},fe={class:"form-control mb-4"},ge={class:"form-control mb-6"},xe={class:"flex gap-3"},ye=["disabled"],Ce=D({__name:"globalconfig",setup(we){const V=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}],{webApi:p}=O(),{success:U,error:w}=T(),c=d("list"),f=d([]),k=d(!1),_=d(!1),g=d(!1),m=d(1),h=d(""),s=I({id:0,region:1,group:"",key:"",value:"",description:""}),N=E(()=>{const o=h.value.trim().toLowerCase();return o?f.value.filter(t=>((t.group||"")+(t.key||"")).toLowerCase().includes(o)):f.value}),L=E(()=>{const o={};return N.value.forEach(l=>{const a=l.group||"";(o[a]=o[a]||[]).push(l)}),Object.keys(o).sort((l,a)=>l===""?-1:a===""?1:l({key:l,label:l||"未分组",items:o[l]}))});async function x(){k.value=!0;try{const o=await p("getglobalconfigs",{region:m.value});f.value=o?.items??[]}catch(o){w(o?.message??"获取配置失败"),f.value=[]}finally{k.value=!1}}function C(){c.value="list",x()}function S(o){o?(g.value=!0,s.id=o.id||0,s.region=o.region||1,s.group=o.group||"",s.key=o.key||"",s.value=o.value||"",s.description=o.description||""):(g.value=!1,s.id=0,s.region=m.value>0?m.value:1,s.group="",s.key="",s.value="",s.description=""),c.value="form"}async function M(){_.value=!0;try{const o={region:Number(s.region)||0,group:s.group.trim(),key:s.key.trim(),value:s.value,description:s.description.trim()};g.value?(o.id=Number(s.id),await p("updateglobalconfig",o)):await p("addglobalconfig",o),U("保存成功"),C()}catch(o){w(o?.message??"保存失败")}finally{_.value=!1}}function R(o){window.confirm("确定删除该配置项吗?")&&p("delglobalconfig",{ids:[o.id]}).then(()=>{U("删除成功"),x()}).catch(t=>w(t?.message??"删除失败"))}return F(x),(o,t)=>(u(),n("div",null,[i(e("div",null,[e("div",z,[t[10]||(t[10]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"全局环境配置"),e("p",{class:"text-xs text-slate-400 mt-1"},"全局第三方服务配置(AI / 翻译等),按区域分组,所有应用共享。修改后各服务约 10 分钟内自动同步。")],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=l=>S())},"+ 新增配置")]),e("div",G,[t[11]||(t[11]=e("span",{class:"text-sm text-slate-500"},"区域",-1)),i(e("select",{"onUpdate:modelValue":t[1]||(t[1]=l=>m.value=l),class:"select select-bordered select-sm",onChange:x},[(u(),n(b,null,y(V,l=>e("option",{key:l.value,value:l.value},r(l.label),9,H)),64))],544),[[A,m.value,void 0,{number:!0}]]),i(e("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>h.value=l),class:"input input-bordered input-sm w-48",placeholder:"按分组/键搜索"},null,512),[[v,h.value]])]),e("div",J,[e("div",K,[e("table",P,[t[14]||(t[14]=e("thead",null,[e("tr",null,[e("th",null,"键"),e("th",null,"值"),e("th",null,"描述"),e("th",{class:"text-right"},"操作")])],-1)),e("tbody",null,[k.value?(u(),n("tr",Q,[...t[12]||(t[12]=[e("td",{colspan:"4",class:"text-center py-8"},[e("span",{class:"loading loading-spinner loading-sm"})],-1)])])):N.value.length?j("",!0):(u(),n("tr",W,[...t[13]||(t[13]=[e("td",{colspan:"4",class:"text-center text-slate-400 py-8"},"暂无配置",-1)])])),(u(!0),n(b,null,y(L.value,l=>(u(),n(b,{key:l.key},[e("tr",X,[e("td",Y,[e("span",Z,"▸ "+r(l.label),1),e("span",ee,r(l.items.length)+" 项",1)])]),(u(!0),n(b,null,y(l.items,a=>(u(),n("tr",{key:a.id,class:"hover"},[e("td",te,r(a.key||""),1),e("td",{class:"text-sm text-slate-500 max-w-xs truncate",title:a.value||""},r(a.value||""),9,le),e("td",se,r(a.description||""),1),e("td",oe,[e("div",ae,[e("button",{class:"btn btn-ghost btn-xs",onClick:B=>S(a)},"编辑",8,ne),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:B=>R(a)},"删除",8,ie)])])]))),128))],64))),128))])])])])],512),[[$,c.value==="list"]]),i(e("div",null,[e("div",ue,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[3]||(t[3]=l=>C())},"← 返回列表"),e("h2",re,r(g.value?"编辑配置":"新增配置"),1)]),e("div",de,[e("form",{onSubmit:q(M,["prevent"])},[e("div",me,[e("div",be,[t[15]||(t[15]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"区域 *")],-1)),i(e("select",{"onUpdate:modelValue":t[4]||(t[4]=l=>s.region=l),class:"select select-bordered w-full"},[(u(),n(b,null,y(V,l=>e("option",{key:l.value,value:l.value},r(l.label),9,ve)),64))],512),[[A,s.region,void 0,{number:!0}]])]),e("div",pe,[t[16]||(t[16]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"分组 (group)")],-1)),i(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>s.group=l),type:"text",class:"input input-bordered w-full",placeholder:"如 ai / translate / asr"},null,512),[[v,s.group]])])]),e("div",ce,[t[17]||(t[17]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"键 (key) *")],-1)),i(e("input",{"onUpdate:modelValue":t[6]||(t[6]=l=>s.key=l),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 openai_api_key"},null,512),[[v,s.key]])]),e("div",fe,[t[18]||(t[18]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"值 (value)")],-1)),i(e("textarea",{"onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"3"},null,512),[[v,s.value]])]),e("div",ge,[t[19]||(t[19]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"描述")],-1)),i(e("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>s.description=l),type:"text",class:"input input-bordered w-full"},null,512),[[v,s.description]])]),e("div",xe,[e("button",{type:"button",class:"btn btn-ghost",onClick:t[9]||(t[9]=l=>C())},"取消"),e("button",{type:"submit",class:"btn btn-primary text-white",disabled:_.value},"保存",8,ye)])],32)])],512),[[$,c.value==="form"]])]))}});export{Ce as default}; diff --git a/apps/admin/.output/public/_nuxt/D8jvJLAX.js b/apps/admin/.output/public/_nuxt/CkLfApYf.js similarity index 96% rename from apps/admin/.output/public/_nuxt/D8jvJLAX.js rename to apps/admin/.output/public/_nuxt/CkLfApYf.js index 3fd99ec0..f39c83ea 100644 --- a/apps/admin/.output/public/_nuxt/D8jvJLAX.js +++ b/apps/admin/.output/public/_nuxt/CkLfApYf.js @@ -1 +1 @@ -import{_ as o,o as s,c as a,a as t,t as r}from"./DSy_gLdM.js";import{u as i}from"./obp34o1K.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default}; +import{_ as o,o as s,c as a,a as t,t as r}from"./6O01ZZML.js";import{u as i}from"./BvvkbLjV.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default}; diff --git a/apps/admin/.output/public/_nuxt/BDDumZok.js b/apps/admin/.output/public/_nuxt/DC2vBYza.js similarity index 98% rename from apps/admin/.output/public/_nuxt/BDDumZok.js rename to apps/admin/.output/public/_nuxt/DC2vBYza.js index 506904e6..0d792375 100644 --- a/apps/admin/.output/public/_nuxt/BDDumZok.js +++ b/apps/admin/.output/public/_nuxt/DC2vBYza.js @@ -1 +1 @@ -import{g as ce,k as pe,C as ve,c as o,a as s,q as d,s as H,F as p,r as v,l as c,d as w,H as me,t as r,v as x,x as N,p as be,y as b,z as fe,A as z,o as i,L as Q,n as O,_ as xe}from"./DSy_gLdM.js";import{u as ye}from"./NtXZuCUg.js";import{u as ge}from"./EeX3zgoF.js";const ke={class:"flex items-center justify-between mb-5 flex-wrap gap-3"},_e={class:"flex items-center gap-3"},he=["value"],we={key:0,class:"pay-warn"},Ce={class:"flex items-start gap-2"},Ve={class:"flex-1"},Ae={class:"text-xs mt-1"},Ue={key:1,class:"scope-tip"},Se={class:"flex items-center gap-2 mb-3"},Pe={class:"text-xs text-slate-400"},Ne={class:"ch-grid"},Oe=["onClick"],je={class:"flex items-start justify-between gap-2"},Le={class:"min-w-0"},Me={class:"font-semibold text-sm text-slate-800"},Ee={class:"text-[11px] text-slate-400 mt-0.5"},Ie={class:"ver-row"},Be={class:"ver-box"},Te={class:"ver-val"},$e={class:"ver-box"},He={key:0,class:"ver-box"},ze={class:"ver-val review"},Fe={class:"flex flex-wrap items-center gap-1.5 mt-2"},Ge={key:0,class:"flag flag-warn"},Re={key:1,class:"flag"},qe={key:2,class:"flag"},De={key:3,class:"flag flag-off"},We={key:0,class:"flex flex-wrap items-center gap-1.5 mt-2"},Ye=["title"],Je={key:1,class:"text-[11px] text-slate-400 mt-2 truncate"},Ke=["onClick"],Qe={class:"text-sm text-slate-400"},Xe={class:"ch-overlay"},Ze={class:"ch-box"},es={class:"flex items-center justify-between mb-4"},ss={class:"flex items-center gap-3"},ts={class:"text-base font-semibold text-slate-800"},ls={class:"scope-chip"},ns={class:"ed-section"},as={class:"grid grid-cols-2 gap-3"},os=["disabled"],is=["label"],rs=["value"],ds=["value"],us={class:"mt-3"},cs={class:"ed-section"},ps={class:"grid grid-cols-3 gap-3"},vs={class:"flex items-center gap-2 text-sm cursor-pointer mt-3"},ms={key:0,class:"ed-warn"},bs={class:"mt-3"},fs={class:"mt-3"},xs={class:"ed-section"},ys={class:"flex flex-col gap-2"},gs={class:"flex items-center gap-2 text-sm cursor-pointer"},ks={class:"flex items-center gap-2 text-sm cursor-pointer"},_s={class:"ed-section"},hs={class:"pay-grid"},ws=["checked","onChange"],Cs={key:0,class:"pay-miss"},Vs={class:"ed-tip"},As={key:1},Us={class:"ed-footer"},Ss={class:"flex items-center gap-2 text-sm cursor-pointer"},Ps={class:"flex gap-2"},Ns=["disabled"],Os=ce({__name:"channels",setup(js){const X={1:"华为",2:"小米",3:"OPPO",4:"VIVO",5:"荣耀",100:"官方包",101:"App Store",102:"Google Play"};function y(l){return X[l]??"渠道"+l}const F=[{label:"中国厂商",icon:"📱",color:"#0369a1",bg:"#dbeafe",channels:[1,2,3,4,5]},{label:"全球商店",icon:"🌍",color:"#c2410c",bg:"#fff7ed",channels:[101,102]},{label:"官方渠道",icon:"🏠",color:"#059669",bg:"#dcfce7",channels:[100]}],j=[{v:0,label:"草稿(不下发)",color:"#64748b",bg:"#f1f5f9"},{v:1,label:"已上架",color:"#059669",bg:"#dcfce7"},{v:2,label:"审核中",color:"#b45309",bg:"#fef9c3"},{v:3,label:"已下架",color:"#be123c",bg:"#ffe4e6"}];function Z(l){return j.find(e=>e.v===l)?.label??"未知"}function ee(l){const e=j.find(t=>t.v===l);return e?{background:e.bg,color:e.color}:{}}const L=[{key:"wxpay",label:"微信支付",module:"wechatpay"},{key:"alipay",label:"支付宝",module:"alipay"},{key:"paypal",label:"PayPal",module:"paypal"},{key:"apple",label:"Apple 内购",module:"appleiap"},{key:"google",label:"Google 内购",module:"googleiap"}];function G(l){return L.find(e=>e.key===l)?.label??l}const{webApi:C,consoleApi:se}=ye(),{success:R,error:f}=ge(),te=pe(),u=b(""),M=b([]),g=b([]),E=b([]),V=b(!1),A=b(!1),k=b(!1),I=b(!1);function B(){return{row_id:0,app_name:"",channel:0,version:"",min_version:"",force_update:!1,changelog:"",address:"",review_version:"",status:1,description:"",tourists:!1,allowskipdevicebinding:!1,paychannels:"",enable:!0}}const n=fe(B()),le=z(()=>F.map(l=>({...l,items:g.value.filter(e=>l.channels.includes(e.channel)).sort((e,t)=>e.channel-t.channel),missing:l.channels.filter(e=>!g.value.some(t=>t.channel===e))})));function _(l){return(l.paychannels||"").split(",").map(e=>e.trim()).filter(Boolean)}function h(l){if(!V.value)return!1;const e=L.find(t=>t.key===l)?.module;return!!e&&!E.value.includes(e)}const q=z(()=>{if(!V.value)return[];const l={};for(const e of g.value)if(e.enable)for(const t of _(e))h(t)&&(l[t]=l[t]||[]).push(y(e.channel));return Object.keys(l).map(e=>({key:e,label:G(e),channels:l[e]}))}),U=z(()=>n.force_update&&!n.min_version.trim()?"开启强制更新时必须填「最低支持版本」,否则挡不住任何人":n.min_version.trim()&&n.version.trim()&&ne(n.min_version,n.version)>0?"「最低支持版本」高于「当前线上版本」,会把所有线上用户判定为需强更却无更高版本可更":"");function ne(l,e){const t=l.trim().split("."),a=e.trim().split("."),m=Math.max(t.length,a.length);for(let P=0;Pe.name).filter(Boolean)}catch{M.value=[]}}async function T(){try{const l=await C("getchannelapps",{app_name:u.value});g.value=l?.items??[]}catch(l){f(l?.message??"加载失败"),g.value=[]}}async function oe(){try{const l=await C("getchannelpaystatus",{app_name:u.value});E.value=l?.configured??[],V.value=!!l?.checked}catch{E.value=[],V.value=!1}}async function D(){await Promise.all([T(),oe()])}function W(l){Object.assign(n,B()),typeof l=="number"&&(n.channel=l),k.value=!1,A.value=!0}function ie(l){Object.assign(n,B(),l),k.value=!0,A.value=!0}function S(){A.value=!1}function $(l){return _(n).includes(l)}function re(l){const e=_(n),t=e.indexOf(l);t>=0?e.splice(t,1):e.push(l),n.paychannels=e.join(",")}async function de(){if(!n.channel){f("请选择分发渠道");return}if(U.value){f(U.value);return}I.value=!0;try{await C("savechannelapp",{...n,app_name:u.value}),R("保存成功"),S(),await T()}catch(l){f(l?.message??"保存失败")}finally{I.value=!1}}function ue(){window.confirm(`确定删除「${y(n.channel)}」这个渠道的配置吗?`)&&C("delchannelapp",{app_name:u.value,channel:n.channel}).then(()=>{R("已删除"),S(),T()}).catch(l=>f(l?.message??"删除失败"))}function Y(){if(!u.value){f("请先在上方选择一个应用");return}te.push(`/apps/${encodeURIComponent(u.value)}?tab=modules`)}return ve(async()=>{await ae(),await D()}),(l,e)=>(i(),o("div",null,[s("div",ke,[e[15]||(e[15]=s("div",null,[s("h2",{class:"text-lg font-semibold text-slate-800"},"渠道分发"),s("p",{class:"text-xs text-slate-400 mt-1"}," 管理各应用在各分发渠道上的版本、强制更新与能力开关。支付渠道在这里控制「开放哪几种支付入口」,商户凭据在应用的业务功能配置里填。 ")],-1)),s("div",_e,[e[14]||(e[14]=s("span",{class:"text-sm text-slate-500"},"应用",-1)),d(s("select",{"onUpdate:modelValue":e[0]||(e[0]=t=>u.value=t),class:"select select-bordered select-sm",onChange:D},[e[13]||(e[13]=s("option",{value:""},"全局默认(所有应用兜底)",-1)),(i(!0),o(p,null,v(M.value,t=>(i(),o("option",{key:t,value:t},r(t),9,he))),128))],544),[[H,u.value]]),s("button",{class:"btn btn-primary btn-sm text-white",onClick:W},"+ 添加渠道")])]),q.value.length?(i(),o("div",we,[s("div",Ce,[e[17]||(e[17]=s("span",null,"⚠",-1)),s("div",Ve,[e[16]||(e[16]=s("div",{class:"text-sm font-semibold"},"以下支付方式已在渠道里开放,但商户凭据还没配:",-1)),s("div",Ae,[(i(!0),o(p,null,v(q.value,t=>(i(),o("span",{key:t.key,class:"warn-pill"},r(t.label)+"("+r(t.channels.join("、"))+")",1))),128))])]),s("button",{class:"btn btn-xs btn-ghost",onClick:Y},"去配置 →")])])):c("",!0),u.value?c("",!0):(i(),o("div",Ue,[...e[18]||(e[18]=[w(" 当前是",-1),s("b",null,"全局默认",-1),w("作用域:这里配的渠道对所有应用生效,应用自己配了同渠道则以应用的为准。 ",-1)])])),(i(!0),o(p,null,v(le.value,t=>(i(),o("div",{key:t.label,class:"mb-6"},[s("div",Se,[s("span",{class:"group-tag",style:Q({background:t.bg,color:t.color})},r(t.icon)+" "+r(t.label),5),s("span",Pe,r(t.items.length)+" / "+r(t.channels.length)+" 已配置",1)]),s("div",Ne,[(i(!0),o(p,null,v(t.items,a=>(i(),o("div",{key:a.channel,class:O(["ch-card",{off:!a.enable}]),onClick:m=>ie(a)},[s("div",je,[s("div",Le,[s("div",Me,r(y(a.channel)),1),s("div",Ee,"渠道号 "+r(a.channel),1)]),s("span",{class:"status-badge",style:Q(ee(a.status))},r(Z(a.status)),5)]),s("div",Ie,[s("div",Be,[e[19]||(e[19]=s("span",{class:"ver-label"},"线上版本",-1)),s("span",Te,r(a.version||"—"),1)]),s("div",$e,[e[20]||(e[20]=s("span",{class:"ver-label"},"最低支持",-1)),s("span",{class:O(["ver-val",{warn:a.force_update}])},r(a.min_version||"—"),3)]),a.review_version?(i(),o("div",He,[e[21]||(e[21]=s("span",{class:"ver-label"},"审核中",-1)),s("span",ze,r(a.review_version),1)])):c("",!0)]),s("div",Fe,[a.force_update?(i(),o("span",Ge,"强制更新")):c("",!0),a.tourists?(i(),o("span",Re,"游客登录")):c("",!0),a.allowskipdevicebinding?(i(),o("span",qe,"可跳过绑定")):c("",!0),a.enable?c("",!0):(i(),o("span",De,"已停用"))]),_(a).length?(i(),o("div",We,[(i(!0),o(p,null,v(_(a),m=>(i(),o("span",{key:m,class:O(["pay-pill",{missing:h(m)}]),title:h(m)?"该支付方式的商户凭据尚未配置":""},r(G(m))+r(h(m)?" ⚠":""),11,Ye))),128))])):c("",!0),a.address?(i(),o("div",Je,r(a.address),1)):c("",!0)],10,Oe))),128)),(i(!0),o(p,null,v(t.missing,a=>(i(),o("div",{key:"m"+a,class:"ch-card ch-empty",onClick:m=>W(a)},[s("div",Qe,r(y(a)),1),e[22]||(e[22]=s("div",{class:"text-[11px] text-slate-300 mt-1"},"未配置 · 点击添加",-1))],8,Ke))),128))])]))),128)),d(s("div",Xe,[s("div",Ze,[s("div",es,[s("div",ss,[s("h3",ts,r(k.value?"编辑渠道":"添加渠道"),1),s("span",ls,r(u.value||"全局默认"),1)]),s("button",{class:"btn btn-ghost btn-xs",onClick:S},"✕ 关闭")]),s("section",ns,[e[27]||(e[27]=s("div",{class:"ed-section-title"},"渠道",-1)),s("div",as,[s("div",null,[e[24]||(e[24]=s("span",{class:"ed-label"},[w("分发渠道 "),s("i",{class:"req"},"*")],-1)),d(s("select",{"onUpdate:modelValue":e[1]||(e[1]=t=>n.channel=t),disabled:k.value,class:"select select-bordered select-sm w-full"},[e[23]||(e[23]=s("option",{value:0,disabled:""},"请选择渠道",-1)),(i(),o(p,null,v(F,t=>s("optgroup",{key:t.label,label:t.label},[(i(!0),o(p,null,v(t.channels,a=>(i(),o("option",{key:a,value:a},r(y(a))+"("+r(a)+")",9,rs))),128))],8,is)),64))],8,os),[[H,n.channel,void 0,{number:!0}]])]),s("div",null,[e[25]||(e[25]=s("span",{class:"ed-label"},"上架状态",-1)),d(s("select",{"onUpdate:modelValue":e[2]||(e[2]=t=>n.status=t),class:"select select-bordered select-sm w-full"},[(i(),o(p,null,v(j,t=>s("option",{key:t.v,value:t.v},r(t.label),9,ds)),64))],512),[[H,n.status,void 0,{number:!0}]])])]),s("div",us,[e[26]||(e[26]=s("span",{class:"ed-label"},"描述",-1)),d(s("input",{"onUpdate:modelValue":e[3]||(e[3]=t=>n.description=t),class:"input input-bordered input-sm w-full",placeholder:"这个渠道包的说明"},null,512),[[x,n.description]])])]),s("section",cs,[e[35]||(e[35]=s("div",{class:"ed-section-title"},"版本",-1)),s("div",ps,[s("div",null,[e[28]||(e[28]=s("span",{class:"ed-label"},"当前线上版本",-1)),d(s("input",{"onUpdate:modelValue":e[4]||(e[4]=t=>n.version=t),class:"input input-bordered input-sm w-full",placeholder:"如 1.4.2"},null,512),[[x,n.version]])]),s("div",null,[e[29]||(e[29]=s("span",{class:"ed-label"},"最低支持版本",-1)),d(s("input",{"onUpdate:modelValue":e[5]||(e[5]=t=>n.min_version=t),class:"input input-bordered input-sm w-full",placeholder:"低于它的客户端需更新"},null,512),[[x,n.min_version]])]),s("div",null,[e[30]||(e[30]=s("span",{class:"ed-label"},"审核中版本",-1)),d(s("input",{"onUpdate:modelValue":e[6]||(e[6]=t=>n.review_version=t),class:"input input-bordered input-sm w-full",placeholder:"过审后清空"},null,512),[[x,n.review_version]])])]),s("label",vs,[d(s("input",{"onUpdate:modelValue":e[7]||(e[7]=t=>n.force_update=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.force_update]]),e[31]||(e[31]=s("span",null,"强制更新",-1)),e[32]||(e[32]=s("span",{class:"text-xs text-slate-400"},"低于「最低支持版本」的客户端必须更新才能继续使用",-1))]),U.value?(i(),o("p",ms,"⚠ "+r(U.value),1)):c("",!0),s("div",bs,[e[33]||(e[33]=s("span",{class:"ed-label"},"下载地址",-1)),d(s("input",{"onUpdate:modelValue":e[8]||(e[8]=t=>n.address=t),class:"input input-bordered input-sm w-full",placeholder:"应用商店链接或 apk 直链"},null,512),[[x,n.address]])]),s("div",fs,[e[34]||(e[34]=s("span",{class:"ed-label"},"更新日志",-1)),d(s("textarea",{"onUpdate:modelValue":e[9]||(e[9]=t=>n.changelog=t),class:"textarea textarea-bordered w-full text-xs",rows:"3",placeholder:"本次更新内容,会下发给客户端展示"},null,512),[[x,n.changelog]])])]),s("section",xs,[e[38]||(e[38]=s("div",{class:"ed-section-title"},"能力开关",-1)),s("div",ys,[s("label",gs,[d(s("input",{"onUpdate:modelValue":e[10]||(e[10]=t=>n.tourists=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.tourists]]),e[36]||(e[36]=s("span",null,"允许游客登录",-1))]),s("label",ks,[d(s("input",{"onUpdate:modelValue":e[11]||(e[11]=t=>n.allowskipdevicebinding=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.allowskipdevicebinding]]),e[37]||(e[37]=s("span",null,"允许跳过设备绑定",-1))])])]),s("section",_s,[e[41]||(e[41]=s("div",{class:"ed-section-title"},"支付渠道",-1)),s("div",hs,[(i(),o(p,null,v(L,t=>s("label",{key:t.key,class:O(["pay-item",{checked:$(t.key)}])},[s("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:$(t.key),onChange:a=>re(t.key)},null,40,ws),s("span",null,r(t.label),1),$(t.key)&&h(t.key)?(i(),o("span",Cs,"未配凭据")):c("",!0)],2)),64))]),s("p",Vs,[e[39]||(e[39]=w(" 这里只决定「这个渠道开放哪几种支付入口」;商户号、密钥等凭据在 ",-1)),u.value?(i(),o("a",{key:0,class:"link",onClick:be(Y,["prevent"])},"应用「"+r(u.value)+"」→ 业务功能配置 → 支付",1)):(i(),o("span",As,"各应用的「业务功能配置 → 支付」")),e[40]||(e[40]=w(" 里填。 ",-1))])]),s("div",Us,[s("label",Ss,[d(s("input",{"onUpdate:modelValue":e[12]||(e[12]=t=>n.enable=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.enable]]),e[42]||(e[42]=s("span",null,"启用",-1)),e[43]||(e[43]=s("span",{class:"text-xs text-slate-400"},"停用后该渠道配置不下发客户端",-1))]),s("div",Ps,[k.value?(i(),o("button",{key:0,class:"btn btn-ghost btn-sm text-error mr-auto",onClick:ue},"删除")):c("",!0),s("button",{class:"btn btn-ghost btn-sm",onClick:S},"取消"),s("button",{class:"btn btn-primary btn-sm text-white",disabled:I.value,onClick:de},"保存",8,Ns)])])])],512),[[me,A.value]])]))}}),Is=xe(Os,[["__scopeId","data-v-66a7d845"]]);export{Is as default}; +import{g as ce,k as pe,C as ve,c as o,a as s,q as d,s as H,F as p,r as v,l as c,d as w,H as me,t as r,v as x,x as N,p as be,y as b,z as fe,A as z,o as i,L as Q,n as O,_ as xe}from"./6O01ZZML.js";import{u as ye}from"./BgasD__e.js";import{u as ge}from"./xsgK-Nup.js";const ke={class:"flex items-center justify-between mb-5 flex-wrap gap-3"},_e={class:"flex items-center gap-3"},he=["value"],we={key:0,class:"pay-warn"},Ce={class:"flex items-start gap-2"},Ve={class:"flex-1"},Ae={class:"text-xs mt-1"},Ue={key:1,class:"scope-tip"},Se={class:"flex items-center gap-2 mb-3"},Pe={class:"text-xs text-slate-400"},Ne={class:"ch-grid"},Oe=["onClick"],je={class:"flex items-start justify-between gap-2"},Le={class:"min-w-0"},Me={class:"font-semibold text-sm text-slate-800"},Ee={class:"text-[11px] text-slate-400 mt-0.5"},Ie={class:"ver-row"},Be={class:"ver-box"},Te={class:"ver-val"},$e={class:"ver-box"},He={key:0,class:"ver-box"},ze={class:"ver-val review"},Fe={class:"flex flex-wrap items-center gap-1.5 mt-2"},Ge={key:0,class:"flag flag-warn"},Re={key:1,class:"flag"},qe={key:2,class:"flag"},De={key:3,class:"flag flag-off"},We={key:0,class:"flex flex-wrap items-center gap-1.5 mt-2"},Ye=["title"],Je={key:1,class:"text-[11px] text-slate-400 mt-2 truncate"},Ke=["onClick"],Qe={class:"text-sm text-slate-400"},Xe={class:"ch-overlay"},Ze={class:"ch-box"},es={class:"flex items-center justify-between mb-4"},ss={class:"flex items-center gap-3"},ts={class:"text-base font-semibold text-slate-800"},ls={class:"scope-chip"},ns={class:"ed-section"},as={class:"grid grid-cols-2 gap-3"},os=["disabled"],is=["label"],rs=["value"],ds=["value"],us={class:"mt-3"},cs={class:"ed-section"},ps={class:"grid grid-cols-3 gap-3"},vs={class:"flex items-center gap-2 text-sm cursor-pointer mt-3"},ms={key:0,class:"ed-warn"},bs={class:"mt-3"},fs={class:"mt-3"},xs={class:"ed-section"},ys={class:"flex flex-col gap-2"},gs={class:"flex items-center gap-2 text-sm cursor-pointer"},ks={class:"flex items-center gap-2 text-sm cursor-pointer"},_s={class:"ed-section"},hs={class:"pay-grid"},ws=["checked","onChange"],Cs={key:0,class:"pay-miss"},Vs={class:"ed-tip"},As={key:1},Us={class:"ed-footer"},Ss={class:"flex items-center gap-2 text-sm cursor-pointer"},Ps={class:"flex gap-2"},Ns=["disabled"],Os=ce({__name:"channels",setup(js){const X={1:"华为",2:"小米",3:"OPPO",4:"VIVO",5:"荣耀",100:"官方包",101:"App Store",102:"Google Play"};function y(l){return X[l]??"渠道"+l}const F=[{label:"中国厂商",icon:"📱",color:"#0369a1",bg:"#dbeafe",channels:[1,2,3,4,5]},{label:"全球商店",icon:"🌍",color:"#c2410c",bg:"#fff7ed",channels:[101,102]},{label:"官方渠道",icon:"🏠",color:"#059669",bg:"#dcfce7",channels:[100]}],j=[{v:0,label:"草稿(不下发)",color:"#64748b",bg:"#f1f5f9"},{v:1,label:"已上架",color:"#059669",bg:"#dcfce7"},{v:2,label:"审核中",color:"#b45309",bg:"#fef9c3"},{v:3,label:"已下架",color:"#be123c",bg:"#ffe4e6"}];function Z(l){return j.find(e=>e.v===l)?.label??"未知"}function ee(l){const e=j.find(t=>t.v===l);return e?{background:e.bg,color:e.color}:{}}const L=[{key:"wxpay",label:"微信支付",module:"wechatpay"},{key:"alipay",label:"支付宝",module:"alipay"},{key:"paypal",label:"PayPal",module:"paypal"},{key:"apple",label:"Apple 内购",module:"appleiap"},{key:"google",label:"Google 内购",module:"googleiap"}];function G(l){return L.find(e=>e.key===l)?.label??l}const{webApi:C,consoleApi:se}=ye(),{success:R,error:f}=ge(),te=pe(),u=b(""),M=b([]),g=b([]),E=b([]),V=b(!1),A=b(!1),k=b(!1),I=b(!1);function B(){return{row_id:0,app_name:"",channel:0,version:"",min_version:"",force_update:!1,changelog:"",address:"",review_version:"",status:1,description:"",tourists:!1,allowskipdevicebinding:!1,paychannels:"",enable:!0}}const n=fe(B()),le=z(()=>F.map(l=>({...l,items:g.value.filter(e=>l.channels.includes(e.channel)).sort((e,t)=>e.channel-t.channel),missing:l.channels.filter(e=>!g.value.some(t=>t.channel===e))})));function _(l){return(l.paychannels||"").split(",").map(e=>e.trim()).filter(Boolean)}function h(l){if(!V.value)return!1;const e=L.find(t=>t.key===l)?.module;return!!e&&!E.value.includes(e)}const q=z(()=>{if(!V.value)return[];const l={};for(const e of g.value)if(e.enable)for(const t of _(e))h(t)&&(l[t]=l[t]||[]).push(y(e.channel));return Object.keys(l).map(e=>({key:e,label:G(e),channels:l[e]}))}),U=z(()=>n.force_update&&!n.min_version.trim()?"开启强制更新时必须填「最低支持版本」,否则挡不住任何人":n.min_version.trim()&&n.version.trim()&&ne(n.min_version,n.version)>0?"「最低支持版本」高于「当前线上版本」,会把所有线上用户判定为需强更却无更高版本可更":"");function ne(l,e){const t=l.trim().split("."),a=e.trim().split("."),m=Math.max(t.length,a.length);for(let P=0;Pe.name).filter(Boolean)}catch{M.value=[]}}async function T(){try{const l=await C("getchannelapps",{app_name:u.value});g.value=l?.items??[]}catch(l){f(l?.message??"加载失败"),g.value=[]}}async function oe(){try{const l=await C("getchannelpaystatus",{app_name:u.value});E.value=l?.configured??[],V.value=!!l?.checked}catch{E.value=[],V.value=!1}}async function D(){await Promise.all([T(),oe()])}function W(l){Object.assign(n,B()),typeof l=="number"&&(n.channel=l),k.value=!1,A.value=!0}function ie(l){Object.assign(n,B(),l),k.value=!0,A.value=!0}function S(){A.value=!1}function $(l){return _(n).includes(l)}function re(l){const e=_(n),t=e.indexOf(l);t>=0?e.splice(t,1):e.push(l),n.paychannels=e.join(",")}async function de(){if(!n.channel){f("请选择分发渠道");return}if(U.value){f(U.value);return}I.value=!0;try{await C("savechannelapp",{...n,app_name:u.value}),R("保存成功"),S(),await T()}catch(l){f(l?.message??"保存失败")}finally{I.value=!1}}function ue(){window.confirm(`确定删除「${y(n.channel)}」这个渠道的配置吗?`)&&C("delchannelapp",{app_name:u.value,channel:n.channel}).then(()=>{R("已删除"),S(),T()}).catch(l=>f(l?.message??"删除失败"))}function Y(){if(!u.value){f("请先在上方选择一个应用");return}te.push(`/apps/${encodeURIComponent(u.value)}?tab=modules`)}return ve(async()=>{await ae(),await D()}),(l,e)=>(i(),o("div",null,[s("div",ke,[e[15]||(e[15]=s("div",null,[s("h2",{class:"text-lg font-semibold text-slate-800"},"渠道分发"),s("p",{class:"text-xs text-slate-400 mt-1"}," 管理各应用在各分发渠道上的版本、强制更新与能力开关。支付渠道在这里控制「开放哪几种支付入口」,商户凭据在应用的业务功能配置里填。 ")],-1)),s("div",_e,[e[14]||(e[14]=s("span",{class:"text-sm text-slate-500"},"应用",-1)),d(s("select",{"onUpdate:modelValue":e[0]||(e[0]=t=>u.value=t),class:"select select-bordered select-sm",onChange:D},[e[13]||(e[13]=s("option",{value:""},"全局默认(所有应用兜底)",-1)),(i(!0),o(p,null,v(M.value,t=>(i(),o("option",{key:t,value:t},r(t),9,he))),128))],544),[[H,u.value]]),s("button",{class:"btn btn-primary btn-sm text-white",onClick:W},"+ 添加渠道")])]),q.value.length?(i(),o("div",we,[s("div",Ce,[e[17]||(e[17]=s("span",null,"⚠",-1)),s("div",Ve,[e[16]||(e[16]=s("div",{class:"text-sm font-semibold"},"以下支付方式已在渠道里开放,但商户凭据还没配:",-1)),s("div",Ae,[(i(!0),o(p,null,v(q.value,t=>(i(),o("span",{key:t.key,class:"warn-pill"},r(t.label)+"("+r(t.channels.join("、"))+")",1))),128))])]),s("button",{class:"btn btn-xs btn-ghost",onClick:Y},"去配置 →")])])):c("",!0),u.value?c("",!0):(i(),o("div",Ue,[...e[18]||(e[18]=[w(" 当前是",-1),s("b",null,"全局默认",-1),w("作用域:这里配的渠道对所有应用生效,应用自己配了同渠道则以应用的为准。 ",-1)])])),(i(!0),o(p,null,v(le.value,t=>(i(),o("div",{key:t.label,class:"mb-6"},[s("div",Se,[s("span",{class:"group-tag",style:Q({background:t.bg,color:t.color})},r(t.icon)+" "+r(t.label),5),s("span",Pe,r(t.items.length)+" / "+r(t.channels.length)+" 已配置",1)]),s("div",Ne,[(i(!0),o(p,null,v(t.items,a=>(i(),o("div",{key:a.channel,class:O(["ch-card",{off:!a.enable}]),onClick:m=>ie(a)},[s("div",je,[s("div",Le,[s("div",Me,r(y(a.channel)),1),s("div",Ee,"渠道号 "+r(a.channel),1)]),s("span",{class:"status-badge",style:Q(ee(a.status))},r(Z(a.status)),5)]),s("div",Ie,[s("div",Be,[e[19]||(e[19]=s("span",{class:"ver-label"},"线上版本",-1)),s("span",Te,r(a.version||"—"),1)]),s("div",$e,[e[20]||(e[20]=s("span",{class:"ver-label"},"最低支持",-1)),s("span",{class:O(["ver-val",{warn:a.force_update}])},r(a.min_version||"—"),3)]),a.review_version?(i(),o("div",He,[e[21]||(e[21]=s("span",{class:"ver-label"},"审核中",-1)),s("span",ze,r(a.review_version),1)])):c("",!0)]),s("div",Fe,[a.force_update?(i(),o("span",Ge,"强制更新")):c("",!0),a.tourists?(i(),o("span",Re,"游客登录")):c("",!0),a.allowskipdevicebinding?(i(),o("span",qe,"可跳过绑定")):c("",!0),a.enable?c("",!0):(i(),o("span",De,"已停用"))]),_(a).length?(i(),o("div",We,[(i(!0),o(p,null,v(_(a),m=>(i(),o("span",{key:m,class:O(["pay-pill",{missing:h(m)}]),title:h(m)?"该支付方式的商户凭据尚未配置":""},r(G(m))+r(h(m)?" ⚠":""),11,Ye))),128))])):c("",!0),a.address?(i(),o("div",Je,r(a.address),1)):c("",!0)],10,Oe))),128)),(i(!0),o(p,null,v(t.missing,a=>(i(),o("div",{key:"m"+a,class:"ch-card ch-empty",onClick:m=>W(a)},[s("div",Qe,r(y(a)),1),e[22]||(e[22]=s("div",{class:"text-[11px] text-slate-300 mt-1"},"未配置 · 点击添加",-1))],8,Ke))),128))])]))),128)),d(s("div",Xe,[s("div",Ze,[s("div",es,[s("div",ss,[s("h3",ts,r(k.value?"编辑渠道":"添加渠道"),1),s("span",ls,r(u.value||"全局默认"),1)]),s("button",{class:"btn btn-ghost btn-xs",onClick:S},"✕ 关闭")]),s("section",ns,[e[27]||(e[27]=s("div",{class:"ed-section-title"},"渠道",-1)),s("div",as,[s("div",null,[e[24]||(e[24]=s("span",{class:"ed-label"},[w("分发渠道 "),s("i",{class:"req"},"*")],-1)),d(s("select",{"onUpdate:modelValue":e[1]||(e[1]=t=>n.channel=t),disabled:k.value,class:"select select-bordered select-sm w-full"},[e[23]||(e[23]=s("option",{value:0,disabled:""},"请选择渠道",-1)),(i(),o(p,null,v(F,t=>s("optgroup",{key:t.label,label:t.label},[(i(!0),o(p,null,v(t.channels,a=>(i(),o("option",{key:a,value:a},r(y(a))+"("+r(a)+")",9,rs))),128))],8,is)),64))],8,os),[[H,n.channel,void 0,{number:!0}]])]),s("div",null,[e[25]||(e[25]=s("span",{class:"ed-label"},"上架状态",-1)),d(s("select",{"onUpdate:modelValue":e[2]||(e[2]=t=>n.status=t),class:"select select-bordered select-sm w-full"},[(i(),o(p,null,v(j,t=>s("option",{key:t.v,value:t.v},r(t.label),9,ds)),64))],512),[[H,n.status,void 0,{number:!0}]])])]),s("div",us,[e[26]||(e[26]=s("span",{class:"ed-label"},"描述",-1)),d(s("input",{"onUpdate:modelValue":e[3]||(e[3]=t=>n.description=t),class:"input input-bordered input-sm w-full",placeholder:"这个渠道包的说明"},null,512),[[x,n.description]])])]),s("section",cs,[e[35]||(e[35]=s("div",{class:"ed-section-title"},"版本",-1)),s("div",ps,[s("div",null,[e[28]||(e[28]=s("span",{class:"ed-label"},"当前线上版本",-1)),d(s("input",{"onUpdate:modelValue":e[4]||(e[4]=t=>n.version=t),class:"input input-bordered input-sm w-full",placeholder:"如 1.4.2"},null,512),[[x,n.version]])]),s("div",null,[e[29]||(e[29]=s("span",{class:"ed-label"},"最低支持版本",-1)),d(s("input",{"onUpdate:modelValue":e[5]||(e[5]=t=>n.min_version=t),class:"input input-bordered input-sm w-full",placeholder:"低于它的客户端需更新"},null,512),[[x,n.min_version]])]),s("div",null,[e[30]||(e[30]=s("span",{class:"ed-label"},"审核中版本",-1)),d(s("input",{"onUpdate:modelValue":e[6]||(e[6]=t=>n.review_version=t),class:"input input-bordered input-sm w-full",placeholder:"过审后清空"},null,512),[[x,n.review_version]])])]),s("label",vs,[d(s("input",{"onUpdate:modelValue":e[7]||(e[7]=t=>n.force_update=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.force_update]]),e[31]||(e[31]=s("span",null,"强制更新",-1)),e[32]||(e[32]=s("span",{class:"text-xs text-slate-400"},"低于「最低支持版本」的客户端必须更新才能继续使用",-1))]),U.value?(i(),o("p",ms,"⚠ "+r(U.value),1)):c("",!0),s("div",bs,[e[33]||(e[33]=s("span",{class:"ed-label"},"下载地址",-1)),d(s("input",{"onUpdate:modelValue":e[8]||(e[8]=t=>n.address=t),class:"input input-bordered input-sm w-full",placeholder:"应用商店链接或 apk 直链"},null,512),[[x,n.address]])]),s("div",fs,[e[34]||(e[34]=s("span",{class:"ed-label"},"更新日志",-1)),d(s("textarea",{"onUpdate:modelValue":e[9]||(e[9]=t=>n.changelog=t),class:"textarea textarea-bordered w-full text-xs",rows:"3",placeholder:"本次更新内容,会下发给客户端展示"},null,512),[[x,n.changelog]])])]),s("section",xs,[e[38]||(e[38]=s("div",{class:"ed-section-title"},"能力开关",-1)),s("div",ys,[s("label",gs,[d(s("input",{"onUpdate:modelValue":e[10]||(e[10]=t=>n.tourists=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.tourists]]),e[36]||(e[36]=s("span",null,"允许游客登录",-1))]),s("label",ks,[d(s("input",{"onUpdate:modelValue":e[11]||(e[11]=t=>n.allowskipdevicebinding=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.allowskipdevicebinding]]),e[37]||(e[37]=s("span",null,"允许跳过设备绑定",-1))])])]),s("section",_s,[e[41]||(e[41]=s("div",{class:"ed-section-title"},"支付渠道",-1)),s("div",hs,[(i(),o(p,null,v(L,t=>s("label",{key:t.key,class:O(["pay-item",{checked:$(t.key)}])},[s("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:$(t.key),onChange:a=>re(t.key)},null,40,ws),s("span",null,r(t.label),1),$(t.key)&&h(t.key)?(i(),o("span",Cs,"未配凭据")):c("",!0)],2)),64))]),s("p",Vs,[e[39]||(e[39]=w(" 这里只决定「这个渠道开放哪几种支付入口」;商户号、密钥等凭据在 ",-1)),u.value?(i(),o("a",{key:0,class:"link",onClick:be(Y,["prevent"])},"应用「"+r(u.value)+"」→ 业务功能配置 → 支付",1)):(i(),o("span",As,"各应用的「业务功能配置 → 支付」")),e[40]||(e[40]=w(" 里填。 ",-1))])]),s("div",Us,[s("label",Ss,[d(s("input",{"onUpdate:modelValue":e[12]||(e[12]=t=>n.enable=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.enable]]),e[42]||(e[42]=s("span",null,"启用",-1)),e[43]||(e[43]=s("span",{class:"text-xs text-slate-400"},"停用后该渠道配置不下发客户端",-1))]),s("div",Ps,[k.value?(i(),o("button",{key:0,class:"btn btn-ghost btn-sm text-error mr-auto",onClick:ue},"删除")):c("",!0),s("button",{class:"btn btn-ghost btn-sm",onClick:S},"取消"),s("button",{class:"btn btn-primary btn-sm text-white",disabled:I.value,onClick:de},"保存",8,Ns)])])])],512),[[me,A.value]])]))}}),Is=xe(Os,[["__scopeId","data-v-66a7d845"]]);export{Is as default}; diff --git a/apps/admin/.output/public/_nuxt/BKXYxnNU.js b/apps/admin/.output/public/_nuxt/DDe4k6KN.js similarity index 95% rename from apps/admin/.output/public/_nuxt/BKXYxnNU.js rename to apps/admin/.output/public/_nuxt/DDe4k6KN.js index 4b96dc40..0420119c 100644 --- a/apps/admin/.output/public/_nuxt/BKXYxnNU.js +++ b/apps/admin/.output/public/_nuxt/DDe4k6KN.js @@ -1 +1 @@ -import{g as h,j as x,k as w,C as y,c as r,a as e,t as d,l as b,p as _,q as v,v as f,n as k,z as M,y as u,o as p,_ as z}from"./DSy_gLdM.js";const A={class:"login-bg flex items-center justify-center px-4"},B={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},q={style:{"margin-bottom":"24px"}},D=h({__name:"index",setup(L){const a=x(),c=w(),o=M({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function g(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",A,[e("div",B,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(g,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[f,o.account]])]),e("div",q,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[f,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=z(D,[["__scopeId","data-v-4f88fb34"]]);export{O as default}; +import{g as h,j as x,k as w,C as y,c as r,a as e,t as d,l as b,p as _,q as v,v as f,n as k,z as M,y as u,o as p,_ as z}from"./6O01ZZML.js";const A={class:"login-bg flex items-center justify-center px-4"},B={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},q={style:{"margin-bottom":"24px"}},D=h({__name:"index",setup(L){const a=x(),c=w(),o=M({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function g(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",A,[e("div",B,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(g,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[f,o.account]])]),e("div",q,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[f,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=z(D,[["__scopeId","data-v-4f88fb34"]]);export{O as default}; diff --git a/apps/admin/.output/public/_nuxt/DVest5s8.js b/apps/admin/.output/public/_nuxt/DPKLCcBs.js similarity index 93% rename from apps/admin/.output/public/_nuxt/DVest5s8.js rename to apps/admin/.output/public/_nuxt/DPKLCcBs.js index 8ec43c5d..45db6dfb 100644 --- a/apps/admin/.output/public/_nuxt/DVest5s8.js +++ b/apps/admin/.output/public/_nuxt/DPKLCcBs.js @@ -1,2 +1,2 @@ -import{u as r}from"./EeX3zgoF.js";import{g as x,c as i,a as t,t as o,l as f,o as l}from"./DSy_gLdM.js";const b={key:0,class:"modal modal-open"},u={class:"modal-box max-w-md"},p={class:"font-bold text-base mb-1"},y={class:"rounded-xl border border-slate-200 bg-slate-50 p-3 space-y-2"},g={class:"flex items-center justify-between gap-3"},v={class:"font-mono font-semibold text-sm"},_={class:"flex items-center justify-between gap-3"},w={class:"font-mono font-semibold text-sm"},h={key:0,class:"mt-3 text-xs text-emerald-600"},k={key:1,class:"mt-3 text-xs text-amber-600"},C={class:"modal-action"},T=x({__name:"AccountCredentialDialog",props:{info:{}},emits:["close"],setup(s){const n=s,{success:c,warn:m}=r();async function d(){if(!n.info)return;const a=`用户名:${n.info.username} +import{u as r}from"./xsgK-Nup.js";import{g as x,c as i,a as t,t as o,l as f,o as l}from"./6O01ZZML.js";const b={key:0,class:"modal modal-open"},u={class:"modal-box max-w-md"},p={class:"font-bold text-base mb-1"},y={class:"rounded-xl border border-slate-200 bg-slate-50 p-3 space-y-2"},g={class:"flex items-center justify-between gap-3"},v={class:"font-mono font-semibold text-sm"},_={class:"flex items-center justify-between gap-3"},w={class:"font-mono font-semibold text-sm"},h={key:0,class:"mt-3 text-xs text-emerald-600"},k={key:1,class:"mt-3 text-xs text-amber-600"},C={class:"modal-action"},T=x({__name:"AccountCredentialDialog",props:{info:{}},emits:["close"],setup(s){const n=s,{success:c,warn:m}=r();async function d(){if(!n.info)return;const a=`用户名:${n.info.username} 初始密码:${n.info.password}`;try{await navigator.clipboard.writeText(a),c("凭据已复制")}catch{m("复制失败,请手工记录")}}return(a,e)=>s.info?(l(),i("div",b,[t("div",u,[t("h3",p,o(s.info.title),1),e[3]||(e[3]=t("p",{class:"text-xs text-slate-400 mb-3"},"初始密码仅在此显示一次,关闭后无法再查看(如需重设请到「后台账号」改密)。",-1)),t("div",y,[t("div",g,[e[1]||(e[1]=t("span",{class:"text-xs text-slate-500"},"登录用户名",-1)),t("span",v,o(s.info.username),1)]),t("div",_,[e[2]||(e[2]=t("span",{class:"text-xs text-slate-500"},"初始密码",-1)),t("span",w,o(s.info.password),1)])]),s.info.mailTo?(l(),i("div",h," ✓ 凭据已邮件发送至 "+o(s.info.mailTo),1)):(l(),i("div",k," ⚠ 凭据未能邮件送达"+o(s.info.mailError?":"+s.info.mailError:"")+",请手工转达上面的用户名和密码。 ",1)),t("div",C,[t("button",{class:"btn btn-ghost btn-sm",onClick:d},"复制"),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=$=>a.$emit("close"))},"我已记录,关闭")])])])):f("",!0)}}),D=Object.assign(T,{__name:"AccountCredentialDialog"});export{D as _}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BFjsaYIf.js b/apps/admin/.output/public/_nuxt/DQ6zmqs4.js similarity index 98% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BFjsaYIf.js rename to apps/admin/.output/public/_nuxt/DQ6zmqs4.js index 11766a43..ff6323d3 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BFjsaYIf.js +++ b/apps/admin/.output/public/_nuxt/DQ6zmqs4.js @@ -1 +1 @@ -import{_ as Y}from"./DVest5s8.js";import{g as Z,j as G,C as J,c as a,q as d,H as L,a as t,m as y,l as r,F as g,r as T,s as B,O as W,v as x,d as M,t as c,p as tt,x as et,b as st,A as lt,y as v,z as P,o,n as nt}from"./DSy_gLdM.js";import{u as at}from"./NtXZuCUg.js";import{u as ot}from"./EeX3zgoF.js";const rt={class:"flex items-center justify-between mb-5"},it={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4 mb-4"},dt={class:"flex flex-wrap items-end gap-3"},ut={key:0,class:"form-control"},ct=["value"],mt={class:"form-control"},bt={class:"form-control"},pt={class:"bg-white rounded-xl shadow-sm border border-slate-100"},xt={class:"overflow-x-auto"},ft={class:"table table-zebra"},vt={key:0},kt={key:1},yt={class:"font-mono text-sm font-semibold"},gt={class:"font-medium"},wt={key:0,class:"badge badge-sm badge-primary badge-outline ml-1"},_t={class:"badge badge-ghost badge-sm"},Ct={class:"text-sm"},At={class:"text-sm text-slate-500"},Ut={key:0},$t={key:1,class:"text-xs text-slate-400"},Vt={key:2,class:"text-slate-300"},ht={key:0,class:"text-xs text-slate-400 mt-1"},St={class:"text-sm text-slate-500"},Nt={class:"flex flex-wrap gap-1"},Dt=["onClick"],Tt=["onClick"],Bt=["onClick"],Mt=["onClick"],Ft=["onClick"],Lt={class:"text-xs text-slate-400 mt-3"},Pt={class:"flex items-center gap-3 mb-5"},Rt={class:"text-lg font-semibold text-slate-800"},Et={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},qt={key:0,class:"form-control mb-4"},zt=["value"],It={class:"form-control mb-4"},Kt={key:1,class:"form-control mb-4"},jt=["disabled"],Ht=["value"],Ot={key:0,class:"label-text-alt text-slate-400 mt-1"},Qt={class:"form-control mb-4"},Xt=["disabled"],Yt={class:"form-control mb-4"},Zt={class:"form-control mb-4"},Gt={class:"form-control mb-6"},Jt={key:2,class:"form-control mb-6 border-t border-slate-100 pt-4"},Wt={class:"flex items-center gap-2 cursor-pointer"},te={key:0,class:"grid grid-cols-2 gap-3 mt-3"},ee={class:"col-span-2"},se={key:0,class:"col-span-2 text-xs text-amber-600"},le={class:"flex gap-3"},ne=["disabled"],ae={key:3,class:"text-xs text-amber-600 mt-3"},ce=Z({__name:"dealers",setup(oe){const{webApi:w}=at(),{success:A,error:_}=ot(),f=G(),C=lt(()=>f.isAdmin),V=v(null),U=v("list"),$=v([]),k=v([]),h=v(!1),S=v(!1),m=v(!1),u=P({brandid:0,status:-1,keyword:""}),l=P({id:"",name:"",brandid:0,sharepct:0,contact:"",contactmails:"",remark:"",createAccount:!1,accountUsername:"",accountPassword:"",accountRemark:""}),R={0:"待审核",1:"启用",2:"停用",3:"驳回"},E={0:"badge-warning",1:"badge-success",2:"badge-ghost",3:"badge-error"};function q(n){return R[n]??String(n)}function z(n){return E[n]??"badge-ghost"}function I(n){return((Number(n)||0)/100).toFixed(2)+"%"}function K(n){const e=k.value.find(i=>i.id===n);return e?e.brand:n?"品牌商#"+Number(n).toString(16).toUpperCase():"-"}function j(n){if(!n)return"-";const e=new Date(n*1e3),i=s=>("0"+s).slice(-2);return`${e.getFullYear()}-${i(e.getMonth()+1)}-${i(e.getDate())} ${i(e.getHours())}:${i(e.getMinutes())}`}async function H(){try{const n=await w("getbrands",{});k.value=n?.brands??[]}catch{k.value=[]}}async function b(){h.value=!0;try{k.value.length||await H();const n=await w("getchannels",{brandid:Number(u.brandid)||0,status:Number(u.status),keyword:u.keyword.trim()});$.value=n?.channels??[]}catch(n){_(n?.message??"获取渠道商列表失败"),$.value=[]}finally{h.value=!1}}function O(){u.brandid=0,u.status=-1,u.keyword="",b()}function N(){U.value="list",b()}function F(n){n?(m.value=!0,l.id=n.id,l.name=n.name||"",l.brandid=n.brandid||0,l.sharepct=(Number(n.sharerate)||0)/100,l.contact=n.contact||"",l.contactmails=n.contactmails||"",l.remark=n.remark||""):(m.value=!1,l.id="",l.name="",l.brandid=Number(u.brandid)||0,l.sharepct=0,l.contact="",l.contactmails="",l.remark=""),l.createAccount=!1,l.accountUsername="",l.accountPassword="",l.accountRemark="",U.value="form"}async function Q(){if(!l.brandid&&!f.isBrandAccount){_("请选择所属品牌商");return}S.value=!0;try{const n={name:l.name.trim(),brandid:Number(l.brandid)||0,sharerate:Math.round((Number(l.sharepct)||0)*100),contact:l.contact,contactmails:l.contactmails,remark:l.remark};m.value&&(n.id=l.id);const e={channel:n};!m.value&&l.createAccount&&(e.create_account=!0,e.account_username=l.accountUsername.trim(),e.account_password=l.accountPassword,e.account_remark=l.accountRemark.trim());const i=await w(m.value?"updatechannel":"addchannel",e);m.value?A("保存成功"):(A(C.value?"新增成功":"已提交,等待审核"),i?.account&&(V.value={title:`渠道账号「${i.account}」已创建`,username:i.account,password:i.account_password??"",mailTo:i.mail_to??"",mailError:i.mail_error??""})),N()}catch(n){_(n?.message??"保存失败")}finally{S.value=!1}}async function D(n,e){const i={1:n.status===0?"通过":"启用",2:"停用",3:"驳回"};let s="";if(e===3){const p=window.prompt(`驳回渠道商 "${n.name}" 的原因:`,"");if(p===null)return;s=p}else if(!window.confirm(`确定${i[e]}渠道商 "${n.name}" 吗?`))return;try{await w("auditchannel",{id:n.id,status:e,auditremark:s}),A(i[e]+"成功"),b()}catch(p){_(p?.message??"操作失败")}}function X(n){window.confirm(`确定删除渠道商 "${n.name}" 吗?已有生产批次的渠道商不能删除。`)&&w("delchannel",{id:n.id}).then(()=>{A("删除成功"),b()}).catch(e=>_(e?.message??"删除失败"))}return J(b),(n,e)=>{const i=Y;return o(),a("div",null,[d(t("div",null,[t("div",rt,[e[17]||(e[17]=t("h2",{class:"text-lg font-semibold text-slate-800"},"渠道商列表",-1)),y(f).isDealer?r("",!0):(o(),a("button",{key:0,class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=s=>F())},"+ 新增渠道商"))]),t("div",it,[t("div",dt,[!y(f).isBrandAccount&&!y(f).isDealer?(o(),a("div",ut,[e[19]||(e[19]=t("label",{class:"label py-1"},[t("span",{class:"label-text text-xs text-slate-500"},"品牌商")],-1)),d(t("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>u.brandid=s),class:"select select-bordered select-sm w-48",onChange:b},[e[18]||(e[18]=t("option",{value:0},"全部品牌商",-1)),(o(!0),a(g,null,T(k.value,s=>(o(),a("option",{key:s.id,value:s.id},c(s.brand),9,ct))),128))],544),[[B,u.brandid,void 0,{number:!0}]])])):r("",!0),t("div",mt,[e[21]||(e[21]=t("label",{class:"label py-1"},[t("span",{class:"label-text text-xs text-slate-500"},"状态")],-1)),d(t("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>u.status=s),class:"select select-bordered select-sm w-36",onChange:b},[...e[20]||(e[20]=[t("option",{value:-1},"全部状态",-1),t("option",{value:0},"待审核",-1),t("option",{value:1},"启用",-1),t("option",{value:2},"停用",-1),t("option",{value:3},"驳回",-1)])],544),[[B,u.status,void 0,{number:!0}]])]),t("div",bt,[e[22]||(e[22]=t("label",{class:"label py-1"},[t("span",{class:"label-text text-xs text-slate-500"},"搜索")],-1)),d(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>u.keyword=s),type:"text",class:"input input-bordered input-sm w-52",placeholder:"名称 / 渠道商ID",onKeydown:W(b,["enter"])},null,544),[[x,u.keyword]])]),t("button",{class:"btn btn-sm btn-primary text-white",onClick:b},"查询"),t("button",{class:"btn btn-sm btn-ghost",onClick:O},"重置")])]),t("div",pt,[t("div",xt,[t("table",ft,[e[25]||(e[25]=t("thead",null,[t("tr",null,[t("th",null,"渠道商ID"),t("th",null,"名称"),t("th",null,"所属品牌商"),t("th",null,"分成比例"),t("th",null,"联系方式"),t("th",null,"状态"),t("th",null,"创建时间"),t("th",null,"操作")])],-1)),t("tbody",null,[h.value?(o(),a("tr",vt,[...e[23]||(e[23]=[t("td",{colspan:"8",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):$.value.length?r("",!0):(o(),a("tr",kt,[...e[24]||(e[24]=[t("td",{colspan:"8",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(o(!0),a(g,null,T($.value,s=>(o(),a("tr",{key:s.id},[t("td",yt,c(s.id),1),t("td",gt,[M(c(s.name)+" ",1),s.official?(o(),a("span",wt,"官方")):r("",!0)]),t("td",null,[t("span",_t,c(K(s.brandid)),1)]),t("td",Ct,c(I(s.sharerate)),1),t("td",At,[s.contact?(o(),a("div",Ut,c(s.contact),1)):r("",!0),s.contactmails?(o(),a("div",$t,c(s.contactmails),1)):r("",!0),!s.contact&&!s.contactmails?(o(),a("span",Vt,"-")):r("",!0)]),t("td",null,[t("span",{class:nt(["badge badge-sm",z(s.status)])},c(q(s.status)),3),s.status===3&&s.auditremark?(o(),a("div",ht,c(s.auditremark),1)):r("",!0)]),t("td",St,c(j(s.createtime)),1),t("td",null,[t("div",Nt,[t("button",{class:"btn btn-ghost btn-xs",onClick:p=>F(s)},"编辑",8,Dt),C.value?(o(),a(g,{key:0},[s.status!==1?(o(),a("button",{key:0,class:"btn btn-ghost btn-xs text-emerald-600",onClick:p=>D(s,1)},c(s.status===0?"通过":"启用"),9,Tt)):r("",!0),s.status===1?(o(),a("button",{key:1,class:"btn btn-ghost btn-xs text-amber-600",onClick:p=>D(s,2)},"停用",8,Bt)):r("",!0),s.status===0?(o(),a("button",{key:2,class:"btn btn-ghost btn-xs text-red-500",onClick:p=>D(s,3)},"驳回",8,Mt)):r("",!0)],64)):r("",!0),!y(f).isDealer&&!s.official?(o(),a("button",{key:1,class:"btn btn-ghost btn-xs text-red-500",onClick:p=>X(s)},"删除",8,Ft)):r("",!0)])])]))),128))])])])]),t("p",Lt,[y(f).isBrandAccount?(o(),a(g,{key:0},[M(" 这里只显示贵品牌商名下的渠道商。新增后为「待审核」,需平台审核通过(状态=启用)才能用于生产授权码;分成比例由平台设置。 ")],64)):(o(),a(g,{key:1},[M(" 渠道商新增后需超管/管理员审核通过(状态=启用)才能用于生产授权码;已有生产批次的渠道商不能删除,只能停用。 标「官方」的是品牌自营渠道,随品牌商自动创建、直接启用、不可删除。 ")],64))])],512),[[L,U.value==="list"]]),d(t("div",null,[t("div",Pt,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[4]||(e[4]=s=>N())},"← 返回列表"),t("h2",Rt,c(m.value?"编辑渠道商":"新增渠道商"),1)]),t("div",Et,[t("form",{onSubmit:tt(Q,["prevent"])},[m.value?(o(),a("div",qt,[e[26]||(e[26]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"渠道商ID")],-1)),t("input",{value:l.id,type:"text",class:"input input-bordered w-full font-mono",disabled:""},null,8,zt),e[27]||(e[27]=t("span",{class:"label-text-alt text-slate-400 mt-1"},"短码由系统生成,创建后不可修改",-1))])):r("",!0),t("div",It,[e[28]||(e[28]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"渠道商名称 *")],-1)),d(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>l.name=s),type:"text",class:"input input-bordered w-full",required:""},null,512),[[x,l.name]])]),y(f).isBrandAccount?r("",!0):(o(),a("div",Kt,[e[30]||(e[30]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"所属品牌商 *")],-1)),d(t("select",{"onUpdate:modelValue":e[6]||(e[6]=s=>l.brandid=s),class:"select select-bordered w-full",disabled:m.value,required:""},[e[29]||(e[29]=t("option",{value:0},"请选择品牌商",-1)),(o(!0),a(g,null,T(k.value,s=>(o(),a("option",{key:s.id,value:s.id},c(s.brand),9,Ht))),128))],8,jt),[[B,l.brandid,void 0,{number:!0}]]),m.value?(o(),a("span",Ot,"归属品牌商创建后不可修改")):r("",!0)])),t("div",Qt,[e[31]||(e[31]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"分成比例(%)")],-1)),d(t("input",{"onUpdate:modelValue":e[7]||(e[7]=s=>l.sharepct=s),type:"number",step:"0.01",min:"0",max:"100",class:"input input-bordered w-full",disabled:!C.value},null,8,Xt),[[x,l.sharepct,void 0,{number:!0}]]),e[32]||(e[32]=t("span",{class:"label-text-alt text-slate-400 mt-1"}," 从所属品牌商的分成里再切;仅超管/管理员可设置。 ",-1))]),t("div",Yt,[e[33]||(e[33]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系人 / 电话")],-1)),d(t("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>l.contact=s),type:"text",class:"input input-bordered w-full"},null,512),[[x,l.contact]])]),t("div",Zt,[e[34]||(e[34]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),d(t("input",{"onUpdate:modelValue":e[9]||(e[9]=s=>l.contactmails=s),type:"text",class:"input input-bordered w-full",placeholder:"多个邮箱用逗号分隔"},null,512),[[x,l.contactmails]])]),t("div",Gt,[e[35]||(e[35]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"备注")],-1)),d(t("textarea",{"onUpdate:modelValue":e[10]||(e[10]=s=>l.remark=s),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[x,l.remark]])]),!m.value&&C.value?(o(),a("div",Jt,[t("label",Wt,[d(t("input",{"onUpdate:modelValue":e[11]||(e[11]=s=>l.createAccount=s),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[et,l.createAccount]]),e[36]||(e[36]=t("span",{class:"label-text font-medium"},"同时创建渠道账号",-1))]),e[40]||(e[40]=t("span",{class:"label-text-alt text-slate-400 mt-1"}," 建一个绑定本渠道商的「渠道商」角色登录账号,只能看到自己渠道的数据与结算单。 用户名/密码留空则自动生成,创建后凭据会邮件发给上面填的联系邮箱。 ",-1)),l.createAccount?(o(),a("div",te,[t("div",null,[e[37]||(e[37]=t("label",{class:"text-xs text-slate-500"},"登录用户名",-1)),d(t("input",{"onUpdate:modelValue":e[12]||(e[12]=s=>l.accountUsername=s),type:"text",class:"input input-bordered input-sm w-full",placeholder:"留空自动生成,如 Channel-K7QM3ZTX",autocomplete:"off"},null,512),[[x,l.accountUsername]])]),t("div",null,[e[38]||(e[38]=t("label",{class:"text-xs text-slate-500"},"登录密码",-1)),d(t("input",{"onUpdate:modelValue":e[13]||(e[13]=s=>l.accountPassword=s),type:"text",class:"input input-bordered input-sm w-full font-mono",placeholder:"留空自动生成 12 位随机密码",autocomplete:"off"},null,512),[[x,l.accountPassword]])]),t("div",ee,[e[39]||(e[39]=t("label",{class:"text-xs text-slate-500"},"备注",-1)),d(t("input",{"onUpdate:modelValue":e[14]||(e[14]=s=>l.accountRemark=s),type:"text",class:"input input-bordered input-sm w-full",placeholder:"可选"},null,512),[[x,l.accountRemark]])]),l.contactmails.trim()?r("",!0):(o(),a("p",se," 没填联系邮箱,凭据将无法邮件送达,只会在创建后弹窗显示一次。 "))])):r("",!0)])):r("",!0),t("div",le,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[15]||(e[15]=s=>N())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:S.value},"保存",8,ne)]),!m.value&&!C.value?(o(),a("p",ae," 提交后为「待审核」状态,须超管/管理员通过后才能用于生产。 ")):r("",!0)],32)])],512),[[L,U.value==="form"]]),st(i,{info:V.value,onClose:e[16]||(e[16]=s=>V.value=null)},null,8,["info"])])}}});export{ce as default}; +import{_ as Y}from"./DPKLCcBs.js";import{g as Z,j as G,C as J,c as a,q as d,H as L,a as t,m as y,l as r,F as g,r as T,s as B,O as W,v as x,d as M,t as c,p as tt,x as et,b as st,A as lt,y as v,z as P,o,n as nt}from"./6O01ZZML.js";import{u as at}from"./BgasD__e.js";import{u as ot}from"./xsgK-Nup.js";const rt={class:"flex items-center justify-between mb-5"},it={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4 mb-4"},dt={class:"flex flex-wrap items-end gap-3"},ut={key:0,class:"form-control"},ct=["value"],mt={class:"form-control"},bt={class:"form-control"},pt={class:"bg-white rounded-xl shadow-sm border border-slate-100"},xt={class:"overflow-x-auto"},ft={class:"table table-zebra"},vt={key:0},kt={key:1},yt={class:"font-mono text-sm font-semibold"},gt={class:"font-medium"},wt={key:0,class:"badge badge-sm badge-primary badge-outline ml-1"},_t={class:"badge badge-ghost badge-sm"},Ct={class:"text-sm"},At={class:"text-sm text-slate-500"},Ut={key:0},$t={key:1,class:"text-xs text-slate-400"},Vt={key:2,class:"text-slate-300"},ht={key:0,class:"text-xs text-slate-400 mt-1"},St={class:"text-sm text-slate-500"},Nt={class:"flex flex-wrap gap-1"},Dt=["onClick"],Tt=["onClick"],Bt=["onClick"],Mt=["onClick"],Ft=["onClick"],Lt={class:"text-xs text-slate-400 mt-3"},Pt={class:"flex items-center gap-3 mb-5"},Rt={class:"text-lg font-semibold text-slate-800"},Et={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},qt={key:0,class:"form-control mb-4"},zt=["value"],It={class:"form-control mb-4"},Kt={key:1,class:"form-control mb-4"},jt=["disabled"],Ht=["value"],Ot={key:0,class:"label-text-alt text-slate-400 mt-1"},Qt={class:"form-control mb-4"},Xt=["disabled"],Yt={class:"form-control mb-4"},Zt={class:"form-control mb-4"},Gt={class:"form-control mb-6"},Jt={key:2,class:"form-control mb-6 border-t border-slate-100 pt-4"},Wt={class:"flex items-center gap-2 cursor-pointer"},te={key:0,class:"grid grid-cols-2 gap-3 mt-3"},ee={class:"col-span-2"},se={key:0,class:"col-span-2 text-xs text-amber-600"},le={class:"flex gap-3"},ne=["disabled"],ae={key:3,class:"text-xs text-amber-600 mt-3"},ce=Z({__name:"dealers",setup(oe){const{webApi:w}=at(),{success:A,error:_}=ot(),f=G(),C=lt(()=>f.isAdmin),V=v(null),U=v("list"),$=v([]),k=v([]),h=v(!1),S=v(!1),m=v(!1),u=P({brandid:0,status:-1,keyword:""}),l=P({id:"",name:"",brandid:0,sharepct:0,contact:"",contactmails:"",remark:"",createAccount:!1,accountUsername:"",accountPassword:"",accountRemark:""}),R={0:"待审核",1:"启用",2:"停用",3:"驳回"},E={0:"badge-warning",1:"badge-success",2:"badge-ghost",3:"badge-error"};function q(n){return R[n]??String(n)}function z(n){return E[n]??"badge-ghost"}function I(n){return((Number(n)||0)/100).toFixed(2)+"%"}function K(n){const e=k.value.find(i=>i.id===n);return e?e.brand:n?"品牌商#"+Number(n).toString(16).toUpperCase():"-"}function j(n){if(!n)return"-";const e=new Date(n*1e3),i=s=>("0"+s).slice(-2);return`${e.getFullYear()}-${i(e.getMonth()+1)}-${i(e.getDate())} ${i(e.getHours())}:${i(e.getMinutes())}`}async function H(){try{const n=await w("getbrands",{});k.value=n?.brands??[]}catch{k.value=[]}}async function b(){h.value=!0;try{k.value.length||await H();const n=await w("getchannels",{brandid:Number(u.brandid)||0,status:Number(u.status),keyword:u.keyword.trim()});$.value=n?.channels??[]}catch(n){_(n?.message??"获取渠道商列表失败"),$.value=[]}finally{h.value=!1}}function O(){u.brandid=0,u.status=-1,u.keyword="",b()}function N(){U.value="list",b()}function F(n){n?(m.value=!0,l.id=n.id,l.name=n.name||"",l.brandid=n.brandid||0,l.sharepct=(Number(n.sharerate)||0)/100,l.contact=n.contact||"",l.contactmails=n.contactmails||"",l.remark=n.remark||""):(m.value=!1,l.id="",l.name="",l.brandid=Number(u.brandid)||0,l.sharepct=0,l.contact="",l.contactmails="",l.remark=""),l.createAccount=!1,l.accountUsername="",l.accountPassword="",l.accountRemark="",U.value="form"}async function Q(){if(!l.brandid&&!f.isBrandAccount){_("请选择所属品牌商");return}S.value=!0;try{const n={name:l.name.trim(),brandid:Number(l.brandid)||0,sharerate:Math.round((Number(l.sharepct)||0)*100),contact:l.contact,contactmails:l.contactmails,remark:l.remark};m.value&&(n.id=l.id);const e={channel:n};!m.value&&l.createAccount&&(e.create_account=!0,e.account_username=l.accountUsername.trim(),e.account_password=l.accountPassword,e.account_remark=l.accountRemark.trim());const i=await w(m.value?"updatechannel":"addchannel",e);m.value?A("保存成功"):(A(C.value?"新增成功":"已提交,等待审核"),i?.account&&(V.value={title:`渠道账号「${i.account}」已创建`,username:i.account,password:i.account_password??"",mailTo:i.mail_to??"",mailError:i.mail_error??""})),N()}catch(n){_(n?.message??"保存失败")}finally{S.value=!1}}async function D(n,e){const i={1:n.status===0?"通过":"启用",2:"停用",3:"驳回"};let s="";if(e===3){const p=window.prompt(`驳回渠道商 "${n.name}" 的原因:`,"");if(p===null)return;s=p}else if(!window.confirm(`确定${i[e]}渠道商 "${n.name}" 吗?`))return;try{await w("auditchannel",{id:n.id,status:e,auditremark:s}),A(i[e]+"成功"),b()}catch(p){_(p?.message??"操作失败")}}function X(n){window.confirm(`确定删除渠道商 "${n.name}" 吗?已有生产批次的渠道商不能删除。`)&&w("delchannel",{id:n.id}).then(()=>{A("删除成功"),b()}).catch(e=>_(e?.message??"删除失败"))}return J(b),(n,e)=>{const i=Y;return o(),a("div",null,[d(t("div",null,[t("div",rt,[e[17]||(e[17]=t("h2",{class:"text-lg font-semibold text-slate-800"},"渠道商列表",-1)),y(f).isDealer?r("",!0):(o(),a("button",{key:0,class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=s=>F())},"+ 新增渠道商"))]),t("div",it,[t("div",dt,[!y(f).isBrandAccount&&!y(f).isDealer?(o(),a("div",ut,[e[19]||(e[19]=t("label",{class:"label py-1"},[t("span",{class:"label-text text-xs text-slate-500"},"品牌商")],-1)),d(t("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>u.brandid=s),class:"select select-bordered select-sm w-48",onChange:b},[e[18]||(e[18]=t("option",{value:0},"全部品牌商",-1)),(o(!0),a(g,null,T(k.value,s=>(o(),a("option",{key:s.id,value:s.id},c(s.brand),9,ct))),128))],544),[[B,u.brandid,void 0,{number:!0}]])])):r("",!0),t("div",mt,[e[21]||(e[21]=t("label",{class:"label py-1"},[t("span",{class:"label-text text-xs text-slate-500"},"状态")],-1)),d(t("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>u.status=s),class:"select select-bordered select-sm w-36",onChange:b},[...e[20]||(e[20]=[t("option",{value:-1},"全部状态",-1),t("option",{value:0},"待审核",-1),t("option",{value:1},"启用",-1),t("option",{value:2},"停用",-1),t("option",{value:3},"驳回",-1)])],544),[[B,u.status,void 0,{number:!0}]])]),t("div",bt,[e[22]||(e[22]=t("label",{class:"label py-1"},[t("span",{class:"label-text text-xs text-slate-500"},"搜索")],-1)),d(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>u.keyword=s),type:"text",class:"input input-bordered input-sm w-52",placeholder:"名称 / 渠道商ID",onKeydown:W(b,["enter"])},null,544),[[x,u.keyword]])]),t("button",{class:"btn btn-sm btn-primary text-white",onClick:b},"查询"),t("button",{class:"btn btn-sm btn-ghost",onClick:O},"重置")])]),t("div",pt,[t("div",xt,[t("table",ft,[e[25]||(e[25]=t("thead",null,[t("tr",null,[t("th",null,"渠道商ID"),t("th",null,"名称"),t("th",null,"所属品牌商"),t("th",null,"分成比例"),t("th",null,"联系方式"),t("th",null,"状态"),t("th",null,"创建时间"),t("th",null,"操作")])],-1)),t("tbody",null,[h.value?(o(),a("tr",vt,[...e[23]||(e[23]=[t("td",{colspan:"8",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):$.value.length?r("",!0):(o(),a("tr",kt,[...e[24]||(e[24]=[t("td",{colspan:"8",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(o(!0),a(g,null,T($.value,s=>(o(),a("tr",{key:s.id},[t("td",yt,c(s.id),1),t("td",gt,[M(c(s.name)+" ",1),s.official?(o(),a("span",wt,"官方")):r("",!0)]),t("td",null,[t("span",_t,c(K(s.brandid)),1)]),t("td",Ct,c(I(s.sharerate)),1),t("td",At,[s.contact?(o(),a("div",Ut,c(s.contact),1)):r("",!0),s.contactmails?(o(),a("div",$t,c(s.contactmails),1)):r("",!0),!s.contact&&!s.contactmails?(o(),a("span",Vt,"-")):r("",!0)]),t("td",null,[t("span",{class:nt(["badge badge-sm",z(s.status)])},c(q(s.status)),3),s.status===3&&s.auditremark?(o(),a("div",ht,c(s.auditremark),1)):r("",!0)]),t("td",St,c(j(s.createtime)),1),t("td",null,[t("div",Nt,[t("button",{class:"btn btn-ghost btn-xs",onClick:p=>F(s)},"编辑",8,Dt),C.value?(o(),a(g,{key:0},[s.status!==1?(o(),a("button",{key:0,class:"btn btn-ghost btn-xs text-emerald-600",onClick:p=>D(s,1)},c(s.status===0?"通过":"启用"),9,Tt)):r("",!0),s.status===1?(o(),a("button",{key:1,class:"btn btn-ghost btn-xs text-amber-600",onClick:p=>D(s,2)},"停用",8,Bt)):r("",!0),s.status===0?(o(),a("button",{key:2,class:"btn btn-ghost btn-xs text-red-500",onClick:p=>D(s,3)},"驳回",8,Mt)):r("",!0)],64)):r("",!0),!y(f).isDealer&&!s.official?(o(),a("button",{key:1,class:"btn btn-ghost btn-xs text-red-500",onClick:p=>X(s)},"删除",8,Ft)):r("",!0)])])]))),128))])])])]),t("p",Lt,[y(f).isBrandAccount?(o(),a(g,{key:0},[M(" 这里只显示贵品牌商名下的渠道商。新增后为「待审核」,需平台审核通过(状态=启用)才能用于生产授权码;分成比例由平台设置。 ")],64)):(o(),a(g,{key:1},[M(" 渠道商新增后需超管/管理员审核通过(状态=启用)才能用于生产授权码;已有生产批次的渠道商不能删除,只能停用。 标「官方」的是品牌自营渠道,随品牌商自动创建、直接启用、不可删除。 ")],64))])],512),[[L,U.value==="list"]]),d(t("div",null,[t("div",Pt,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[4]||(e[4]=s=>N())},"← 返回列表"),t("h2",Rt,c(m.value?"编辑渠道商":"新增渠道商"),1)]),t("div",Et,[t("form",{onSubmit:tt(Q,["prevent"])},[m.value?(o(),a("div",qt,[e[26]||(e[26]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"渠道商ID")],-1)),t("input",{value:l.id,type:"text",class:"input input-bordered w-full font-mono",disabled:""},null,8,zt),e[27]||(e[27]=t("span",{class:"label-text-alt text-slate-400 mt-1"},"短码由系统生成,创建后不可修改",-1))])):r("",!0),t("div",It,[e[28]||(e[28]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"渠道商名称 *")],-1)),d(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>l.name=s),type:"text",class:"input input-bordered w-full",required:""},null,512),[[x,l.name]])]),y(f).isBrandAccount?r("",!0):(o(),a("div",Kt,[e[30]||(e[30]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"所属品牌商 *")],-1)),d(t("select",{"onUpdate:modelValue":e[6]||(e[6]=s=>l.brandid=s),class:"select select-bordered w-full",disabled:m.value,required:""},[e[29]||(e[29]=t("option",{value:0},"请选择品牌商",-1)),(o(!0),a(g,null,T(k.value,s=>(o(),a("option",{key:s.id,value:s.id},c(s.brand),9,Ht))),128))],8,jt),[[B,l.brandid,void 0,{number:!0}]]),m.value?(o(),a("span",Ot,"归属品牌商创建后不可修改")):r("",!0)])),t("div",Qt,[e[31]||(e[31]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"分成比例(%)")],-1)),d(t("input",{"onUpdate:modelValue":e[7]||(e[7]=s=>l.sharepct=s),type:"number",step:"0.01",min:"0",max:"100",class:"input input-bordered w-full",disabled:!C.value},null,8,Xt),[[x,l.sharepct,void 0,{number:!0}]]),e[32]||(e[32]=t("span",{class:"label-text-alt text-slate-400 mt-1"}," 从所属品牌商的分成里再切;仅超管/管理员可设置。 ",-1))]),t("div",Yt,[e[33]||(e[33]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系人 / 电话")],-1)),d(t("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>l.contact=s),type:"text",class:"input input-bordered w-full"},null,512),[[x,l.contact]])]),t("div",Zt,[e[34]||(e[34]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),d(t("input",{"onUpdate:modelValue":e[9]||(e[9]=s=>l.contactmails=s),type:"text",class:"input input-bordered w-full",placeholder:"多个邮箱用逗号分隔"},null,512),[[x,l.contactmails]])]),t("div",Gt,[e[35]||(e[35]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"备注")],-1)),d(t("textarea",{"onUpdate:modelValue":e[10]||(e[10]=s=>l.remark=s),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[x,l.remark]])]),!m.value&&C.value?(o(),a("div",Jt,[t("label",Wt,[d(t("input",{"onUpdate:modelValue":e[11]||(e[11]=s=>l.createAccount=s),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[et,l.createAccount]]),e[36]||(e[36]=t("span",{class:"label-text font-medium"},"同时创建渠道账号",-1))]),e[40]||(e[40]=t("span",{class:"label-text-alt text-slate-400 mt-1"}," 建一个绑定本渠道商的「渠道商」角色登录账号,只能看到自己渠道的数据与结算单。 用户名/密码留空则自动生成,创建后凭据会邮件发给上面填的联系邮箱。 ",-1)),l.createAccount?(o(),a("div",te,[t("div",null,[e[37]||(e[37]=t("label",{class:"text-xs text-slate-500"},"登录用户名",-1)),d(t("input",{"onUpdate:modelValue":e[12]||(e[12]=s=>l.accountUsername=s),type:"text",class:"input input-bordered input-sm w-full",placeholder:"留空自动生成,如 Channel-K7QM3ZTX",autocomplete:"off"},null,512),[[x,l.accountUsername]])]),t("div",null,[e[38]||(e[38]=t("label",{class:"text-xs text-slate-500"},"登录密码",-1)),d(t("input",{"onUpdate:modelValue":e[13]||(e[13]=s=>l.accountPassword=s),type:"text",class:"input input-bordered input-sm w-full font-mono",placeholder:"留空自动生成 12 位随机密码",autocomplete:"off"},null,512),[[x,l.accountPassword]])]),t("div",ee,[e[39]||(e[39]=t("label",{class:"text-xs text-slate-500"},"备注",-1)),d(t("input",{"onUpdate:modelValue":e[14]||(e[14]=s=>l.accountRemark=s),type:"text",class:"input input-bordered input-sm w-full",placeholder:"可选"},null,512),[[x,l.accountRemark]])]),l.contactmails.trim()?r("",!0):(o(),a("p",se," 没填联系邮箱,凭据将无法邮件送达,只会在创建后弹窗显示一次。 "))])):r("",!0)])):r("",!0),t("div",le,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[15]||(e[15]=s=>N())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:S.value},"保存",8,ne)]),!m.value&&!C.value?(o(),a("p",ae," 提交后为「待审核」状态,须超管/管理员通过后才能用于生产。 ")):r("",!0)],32)])],512),[[L,U.value==="form"]]),st(i,{info:V.value,onClose:e[16]||(e[16]=s=>V.value=null)},null,8,["info"])])}}});export{ce as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CLee_yMD.js b/apps/admin/.output/public/_nuxt/DRVBzPRY.js similarity index 99% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CLee_yMD.js rename to apps/admin/.output/public/_nuxt/DRVBzPRY.js index d59cb7d1..1784ff88 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CLee_yMD.js +++ b/apps/admin/.output/public/_nuxt/DRVBzPRY.js @@ -1,4 +1,4 @@ -import{g as Oe,j as $e,C as Fe,c as d,a as e,n as G,l as y,q as r,s as P,F as V,r as $,H as Q,d as v,v as f,N as ve,x as Gt,t as n,p as _t,A as g,y as a,z as Ee,o as u}from"./DSy_gLdM.js";import{u as ze}from"./NtXZuCUg.js";import{u as qe}from"./EeX3zgoF.js";const Re={class:"space-y-5"},He={class:"flex items-center justify-between flex-wrap gap-3"},Ge={class:"tabs tabs-boxed bg-slate-100 inline-flex"},Xe={key:0,class:"flex items-end gap-2 flex-wrap"},Ye=["value"],Je=["value"],Ke=["value"],Qe={class:"bg-white rounded-xl shadow-sm border border-slate-100"},We={class:"flex items-center justify-between px-5 py-3 border-b border-slate-100 flex-wrap gap-2"},Ze={class:"flex items-end gap-2 flex-wrap"},tl={class:"form-control"},el={class:"form-control"},ll={class:"form-control"},sl={class:"form-control"},ol={class:"form-control"},nl={class:"form-control"},al={class:"form-control"},il={class:"form-control"},dl=["disabled"],ul=["disabled"],rl=["disabled"],cl=["disabled"],vl={class:"overflow-x-auto"},bl={class:"w-8"},pl={key:0},ml={key:1},xl={colspan:"8",class:"text-center text-red-400 py-8"},fl={key:2},gl=["value"],hl={class:"font-mono text-xs"},yl={class:"font-mono text-xs"},wl={class:"font-mono text-xs"},Cl={class:"text-xs"},kl={class:"text-xs text-slate-500"},_l={class:"flex gap-1"},Sl=["onClick"],Ml=["onClick"],Ul=["onClick"],Dl={class:"flex items-center justify-between px-5 py-3 border-t border-slate-100"},Vl={class:"text-xs text-slate-500"},Al={class:"flex items-center gap-2"},Nl=["disabled"],Il={class:"text-xs text-slate-500"},jl=["disabled"],Bl={class:"grid grid-cols-3 gap-4 mb-5"},Tl={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Pl={class:"text-2xl font-bold text-slate-800"},Ll={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Ol={class:"text-2xl font-bold text-indigo-600"},$l={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Fl={class:"text-base font-semibold text-slate-700"},El={class:"bg-white rounded-xl shadow-sm border border-slate-100"},zl={class:"flex items-center justify-between px-5 py-3 border-b border-slate-100 flex-wrap gap-2"},ql={class:"flex items-end gap-2 flex-wrap"},Rl={class:"form-control"},Hl={class:"form-control"},Gl={class:"text-xs text-slate-400"},Xl={class:"overflow-x-auto",style:{"max-height":"480px"}},Yl={class:"table table-pin-rows text-sm"},Jl={key:0},Kl={key:1},Ql={colspan:"10",class:"text-center text-red-400 py-8"},Wl={key:2},Zl=["onClick"],ts={class:"text-xs text-slate-500 whitespace-nowrap"},es={class:"text-xs"},ls={class:"text-xs"},ss={class:"text-xs"},os={class:"font-mono text-xs font-medium text-indigo-600"},ns={class:"font-mono text-xs"},as={class:"font-mono text-xs"},is={class:"font-mono text-xs"},ds={class:"text-right font-medium"},us={class:"flex gap-1"},rs=["onClick"],cs=["onClick"],vs={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-8 max-w-3xl"},bs={class:"modal-box max-w-2xl"},ps={class:"grid grid-cols-2 gap-4 mb-4"},ms={class:"form-control"},xs=["value"],fs={class:"form-control"},gs=["disabled"],hs={value:""},ys=["value"],ws={class:"form-control"},Cs=["disabled"],ks={value:0},_s=["value"],Ss={class:"tabs tabs-boxed mb-4 bg-slate-100 inline-flex"},Ms={class:"grid grid-cols-2 gap-4 mb-1"},Us={class:"form-control"},Ds=["required"],Vs={class:"form-control"},As={class:"form-control mb-2"},Ns={class:"form-control mb-1"},Is={key:0,class:"rounded-lg bg-indigo-50 border border-indigo-100 px-4 py-3 text-sm text-slate-700 mt-3 mb-3"},js={class:"flex flex-wrap gap-x-6 gap-y-1"},Bs={key:0},Ts={class:"text-indigo-600"},Ps={key:1},Ls={class:"text-indigo-600"},Os={class:"form-control mb-4"},$s={class:"modal-action"},Fs=["disabled"],Es={key:0,class:"loading loading-spinner loading-xs"},zs={class:"modal-box max-w-lg"},qs={key:0,class:"rounded-lg border border-slate-200 bg-slate-50 px-4 py-3 font-mono text-sm leading-7 mb-4"},Rs={class:"text-indigo-600"},Hs={class:"text-indigo-600"},Gs={key:0},Xs={class:"modal-action"},Ys=["disabled"],Js={key:0,class:"loading loading-spinner loading-xs"},Ks={class:"modal-box w-11/12 max-w-2xl"},Qs={class:"grid grid-cols-2 gap-4 mb-3"},Ws={class:"form-control"},Zs={class:"form-control"},to={class:"form-control mb-3"},eo={class:"form-control mb-3"},lo={class:"form-control mb-4"},so={class:"text-sm text-slate-500"},oo={class:"modal-action"},no=["disabled"],ao={key:0,class:"loading loading-spinner loading-xs"},io={class:"modal-box max-w-md"},uo={class:"text-sm space-y-1 mb-4"},ro={class:"font-medium"},co={class:"font-medium"},vo={class:"font-mono font-medium text-red-600"},bo={class:"font-medium"},po={class:"form-control mb-2"},mo={class:"label"},xo={class:"label-text text-xs"},fo={class:"font-mono text-red-600"},go={class:"text-xs text-red-500 min-h-[1em] mb-2"},ho={class:"modal-action"},yo=["disabled"],wo={key:0,class:"loading loading-spinner loading-xs"},Mo=Oe({__name:"device",setup(Co){const{webApi:C}=ze(),{success:A,error:N,warn:I}=qe(),j=$e(),be=g(()=>j.identity===1),pe=g(()=>j.identity>0&&j.identity<=2),k=a("codes");function St(s){k.value=s}const L=a([]),X=a([]),F=a([]),O=a([]),_=a([]),w=a([]),W=a(0),S=a(0),nt=a(200),M=a(0),B=a(""),m=a(0),at=a(""),it=a(""),Mt=a("-"),Ut=a("-"),Dt=a("-"),Vt=a(""),At=a(!1),dt=a(""),ut=a("0"),Nt=a("createtime"),rt=a(""),It=a(""),jt=a(""),Bt=a(""),Z=a("200"),Tt=a(null),tt=a(""),ct=a(!1),E=a([]),Xt=g(()=>E.value.length),Yt=a(null),Pt=a(null),Lt=a(null),U=a("production"),D=a(0),et=a(""),z=a(0),vt=a(!1),Y=a(null),J=a(""),bt=a(""),pt=a(!1),mt=a(!1),b=a(null),lt=a(null),q=a(""),xt=a(null),ft=a(!1),p=Ee({to:"",cc:"",subject:"",content:""}),Ot=a(null),h=a(null),gt=a(""),ht=a(""),yt=a(!1),$t=g(()=>h.value?h.value.batchno:""),me=g(()=>!!h.value&>.value.trim()===$t.value),Jt=g(()=>Math.max(1,Math.ceil(W.value/nt.value))),xe=g(()=>m.value?"第 "+(S.value+1)+" / "+Jt.value+" 页":"-"),Kt=g(()=>M.value?F.value.filter(s=>s.brandid===M.value):F.value),Qt=g(()=>M.value?X.value.filter(s=>s.brandid===M.value):X.value),Ft=g(()=>D.value?X.value.filter(s=>s.brandid===D.value&&s.status===1):[]),Wt=g(()=>D.value?F.value.filter(s=>s.brandid===D.value):[]),K=g(()=>{const s=O.value.find(l=>l.id===z.value),t=s?.devicecodecount&&s.devicecodecount>0?s.devicecodecount:1;return{isClassicBT:s?.devicetype===1,codeCount:t}}),fe=g(()=>(Number(Y.value)||0)*K.value.codeCount),ge=g(()=>J.value.split(",").map(s=>s.trim()).filter(Boolean).length),he=g(()=>{if(!b.value)return"N/A";const s=L.value.find(t=>t.id===b.value.brandid);return s&&s.providerid!=null?Number(s.providerid).toString(16).padStart(4,"0").toUpperCase():"N/A"});function wt(s){if(!s)return"-";const t=new Date(s*1e3);return t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0")+"-"+String(t.getDate()).padStart(2,"0")+" "+String(t.getHours()).padStart(2,"0")+":"+String(t.getMinutes()).padStart(2,"0")}function Zt(s,t){if(!s)return 0;const l=new Date(s+(t?"T23:59:59":"T00:00:00"));return Math.floor(l.getTime()/1e3)}function Et(s){const t=L.value.find(l=>l.id===s);return t?t.brand:String(s||"")}function te(s){if(!s)return"未分配";const t=X.value.find(l=>l.id===s);return t?t.name+" ("+t.id+")":s}function zt(s){const t=O.value.find(l=>l.id===s);return t?t.devicename:String(s||"")}function Ct(s){return s?Number(s).toString(16).toUpperCase():""}function ee(s){const t=s.serialstart!=null&&s.serialstart!==""?String(s.serialstart):"",l=s.serialend!=null&&s.serialend!==""?String(s.serialend):"";return!t&&!l?"-":t+" - "+l}function qt(s){return s.disabled!==0?{label:"已禁用",dot:"bg-red-500",text:"text-red-600"}:s.status===1?{label:"已激活",dot:"bg-emerald-500",text:"text-emerald-600"}:s.status===2?{label:"已过期",dot:"bg-amber-500",text:"text-amber-600"}:{label:"未使用",dot:"bg-slate-300",text:"text-slate-500"}}async function ye(){try{const[t,l,o]=await Promise.all([C("getbrands",{}),C("getproducts",{}),C("getchannels",{status:-1})]);L.value=t?.brands??[],O.value=l?.products??[],X.value=o?.channels??[]}catch(t){N(t?.message??"加载基础数据失败"),L.value=[],O.value=[],X.value=[]}const s=j.products.map(t=>parseInt(t)).filter(t=>!isNaN(t)&&t>0);j.identity!==1&&s.length>0?F.value=O.value.filter(t=>s.indexOf(t.id)>=0):F.value=O.value.slice(),F.value.length>0&&(m.value=F.value[0].id),R()}function we(){m.value&&!Kt.value.find(s=>s.id===m.value)&&(m.value=0),B.value&&!Qt.value.find(s=>s.id===B.value)&&(B.value=""),R()}function Ce(){S.value=0,R()}function ke(){S.value=0,R()}function le(){let s;if(Z.value==="custom"){if(s=Number(Tt.value),!s||s<1)return}else s=parseInt(Z.value);s>2e3&&(s=2e3),nt.value=s,H(!0)}function R(){Rt(),H(!0)}async function Rt(){At.value=!0,dt.value="";const s=!!(at.value||it.value),t={limit:s?500:10};M.value&&(t.brandid=M.value),B.value&&(t.channelid=B.value),m.value&&(t.productid=m.value);const l=Zt(at.value,!1);l&&(t.start=l);const o=Zt(it.value,!0);o&&(t.end=o);try{const i=await C("getproductionbatches",t);_.value=i?.notes??[],Mt.value=i?.total_batch??0,Ut.value=i?.total_devices??0,Dt.value=_.value.length?wt(_.value[0].ts):"-",Vt.value=s?"共 "+_.value.length+" 条":"最近 "+_.value.length+" 条"}catch(i){dt.value=i?.message??"",_.value=[],Mt.value="0",Ut.value="0",Dt.value="-",Vt.value=""}finally{At.value=!1}}function _e(s,t,l,o){h.value={brandid:s,productid:t,batchno:l,devicenum:o},gt.value="",ht.value="",Ot.value?.showModal()}function se(){Ot.value?.close(),h.value=null}async function Se(){if(h.value){yt.value=!0,ht.value="";try{const s=await C("revokeproductionbatch",{productid:h.value.productid,batchno:h.value.batchno});se(),A("已撤销批次,删除 "+(s?.deleted??0)+" 个授权码"),R()}catch(s){ht.value=s?.message??"撤销失败"}finally{yt.value=!1}}}function oe(s,t){m.value=s,rt.value=t,ut.value="0",S.value=0,k.value="codes",H(!0),setTimeout(()=>{Yt.value?.scrollIntoView({behavior:"smooth",block:"start"})},100)}function ne(){const s={productid:m.value,sortby:Nt.value,order:"desc"},t=parseInt(ut.value);isNaN(t)||(s.status=t),M.value&&(s.brandid=M.value),B.value&&(s.channelid=B.value);const l=rt.value.trim();l&&(s.batchno=l);const o=It.value.trim();o&&(s.code=o);const i=jt.value.trim();i&&(s.devicemac=i);const x=Bt.value.trim();return x&&(s.uid=x),s}async function H(s){if(s&&(S.value=0),E.value=[],ct.value=!1,!m.value){w.value=[],W.value=0,tt.value="";return}const t=Object.assign(ne(),{limit:nt.value,offset:S.value*nt.value});try{const l=await C("getauthcodes",t);w.value=l?.devices??[],W.value=l?.total??0,tt.value=""}catch(l){tt.value=l?.message??"",w.value=[],W.value=0}}function ae(s){S.value=Math.max(0,S.value+s),H(!1)}async function Me(s){if(window.confirm("确定重置该设备授权状态?"))try{await C("resetlicensestatus",{licenses:s}),A("重置成功"),H(!1),Rt()}catch(t){N(t?.message??"失败")}}function Ue(){ct.value?E.value=w.value.map(s=>s.code||""):E.value=[]}async function kt(s,t){if(!m.value){I("请先选择产品");return}const l=t??E.value.slice();if(!l.length){I("请先勾选授权码");return}const o=s===-1?"禁用":"恢复";if(window.confirm("确定"+o+" "+l.length+" 个授权码?"+(s===-1?` +import{g as Oe,j as $e,C as Fe,c as d,a as e,n as G,l as y,q as r,s as P,F as V,r as $,H as Q,d as v,v as f,N as ve,x as Gt,t as n,p as _t,A as g,y as a,z as Ee,o as u}from"./6O01ZZML.js";import{u as ze}from"./BgasD__e.js";import{u as qe}from"./xsgK-Nup.js";const Re={class:"space-y-5"},He={class:"flex items-center justify-between flex-wrap gap-3"},Ge={class:"tabs tabs-boxed bg-slate-100 inline-flex"},Xe={key:0,class:"flex items-end gap-2 flex-wrap"},Ye=["value"],Je=["value"],Ke=["value"],Qe={class:"bg-white rounded-xl shadow-sm border border-slate-100"},We={class:"flex items-center justify-between px-5 py-3 border-b border-slate-100 flex-wrap gap-2"},Ze={class:"flex items-end gap-2 flex-wrap"},tl={class:"form-control"},el={class:"form-control"},ll={class:"form-control"},sl={class:"form-control"},ol={class:"form-control"},nl={class:"form-control"},al={class:"form-control"},il={class:"form-control"},dl=["disabled"],ul=["disabled"],rl=["disabled"],cl=["disabled"],vl={class:"overflow-x-auto"},bl={class:"w-8"},pl={key:0},ml={key:1},xl={colspan:"8",class:"text-center text-red-400 py-8"},fl={key:2},gl=["value"],hl={class:"font-mono text-xs"},yl={class:"font-mono text-xs"},wl={class:"font-mono text-xs"},Cl={class:"text-xs"},kl={class:"text-xs text-slate-500"},_l={class:"flex gap-1"},Sl=["onClick"],Ml=["onClick"],Ul=["onClick"],Dl={class:"flex items-center justify-between px-5 py-3 border-t border-slate-100"},Vl={class:"text-xs text-slate-500"},Al={class:"flex items-center gap-2"},Nl=["disabled"],Il={class:"text-xs text-slate-500"},jl=["disabled"],Bl={class:"grid grid-cols-3 gap-4 mb-5"},Tl={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Pl={class:"text-2xl font-bold text-slate-800"},Ll={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Ol={class:"text-2xl font-bold text-indigo-600"},$l={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Fl={class:"text-base font-semibold text-slate-700"},El={class:"bg-white rounded-xl shadow-sm border border-slate-100"},zl={class:"flex items-center justify-between px-5 py-3 border-b border-slate-100 flex-wrap gap-2"},ql={class:"flex items-end gap-2 flex-wrap"},Rl={class:"form-control"},Hl={class:"form-control"},Gl={class:"text-xs text-slate-400"},Xl={class:"overflow-x-auto",style:{"max-height":"480px"}},Yl={class:"table table-pin-rows text-sm"},Jl={key:0},Kl={key:1},Ql={colspan:"10",class:"text-center text-red-400 py-8"},Wl={key:2},Zl=["onClick"],ts={class:"text-xs text-slate-500 whitespace-nowrap"},es={class:"text-xs"},ls={class:"text-xs"},ss={class:"text-xs"},os={class:"font-mono text-xs font-medium text-indigo-600"},ns={class:"font-mono text-xs"},as={class:"font-mono text-xs"},is={class:"font-mono text-xs"},ds={class:"text-right font-medium"},us={class:"flex gap-1"},rs=["onClick"],cs=["onClick"],vs={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-8 max-w-3xl"},bs={class:"modal-box max-w-2xl"},ps={class:"grid grid-cols-2 gap-4 mb-4"},ms={class:"form-control"},xs=["value"],fs={class:"form-control"},gs=["disabled"],hs={value:""},ys=["value"],ws={class:"form-control"},Cs=["disabled"],ks={value:0},_s=["value"],Ss={class:"tabs tabs-boxed mb-4 bg-slate-100 inline-flex"},Ms={class:"grid grid-cols-2 gap-4 mb-1"},Us={class:"form-control"},Ds=["required"],Vs={class:"form-control"},As={class:"form-control mb-2"},Ns={class:"form-control mb-1"},Is={key:0,class:"rounded-lg bg-indigo-50 border border-indigo-100 px-4 py-3 text-sm text-slate-700 mt-3 mb-3"},js={class:"flex flex-wrap gap-x-6 gap-y-1"},Bs={key:0},Ts={class:"text-indigo-600"},Ps={key:1},Ls={class:"text-indigo-600"},Os={class:"form-control mb-4"},$s={class:"modal-action"},Fs=["disabled"],Es={key:0,class:"loading loading-spinner loading-xs"},zs={class:"modal-box max-w-lg"},qs={key:0,class:"rounded-lg border border-slate-200 bg-slate-50 px-4 py-3 font-mono text-sm leading-7 mb-4"},Rs={class:"text-indigo-600"},Hs={class:"text-indigo-600"},Gs={key:0},Xs={class:"modal-action"},Ys=["disabled"],Js={key:0,class:"loading loading-spinner loading-xs"},Ks={class:"modal-box w-11/12 max-w-2xl"},Qs={class:"grid grid-cols-2 gap-4 mb-3"},Ws={class:"form-control"},Zs={class:"form-control"},to={class:"form-control mb-3"},eo={class:"form-control mb-3"},lo={class:"form-control mb-4"},so={class:"text-sm text-slate-500"},oo={class:"modal-action"},no=["disabled"],ao={key:0,class:"loading loading-spinner loading-xs"},io={class:"modal-box max-w-md"},uo={class:"text-sm space-y-1 mb-4"},ro={class:"font-medium"},co={class:"font-medium"},vo={class:"font-mono font-medium text-red-600"},bo={class:"font-medium"},po={class:"form-control mb-2"},mo={class:"label"},xo={class:"label-text text-xs"},fo={class:"font-mono text-red-600"},go={class:"text-xs text-red-500 min-h-[1em] mb-2"},ho={class:"modal-action"},yo=["disabled"],wo={key:0,class:"loading loading-spinner loading-xs"},Mo=Oe({__name:"device",setup(Co){const{webApi:C}=ze(),{success:A,error:N,warn:I}=qe(),j=$e(),be=g(()=>j.identity===1),pe=g(()=>j.identity>0&&j.identity<=2),k=a("codes");function St(s){k.value=s}const L=a([]),X=a([]),F=a([]),O=a([]),_=a([]),w=a([]),W=a(0),S=a(0),nt=a(200),M=a(0),B=a(""),m=a(0),at=a(""),it=a(""),Mt=a("-"),Ut=a("-"),Dt=a("-"),Vt=a(""),At=a(!1),dt=a(""),ut=a("0"),Nt=a("createtime"),rt=a(""),It=a(""),jt=a(""),Bt=a(""),Z=a("200"),Tt=a(null),tt=a(""),ct=a(!1),E=a([]),Xt=g(()=>E.value.length),Yt=a(null),Pt=a(null),Lt=a(null),U=a("production"),D=a(0),et=a(""),z=a(0),vt=a(!1),Y=a(null),J=a(""),bt=a(""),pt=a(!1),mt=a(!1),b=a(null),lt=a(null),q=a(""),xt=a(null),ft=a(!1),p=Ee({to:"",cc:"",subject:"",content:""}),Ot=a(null),h=a(null),gt=a(""),ht=a(""),yt=a(!1),$t=g(()=>h.value?h.value.batchno:""),me=g(()=>!!h.value&>.value.trim()===$t.value),Jt=g(()=>Math.max(1,Math.ceil(W.value/nt.value))),xe=g(()=>m.value?"第 "+(S.value+1)+" / "+Jt.value+" 页":"-"),Kt=g(()=>M.value?F.value.filter(s=>s.brandid===M.value):F.value),Qt=g(()=>M.value?X.value.filter(s=>s.brandid===M.value):X.value),Ft=g(()=>D.value?X.value.filter(s=>s.brandid===D.value&&s.status===1):[]),Wt=g(()=>D.value?F.value.filter(s=>s.brandid===D.value):[]),K=g(()=>{const s=O.value.find(l=>l.id===z.value),t=s?.devicecodecount&&s.devicecodecount>0?s.devicecodecount:1;return{isClassicBT:s?.devicetype===1,codeCount:t}}),fe=g(()=>(Number(Y.value)||0)*K.value.codeCount),ge=g(()=>J.value.split(",").map(s=>s.trim()).filter(Boolean).length),he=g(()=>{if(!b.value)return"N/A";const s=L.value.find(t=>t.id===b.value.brandid);return s&&s.providerid!=null?Number(s.providerid).toString(16).padStart(4,"0").toUpperCase():"N/A"});function wt(s){if(!s)return"-";const t=new Date(s*1e3);return t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0")+"-"+String(t.getDate()).padStart(2,"0")+" "+String(t.getHours()).padStart(2,"0")+":"+String(t.getMinutes()).padStart(2,"0")}function Zt(s,t){if(!s)return 0;const l=new Date(s+(t?"T23:59:59":"T00:00:00"));return Math.floor(l.getTime()/1e3)}function Et(s){const t=L.value.find(l=>l.id===s);return t?t.brand:String(s||"")}function te(s){if(!s)return"未分配";const t=X.value.find(l=>l.id===s);return t?t.name+" ("+t.id+")":s}function zt(s){const t=O.value.find(l=>l.id===s);return t?t.devicename:String(s||"")}function Ct(s){return s?Number(s).toString(16).toUpperCase():""}function ee(s){const t=s.serialstart!=null&&s.serialstart!==""?String(s.serialstart):"",l=s.serialend!=null&&s.serialend!==""?String(s.serialend):"";return!t&&!l?"-":t+" - "+l}function qt(s){return s.disabled!==0?{label:"已禁用",dot:"bg-red-500",text:"text-red-600"}:s.status===1?{label:"已激活",dot:"bg-emerald-500",text:"text-emerald-600"}:s.status===2?{label:"已过期",dot:"bg-amber-500",text:"text-amber-600"}:{label:"未使用",dot:"bg-slate-300",text:"text-slate-500"}}async function ye(){try{const[t,l,o]=await Promise.all([C("getbrands",{}),C("getproducts",{}),C("getchannels",{status:-1})]);L.value=t?.brands??[],O.value=l?.products??[],X.value=o?.channels??[]}catch(t){N(t?.message??"加载基础数据失败"),L.value=[],O.value=[],X.value=[]}const s=j.products.map(t=>parseInt(t)).filter(t=>!isNaN(t)&&t>0);j.identity!==1&&s.length>0?F.value=O.value.filter(t=>s.indexOf(t.id)>=0):F.value=O.value.slice(),F.value.length>0&&(m.value=F.value[0].id),R()}function we(){m.value&&!Kt.value.find(s=>s.id===m.value)&&(m.value=0),B.value&&!Qt.value.find(s=>s.id===B.value)&&(B.value=""),R()}function Ce(){S.value=0,R()}function ke(){S.value=0,R()}function le(){let s;if(Z.value==="custom"){if(s=Number(Tt.value),!s||s<1)return}else s=parseInt(Z.value);s>2e3&&(s=2e3),nt.value=s,H(!0)}function R(){Rt(),H(!0)}async function Rt(){At.value=!0,dt.value="";const s=!!(at.value||it.value),t={limit:s?500:10};M.value&&(t.brandid=M.value),B.value&&(t.channelid=B.value),m.value&&(t.productid=m.value);const l=Zt(at.value,!1);l&&(t.start=l);const o=Zt(it.value,!0);o&&(t.end=o);try{const i=await C("getproductionbatches",t);_.value=i?.notes??[],Mt.value=i?.total_batch??0,Ut.value=i?.total_devices??0,Dt.value=_.value.length?wt(_.value[0].ts):"-",Vt.value=s?"共 "+_.value.length+" 条":"最近 "+_.value.length+" 条"}catch(i){dt.value=i?.message??"",_.value=[],Mt.value="0",Ut.value="0",Dt.value="-",Vt.value=""}finally{At.value=!1}}function _e(s,t,l,o){h.value={brandid:s,productid:t,batchno:l,devicenum:o},gt.value="",ht.value="",Ot.value?.showModal()}function se(){Ot.value?.close(),h.value=null}async function Se(){if(h.value){yt.value=!0,ht.value="";try{const s=await C("revokeproductionbatch",{productid:h.value.productid,batchno:h.value.batchno});se(),A("已撤销批次,删除 "+(s?.deleted??0)+" 个授权码"),R()}catch(s){ht.value=s?.message??"撤销失败"}finally{yt.value=!1}}}function oe(s,t){m.value=s,rt.value=t,ut.value="0",S.value=0,k.value="codes",H(!0),setTimeout(()=>{Yt.value?.scrollIntoView({behavior:"smooth",block:"start"})},100)}function ne(){const s={productid:m.value,sortby:Nt.value,order:"desc"},t=parseInt(ut.value);isNaN(t)||(s.status=t),M.value&&(s.brandid=M.value),B.value&&(s.channelid=B.value);const l=rt.value.trim();l&&(s.batchno=l);const o=It.value.trim();o&&(s.code=o);const i=jt.value.trim();i&&(s.devicemac=i);const x=Bt.value.trim();return x&&(s.uid=x),s}async function H(s){if(s&&(S.value=0),E.value=[],ct.value=!1,!m.value){w.value=[],W.value=0,tt.value="";return}const t=Object.assign(ne(),{limit:nt.value,offset:S.value*nt.value});try{const l=await C("getauthcodes",t);w.value=l?.devices??[],W.value=l?.total??0,tt.value=""}catch(l){tt.value=l?.message??"",w.value=[],W.value=0}}function ae(s){S.value=Math.max(0,S.value+s),H(!1)}async function Me(s){if(window.confirm("确定重置该设备授权状态?"))try{await C("resetlicensestatus",{licenses:s}),A("重置成功"),H(!1),Rt()}catch(t){N(t?.message??"失败")}}function Ue(){ct.value?E.value=w.value.map(s=>s.code||""):E.value=[]}async function kt(s,t){if(!m.value){I("请先选择产品");return}const l=t??E.value.slice();if(!l.length){I("请先勾选授权码");return}const o=s===-1?"禁用":"恢复";if(window.confirm("确定"+o+" "+l.length+" 个授权码?"+(s===-1?` 禁用后该授权码将无法绑定。`:"")))try{const i=await C("disableauthcodes",{productid:m.value,codes:l,disabled:s});A(o+"成功("+(i?.affected??0)+" 条)"),H(!1)}catch(i){N(i?.message??o+"失败")}}function De(){D.value=0,et.value="",z.value=0,vt.value=!1,Y.value=null,J.value="",bt.value="",U.value="production",b.value=null,Pt.value?.showModal()}function ie(){Pt.value?.close()}function de(){Lt.value?.close()}function Ve(){z.value=0,et.value=""}function Ae(s){const l=s.target.files?.[0];if(!l)return;const o=new FileReader;o.onload=i=>{const x=String(i.target?.result??"").split(` `),c=[];x.forEach(T=>{const st=T.split(",");st[0]&&st[0].trim()&&c.push(st[0].trim())}),J.value=c.join(", "),A("读取 "+c.length+" 个 MAC 地址")},o.readAsText(l,"UTF-8")}function ue(){const s=Number(D.value),t=Number(z.value),l=et.value.trim();if(!s||!t)return I("请选择品牌商和产品"),null;if(!l)return I("请选择渠道商"),null;const o={brandid:s,channelid:l,productid:t,remark:bt.value.trim()};if(U.value==="production"){if(o.createtype=1,o.number=Number(Y.value),o.isbindmac=vt.value,!o.number||o.number<1)return I("请输入有效数量"),null}else{o.createtype=2;const i=J.value.trim();if(!i)return I("请输入或上传 MAC 地址"),null;o.macaddresses=i}return o}async function Ne(){const s=ue();if(s){mt.value=!0;try{const t=await C("previewauthcodes",s);if(b.value=t??null,!b.value){N("预检失败");return}Lt.value?.showModal()}catch(t){N(t?.message??"预检失败")}finally{mt.value=!1}}}async function Ie(){const s=ue();if(!s)return;const t=s.brandid,l=s.productid;b.value?.batchno&&(s.batchno=b.value.batchno),pt.value=!0;try{const o=await C("createauthcodes",s),x=(o?.devices??[]).map(c=>typeof c=="string"?{code:c,brandid:o?.brandid??t,productid:o?.productid??l}:{...c,brandid:c.brandid??o?.brandid??t,productid:c.productid??o?.productid??l});de(),ie(),x.length>0?(A("成功生成 "+x.length+" 个授权码,批次 "+(o?.batchno||"")),Ht(x),Te(o??{},t,l)):(A("创建成功"),k.value="batches",R())}catch(o){N(o?.message??"创建失败")}finally{pt.value=!1}}function Ht(s){const t=s.some(c=>c.devicemac),l=t?["License","Mac地址"]:["License"],o=s.map(c=>t?[c.code||"",c.devicemac||""]:[c.code||""]),i=[l.join(",")].concat(o.map(c=>c.join(","))).join(` `);lt.value=new Blob([i],{type:"text/csv;charset=utf-8;"});const x=s[0];q.value="设备生产_"+(x.brandid||"unknown")+"_"+(x.productid||"unknown")+"_"+new Date().toISOString().split("T")[0]+".csv"}async function je(){if(!m.value){I("请先选择产品");return}try{const s=ne(),t=2e3;let l=[],o=0,i=1/0;for(;l.length[wt(i.ts),Et(i.brandid),te(i.channelid),zt(i.productid),i.batchno||"",ee(i),i.startmac||"",i.endmac||"",i.devicenum||0]),l=[s.join(",")].concat(t.map(i=>i.join(","))).join(` diff --git a/apps/admin/.output/public/_nuxt/DT3lD2sm.js b/apps/admin/.output/public/_nuxt/DT3lD2sm.js new file mode 100644 index 00000000..1fa6eb67 --- /dev/null +++ b/apps/admin/.output/public/_nuxt/DT3lD2sm.js @@ -0,0 +1 @@ +import{g as X,j as Y,C as Z,c as l,a as e,q as b,s as q,l as N,F as y,r as h,v as _,O as $,p as ee,t as i,d as B,y as u,A as w,z as te,o,m as se}from"./6O01ZZML.js";import{u as ne}from"./BgasD__e.js";import{u as le}from"./xsgK-Nup.js";import{r as oe}from"./7m3DvxFn.js";const ae={class:"space-y-6"},ie={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4"},re={class:"flex items-end gap-3 flex-wrap"},de={class:"form-control"},ue={key:0,value:""},ce=["value"],pe={class:"form-control"},me={key:0,value:""},ve=["value"],be={class:"form-control"},fe=["onKeydown"],ge={key:0,class:"bg-white rounded-xl shadow-sm border border-slate-100 p-12 text-center text-slate-400"},xe={key:1,class:"space-y-5"},ye={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5 flex items-center gap-4"},he=["src"],_e={key:1,class:"w-14 h-14 rounded-full bg-indigo-100 text-indigo-600 flex items-center justify-center text-xl font-bold"},we={class:"text-lg font-semibold text-slate-800"},ke={class:"text-xs text-slate-400 font-mono mt-0.5"},Ae={class:"ml-auto flex items-center gap-3"},Ie={class:"badge badge-primary badge-outline"},Ue={class:"px-5 py-3 border-b border-slate-50 text-sm font-semibold text-slate-700"},Ve={class:"px-5 py-3 grid grid-cols-1 md:grid-cols-2 gap-x-8"},Ce={class:"text-xs text-slate-400 shrink-0"},De={class:"text-sm text-slate-700 break-all text-right"},Ne={class:"modal-box max-w-md"},Me={class:"text-xs text-slate-400 mb-4"},Se={class:"font-mono text-slate-600"},Ge={class:"grid grid-cols-3 gap-3"},je={class:"form-control"},qe={class:"form-control"},Be={class:"form-control"},Ee=X({__name:"users",setup(Pe){const{webApi:k,consoleApi:P}=ne(),{success:T,error:M,warn:c}=le(),f=Y(),p=u([]),m=u(""),v=u(""),A=u(""),r=u(null),S=u("请输入查询条件后点击「搜索」"),I=u(""),g=u(""),F=w(()=>[1,2,3].includes(f.identity)),x=u(null),a=te({vipday:0,trademin:0,meetmin:0}),U=w(()=>{const t=[];return p.value.forEach(s=>{const n=s.app_name||s.name;n&&!t.includes(n)&&t.push(n)}),t}),V=w(()=>p.value.filter(t=>(t.app_name||t.name)===m.value));function G(){const t=V.value;v.value=t.length?t[0].id:""}function K(t){return t?new Date(t*1e3).toLocaleString():"-"}function L(t){return t?"是":"否"}function E(t){return t===1?"男":t===2?"女":"未知"}function C(t){return t==null||t===""?"-":t}const z=[{title:"基本信息",rows:[["uid","UID"],["name","用户名"],["account","登录账号"],["mail","邮箱"],["phone","手机号"],["gender","性别","gender"],["language","语言"],["version","版本"],["channel","渠道"],["State","状态"],["country_code","国家码"],["continent_code","大洲码"],["servicetag","服务区"],["phonemodel","手机型号"],["phonemac","设备ID"]]},{title:"第三方登录",rows:[["wxopenid","微信 openid"],["googleopenid","Google openid"],["facebookopenid","Facebook openid"],["appleopenid","Apple openid"]]},{title:"会员与积分",rows:[["viplv","VIP等级"],["vipexptime","VIP到期","ts"],["aichatintegral","AI积分"],["aichattotalintegral","AI累计积分"],["tradeintegral","翻译积分"],["tradetotalintegral","翻译累计积分"],["meetintegral","会议积分"],["meettotalintegral","会议累计积分"],["lastbindproductid","最后绑定产品ID"],["isactivatecode","已领激活码","bool"],["isgiveaway","首次绑定赠送","bool"]]},{title:"时间",rows:[["createtime","注册时间","ts"],["lastsgintime","最后登录","ts"],["canceltime","注销时间","ts"]]}];function H(t,s){const n=s[2],d=t[s[0]];return n==="ts"?K(d):n==="bool"?L(d):n==="gender"?E(d):C(d)}const O=w(()=>{const t=r.value;return t?String(t.name||t.uid||"?").charAt(0).toUpperCase():"?"});async function D(){if(!m.value){c("请选择应用");return}if(!v.value){c("请选择区域");return}const t=A.value.trim();if(!t){c("请输入用户UID");return}const s=Number(v.value);I.value=s,g.value=t,f.setCurrentApp(s);try{const n=await k("getuserinfo",{uid:t});r.value=n||{}}catch(n){M(n?.message||"查询失败"),r.value=null,S.value=n?.message||"未找到该用户"}}function R(){if(!g.value){c("请先查询用户");return}a.vipday=0,a.trademin=0,a.meetmin=0,x.value?.showModal()}function J(){x.value?.close()}async function Q(){const t=Number(a.vipday)||0,s=Number(a.trademin)||0,n=Number(a.meetmin)||0;if(t<0||s<0||n<0){c("数量不能为负");return}if(!t&&!s&&!n){c("请至少填写一项");return}if(!I.value||!g.value){c("请先查询用户");return}f.setCurrentApp(Number(I.value));try{await k("giftuserresource",{uid:g.value,vipday:t,trademin:s,meetmin:n}),T("赠送成功"),x.value?.close(),D()}catch(d){M(d?.message||"赠送失败")}}function j(){const t=U.value;if(!t.length){m.value="",v.value="";return}m.value=t[0],G()}async function W(){if(!f.isAdmin){try{const t=await k("getmyapps",{});p.value=t?.apps??[]}catch{p.value=(f.appbinds||[]).map(t=>({id:t.id,name:t.name,app_name:t.app_name,region:t.region,enabled:!0}))}j();return}try{const t=await P("apps/list",{});p.value=(t||[]).filter(s=>s.enabled)}catch{p.value=[]}j()}return Z(W),(t,s)=>(o(),l("div",ae,[e("div",ie,[e("div",re,[e("div",de,[s[6]||(s[6]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"应用")],-1)),b(e("select",{"onUpdate:modelValue":s[0]||(s[0]=n=>m.value=n),class:"select select-bordered select-sm",style:{"min-width":"180px"},onChange:G},[U.value.length?N("",!0):(o(),l("option",ue,"无可用应用")),(o(!0),l(y,null,h(U.value,n=>(o(),l("option",{key:n,value:n},i(n),9,ce))),128))],544),[[q,m.value]])]),e("div",pe,[s[7]||(s[7]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"区域")],-1)),b(e("select",{"onUpdate:modelValue":s[1]||(s[1]=n=>v.value=n),class:"select select-bordered select-sm",style:{"min-width":"140px"}},[V.value.length?N("",!0):(o(),l("option",me,"无可用区域")),(o(!0),l(y,null,h(V.value,n=>(o(),l("option",{key:n.id,value:n.id},i(se(oe)(n.region)),9,ve))),128))],512),[[q,v.value]])]),e("div",be,[s[8]||(s[8]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"用户UID")],-1)),b(e("input",{"onUpdate:modelValue":s[2]||(s[2]=n=>A.value=n),type:"text",class:"input input-bordered input-sm",style:{"min-width":"240px"},placeholder:"输入用户 UID",onKeydown:$(ee(D,["prevent"]),["enter"])},null,40,fe),[[_,A.value]])]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:D},"搜索")]),s[9]||(s[9]=e("p",{class:"text-xs text-slate-400 mt-2"},"选择应用与区域后输入 UID,直接查询该部署业务库中的用户信息。",-1))]),r.value?(o(),l("div",xe,[e("div",ye,[r.value.avatar?(o(),l("img",{key:0,src:r.value.avatar,class:"w-14 h-14 rounded-full object-cover border border-slate-100"},null,8,he)):(o(),l("div",_e,i(O.value),1)),e("div",null,[e("div",we,i(C(r.value.name)),1),e("div",ke,i(C(r.value.uid)),1)]),e("div",Ae,[e("span",Ie,"VIP "+i(r.value.viplv||0),1),F.value?(o(),l("button",{key:0,class:"btn btn-success btn-sm text-white",onClick:R},"赠送资源点")):N("",!0)])]),(o(),l(y,null,h(z,n=>e("div",{key:n.title,class:"bg-white rounded-xl shadow-sm border border-slate-100 overflow-hidden"},[e("div",Ue,i(n.title),1),e("div",Ve,[(o(!0),l(y,null,h(n.rows,d=>(o(),l("div",{key:d[0],class:"flex justify-between gap-3 py-1.5 border-b border-slate-50"},[e("span",Ce,i(d[1]),1),e("span",De,i(H(r.value,d)),1)]))),128))])])),64))])):(o(),l("div",ge,i(S.value),1)),e("dialog",{ref_key:"giftModal",ref:x,class:"modal"},[e("div",Ne,[s[15]||(s[15]=e("h3",{class:"font-bold text-lg mb-1 text-slate-800"},"赠送资源点",-1)),e("p",Me,[s[10]||(s[10]=B("目标用户 UID:",-1)),e("span",Se,i(g.value),1),s[11]||(s[11]=B("。代理账号将从自己的资源点余额中扣减,超管/管理员无消耗。",-1))]),e("div",Ge,[e("div",je,[s[12]||(s[12]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm"},"VIP天数")],-1)),b(e("input",{"onUpdate:modelValue":s[3]||(s[3]=n=>a.vipday=n),type:"number",class:"input input-bordered",min:"0"},null,512),[[_,a.vipday,void 0,{number:!0}]])]),e("div",qe,[s[13]||(s[13]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm"},"翻译分钟")],-1)),b(e("input",{"onUpdate:modelValue":s[4]||(s[4]=n=>a.trademin=n),type:"number",class:"input input-bordered",min:"0"},null,512),[[_,a.trademin,void 0,{number:!0}]])]),e("div",Be,[s[14]||(s[14]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm"},"会议分钟")],-1)),b(e("input",{"onUpdate:modelValue":s[5]||(s[5]=n=>a.meetmin=n),type:"number",class:"input input-bordered",min:"0"},null,512),[[_,a.meetmin,void 0,{number:!0}]])])]),e("div",{class:"modal-action"},[e("button",{class:"btn btn-sm",onClick:J},"取消"),e("button",{class:"btn btn-success btn-sm text-white",onClick:Q},"确认赠送")])]),s[16]||(s[16]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512)]))}});export{Ee as default}; diff --git a/apps/admin/.output/public/_nuxt/DTVoyhwb.js b/apps/admin/.output/public/_nuxt/DTVoyhwb.js new file mode 100644 index 00000000..9627d66f --- /dev/null +++ b/apps/admin/.output/public/_nuxt/DTVoyhwb.js @@ -0,0 +1 @@ +import{g as me,z as P,C as ve,c as a,q as i,H as B,a as e,l as g,F as x,r as y,t as d,p as G,v,s as L,d as q,x as H,y as p,A as fe,o,n as ge}from"./6O01ZZML.js";import{u as xe}from"./BgasD__e.js";import{u as ye}from"./xsgK-Nup.js";const we={class:"flex items-center justify-between mb-5"},ke={class:"bg-white rounded-xl shadow-sm border border-slate-100"},he={class:"overflow-x-auto"},_e={class:"table table-zebra text-sm"},Ve={key:0},Ce={key:1},Ue={class:"font-mono text-sm"},Ee=["src"],Ie={key:1,class:"w-10 h-10 rounded bg-slate-100 flex items-center justify-center text-slate-300"},Ne={class:"font-medium"},$e={key:0,class:"flex flex-wrap gap-1"},De={key:1,class:"text-slate-300 text-xs"},Se={class:"badge badge-outline badge-sm"},Be={class:"text-sm"},Le={key:0},Oe={key:1,class:"text-slate-300"},Ae={class:"text-xs text-slate-500"},Me={class:"flex gap-1"},Te=["onClick"],ze=["onClick"],Fe=["onClick"],je={class:"flex items-center gap-3 mb-5"},Pe={class:"text-lg font-semibold text-slate-800"},qe={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-3xl"},He={class:"form-control mb-4"},Je={class:"grid grid-cols-2 gap-4 mb-4"},Ke={class:"form-control"},Ye=["value"],Qe={class:"form-control"},Re=["value"],Ge={class:"form-control mb-4"},We={key:0,class:"text-xs text-slate-400 border border-dashed border-slate-200 rounded-lg px-3 py-2"},Xe={key:1,class:"flex flex-wrap gap-2 border border-slate-200 rounded-lg px-3 py-2"},Ze=["value"],et={class:"label-text"},tt={class:"grid grid-cols-2 gap-4 mb-4"},st={class:"form-control"},lt={class:"form-control"},nt={class:"grid grid-cols-2 gap-4 mb-4"},at={class:"form-control"},ot={class:"mb-4"},it={class:"grid grid-cols-3 gap-4"},dt={class:"form-control"},rt={class:"form-control"},ut={class:"form-control"},ct={class:"form-control mb-4"},bt={class:"flex items-start gap-4"},pt={class:"flex-1"},mt={class:"flex items-center gap-2"},vt=["disabled"],ft={key:0,class:"loading loading-spinner loading-xs"},gt={key:0},xt=["src"],yt={class:"grid grid-cols-3 gap-4 mb-4"},wt={class:"form-control"},kt={class:"form-control"},ht={class:"form-control"},_t={class:"grid grid-cols-3 gap-3 mb-6"},Vt=["onUpdate:modelValue"],Ct={class:"text-sm"},Ut={class:"flex gap-3"},Et=["disabled"],It={key:0,class:"loading loading-spinner loading-xs"},Nt={class:"flex items-center gap-3 mb-5"},$t={class:"text-lg font-semibold text-slate-800"},Dt={key:0,class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4 mb-5"},St={class:"flex items-center gap-6 text-sm flex-wrap"},Bt={class:"font-mono"},Lt={class:"badge badge-primary badge-sm"},Ot={class:"text-xs"},At={class:"text-xs max-w-md truncate"},Mt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5 mb-5"},Tt={class:"grid grid-cols-2 gap-4 mb-3"},zt={class:"form-control"},Ft={class:"form-control"},jt={class:"form-control mb-3"},Pt={class:"flex items-center gap-3"},qt={class:"flex items-center gap-2 cursor-pointer"},Ht=["disabled"],Jt={key:0,class:"loading loading-spinner loading-xs"},Kt={class:"bg-white rounded-xl shadow-sm border border-slate-100"},Yt={class:"overflow-x-auto"},Qt={class:"table table-zebra text-sm"},Rt={key:0},Gt={key:0,class:"badge badge-success badge-xs ml-1"},Wt={class:"text-sm"},Xt={class:"text-xs text-slate-400 max-w-xs truncate"},Zt={class:"flex gap-1"},es={key:0,class:"text-xs text-slate-400"},ts=["onClick"],ss=["onClick"],is=me({__name:"product",setup(ls){const{webApi:m,consoleApi:W,uploadFile:J}=xe(),{success:w,error:f,warn:O}=ye(),X={0:"未知",1:"经典蓝牙",2:"BLE双端",3:"BLE单端",4:"录音笔",5:"智能眼镜",6:"激活码卡片"},Z={0:"未知",1:"经典蓝牙耳机",2:"BLE双端",3:"BLE单端",4:"智能录音笔",5:"智能眼镜",6:"激活码卡片"},k=[{key:"iscanbindagain",label:"可重复绑定奖励"},{key:"iscontinuouschat",label:"连续对话"},{key:"eqenable",label:"EQ 均衡器"},{key:"keyenable",label:"按键控制"},{key:"workmodeenable",label:"工作模式"},{key:"callmodeenable",label:"通话模式"},{key:"ledenable",label:"LED 灯"},{key:"finddeviceenable",label:"查找设备"},{key:"noisereductionenable",label:"降噪"},{key:"shutdownenable",label:"定时关机"},{key:"showcasebattery",label:"充电盒电量"},{key:"wakeupenable",label:"唤醒控制"},{key:"broadcastpeertranslate",label:"播报对方翻译"},{key:"hideaiassistant",label:"隐藏AI助手"}],h=p("list"),U=p([]),K=p({}),A=p([]),E=p([]),M=p(!1),I=p(!1),V=p(!1);function ee(){const l={};return k.forEach(t=>{l[t.key]=!1}),l}const n=P({id:0,devicename:"",brandid:0,devicetype:0,scanuuid:"",devicecodecount:1,productimage:"",channel:"official",appnames:[],bindrewardvpitime:0,bindrewardtranslate:0,bindrewardmeeting:0,toggles:ee()}),b=P({platform_id:"",platform_key:"",tui:""});function Y(l){return l?Number(l).toString(16).toUpperCase():""}function T(l){return String(l.appnames||"").split(",").map(t=>t.trim()).filter(Boolean)}function te(l){return k.filter(t=>!!l[t.key]).length}async function z(){M.value=!0;try{const l=await m("getbrands",{}),t={};(l?.brands??[]).forEach(c=>{t[c.id]=c.brand}),K.value=t;const s=await m("getproducts",{});U.value=s?.products??[]}catch(l){f(l?.message??"获取产品列表失败"),U.value=[]}finally{M.value=!1}}async function se(){try{const l=await m("getbrands",{});A.value=l?.brands??[]}catch{A.value=[]}}async function le(){try{const l=await W("products/list",{});E.value=(l??[]).map(t=>t.name).filter(Boolean)}catch{E.value=[]}}function N(){h.value="list",z()}function Q(l){if(se(),le(),l){V.value=!0,n.id=l.id,n.devicename=l.devicename||"",n.brandid=l.brandid||0,n.devicetype=l.devicetype||0,n.scanuuid=l.scanuuid||"",n.devicecodecount=l.devicecodecount===2?2:1,n.productimage=l.productimage||"",n.channel=l.channel||"official",n.appnames=T(l),n.bindrewardvpitime=l.bindrewardvpitime||0,n.bindrewardtranslate=l.bindrewardtranslate||0,n.bindrewardmeeting=l.bindrewardmeeting||0;let t={};try{t=l.channelextra?JSON.parse(l.channelextra):{}}catch{t={}}b.platform_id=t.platform_id||"",b.platform_key=t.platform_key||"",b.tui=t.tui||"",k.forEach(s=>{n.toggles[s.key]=!!l[s.key]})}else V.value=!1,n.id=0,n.devicename="",n.brandid=0,n.devicetype=0,n.scanuuid="",n.devicecodecount=1,n.productimage="",n.channel="official",n.appnames=[],n.bindrewardvpitime=0,n.bindrewardtranslate=0,n.bindrewardmeeting=0,b.platform_id="",b.platform_key="",b.tui="",k.forEach(t=>{n.toggles[t.key]=!1});h.value="form"}async function ne(){I.value=!0;try{let l="";n.channel==="mobile"&&(l=JSON.stringify({platform_id:b.platform_id||"",platform_key:b.platform_key||"",tui:b.tui||""}));const t={devicename:n.devicename,brandid:Number(n.brandid)||0,devicetype:Number(n.devicetype)||0,scanuuid:n.scanuuid,devicecodecount:Number(n.devicecodecount)||1,productimage:n.productimage,channel:n.channel,channelextra:l,appnames:n.appnames.join(","),bindrewardvpitime:Number(n.bindrewardvpitime)||0,bindrewardtranslate:Number(n.bindrewardtranslate)||0,bindrewardmeeting:Number(n.bindrewardmeeting)||0};k.forEach(s=>{t[s.key]=n.toggles[s.key]}),V.value&&(t.id=Number(n.id)),await m(V.value?"updateproduct":"addproduct",{product:t}),w("保存成功"),N()}catch(l){f(l?.message??"保存失败")}finally{I.value=!1}}function ae(l){window.confirm(`确定删除产品 "${l.devicename}" 吗?`)&&m("delproduct",{id:l.id}).then(()=>{w("已删除"),z()}).catch(t=>f(t?.message??"删除失败"))}const F=p(null),$=p(!1);function oe(l){F.value=l.target.files?.[0]??null}async function ie(){if(!F.value){O("请先选择图片");return}$.value=!0;try{const l=n.id?`product/${n.id}/images/`:"product/images/",t=await J(F.value,l);n.productimage=t,w("上传成功")}catch(l){f(l?.message??"上传失败")}finally{$.value=!1}}const r=p(null),C=p([]),D=p(!1),u=P({version:"",desc:"",isuse:!1}),_=p(null),de=fe(()=>!!u.version.trim()&&!!_.value);function j(l){return!!r.value?.versionid&&l.id===r.value.versionid}async function re(l){h.value="version",r.value=null,C.value=[],u.version="",u.desc="",u.isuse=!1,_.value=null;try{const t=await m("getproduct",{id:l.id});r.value=t?.product??l}catch{r.value=l}await S(l.id)}async function S(l){try{const t=await m("getproductversions",{pid:l});C.value=t?.versions??[]}catch{C.value=[]}}function ue(l){_.value=l.target.files?.[0]??null}async function R(l){if(!r.value)return f("产品信息未加载"),!1;const t={...r.value,versionid:l.id};try{await m("updateproduct",{product:t});const s=await m("getproduct",{id:t.id});return r.value=s?.product??t,!0}catch(s){return f(s?.message??"切换失败"),!1}}function ce(l){window.confirm(`确定将版本 "${l.version}" 设为当前使用版本?`)&&R(l).then(t=>{t&&(w("切换成功"),r.value&&S(r.value.id))})}async function be(){const l=r.value?.id;if(!l){f("产品ID不存在");return}if(!u.version.trim()){O("请输入版本号");return}if(!_.value){O("请选择固件文件");return}D.value=!0;try{const t=await J(_.value,`product/${l}/`),s=await m("addproductversion",{version:{productid:l,version:u.version.trim(),description:u.desc,updatepackageaddress:t},isuse:!1});w("添加成功"),u.isuse&&s?.version&&await R(s.version),u.version="",u.desc="",u.isuse=!1,_.value=null,await S(l)}catch(t){f(t?.message??"添加失败")}finally{D.value=!1}}function pe(l){if(r.value?.versionid===l.id){f("不能删除当前使用中的版本");return}window.confirm("删除此版本?")&&m("delproductversion",{id:l.id}).then(()=>{w("已删除"),r.value&&S(r.value.id)}).catch(t=>f(t?.message??"删除失败"))}return ve(z),(l,t)=>(o(),a("div",null,[i(e("div",null,[e("div",we,[t[21]||(t[21]=e("h2",{class:"text-lg font-semibold text-slate-800"},"产品列表",-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=s=>Q())},"+ 新增产品")]),e("div",ke,[e("div",he,[e("table",_e,[t[25]||(t[25]=e("thead",null,[e("tr",null,[e("th",null,"ID"),e("th",null,"图片"),e("th",null,"名称"),e("th",null,"品牌商"),e("th",null,"绑定应用"),e("th",null,"类型"),e("th",null,"版本"),e("th",null,"功能"),e("th",null,"操作")])],-1)),e("tbody",null,[M.value?(o(),a("tr",Ve,[...t[22]||(t[22]=[e("td",{colspan:"9",class:"text-center py-8"},[e("span",{class:"loading loading-spinner loading-sm"})],-1)])])):U.value.length?g("",!0):(o(),a("tr",Ce,[...t[23]||(t[23]=[e("td",{colspan:"9",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(o(!0),a(x,null,y(U.value,s=>(o(),a("tr",{key:s.id},[e("td",Ue,d(Y(s.id)),1),e("td",null,[s.productimage?(o(),a("img",{key:0,src:s.productimage,class:"w-10 h-10 rounded object-cover"},null,8,Ee)):(o(),a("div",Ie,[...t[24]||(t[24]=[e("svg",{class:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})],-1)])]))]),e("td",Ne,d(s.devicename),1),e("td",null,d(K.value[s.brandid]||""),1),e("td",null,[T(s).length?(o(),a("div",$e,[(o(!0),a(x,null,y(T(s),c=>(o(),a("span",{key:c,class:"badge badge-ghost badge-sm"},d(c),1))),128))])):(o(),a("span",De,"未绑定"))]),e("td",null,[e("span",Se,d(X[s.devicetype]||s.devicetype),1)]),e("td",Be,[s.version?(o(),a("span",Le,d(s.version),1)):(o(),a("span",Oe,"-"))]),e("td",null,[e("span",Ae,d(te(s))+"/14",1)]),e("td",null,[e("div",Me,[e("button",{class:"btn btn-ghost btn-xs",onClick:c=>Q(s)},"编辑",8,Te),e("button",{class:"btn btn-ghost btn-xs text-indigo-600",onClick:c=>re(s)},"版本",8,ze),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:c=>ae(s)},"删除",8,Fe)])])]))),128))])])])])],512),[[B,h.value==="list"]]),i(e("div",null,[e("div",je,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[1]||(t[1]=s=>N())},"← 返回列表"),e("h2",Pe,d(V.value?"编辑产品":"新增产品"),1)]),e("div",qe,[e("form",{onSubmit:G(ne,["prevent"])},[t[45]||(t[45]=e("h3",{class:"text-sm font-semibold text-slate-500 mb-3"},"基本信息",-1)),e("div",He,[t[26]||(t[26]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"产品名称 *")],-1)),i(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>n.devicename=s),type:"text",class:"input input-bordered w-full",required:""},null,512),[[v,n.devicename]])]),e("div",Je,[e("div",Ke,[t[28]||(t[28]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"所属品牌商")],-1)),i(e("select",{"onUpdate:modelValue":t[3]||(t[3]=s=>n.brandid=s),class:"select select-bordered w-full"},[t[27]||(t[27]=e("option",{value:0},"请选择",-1)),(o(!0),a(x,null,y(A.value,s=>(o(),a("option",{key:s.id,value:s.id},d(s.brand),9,Ye))),128))],512),[[L,n.brandid,void 0,{number:!0}]])]),e("div",Qe,[t[29]||(t[29]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"设备类型")],-1)),i(e("select",{"onUpdate:modelValue":t[4]||(t[4]=s=>n.devicetype=s),class:"select select-bordered w-full"},[(o(),a(x,null,y(Z,(s,c)=>e("option",{key:c,value:Number(c)},d(s),9,Re)),64))],512),[[L,n.devicetype,void 0,{number:!0}]])])]),e("div",Ge,[t[30]||(t[30]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"绑定应用"),e("span",{class:"label-text-alt text-slate-400"},"可多选;品牌商/渠道商账号的「应用」下拉只列出其产品绑定过的应用")],-1)),E.value.length?(o(),a("div",Xe,[(o(!0),a(x,null,y(E.value,s=>(o(),a("label",{key:s,class:"label cursor-pointer gap-2 py-1"},[i(e("input",{"onUpdate:modelValue":t[5]||(t[5]=c=>n.appnames=c),type:"checkbox",value:s,class:"checkbox checkbox-sm checkbox-primary"},null,8,Ze),[[H,n.appnames]]),e("span",et,d(s),1)]))),128))])):(o(),a("div",We," 暂无可选应用,请先到【SaaS 管理 → 应用中心】新建应用 "))]),e("div",tt,[e("div",st,[t[31]||(t[31]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"扫描UUID")],-1)),i(e("input",{"onUpdate:modelValue":t[6]||(t[6]=s=>n.scanuuid=s),type:"text",class:"input input-bordered w-full"},null,512),[[v,n.scanuuid]])]),e("div",lt,[t[33]||(t[33]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"设备码数量(每副)")],-1)),i(e("select",{"onUpdate:modelValue":t[7]||(t[7]=s=>n.devicecodecount=s),class:"select select-bordered w-full"},[...t[32]||(t[32]=[e("option",{value:1},"单份 (1个/副)",-1),e("option",{value:2},"双份 (2个/副)",-1)])],512),[[L,n.devicecodecount,void 0,{number:!0}]])])]),e("div",nt,[e("div",at,[t[35]||(t[35]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"渠道方")],-1)),i(e("select",{"onUpdate:modelValue":t[8]||(t[8]=s=>n.channel=s),class:"select select-bordered w-full"},[...t[34]||(t[34]=[e("option",{value:"official"},"官方",-1),e("option",{value:"mobile"},"移动",-1)])],512),[[L,n.channel]])])]),i(e("div",ot,[e("div",it,[e("div",dt,[t[36]||(t[36]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"移动平台ID")],-1)),i(e("input",{"onUpdate:modelValue":t[9]||(t[9]=s=>b.platform_id=s),type:"text",class:"input input-bordered w-full",placeholder:"移动平台分配的 ID"},null,512),[[v,b.platform_id]])]),e("div",rt,[t[37]||(t[37]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"移动平台KEY")],-1)),i(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>b.platform_key=s),type:"text",class:"input input-bordered w-full",placeholder:"移动平台分配的 KEY"},null,512),[[v,b.platform_key]])]),e("div",ut,[t[38]||(t[38]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"TUI(8位)")],-1)),i(e("input",{"onUpdate:modelValue":t[11]||(t[11]=s=>b.tui=s),type:"text",maxlength:"8",class:"input input-bordered w-full",placeholder:"CMEI 前缀,如 11113396"},null,512),[[v,b.tui]])])])],512),[[B,n.channel==="mobile"]]),e("div",ct,[t[40]||(t[40]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"产品图片")],-1)),e("div",bt,[e("div",pt,[i(e("input",{"onUpdate:modelValue":t[12]||(t[12]=s=>n.productimage=s),type:"text",class:"input input-bordered w-full input-sm mb-2",placeholder:"图片URL(可手动输入或上传)"},null,512),[[v,n.productimage]]),e("div",mt,[e("input",{type:"file",accept:"image/*",class:"file-input file-input-bordered file-input-sm flex-1",onChange:oe},null,32),e("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",disabled:$.value,onClick:ie},[$.value?(o(),a("span",ft)):g("",!0),t[39]||(t[39]=q("上传 ",-1))],8,vt)])]),n.productimage?(o(),a("div",gt,[e("img",{src:n.productimage,class:"w-20 h-20 object-cover rounded-lg border"},null,8,xt)])):g("",!0)])]),t[46]||(t[46]=e("div",{class:"divider text-sm text-slate-400"},"绑定奖励设置",-1)),e("div",yt,[e("div",wt,[t[41]||(t[41]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"VIP时长(天)")],-1)),i(e("input",{"onUpdate:modelValue":t[13]||(t[13]=s=>n.bindrewardvpitime=s),type:"number",min:"0",class:"input input-bordered w-full"},null,512),[[v,n.bindrewardvpitime,void 0,{number:!0}]])]),e("div",kt,[t[42]||(t[42]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"翻译时长(分钟)")],-1)),i(e("input",{"onUpdate:modelValue":t[14]||(t[14]=s=>n.bindrewardtranslate=s),type:"number",min:"0",class:"input input-bordered w-full"},null,512),[[v,n.bindrewardtranslate,void 0,{number:!0}]])]),e("div",ht,[t[43]||(t[43]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"会议时长(分钟)")],-1)),i(e("input",{"onUpdate:modelValue":t[15]||(t[15]=s=>n.bindrewardmeeting=s),type:"number",min:"0",class:"input input-bordered w-full"},null,512),[[v,n.bindrewardmeeting,void 0,{number:!0}]])])]),t[47]||(t[47]=e("div",{class:"divider text-sm text-slate-400"},"功能开关",-1)),e("div",_t,[(o(),a(x,null,y(k,s=>e("label",{key:s.key,class:"flex items-center gap-2 cursor-pointer"},[i(e("input",{"onUpdate:modelValue":c=>n.toggles[s.key]=c,type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,8,Vt),[[H,n.toggles[s.key]]]),e("span",Ct,d(s.label),1)])),64))]),e("div",Ut,[e("button",{type:"button",class:"btn btn-ghost",onClick:t[16]||(t[16]=s=>N())},"取消"),e("button",{type:"submit",class:"btn btn-primary text-white",disabled:I.value},[I.value?(o(),a("span",It)):g("",!0),t[44]||(t[44]=q("保存 ",-1))],8,Et)])],32)])],512),[[B,h.value==="form"]]),i(e("div",null,[e("div",Nt,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[17]||(t[17]=s=>N())},"← 返回产品列表"),e("h2",$t,"版本管理 - "+d(r.value?.devicename||""),1)]),r.value?(o(),a("div",Dt,[e("div",St,[t[48]||(t[48]=e("span",{class:"text-slate-400"},"产品ID:",-1)),e("span",Bt,d(Y(r.value.id)),1),t[49]||(t[49]=e("span",{class:"text-slate-400"},"当前版本:",-1)),e("span",Lt,d(r.value.version||"无"),1),t[50]||(t[50]=e("span",{class:"text-slate-400"},"版本ID:",-1)),e("span",Ot,d(r.value.versionid||"无"),1),t[51]||(t[51]=e("span",{class:"text-slate-400"},"更新包:",-1)),e("span",At,d(r.value.updatepackageaddress||"无"),1)])])):g("",!0),e("div",Mt,[t[57]||(t[57]=e("h3",{class:"text-sm font-semibold text-slate-700 mb-3"},"添加新版本",-1)),e("form",{onSubmit:G(be,["prevent"])},[e("div",Tt,[e("div",zt,[t[52]||(t[52]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"版本号 *")],-1)),i(e("input",{"onUpdate:modelValue":t[18]||(t[18]=s=>u.version=s),type:"text",class:"input input-bordered input-sm w-full",placeholder:"如 1.2.0"},null,512),[[v,u.version]])]),e("div",Ft,[t[53]||(t[53]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"描述")],-1)),i(e("input",{"onUpdate:modelValue":t[19]||(t[19]=s=>u.desc=s),type:"text",class:"input input-bordered input-sm w-full",placeholder:"版本描述"},null,512),[[v,u.desc]])])]),e("div",jt,[t[54]||(t[54]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"OTA 更新包 *")],-1)),e("input",{type:"file",class:"file-input file-input-bordered file-input-sm w-full",accept:".bin,.hex,.zip,.gz,.tar,.ota,.ufw,.fot",onChange:ue},null,32)]),e("div",Pt,[e("label",qt,[i(e("input",{"onUpdate:modelValue":t[20]||(t[20]=s=>u.isuse=s),type:"checkbox",class:"checkbox checkbox-primary checkbox-sm"},null,512),[[H,u.isuse]]),t[55]||(t[55]=e("span",{class:"text-sm"},"设为当前使用版本",-1))]),e("button",{type:"submit",class:"btn btn-primary btn-sm text-white ml-auto",disabled:!de.value||D.value},[D.value?(o(),a("span",Jt)):g("",!0),t[56]||(t[56]=q("添加版本 ",-1))],8,Ht)])],32)]),e("div",Kt,[e("div",Yt,[e("table",Qt,[t[59]||(t[59]=e("thead",null,[e("tr",null,[e("th",null,"ID"),e("th",null,"版本号"),e("th",null,"描述"),e("th",null,"更新包地址"),e("th",null,"操作")])],-1)),e("tbody",null,[C.value.length?g("",!0):(o(),a("tr",Rt,[...t[58]||(t[58]=[e("td",{colspan:"5",class:"text-center text-slate-400 py-8"},"暂无版本",-1)])])),(o(!0),a(x,null,y(C.value,s=>(o(),a("tr",{key:s.id},[e("td",null,d(s.id),1),e("td",null,[e("span",{class:ge(["badge badge-sm",j(s)?"badge-primary":"badge-outline"])},d(s.version),3),j(s)?(o(),a("span",Gt,"当前")):g("",!0)]),e("td",Wt,d(s.description||""),1),e("td",Xt,d(s.updatepackageaddress||""),1),e("td",null,[e("div",Zt,[j(s)?(o(),a("span",es,"使用中")):(o(),a(x,{key:1},[e("button",{class:"btn btn-ghost btn-xs text-indigo-600",onClick:c=>ce(s)},"设为当前",8,ts),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:c=>pe(s)},"删除",8,ss)],64))])])]))),128))])])])])],512),[[B,h.value==="version"]])]))}});export{is as default}; diff --git a/apps/admin/.output/public/_nuxt/Bs6lDwyi.js b/apps/admin/.output/public/_nuxt/DZfr_EfO.js similarity index 99% rename from apps/admin/.output/public/_nuxt/Bs6lDwyi.js rename to apps/admin/.output/public/_nuxt/DZfr_EfO.js index 0e1163c0..e92226cf 100644 --- a/apps/admin/.output/public/_nuxt/Bs6lDwyi.js +++ b/apps/admin/.output/public/_nuxt/DZfr_EfO.js @@ -1 +1 @@ -import{g as W,C as X,c as r,a as t,q as a,s as Q,F,r as N,H as T,t as l,l as Z,p as tt,v as b,x as et,y as i,z as E,o as u}from"./DSy_gLdM.js";import{u as st}from"./NtXZuCUg.js";import{u as nt}from"./EeX3zgoF.js";const ot={class:"space-y-6"},lt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4"},at={class:"flex items-end gap-3 flex-wrap"},dt={class:"form-control"},rt=["value"],it={class:"form-control"},ut=["disabled"],ct={class:"bg-white rounded-xl shadow-sm border border-slate-100"},mt={class:"overflow-x-auto"},bt={class:"table table-zebra"},pt={key:0},vt={key:1},ft={colspan:"9",class:"text-center text-slate-400 py-8"},xt={class:"font-mono text-base font-bold text-indigo-700"},gt={class:"text-sm"},wt={class:"text-sm"},ht={class:"text-sm text-slate-500"},yt={class:"text-sm"},kt={class:"text-sm"},_t={class:"text-sm"},Ct={key:0,class:"badge badge-success badge-sm text-white"},Vt={key:1,class:"badge badge-ghost badge-sm"},Mt={class:"flex gap-1"},Ut=["onClick"],Dt=["onClick"],Qt=["onClick"],Ft=["onClick"],Nt={class:"flex items-center gap-3 mb-5"},Tt={class:"text-lg font-semibold text-slate-800"},qt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},Lt={class:"form-control mb-4"},St=["value"],Et={class:"form-control mb-4"},$t={class:"grid grid-cols-3 gap-3 mb-4"},Bt={class:"form-control"},Rt={class:"form-control"},jt={class:"form-control"},It={class:"grid grid-cols-2 gap-3 mb-4"},zt={class:"form-control"},Ht={class:"form-control"},Pt={class:"form-control mb-6"},At={class:"label cursor-pointer justify-start gap-3"},Yt={class:"modal-box max-w-md"},Gt={class:"flex flex-col items-center gap-4"},Jt={class:"text-center"},Kt={class:"font-mono text-2xl font-bold text-indigo-700 tracking-widest"},Ot="https://cdn.jsdelivr.net/gh/davidshimjs/qrcodejs/qrcode.min.js",ee=W({__name:"code",setup(Wt){const{webApi:c}=st(),{success:g,error:p,warn:w}=nt(),h=i("list"),C=i(!1),v=i(!1),m=i(0),V=i(-1),y=i([]),M=i([]),k=i([]),U=E({}),o=E({code:"",productid:0,remark:"",bindrewardvpitime:0,bindrewardtranslate:0,bindrewardmeeting:0,maxuses:0,expire:"",disabled:!1});function $(n){return n?new Date(n*1e3).toLocaleString():"永久"}function B(n){if(!n)return"";const e=new Date(n*1e3),s=d=>d<10?"0"+d:""+d;return e.getFullYear()+"-"+s(e.getMonth()+1)+"-"+s(e.getDate())+"T"+s(e.getHours())+":"+s(e.getMinutes())}function R(n){return n?Math.floor(new Date(n).getTime()/1e3):0}function j(n){return U[n.brandid]||(n.brandid?"品牌商#"+n.brandid:"-")}function I(n){const e=k.value.find(s=>s.id===n.productid);return e?e.devicename||"#"+n.productid:n.productid?"#"+n.productid:"-"}function _(){h.value="list",f()}function z(){_()}async function f(){C.value=!0;try{const n=await c("getfactorypubliccodes",{brandid:m.value,status:V.value});y.value=n?.codes??[]}catch(n){p(n?.message??"获取公码列表失败"),y.value=[]}finally{C.value=!1}}function q(n){if(!m.value){w("请先选择品牌商");return}n?(v.value=!0,o.code=n.code,o.productid=n.productid||0,o.remark=n.remark||"",o.bindrewardvpitime=n.bindrewardvpitime||0,o.bindrewardtranslate=n.bindrewardtranslate||0,o.bindrewardmeeting=n.bindrewardmeeting||0,o.maxuses=n.maxuses||0,o.expire=B(n.expiretime),o.disabled=n.status===1):(v.value=!1,o.code="",o.productid=0,o.remark="",o.bindrewardvpitime=0,o.bindrewardtranslate=0,o.bindrewardmeeting=0,o.maxuses=0,o.expire="",o.disabled=!1),h.value="form"}async function H(){const n={productid:Number(o.productid)||0,remark:o.remark,maxuses:Number(o.maxuses)||0,expiretime:R(o.expire),bindrewardvpitime:Number(o.bindrewardvpitime)||0,bindrewardtranslate:Number(o.bindrewardtranslate)||0,bindrewardmeeting:Number(o.bindrewardmeeting)||0};try{if(v.value)n.code=o.code,n.status=o.disabled?1:0,await c("updatefactorypubliccode",n),g("保存成功");else{n.brandid=m.value;const e=await c("createfactorypubliccode",n);g("新公码已生成:"+(e?.code?.code||""))}_()}catch(e){p(e?.message??"保存失败")}}async function P(n){const e=n.status===0?1:0;try{await c("updatefactorypubliccode",{code:n.code,productid:n.productid||0,remark:n.remark||"",status:e,maxuses:n.maxuses||0,expiretime:n.expiretime||0,bindrewardvpitime:n.bindrewardvpitime||0,bindrewardtranslate:n.bindrewardtranslate||0,bindrewardmeeting:n.bindrewardmeeting||0}),g(e===1?"已停用":"已启用"),f()}catch(s){p(s?.message??"操作失败")}}function A(n){window.confirm(`确定删除公码 "${n}" 吗?删除后该码无法再被领取(已领取记录保留)`)&&c("delfactorypubliccode",{code:n}).then(()=>{g("删除成功"),f()}).catch(e=>p(e?.message??"删除失败"))}const L=i(null),D=i(null),x=i("");function Y(){return new Promise((n,e)=>{const s=window;if(s.QRCode){n(s.QRCode);return}const d=document.createElement("script");d.src=Ot,d.onload=()=>n(s.QRCode),d.onerror=()=>e(new Error("二维码库加载失败")),document.head.appendChild(d)})}async function G(n){x.value=n,L.value?.showModal();let e;try{e=await Y()}catch{p("二维码库加载失败");return}const s=D.value;!s||!e||(s.innerHTML="",new e(s,{text:n,width:240,height:240,colorDark:"#1E293B",colorLight:"#FFFFFF",correctLevel:e.CorrectLevel.H}))}function S(){const n=D.value;if(!n)return"";const e=n.querySelector("canvas");if(e)return e.toDataURL("image/png");const s=n.querySelector("img");return s?s.src:""}function J(){const n=S();if(!n){w("二维码尚未生成");return}const e=document.createElement("a");e.href=n,e.download="publiccode_"+x.value+".png",document.body.appendChild(e),e.click(),document.body.removeChild(e)}function K(){const n=S();if(!n){w("二维码尚未生成");return}const e=window.open("","_blank");if(!e){w("浏览器拦截了打印窗口");return}e.document.write(""+x.value+'

'+x.value+"

新用户扫码领取奖励

\n\n\n"],"names":["_ssrRenderAttrs","_ssrRenderStyle","_ssrRenderList","_ssrInterpolate","_ssrRenderClass","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrLooseEqual","_ssrLooseContain","_unref"],"mappings":"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"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CM5YEJ4p.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CM5YEJ4p.js.map.json new file mode 100644 index 00000000..125994a3 --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CM5YEJ4p.js.map.json @@ -0,0 +1 @@ +{"file":"accounts-CM5YEJ4p.js","mappings":"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","names":["_ssrRenderAttrs","_ssrRenderStyle","_ssrRenderList","_ssrInterpolate","_ssrRenderClass","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrLooseEqual","_ssrLooseContain","_unref"],"sources":["../../../../../../../app/pages/accounts.vue"],"sourcesContent":["\n\n\n\n\n"],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CampayFP.js b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CampayFP.js deleted file mode 100644 index 74a0fbe2..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CampayFP.js +++ /dev/null @@ -1,196 +0,0 @@ -import { defineComponent, ref, computed, reactive, watch, unref, useSSRContext } from "vue"; -import { ssrRenderAttrs, ssrRenderStyle, ssrRenderList, ssrInterpolate, ssrRenderClass, ssrRenderAttr, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual } from "vue/server-renderer"; -import { u as useApi } from "./useApi-BNSkSrat.js"; -import { u as useToast } from "./useToast-MBvLaNjH.js"; -import { D as DEFAULT_ADMIN_ACCESS, M as MENU_GROUPS, _ as _export_sfc } from "../server.mjs"; -import { R as REGION_OPTIONS } from "./regions-D1dSykUW.js"; -import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/node.mjs"; -import "#internal/nuxt/paths"; -import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/hookable@6.1.1/node_modules/hookable/dist/index.mjs"; -import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/unctx@2.5.0/node_modules/unctx/dist/index.mjs"; -import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/h3-compat.mjs"; -import "pinia"; -import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/defu@6.1.7/node_modules/defu/dist/defu.mjs"; -import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/ufo@1.6.4/node_modules/ufo/dist/index.mjs"; -import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/perfect-debounce@2.1.0/node_modules/perfect-debounce/dist/index.mjs"; -import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/index.mjs"; -import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/klona@2.0.6/node_modules/klona/dist/index.mjs"; -const _sfc_main = /* @__PURE__ */ defineComponent({ - __name: "accounts", - __ssrInlineRender: true, - setup(__props) { - useApi(); - useToast(); - const ROLE = { 1: "超管", 2: "管理员", 3: "品牌商", 4: "运营", 5: "渠道商" }; - const ROLE_CLS = { 1: "badge-error", 2: "badge-primary", 3: "badge-warning", 4: "badge-info", 5: "badge-accent" }; - const view = ref("list"); - const rows = ref([]); - const apps = ref([]); - const appNames = computed( - () => [...new Set(apps.value.map((a) => a.app_name || a.name).filter(Boolean))].sort() - ); - const loading = ref(false); - const submitting = ref(false); - const editId = ref(0); - const form = reactive({ - username: "", - password: "", - identity: 2, - enabled: "1", - remark: "", - brandid: 0, - channelid: "" - }); - const channels = ref([]); - const accountChannelOptions = computed( - () => form.brandid ? channels.value.filter((ch) => ch.brandid === form.brandid) : [] - ); - const sel = reactive({ - access: [], - apps: [], - regions: [], - products: [] - }); - const brands = ref([]); - const productGroups = ref([]); - const prodLoading = ref(false); - function fromCsv(s) { - return (s || "").split(",").map((x) => x.trim()).filter((x) => x); - } - function scopeParts(a) { - const parts = []; - if (a.apps) parts.push("应用:" + fromCsv(a.apps).length); - if (a.regions) parts.push("区域:" + fromCsv(a.regions).length); - if (a.products) parts.push("产品:" + fromCsv(a.products).length); - if (a.access) parts.push("页面:" + fromCsv(a.access).length); - return parts; - } - watch(() => form.identity, (idt) => { - if (idt === 2 && sel.access.length === 0) sel.access = DEFAULT_ADMIN_ACCESS.slice(); - }); - ref(null); - ref(0); - const topup = reactive({ - name: "", - cur: "", - vipday: 0, - trademin: 0, - meetmin: 0 - }); - return (_ctx, _push, _parent, _attrs) => { - _push(`

后台账号

超管 / 管理员 / 代理 / 运营。代理·运营可绑定应用·区域·产品,登录后仪表盘按绑定限制。

`); - if (loading.value) { - _push(``); - } else if (!rows.value.length) { - _push(``); - } else { - _push(``); - } - _push(``); - ssrRenderList(rows.value, (a) => { - _push(``); - }); - _push(`
ID用户名角色状态绑定作用域备注操作
加载中...
暂无账号(引导超管不在此列)
${ssrInterpolate(a.id)}${ssrInterpolate(a.username || "")}${ssrInterpolate(ROLE[a.identity] || a.identity)}`); - if (a.enabled) { - _push(`启用`); - } else { - _push(`停用`); - } - _push(``); - if (a.identity === 3 || a.identity === 4) { - _push(``); - if (scopeParts(a).length) { - _push(`${ssrInterpolate(scopeParts(a).join(" · "))}`); - } else { - _push(`未绑定(不限)`); - } - _push(``); - } else if (a.identity === 2) { - _push(``); - if (a.access) { - _push(`菜单:${ssrInterpolate(fromCsv(a.access).length)}`); - } else { - _push(`默认(除SaaS/系统管理)`); - } - _push(``); - } else { - _push(`全部权限`); - } - if (a.identity === 3) { - _push(`
余额 VIP${ssrInterpolate(a.balance_vipday || 0)}天 · 翻译${ssrInterpolate(a.balance_trademin || 0)}分 · 会议${ssrInterpolate(a.balance_meetmin || 0)}分
`); - } else { - _push(``); - } - _push(`
${ssrInterpolate(a.remark || "")}
`); - if (a.identity === 3) { - _push(``); - } else { - _push(``); - } - _push(`

${ssrInterpolate(editId.value ? "编辑账号 #" + editId.value : "新建账号")}

菜单权限

管理员默认开放除「SaaS 管理 / 系统管理」以外的全部菜单(权限留空时按默认生效);代理/运营需显式勾选。

`); - ssrRenderList(unref(MENU_GROUPS), (g) => { - _push(`
${ssrInterpolate(g.label)}`); - if (g.restricted) { - _push(`(管理员默认不开放)`); - } else { - _push(``); - } - _push(`
`); - ssrRenderList(g.items, (m) => { - _push(``); - }); - _push(`
`); - }); - _push(`
归属绑定 (品牌商账号只绑品牌商;渠道商账号两者都要绑)

数据隔离由后端强制:品牌商账号只能看到本品牌商及其名下渠道商的数据,渠道商账号只能看到自己渠道的数据。

作用域绑定 (代理/运营生效;限制仪表盘数据范围)
绑定应用 (仪表盘只显示这些应用数据;不勾=不限)
`); - if (appNames.value.length) { - _push(``); - ssrRenderList(appNames.value, (n) => { - _push(``); - }); - _push(``); - } else { - _push(`无注册应用`); - } - _push(`
绑定区域 (不勾=不限)
`); - ssrRenderList(unref(REGION_OPTIONS), (r) => { - _push(``); - }); - _push(`
绑定产品 (按厂家分组;仪表盘只显示这些产品数据;不勾=不限)
`); - if (prodLoading.value) { - _push(`加载产品中...`); - } else if (!productGroups.value.length) { - _push(`无产品`); - } else { - _push(``); - ssrRenderList(productGroups.value, (g) => { - _push(`
🏭 ${ssrInterpolate(g.label)}
`); - ssrRenderList(g.products, (p) => { - _push(``); - }); - _push(`
`); - }); - _push(``); - } - _push(`
`); - }; - } -}); -const _sfc_setup = _sfc_main.setup; -_sfc_main.setup = (props, ctx) => { - const ssrContext = useSSRContext(); - (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/accounts.vue"); - return _sfc_setup ? _sfc_setup(props, ctx) : void 0; -}; -const accounts = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b47e60f8"]]); -export { - accounts as default -}; -//# sourceMappingURL=accounts-CampayFP.js.map diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CampayFP.js.map b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CampayFP.js.map deleted file mode 100644 index 992df2b7..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CampayFP.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"accounts-CampayFP.js","sources":["../../../../../../../app/pages/accounts.vue"],"sourcesContent":["\n\n\n\n\n"],"names":["_ssrRenderAttrs","_ssrRenderStyle","_ssrRenderList","_ssrInterpolate","_ssrRenderClass","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrLooseEqual","_ssrLooseContain","_unref"],"mappings":"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"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CampayFP.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CampayFP.js.map.json deleted file mode 100644 index 25ba9f1a..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-CampayFP.js.map.json +++ /dev/null @@ -1 +0,0 @@ -{"file":"accounts-CampayFP.js","mappings":"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","names":["_ssrRenderAttrs","_ssrRenderStyle","_ssrRenderList","_ssrInterpolate","_ssrRenderClass","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrLooseEqual","_ssrLooseContain","_unref"],"sources":["../../../../../../../app/pages/accounts.vue"],"sourcesContent":["\n\n\n\n\n"],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BUD0U4Q9.js b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BUD0U4Q9.js deleted file mode 100644 index 271e24a6..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BUD0U4Q9.js +++ /dev/null @@ -1,5 +0,0 @@ -const accounts_vue_vue_type_style_index_0_scoped_b47e60f8_lang = ".chk[data-v-b47e60f8]{display:flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid #e2e8f0;border-radius:8px;font-size:12px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chk[data-v-b47e60f8]:hover{background:#f8fafc}.chk input[data-v-b47e60f8]{width:14px;height:14px}"; -export { - accounts_vue_vue_type_style_index_0_scoped_b47e60f8_lang as default -}; -//# sourceMappingURL=accounts-styles-1.mjs-BUD0U4Q9.js.map diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BUD0U4Q9.js.map b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BUD0U4Q9.js.map deleted file mode 100644 index 6ff7d0bd..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BUD0U4Q9.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"accounts-styles-1.mjs-BUD0U4Q9.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BUD0U4Q9.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BUD0U4Q9.js.map.json deleted file mode 100644 index 27f01f8e..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BUD0U4Q9.js.map.json +++ /dev/null @@ -1 +0,0 @@ -{"file":"accounts-styles-1.mjs-BUD0U4Q9.js","mappings":";","names":[],"sources":[],"sourcesContent":[],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BqkDag56.js b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BqkDag56.js new file mode 100644 index 00000000..c768d23c --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BqkDag56.js @@ -0,0 +1,5 @@ +const accounts_vue_vue_type_style_index_0_scoped_a2832f1b_lang = ".chk[data-v-a2832f1b]{display:flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid #e2e8f0;border-radius:8px;font-size:12px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chk[data-v-a2832f1b]:hover{background:#f8fafc}.chk input[data-v-a2832f1b]{width:14px;height:14px}"; +export { + accounts_vue_vue_type_style_index_0_scoped_a2832f1b_lang as default +}; +//# sourceMappingURL=accounts-styles-1.mjs-BqkDag56.js.map diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BqkDag56.js.map b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BqkDag56.js.map new file mode 100644 index 00000000..17c2df9a --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BqkDag56.js.map @@ -0,0 +1 @@ +{"version":3,"file":"accounts-styles-1.mjs-BqkDag56.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BqkDag56.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BqkDag56.js.map.json new file mode 100644 index 00000000..e547ff02 --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-BqkDag56.js.map.json @@ -0,0 +1 @@ +{"file":"accounts-styles-1.mjs-BqkDag56.js","mappings":";","names":[],"sources":[],"sourcesContent":[],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles.B912aimJ.mjs b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles.B912aimJ.mjs deleted file mode 100644 index be7bc748..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles.B912aimJ.mjs +++ /dev/null @@ -1,4 +0,0 @@ -import style_0 from "./accounts-styles-1.mjs-BUD0U4Q9.js"; -export default [ - style_0 -] \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles.Bwl6sYRz.mjs b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles.Bwl6sYRz.mjs new file mode 100644 index 00000000..f50dc91a --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles.Bwl6sYRz.mjs @@ -0,0 +1,4 @@ +import style_0 from "./accounts-styles-1.mjs-BqkDag56.js"; +export default [ + style_0 +] \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-C7m4n3tj.js.map b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-C7m4n3tj.js.map deleted file mode 100644 index 5515f623..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-C7m4n3tj.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"dashboard-C7m4n3tj.js","sources":["../../../../../../../app/components/SvcAlertBanner.vue","../../../../../../../app/pages/dashboard.vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n"],"names":["_ssrInterpolate","_unref","_push","_parent","_ssrRenderList","_ssrRenderClass","_ssrIncludeBooleanAttr","_ssrLooseContain","_ssrLooseEqual","_ssrRenderStyle","_ssrRenderAttr"],"mappings":"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"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-C7m4n3tj.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-C7m4n3tj.js.map.json deleted file mode 100644 index 1081f763..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-C7m4n3tj.js.map.json +++ /dev/null @@ -1 +0,0 @@ -{"file":"dashboard-C7m4n3tj.js","mappings":"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","names":["_ssrInterpolate","_unref","_push","_parent","_ssrRenderList","_ssrRenderClass","_ssrIncludeBooleanAttr","_ssrLooseContain","_ssrLooseEqual","_ssrRenderStyle","_ssrRenderAttr"],"sources":["../../../../../../../app/components/SvcAlertBanner.vue","../../../../../../../app/pages/dashboard.vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n"],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-C7m4n3tj.js b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-Y8255DFm.js similarity index 80% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-C7m4n3tj.js rename to apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-Y8255DFm.js index 6a36ecf6..85943ccd 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-C7m4n3tj.js +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-Y8255DFm.js @@ -304,76 +304,76 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ } return (_ctx, _push, _parent, _attrs) => { const _component_SvcAlertBanner = __nuxt_component_0; - _push(``); + _push(``); _push(ssrRenderComponent(_component_SvcAlertBanner, null, null, _parent)); - _push(`
`); - if (!IS_SCOPED.value) { - _push(`
`); ssrRenderList(appOptions.value, (a) => { - _push(`${ssrInterpolate(a.label)}`); + _push(`${ssrInterpolate(a.label)}`); }); _push(`
`); } else { _push(``); } if (!IS_SCOPED.value) { - _push(`
`); ssrRenderList(regionOptions.value, (r) => { - _push(`${ssrInterpolate(r.label)}`); + _push(`${ssrInterpolate(r.label)}`); }); _push(`
`); } else { _push(``); } - _push(`
`); ssrRenderList(productOptions.value, (p) => { - _push(`${ssrInterpolate(p.label)}`); + _push(`${ssrInterpolate(p.label)}`); }); _push(`
`); if (!unref(auth).isDealer) { - _push(`
`); ssrRenderList(channelOptions.value, (ch) => { - _push(`${ssrInterpolate(ch.label)}`); + _push(`${ssrInterpolate(ch.label)}`); }); _push(`
`); } else { _push(``); } - _push(`顶部为全量总览;各版面右上角可单独选时间周期

累计数据

全量累计 · 随筛选条件变化
`); + _push(`顶部为全量总览;各版面右上角可单独选时间周期

累计数据

全量累计 · 随筛选条件变化
`); ssrRenderList(globalCards.value, (c) => { - _push(`
${ssrInterpolate(cardStyle(c[0])[0])}
${ssrInterpolate(c[1])}
${ssrInterpolate(globalVal(c))}
`); + _push(`
${ssrInterpolate(cardStyle(c[0])[0])}
${ssrInterpolate(c[1])}
${ssrInterpolate(globalVal(c))}
`); }); - _push(`

今日数据

${ssrInterpolate(todayTag.value)}今日 0 点至现在 · 含较昨日同比(设备类无日期维度,仅见累计)
`); + _push(`

今日数据

${ssrInterpolate(todayTag.value)}今日 0 点至现在 · 含较昨日同比(设备类无日期维度,仅见累计)
`); ssrRenderList(todayCards.value, (c) => { - _push(`
${ssrInterpolate(c[1])}${ssrInterpolate(cardStyle(c[0])[0])}
${ssrInterpolate(todayVal(c))}
`); + _push(`
${ssrInterpolate(c[1])}${ssrInterpolate(cardStyle(c[0])[0])}
${ssrInterpolate(todayVal(c))}
`); if (todayDelta(c).type === "new") { - _push(`新`); + _push(`新`); } else if (todayDelta(c).type !== "none") { - _push(`${ssrInterpolate(todayDelta(c).arrow)} ${ssrInterpolate(todayDelta(c).abs)}%`); + _push(`${ssrInterpolate(todayDelta(c).arrow)} ${ssrInterpolate(todayDelta(c).abs)}%`); } else { _push(``); } - _push(`较昨日
`); + _push(`较昨日
`); }); - _push(`

趋势分析

各版面右上角可独立选择时间周期
`); + _push(`

趋势分析

各版面右上角可独立选择时间周期
`); ssrRenderList(panels.value, (p) => { - _push(`
${ssrInterpolate(p.title)}`); + _push(`
${ssrInterpolate(p.title)}`); if (p.key === "device") { - _push(`当前累计 · 无日期维度`); + _push(`当前累计 · 无日期维度`); } else { - _push(`
`); + _push(`
`); ssrRenderList(rangeBtns, (d) => { - _push(``); + _push(``); }); _push(`
`); } - _push(`
`); + _push(`
`); ssrRenderList(p.stats, (s) => { - _push(`
${ssrInterpolate(s[1])}
${ssrInterpolate(panelStatVal(p, s))}
`); + _push(`
${ssrInterpolate(s[1])}
${ssrInterpolate(panelStatVal(p, s))}
`); }); _push(`
`); if (p.key !== "device") { - _push(`
`); + _push(`
`); } else { _push(``); } @@ -389,8 +389,8 @@ _sfc_main.setup = (props, ctx) => { (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/dashboard.vue"); return _sfc_setup ? _sfc_setup(props, ctx) : void 0; }; -const dashboard = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-fb791e6a"]]); +const dashboard = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-449e8f97"]]); export { dashboard as default }; -//# sourceMappingURL=dashboard-C7m4n3tj.js.map +//# sourceMappingURL=dashboard-Y8255DFm.js.map diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-Y8255DFm.js.map b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-Y8255DFm.js.map new file mode 100644 index 00000000..8893aaa1 --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-Y8255DFm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dashboard-Y8255DFm.js","sources":["../../../../../../../app/components/SvcAlertBanner.vue","../../../../../../../app/pages/dashboard.vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n"],"names":["_ssrInterpolate","_unref","_push","_parent","_ssrRenderList","_ssrRenderClass","_ssrIncludeBooleanAttr","_ssrLooseContain","_ssrLooseEqual","_ssrRenderStyle","_ssrRenderAttr"],"mappings":"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"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-Y8255DFm.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-Y8255DFm.js.map.json new file mode 100644 index 00000000..37f923f8 --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-Y8255DFm.js.map.json @@ -0,0 +1 @@ +{"file":"dashboard-Y8255DFm.js","mappings":"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","names":["_ssrInterpolate","_unref","_push","_parent","_ssrRenderList","_ssrRenderClass","_ssrIncludeBooleanAttr","_ssrLooseContain","_ssrLooseEqual","_ssrRenderStyle","_ssrRenderAttr"],"sources":["../../../../../../../app/components/SvcAlertBanner.vue","../../../../../../../app/pages/dashboard.vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n"],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-5w42oV-z.js b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-5w42oV-z.js new file mode 100644 index 00000000..8ce22923 --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-5w42oV-z.js @@ -0,0 +1,5 @@ +const dashboard_vue_vue_type_style_index_0_scoped_449e8f97_lang = ".panel[data-v-449e8f97]{background:#fff;border:1px solid #f1f5f9;border-radius:16px;box-shadow:0 1px 2px #0000000a;overflow:hidden}.panel-head[data-v-449e8f97]{padding:12px 18px;gap:10px;border-bottom:1px solid #f8fafc;flex-wrap:wrap}.panel-dot[data-v-449e8f97],.panel-head[data-v-449e8f97]{display:flex;align-items:center}.panel-dot[data-v-449e8f97]{width:30px;height:30px;border-radius:9px;justify-content:center;flex-shrink:0}.stat-box[data-v-449e8f97]{padding:10px 12px;border-radius:10px;background:#fafbfc}.stat-label[data-v-449e8f97]{font-size:11px;color:#94a3b8;margin-bottom:3px}.stat-val[data-v-449e8f97]{font-size:20px;font-weight:700;color:#1e293b;line-height:1.1;letter-spacing:-.02em}.sec-title[data-v-449e8f97]{display:flex;align-items:center;gap:10px;margin:0 0 14px}.sec-title .bar[data-v-449e8f97]{width:4px;height:18px;border-radius:3px}.sec-title h2[data-v-449e8f97]{font-size:15px;font-weight:700;color:#0f172a;letter-spacing:-.01em}.sec-title .sub[data-v-449e8f97]{font-size:12px;color:#94a3b8}.sec-title .tag[data-v-449e8f97]{font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px}.sec-title.muted .bar[data-v-449e8f97]{height:14px;opacity:.6}.sec-title.muted h2[data-v-449e8f97]{font-size:13px;font-weight:600;color:#94a3b8}.sec-title.hero .bar[data-v-449e8f97]{width:5px;height:22px}.sec-title.hero h2[data-v-449e8f97]{font-size:18px;font-weight:800;color:#0f172a}.cum-card[data-v-449e8f97]{gap:11px;background:#f8fafc;border:1px solid #eef2f7;border-radius:12px;padding:10px 13px}.cum-card[data-v-449e8f97],.cum-card .ico[data-v-449e8f97]{display:flex;align-items:center}.cum-card .ico[data-v-449e8f97]{width:30px;height:30px;border-radius:9px;justify-content:center;flex-shrink:0;font-size:14px;filter:saturate(.65);opacity:.85}.cum-card .body[data-v-449e8f97]{min-width:0}.cum-card .lbl[data-v-449e8f97]{font-size:11.5px;color:#94a3b8;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cum-card .val[data-v-449e8f97]{font-size:17px;font-weight:700;color:#64748b;line-height:1.3;letter-spacing:-.01em;margin-top:1px}.today-wrap[data-v-449e8f97]{background:linear-gradient(180deg,#e8f1ff,#f5f9ff);border:1px solid #d6e4ff;border-radius:22px;padding:20px;box-shadow:0 1px 3px #0d6efd0d}.today-card[data-v-449e8f97]{position:relative;background:#fff;border:1px solid #e6eefb;border-radius:18px;padding:17px 19px;box-shadow:0 6px 18px #0d6efd14;transition:transform .18s ease,box-shadow .18s ease;overflow:hidden}.today-card[data-v-449e8f97]:hover{transform:translateY(-3px);box-shadow:0 14px 32px #0d6efd26}.today-card .accent[data-v-449e8f97]{position:absolute;left:0;top:0;bottom:0;width:5px}.today-card-top[data-v-449e8f97]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.today-card .lbl[data-v-449e8f97]{font-size:13px;color:#475569;font-weight:600}.today-card .ico[data-v-449e8f97]{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px}.today-card .val[data-v-449e8f97]{font-size:31px;font-weight:800;color:#0f172a;line-height:1.05;letter-spacing:-.02em}.today-card .foot[data-v-449e8f97]{margin-top:9px;font-size:12px;color:#94a3b8;display:flex;align-items:center;gap:6px}.delta[data-v-449e8f97]{display:inline-flex;align-items:center;gap:2px;font-weight:700;padding:2px 7px;border-radius:7px;font-size:11.5px}.delta.up[data-v-449e8f97]{color:#059669;background:#ecfdf5}.delta.down[data-v-449e8f97]{color:#dc2626;background:#fef2f2}.delta.flat[data-v-449e8f97],.tbtn[data-v-449e8f97]{color:#64748b;background:#f1f5f9}.tbtn[data-v-449e8f97]{font-size:11px;padding:3px 9px;border-radius:7px;line-height:1.4}.tbtn[data-v-449e8f97]:hover{background:#e2e8f0}.tbtn-on[data-v-449e8f97]{background:#1e293b;color:#fff}"; +export { + dashboard_vue_vue_type_style_index_0_scoped_449e8f97_lang as default +}; +//# sourceMappingURL=dashboard-styles-2.mjs-5w42oV-z.js.map diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-5w42oV-z.js.map b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-5w42oV-z.js.map new file mode 100644 index 00000000..03f332e9 --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-5w42oV-z.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dashboard-styles-2.mjs-5w42oV-z.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-5w42oV-z.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-5w42oV-z.js.map.json new file mode 100644 index 00000000..ccf12e63 --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-5w42oV-z.js.map.json @@ -0,0 +1 @@ +{"file":"dashboard-styles-2.mjs-5w42oV-z.js","mappings":";","names":[],"sources":[],"sourcesContent":[],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-D9QGJGGw.js b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-D9QGJGGw.js deleted file mode 100644 index 1b1552ca..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-D9QGJGGw.js +++ /dev/null @@ -1,5 +0,0 @@ -const dashboard_vue_vue_type_style_index_0_scoped_fb791e6a_lang = ".panel[data-v-fb791e6a]{background:#fff;border:1px solid #f1f5f9;border-radius:16px;box-shadow:0 1px 2px #0000000a;overflow:hidden}.panel-head[data-v-fb791e6a]{padding:12px 18px;gap:10px;border-bottom:1px solid #f8fafc;flex-wrap:wrap}.panel-dot[data-v-fb791e6a],.panel-head[data-v-fb791e6a]{display:flex;align-items:center}.panel-dot[data-v-fb791e6a]{width:30px;height:30px;border-radius:9px;justify-content:center;flex-shrink:0}.stat-box[data-v-fb791e6a]{padding:10px 12px;border-radius:10px;background:#fafbfc}.stat-label[data-v-fb791e6a]{font-size:11px;color:#94a3b8;margin-bottom:3px}.stat-val[data-v-fb791e6a]{font-size:20px;font-weight:700;color:#1e293b;line-height:1.1;letter-spacing:-.02em}.sec-title[data-v-fb791e6a]{display:flex;align-items:center;gap:10px;margin:0 0 14px}.sec-title .bar[data-v-fb791e6a]{width:4px;height:18px;border-radius:3px}.sec-title h2[data-v-fb791e6a]{font-size:15px;font-weight:700;color:#0f172a;letter-spacing:-.01em}.sec-title .sub[data-v-fb791e6a]{font-size:12px;color:#94a3b8}.sec-title .tag[data-v-fb791e6a]{font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px}.sec-title.muted .bar[data-v-fb791e6a]{height:14px;opacity:.6}.sec-title.muted h2[data-v-fb791e6a]{font-size:13px;font-weight:600;color:#94a3b8}.sec-title.hero .bar[data-v-fb791e6a]{width:5px;height:22px}.sec-title.hero h2[data-v-fb791e6a]{font-size:18px;font-weight:800;color:#0f172a}.cum-card[data-v-fb791e6a]{gap:11px;background:#f8fafc;border:1px solid #eef2f7;border-radius:12px;padding:10px 13px}.cum-card[data-v-fb791e6a],.cum-card .ico[data-v-fb791e6a]{display:flex;align-items:center}.cum-card .ico[data-v-fb791e6a]{width:30px;height:30px;border-radius:9px;justify-content:center;flex-shrink:0;font-size:14px;filter:saturate(.65);opacity:.85}.cum-card .body[data-v-fb791e6a]{min-width:0}.cum-card .lbl[data-v-fb791e6a]{font-size:11.5px;color:#94a3b8;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cum-card .val[data-v-fb791e6a]{font-size:17px;font-weight:700;color:#64748b;line-height:1.3;letter-spacing:-.01em;margin-top:1px}.today-wrap[data-v-fb791e6a]{background:linear-gradient(180deg,#e8f1ff,#f5f9ff);border:1px solid #d6e4ff;border-radius:22px;padding:20px;box-shadow:0 1px 3px #0d6efd0d}.today-card[data-v-fb791e6a]{position:relative;background:#fff;border:1px solid #e6eefb;border-radius:18px;padding:17px 19px;box-shadow:0 6px 18px #0d6efd14;transition:transform .18s ease,box-shadow .18s ease;overflow:hidden}.today-card[data-v-fb791e6a]:hover{transform:translateY(-3px);box-shadow:0 14px 32px #0d6efd26}.today-card .accent[data-v-fb791e6a]{position:absolute;left:0;top:0;bottom:0;width:5px}.today-card-top[data-v-fb791e6a]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.today-card .lbl[data-v-fb791e6a]{font-size:13px;color:#475569;font-weight:600}.today-card .ico[data-v-fb791e6a]{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px}.today-card .val[data-v-fb791e6a]{font-size:31px;font-weight:800;color:#0f172a;line-height:1.05;letter-spacing:-.02em}.today-card .foot[data-v-fb791e6a]{margin-top:9px;font-size:12px;color:#94a3b8;display:flex;align-items:center;gap:6px}.delta[data-v-fb791e6a]{display:inline-flex;align-items:center;gap:2px;font-weight:700;padding:2px 7px;border-radius:7px;font-size:11.5px}.delta.up[data-v-fb791e6a]{color:#059669;background:#ecfdf5}.delta.down[data-v-fb791e6a]{color:#dc2626;background:#fef2f2}.delta.flat[data-v-fb791e6a],.tbtn[data-v-fb791e6a]{color:#64748b;background:#f1f5f9}.tbtn[data-v-fb791e6a]{font-size:11px;padding:3px 9px;border-radius:7px;line-height:1.4}.tbtn[data-v-fb791e6a]:hover{background:#e2e8f0}.tbtn-on[data-v-fb791e6a]{background:#1e293b;color:#fff}"; -export { - dashboard_vue_vue_type_style_index_0_scoped_fb791e6a_lang as default -}; -//# sourceMappingURL=dashboard-styles-2.mjs-D9QGJGGw.js.map diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-D9QGJGGw.js.map b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-D9QGJGGw.js.map deleted file mode 100644 index 320c7e96..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-D9QGJGGw.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"dashboard-styles-2.mjs-D9QGJGGw.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-D9QGJGGw.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-D9QGJGGw.js.map.json deleted file mode 100644 index d88fe896..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-2.mjs-D9QGJGGw.js.map.json +++ /dev/null @@ -1 +0,0 @@ -{"file":"dashboard-styles-2.mjs-D9QGJGGw.js","mappings":";","names":[],"sources":[],"sourcesContent":[],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles.CnnmNtqM.mjs b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles.DHIbN8CY.mjs similarity index 61% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles.CnnmNtqM.mjs rename to apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles.DHIbN8CY.mjs index 57a770dd..c3a6a5f2 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles.CnnmNtqM.mjs +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles.DHIbN8CY.mjs @@ -1,5 +1,5 @@ import style_0 from "./dashboard-styles-1.mjs-CFxtv9Pt.js"; -import style_1 from "./dashboard-styles-2.mjs-D9QGJGGw.js"; +import style_1 from "./dashboard-styles-2.mjs-5w42oV-z.js"; export default [ style_0, style_1 diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/product-CDTf1lTs.js b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/product-3h7bsXRI.js similarity index 75% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/product-CDTf1lTs.js rename to apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/product-3h7bsXRI.js index 9125ed65..c8125568 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/product-CDTf1lTs.js +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/product-3h7bsXRI.js @@ -42,6 +42,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ const rows = ref([]); const brands = ref({}); const brandOptions = ref([]); + const appOptions = ref([]); const loading = ref(false); const submitting = ref(false); const isEditing = ref(false); @@ -61,6 +62,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ devicecodecount: 1, productimage: "", channel: "official", + appnames: [], bindrewardvpitime: 0, bindrewardtranslate: 0, bindrewardmeeting: 0, @@ -70,6 +72,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ function hexId(id) { return id ? Number(id).toString(16).toUpperCase() : ""; } + function appNamesOf(p) { + return String(p.appnames || "").split(",").map((s) => s.trim()).filter(Boolean); + } function featureCount(p) { return toggleFields.filter((t) => !!p[t.key]).length; } @@ -85,11 +90,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ return !!currentProduct.value?.versionid && v.id === currentProduct.value.versionid; } return (_ctx, _push, _parent, _attrs) => { - _push(`

产品列表

`); + _push(`

产品列表

ID图片名称品牌商类型版本功能操作
`); if (loading.value) { - _push(``); + _push(``); } else if (!rows.value.length) { - _push(``); + _push(``); } else { _push(``); } @@ -101,7 +106,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ } else { _push(`
`); } - _push(`
ID图片名称品牌商绑定应用类型版本功能操作
暂无数据
暂无数据
${ssrInterpolate(p.devicename)}${ssrInterpolate(brands.value[p.brandid] || "")}${ssrInterpolate(deviceTypes[p.devicetype] || p.devicetype)}`); + _push(`${ssrInterpolate(p.devicename)}${ssrInterpolate(brands.value[p.brandid] || "")}`); + if (appNamesOf(p).length) { + _push(`
`); + ssrRenderList(appNamesOf(p), (n) => { + _push(`${ssrInterpolate(n)}`); + }); + _push(`
`); + } else { + _push(`未绑定`); + } + _push(`
${ssrInterpolate(deviceTypes[p.devicetype] || p.devicetype)}`); if (p.version) { _push(`${ssrInterpolate(p.version)}`); } else { @@ -117,7 +132,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ ssrRenderList(deviceTypeOptions, (label, val) => { _push(`${ssrInterpolate(label)}`); }); - _push(`
`); + if (!appOptions.value.length) { + _push(`
暂无可选应用,请先到【SaaS 管理 → 应用中心】新建应用
`); + } else { + _push(`
`); + ssrRenderList(appOptions.value, (n) => { + _push(``); + }); + _push(`
`); + } + _push(`