This commit is contained in:
2026-08-05 15:56:08 +08:00
parent 01729b1e0b
commit 2d9e2376b6
106 changed files with 10007 additions and 253 deletions
@@ -1 +1 @@
import{_ as i,i as d,j as r,c,b as s,a as e,t as n,r as p,o as _,U as o}from"./index-BZEF5hZc.js";const u={class:"stats-grid"},v={class:"stat-card"},m={class:"stat-icon"},g={class:"stat-value"},b={class:"stat-card"},x={class:"stat-icon"},f={class:"stat-value"},y={class:"stat-card"},z={class:"stat-icon"},V={class:"stat-value"},w={class:"stat-card"},B={class:"stat-icon"},D={class:"stat-value"},k={__name:"DashboardView",setup(I){const t=p({users:0,conversations:0,messages:0,today_messages:0});return d(async()=>{const l=await r.get("/admin/stats");t.value=l.data.data}),(l,a)=>(_(),c("div",null,[a[8]||(a[8]=s("div",{class:"page-header"},[s("h2",null,"数据概览"),s("p",null,"系统运行统计数据")],-1)),s("div",u,[s("article",v,[s("span",m,[e(o,{name:"users",size:21})]),s("span",g,n(t.value.users),1),a[0]||(a[0]=s("span",{class:"stat-label"},"用户总数",-1)),a[1]||(a[1]=s("span",{class:"stat-index"},"01",-1))]),s("article",b,[s("span",x,[e(o,{name:"conversations",size:21})]),s("span",f,n(t.value.conversations),1),a[2]||(a[2]=s("span",{class:"stat-label"},"会话总数",-1)),a[3]||(a[3]=s("span",{class:"stat-index"},"02",-1))]),s("article",y,[s("span",z,[e(o,{name:"messages",size:21})]),s("span",V,n(t.value.messages),1),a[4]||(a[4]=s("span",{class:"stat-label"},"消息总数",-1)),a[5]||(a[5]=s("span",{class:"stat-index"},"03",-1))]),s("article",w,[s("span",B,[e(o,{name:"activity",size:21})]),s("span",D,n(t.value.today_messages),1),a[6]||(a[6]=s("span",{class:"stat-label"},"今日消息",-1)),a[7]||(a[7]=s("span",{class:"stat-index"},"04",-1))])])]))}},U=i(k,[["__scopeId","data-v-5a83d2b7"]]);export{U as default};
import{_ as i,i as d,j as r,c,b as s,a as e,t as n,r as p,o as _,U as o}from"./index-9aV50nsX.js";const u={class:"stats-grid"},v={class:"stat-card"},m={class:"stat-icon"},g={class:"stat-value"},b={class:"stat-card"},x={class:"stat-icon"},f={class:"stat-value"},y={class:"stat-card"},z={class:"stat-icon"},V={class:"stat-value"},w={class:"stat-card"},B={class:"stat-icon"},D={class:"stat-value"},k={__name:"DashboardView",setup(I){const t=p({users:0,conversations:0,messages:0,today_messages:0});return d(async()=>{const l=await r.get("/admin/stats");t.value=l.data.data}),(l,a)=>(_(),c("div",null,[a[8]||(a[8]=s("div",{class:"page-header"},[s("h2",null,"数据概览"),s("p",null,"系统运行统计数据")],-1)),s("div",u,[s("article",v,[s("span",m,[e(o,{name:"users",size:21})]),s("span",g,n(t.value.users),1),a[0]||(a[0]=s("span",{class:"stat-label"},"用户总数",-1)),a[1]||(a[1]=s("span",{class:"stat-index"},"01",-1))]),s("article",b,[s("span",x,[e(o,{name:"conversations",size:21})]),s("span",f,n(t.value.conversations),1),a[2]||(a[2]=s("span",{class:"stat-label"},"会话总数",-1)),a[3]||(a[3]=s("span",{class:"stat-index"},"02",-1))]),s("article",y,[s("span",z,[e(o,{name:"messages",size:21})]),s("span",V,n(t.value.messages),1),a[4]||(a[4]=s("span",{class:"stat-label"},"消息总数",-1)),a[5]||(a[5]=s("span",{class:"stat-index"},"03",-1))]),s("article",w,[s("span",B,[e(o,{name:"activity",size:21})]),s("span",D,n(t.value.today_messages),1),a[6]||(a[6]=s("span",{class:"stat-label"},"今日消息",-1)),a[7]||(a[7]=s("span",{class:"stat-index"},"04",-1))])])]))}},U=i(k,[["__scopeId","data-v-5a83d2b7"]]);export{U as default};
@@ -0,0 +1 @@
.toolbar[data-v-adb7470c]{margin-bottom:16px}.empty[data-v-adb7470c]{text-align:center;padding:32px;color:var(--text-muted)}.danger[data-v-adb7470c]{color:var(--danger)}
@@ -1 +0,0 @@
.toolbar[data-v-b11f0247]{margin-bottom:16px}.empty[data-v-b11f0247]{text-align:center;padding:32px;color:var(--text-muted)}.danger[data-v-b11f0247]{color:var(--danger)}
@@ -1 +1 @@
import{_ as L,u as N,i as U,j as b,c as s,b as t,k as f,f as u,F as w,l as $,w as E,t as d,e as k,v as B,m as F,r as m,p as j,n as z,o,C as A}from"./index-BZEF5hZc.js";const I={class:"toolbar"},O={class:"panel"},R={class:"data-table"},T=["onClick"],q=["onClick"],G=["onClick"],H={key:0,class:"empty"},J={class:"modal"},K={class:"modal-header"},P={class:"modal-body"},Q={class:"form-group"},W={class:"form-group"},X=["value","disabled"],Y={class:"form-group"},Z={key:0,class:"form-error"},tt={__name:"DepartmentsView",setup(et){const c=N(),v=m([]),h=m([]),p=m(!1),r=m(null),i=m(""),l=j({name:"",parent_id:null,sort_order:0}),D=z(()=>v.value.filter(a=>a.id!==r.value));U(y);async function y(){const e=(await b.get("/admin/departments")).data.data||{};v.value=e.tree||[],h.value=e.list||[]}function V(a){var e;return a&&((e=h.value.find(n=>n.id===a))==null?void 0:e.name)||"-"}function g(a=null){r.value=null,l.name="",l.parent_id=a,l.sort_order=0,i.value="",p.value=!0}function M(a){r.value=a.id,l.name=a.name,l.parent_id=a.parent_id||null,l.sort_order=a.sort_order??0,i.value="",p.value=!0}function _(){p.value=!1}async function x(){if(i.value="",!l.name.trim()){i.value="请填写部门名称";return}const a={name:l.name.trim(),parent_id:l.parent_id,sort_order:l.sort_order};try{r.value?await b.put(`/admin/departments/${r.value}`,a):await b.post("/admin/departments",a),_(),await y()}catch(e){i.value=e.message||"保存失败"}}async function S(a){if(confirm(`确定删除部门「${a.name}」?`))try{await b.delete(`/admin/departments/${a.id}`),await y()}catch(e){alert(e.message||"删除失败")}}return(a,e)=>(o(),s("div",null,[e[9]||(e[9]=t("div",{class:"page-header"},[t("h2",null,"部门管理"),t("p",null,"维护组织部门层级,上级部门可查看下级部门员工聊天记录")],-1)),t("div",I,[f(c).hasButton("btn:dept:create")?(o(),s("button",{key:0,class:"btn btn-primary",onClick:e[0]||(e[0]=n=>g())},"新增部门")):u("",!0)]),t("div",O,[t("table",R,[e[4]||(e[4]=t("thead",null,[t("tr",null,[t("th",null,"部门名称"),t("th",null,"上级部门"),t("th",null,"排序"),t("th",null,"操作")])],-1)),t("tbody",null,[(o(!0),s(w,null,$(v.value,n=>(o(),s("tr",{key:n.id},[t("td",null,[t("span",{style:A({paddingLeft:`${n.depth*16}px`})},d(n.label||n.name),5)]),t("td",null,d(V(n.parent_id)),1),t("td",null,d(n.sort_order??0),1),t("td",null,[f(c).hasButton("btn:dept:create")?(o(),s("button",{key:0,class:"btn btn-ghost",onClick:C=>g(n.id)},"添加下级",8,T)):u("",!0),f(c).hasButton("btn:dept:edit")?(o(),s("button",{key:1,class:"btn btn-ghost",onClick:C=>M(n)},"编辑",8,q)):u("",!0),f(c).hasButton("btn:dept:delete")?(o(),s("button",{key:2,class:"btn btn-ghost danger",onClick:C=>S(n)},"删除",8,G)):u("",!0)])]))),128))])]),v.value.length?u("",!0):(o(),s("p",H,"暂无部门"))]),p.value?(o(),s("div",{key:0,class:"modal-overlay",onClick:E(_,["self"])},[t("div",J,[t("div",K,[t("h3",null,d(r.value?"编辑部门":"新增部门"),1),t("button",{onClick:_},"×")]),t("div",P,[t("div",Q,[e[5]||(e[5]=t("label",null,"部门名称",-1)),k(t("input",{"onUpdate:modelValue":e[1]||(e[1]=n=>l.name=n),class:"form-input"},null,512),[[B,l.name]])]),t("div",W,[e[7]||(e[7]=t("label",null,"上级部门",-1)),k(t("select",{"onUpdate:modelValue":e[2]||(e[2]=n=>l.parent_id=n),class:"form-select"},[e[6]||(e[6]=t("option",{value:null},"无(顶级部门)",-1)),(o(!0),s(w,null,$(D.value,n=>(o(),s("option",{key:n.id,value:n.id,disabled:r.value===n.id},d(n.label||n.name),9,X))),128))],512),[[F,l.parent_id]])]),t("div",Y,[e[8]||(e[8]=t("label",null,"排序",-1)),k(t("input",{"onUpdate:modelValue":e[3]||(e[3]=n=>l.sort_order=n),type:"number",class:"form-input"},null,512),[[B,l.sort_order,void 0,{number:!0}]])]),i.value?(o(),s("p",Z,d(i.value),1)):u("",!0)]),t("div",{class:"modal-footer"},[t("button",{class:"btn btn-ghost",onClick:_},"取消"),t("button",{class:"btn btn-primary",onClick:x},"保存")])])])):u("",!0)]))}},at=L(tt,[["__scopeId","data-v-b11f0247"]]);export{at as default};
import{_ as L,u as N,i as U,j as b,c as s,b as t,k as f,f as u,F as w,l as $,w as E,t as d,e as k,v as B,m as F,r as m,p as j,n as z,o,C as A}from"./index-9aV50nsX.js";const I={class:"toolbar"},O={class:"panel"},R={class:"data-table"},T=["onClick"],q=["onClick"],G=["onClick"],H={key:0,class:"empty"},J={class:"modal"},K={class:"modal-header"},P={class:"modal-body"},Q={class:"form-group"},W={class:"form-group"},X=["value","disabled"],Y={class:"form-group"},Z={key:0,class:"form-error"},tt={__name:"DepartmentsView",setup(et){const c=N(),v=m([]),h=m([]),p=m(!1),r=m(null),i=m(""),l=j({name:"",parent_id:null,sort_order:0}),D=z(()=>v.value.filter(a=>a.id!==r.value));U(y);async function y(){const e=(await b.get("/admin/departments")).data.data||{};v.value=e.tree||[],h.value=e.list||[]}function V(a){var e;return a&&((e=h.value.find(n=>n.id===a))==null?void 0:e.name)||"-"}function g(a=null){r.value=null,l.name="",l.parent_id=a,l.sort_order=0,i.value="",p.value=!0}function M(a){r.value=a.id,l.name=a.name,l.parent_id=a.parent_id||null,l.sort_order=a.sort_order??0,i.value="",p.value=!0}function _(){p.value=!1}async function x(){if(i.value="",!l.name.trim()){i.value="请填写部门名称";return}const a={name:l.name.trim(),parent_id:l.parent_id,sort_order:l.sort_order};try{r.value?await b.put(`/admin/departments/${r.value}`,a):await b.post("/admin/departments",a),_(),await y()}catch(e){i.value=e.message||"保存失败"}}async function S(a){if(confirm(`确定删除部门「${a.name}」?`))try{await b.delete(`/admin/departments/${a.id}`),await y()}catch(e){alert(e.message||"删除失败")}}return(a,e)=>(o(),s("div",null,[e[9]||(e[9]=t("div",{class:"page-header"},[t("h2",null,"部门管理"),t("p",null,"维护组织部门层级,上级部门可查看下级部门员工聊天记录")],-1)),t("div",I,[f(c).hasButton("btn:dept:create")?(o(),s("button",{key:0,class:"btn btn-primary",onClick:e[0]||(e[0]=n=>g())},"新增部门")):u("",!0)]),t("div",O,[t("table",R,[e[4]||(e[4]=t("thead",null,[t("tr",null,[t("th",null,"部门名称"),t("th",null,"上级部门"),t("th",null,"排序"),t("th",null,"操作")])],-1)),t("tbody",null,[(o(!0),s(w,null,$(v.value,n=>(o(),s("tr",{key:n.id},[t("td",null,[t("span",{style:A({paddingLeft:`${n.depth*16}px`})},d(n.label||n.name),5)]),t("td",null,d(V(n.parent_id)),1),t("td",null,d(n.sort_order??0),1),t("td",null,[f(c).hasButton("btn:dept:create")?(o(),s("button",{key:0,class:"btn btn-ghost",onClick:C=>g(n.id)},"添加下级",8,T)):u("",!0),f(c).hasButton("btn:dept:edit")?(o(),s("button",{key:1,class:"btn btn-ghost",onClick:C=>M(n)},"编辑",8,q)):u("",!0),f(c).hasButton("btn:dept:delete")?(o(),s("button",{key:2,class:"btn btn-ghost danger",onClick:C=>S(n)},"删除",8,G)):u("",!0)])]))),128))])]),v.value.length?u("",!0):(o(),s("p",H,"暂无部门"))]),p.value?(o(),s("div",{key:0,class:"modal-overlay",onClick:E(_,["self"])},[t("div",J,[t("div",K,[t("h3",null,d(r.value?"编辑部门":"新增部门"),1),t("button",{onClick:_},"×")]),t("div",P,[t("div",Q,[e[5]||(e[5]=t("label",null,"部门名称",-1)),k(t("input",{"onUpdate:modelValue":e[1]||(e[1]=n=>l.name=n),class:"form-input"},null,512),[[B,l.name]])]),t("div",W,[e[7]||(e[7]=t("label",null,"上级部门",-1)),k(t("select",{"onUpdate:modelValue":e[2]||(e[2]=n=>l.parent_id=n),class:"form-select"},[e[6]||(e[6]=t("option",{value:null},"无(顶级部门)",-1)),(o(!0),s(w,null,$(D.value,n=>(o(),s("option",{key:n.id,value:n.id,disabled:r.value===n.id},d(n.label||n.name),9,X))),128))],512),[[F,l.parent_id]])]),t("div",Y,[e[8]||(e[8]=t("label",null,"排序",-1)),k(t("input",{"onUpdate:modelValue":e[3]||(e[3]=n=>l.sort_order=n),type:"number",class:"form-input"},null,512),[[B,l.sort_order,void 0,{number:!0}]])]),i.value?(o(),s("p",Z,d(i.value),1)):u("",!0)]),t("div",{class:"modal-footer"},[t("button",{class:"btn btn-ghost",onClick:_},"取消"),t("button",{class:"btn btn-primary",onClick:x},"保存")])])])):u("",!0)]))}},at=L(tt,[["__scopeId","data-v-adb7470c"]]);export{at as default};
@@ -0,0 +1 @@
.guest-summary[data-v-257286bc]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}.summary-card[data-v-257286bc]{display:grid;grid-template-columns:1fr auto;gap:4px 16px;padding:17px 18px;border:1px solid var(--border);border-radius:14px;background:var(--glass-panel)}.summary-card span[data-v-257286bc],.summary-card small[data-v-257286bc]{color:var(--text-muted);font-size:11px}.summary-card strong[data-v-257286bc]{grid-row:span 2;font-size:27px;letter-spacing:-.04em}.guest-toolbar[data-v-257286bc],.filter-group[data-v-257286bc],.search-form[data-v-257286bc],.actions-cell[data-v-257286bc]{display:flex;align-items:center;gap:7px}.guest-toolbar[data-v-257286bc]{justify-content:space-between;margin-bottom:16px}.filter-btn.active[data-v-257286bc]{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent)}.search-form .form-input[data-v-257286bc]{width:min(260px,42vw)}.table-scroll[data-v-257286bc]{overflow-x:auto}.guest-identity[data-v-257286bc]{display:flex;min-width:220px;flex-direction:column;gap:5px}.guest-identity strong[data-v-257286bc]{font-size:13px}.guest-identity code[data-v-257286bc]{width:fit-content;padding:3px 6px;color:var(--text-muted);font-size:10px}.empty[data-v-257286bc]{padding:34px;color:var(--text-muted);text-align:center}.pagination[data-v-257286bc]{display:flex;align-items:center;justify-content:center;gap:16px;padding:18px;color:var(--text-secondary);font-size:13px}.danger[data-v-257286bc]{color:var(--danger)}@media(max-width:760px){.guest-summary[data-v-257286bc]{grid-template-columns:1fr}.guest-toolbar[data-v-257286bc]{align-items:stretch;flex-direction:column}.search-form .form-input[data-v-257286bc]{width:100%}}
@@ -0,0 +1 @@
import{_ as L,u as P,i as T,j as f,c as o,b as t,t as l,F as S,l as x,w as U,e as j,v as q,f as b,r as d,n as h,o as u,q as G,k as M}from"./index-9aV50nsX.js";const A={class:"guest-summary"},E={class:"summary-card"},O={class:"summary-card"},H={class:"summary-card"},J={class:"toolbar guest-toolbar"},K={class:"filter-group"},Q=["onClick"],R={class:"panel"},W={class:"table-scroll"},X={class:"data-table"},Y={class:"guest-identity"},Z={class:"actions-cell"},tt=["onClick"],st=["onClick"],et={key:0,class:"empty"},at={key:1,class:"empty"},lt={key:2,class:"pagination"},nt=["disabled"],ot=["disabled"],y=20,ut={__name:"GuestsView",setup(it){const k=P(),i=d([]),m=d(!1),n=d(1),c=d(0),p=d(""),g=d(""),B=[{label:"全部",value:""},{label:"正常",value:"active"},{label:"已禁用",value:"disabled"}],C=h(()=>Math.max(1,Math.ceil(c.value/y))),D=h(()=>i.value.reduce((a,s)=>a+Number(s.conversation_count||0),0)),N=h(()=>i.value.reduce((a,s)=>a+Number(s.message_count||0),0));T(r);async function r(){m.value=!0;try{const s=(await f.get("/admin/guests",{params:{page:n.value,limit:y,status:p.value||void 0,keyword:g.value||void 0}})).data.data||{};i.value=s.list||[],c.value=s.total??i.value.length}finally{m.value=!1}}function V(a){p.value=a,n.value=1,r()}function I(){n.value=1,r()}async function w(a){n.value=a,await r()}async function z(a){const s=a.status==="active"?"disabled":"active",e=s==="active"?"启用":"禁用";if(confirm(`确定${e}访客 #${_(a.username)}`))try{await f.put(`/admin/guests/${a.id}/status`,{status:s}),await r()}catch(v){alert(v.message||`${e}失败`)}}async function F(a){if(confirm(`确定删除访客 #${_(a.username)}?其会话和消息记录也会一并删除,此操作不可恢复。`))try{await f.delete(`/admin/guests/${a.id}`),i.value.length===1&&n.value>1&&(n.value-=1),await r()}catch(s){alert(s.message||"删除失败")}}function _(a){return String(a||"").replace(/^guest_/,"").slice(-8).toUpperCase()}function $(a){return a?new Date(String(a).replace(" ","T")).toLocaleString("zh-CN",{hour12:!1}):"-"}return(a,s)=>(u(),o("div",null,[s[11]||(s[11]=t("div",{class:"page-header"},[t("h2",null,"访客管理"),t("p",null,"单独记录匿名访问者的使用情况,不计入注册用户管理列表")],-1)),t("div",A,[t("div",E,[s[3]||(s[3]=t("span",null,"当前记录",-1)),t("strong",null,l(c.value),1),s[4]||(s[4]=t("small",null,"匿名访客",-1))]),t("div",O,[s[5]||(s[5]=t("span",null,"本页会话",-1)),t("strong",null,l(D.value),1),s[6]||(s[6]=t("small",null,"未删除会话",-1))]),t("div",H,[s[7]||(s[7]=t("span",null,"本页消息",-1)),t("strong",null,l(N.value),1),s[8]||(s[8]=t("small",null,"累计消息",-1))])]),t("div",J,[t("div",K,[(u(),o(S,null,x(B,e=>t("button",{key:e.value,class:G(["btn btn-ghost filter-btn",{active:p.value===e.value}]),type:"button",onClick:v=>V(e.value)},l(e.label),11,Q)),64))]),t("form",{class:"search-form",onSubmit:U(I,["prevent"])},[j(t("input",{"onUpdate:modelValue":s[0]||(s[0]=e=>g.value=e),class:"form-input",placeholder:"搜索访客编号"},null,512),[[q,g.value,void 0,{trim:!0}]]),s[9]||(s[9]=t("button",{class:"btn btn-ghost",type:"submit"},"搜索",-1))],32)]),t("div",R,[t("div",W,[t("table",X,[s[10]||(s[10]=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,[(u(!0),o(S,null,x(i.value,e=>(u(),o("tr",{key:e.id},[t("td",null,l(e.id),1),t("td",null,[t("div",Y,[t("strong",null,"访客 #"+l(_(e.username)),1),t("code",null,l(e.username),1)])]),t("td",null,[t("span",{class:G(["badge",e.status==="active"?"badge-success":"badge-danger"])},l(e.status==="active"?"正常":"已禁用"),3)]),t("td",null,l(e.conversation_count||0),1),t("td",null,l(e.message_count||0),1),t("td",null,l($(e.created_at)),1),t("td",null,l($(e.last_login_at)),1),t("td",Z,[M(k).hasButton("btn:guest:status")?(u(),o("button",{key:0,class:"btn btn-ghost",type:"button",onClick:v=>z(e)},l(e.status==="active"?"禁用":"启用"),9,tt)):b("",!0),M(k).hasButton("btn:guest:delete")?(u(),o("button",{key:1,class:"btn btn-ghost danger",type:"button",onClick:v=>F(e)},"删除",8,st)):b("",!0)])]))),128))])])]),m.value?(u(),o("p",et,"正在加载...")):i.value.length?b("",!0):(u(),o("p",at,"暂无访客记录")),c.value>y?(u(),o("div",lt,[t("button",{class:"btn btn-ghost",disabled:n.value<=1,onClick:s[1]||(s[1]=e=>w(n.value-1))},"上一页",8,nt),t("span",null,l(n.value)+" / "+l(C.value),1),t("button",{class:"btn btn-ghost",disabled:n.value>=C.value,onClick:s[2]||(s[2]=e=>w(n.value+1))},"下一页",8,ot)])):b("",!0)])]))}},dt=L(ut,[["__scopeId","data-v-257286bc"]]);export{dt as default};
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
.invitation-toolbar[data-v-f3c9dbd2]{display:flex;align-items:center;justify-content:space-between;gap:14px}.filter-group[data-v-f3c9dbd2]{display:flex;flex-wrap:wrap;gap:6px}.filter-btn.active[data-v-f3c9dbd2]{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent)}.invitation-panel[data-v-f3c9dbd2],.table-scroll[data-v-f3c9dbd2]{overflow-x:auto}.invite-code[data-v-f3c9dbd2]{display:inline-block;padding:6px 8px;white-space:nowrap;letter-spacing:.04em}.creator-cell[data-v-f3c9dbd2]{display:flex;flex-direction:column;gap:3px}.creator-cell small[data-v-f3c9dbd2],.form-help[data-v-f3c9dbd2]{color:var(--text-muted);font-size:11px}.form-help[data-v-f3c9dbd2]{margin:7px 0 0;line-height:1.5}.empty[data-v-f3c9dbd2]{padding:34px;color:var(--text-muted);text-align:center}.danger[data-v-f3c9dbd2]{color:var(--danger)}@media(max-width:680px){.invitation-toolbar[data-v-f3c9dbd2]{align-items:stretch;flex-direction:column}}
@@ -1 +1 @@
import{_ as y,u as w,c as u,a as d,b as s,d as p,w as V,e as v,v as g,t as c,f as T,r as t,g as N,h as x,o as m,T as A,U}from"./index-BZEF5hZc.js";const k={class:"login-page"},C={class:"login-shell"},I={class:"login-aside"},L={class:"login-mark"},R={class:"login-card"},S={class:"form-group"},q={class:"form-group"},B={key:0,class:"form-error"},D=["disabled"],M={__name:"LoginView",setup(E){const f=N(),b=x(),_=w(),a=t(""),n=t(""),o=t(""),l=t(!1);async function h(){o.value="",l.value=!0;try{await _.login(a.value,n.value),f.push(b.query.redirect||"/dashboard")}catch(r){o.value=r.message}finally{l.value=!1}}return(r,e)=>(m(),u("div",k,[d(A,{class:"login-theme-toggle"}),s("div",C,[s("div",I,[s("span",L,[d(U,{name:"bolt",size:22})]),e[2]||(e[2]=s("span",{class:"login-eyebrow"},"AI CHAT / ADMIN",-1)),e[3]||(e[3]=s("h1",null,[p("让系统配置"),s("br"),p("保持清晰可控")],-1)),e[4]||(e[4]=s("p",null,"统一管理用户、模型、权限与会话数据。",-1)),e[5]||(e[5]=s("span",{class:"login-version"},"CONTROL SURFACE · V2",-1))]),s("div",R,[e[8]||(e[8]=s("div",{class:"login-header"},[s("span",{class:"status-dot","aria-hidden":"true"}),s("span",null,"安全入口"),s("h2",null,"登录管理后台"),s("p",null,"请使用管理员账户继续")],-1)),s("form",{onSubmit:V(h,["prevent"])},[s("div",S,[e[6]||(e[6]=s("label",null,"账号",-1)),v(s("input",{"onUpdate:modelValue":e[0]||(e[0]=i=>a.value=i),class:"form-input",placeholder:"管理员用户名或邮箱",required:""},null,512),[[g,a.value]])]),s("div",q,[e[7]||(e[7]=s("label",null,"密码",-1)),v(s("input",{"onUpdate:modelValue":e[1]||(e[1]=i=>n.value=i),type:"password",class:"form-input",placeholder:"请输入密码",required:""},null,512),[[g,n.value]])]),o.value?(m(),u("p",B,c(o.value),1)):T("",!0),s("button",{type:"submit",class:"btn btn-primary login-btn",disabled:l.value},c(l.value?"登录中...":"进入控制台"),9,D)],32)])])]))}},z=y(M,[["__scopeId","data-v-d42d96d7"]]);export{z as default};
import{_ as y,u as w,c as u,a as d,b as s,d as p,w as V,e as v,v as g,t as c,f as T,r as t,g as N,h as x,o as m,T as A,U}from"./index-9aV50nsX.js";const k={class:"login-page"},C={class:"login-shell"},I={class:"login-aside"},L={class:"login-mark"},R={class:"login-card"},S={class:"form-group"},q={class:"form-group"},B={key:0,class:"form-error"},D=["disabled"],M={__name:"LoginView",setup(E){const f=N(),b=x(),_=w(),a=t(""),n=t(""),o=t(""),l=t(!1);async function h(){o.value="",l.value=!0;try{await _.login(a.value,n.value),f.push(b.query.redirect||"/dashboard")}catch(r){o.value=r.message}finally{l.value=!1}}return(r,e)=>(m(),u("div",k,[d(A,{class:"login-theme-toggle"}),s("div",C,[s("div",I,[s("span",L,[d(U,{name:"bolt",size:22})]),e[2]||(e[2]=s("span",{class:"login-eyebrow"},"AI CHAT / ADMIN",-1)),e[3]||(e[3]=s("h1",null,[p("让系统配置"),s("br"),p("保持清晰可控")],-1)),e[4]||(e[4]=s("p",null,"统一管理用户、模型、权限与会话数据。",-1)),e[5]||(e[5]=s("span",{class:"login-version"},"CONTROL SURFACE · V2",-1))]),s("div",R,[e[8]||(e[8]=s("div",{class:"login-header"},[s("span",{class:"status-dot","aria-hidden":"true"}),s("span",null,"安全入口"),s("h2",null,"登录管理后台"),s("p",null,"请使用管理员账户继续")],-1)),s("form",{onSubmit:V(h,["prevent"])},[s("div",S,[e[6]||(e[6]=s("label",null,"账号",-1)),v(s("input",{"onUpdate:modelValue":e[0]||(e[0]=i=>a.value=i),class:"form-input",placeholder:"管理员用户名或邮箱",required:""},null,512),[[g,a.value]])]),s("div",q,[e[7]||(e[7]=s("label",null,"密码",-1)),v(s("input",{"onUpdate:modelValue":e[1]||(e[1]=i=>n.value=i),type:"password",class:"form-input",placeholder:"请输入密码",required:""},null,512),[[g,n.value]])]),o.value?(m(),u("p",B,c(o.value),1)):T("",!0),s("button",{type:"submit",class:"btn btn-primary login-btn",disabled:l.value},c(l.value?"登录中...":"进入控制台"),9,D)],32)])])]))}},z=y(M,[["__scopeId","data-v-d42d96d7"]]);export{z as default};
@@ -0,0 +1 @@
.toolbar[data-v-bdc5d18d]{margin-bottom:16px}.url-cell[data-v-bdc5d18d]{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;color:var(--text-secondary)}code[data-v-bdc5d18d]{background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-size:13px}.test-result[data-v-bdc5d18d]{margin-top:8px;padding:12px;border-radius:8px;font-size:13px}.test-result.success[data-v-bdc5d18d]{background:#22c55e1f;border:1px solid rgba(34,197,94,.3);color:var(--success)}.test-result.error[data-v-bdc5d18d]{background:#ef44441f;border:1px solid rgba(239,68,68,.3);color:var(--danger)}.test-result p[data-v-bdc5d18d]{margin-top:6px;color:var(--text-secondary)}.test-result.success p[data-v-bdc5d18d]{color:#86efac}.reply-preview[data-v-bdc5d18d]{word-break:break-all}.field-hint[data-v-bdc5d18d]{margin-top:4px;font-size:12px;color:var(--text-secondary)}.field-hint-warn[data-v-bdc5d18d]{color:var(--danger)}.saved-key-hint[data-v-bdc5d18d]{margin-bottom:6px;font-size:12px;color:var(--success)}.saved-key-hint code[data-v-bdc5d18d]{background:#22c55e1f;color:var(--success)}.workflow-json[data-v-bdc5d18d]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.45;min-height:180px;resize:vertical}.workflow-actions[data-v-bdc5d18d]{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.form-row-2[data-v-bdc5d18d]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.btn-sm[data-v-bdc5d18d]{padding:6px 10px;font-size:12px}.file-btn[data-v-bdc5d18d]{cursor:pointer;display:inline-flex;align-items:center}@media(max-width:640px){.form-row-2[data-v-bdc5d18d]{grid-template-columns:1fr}}
@@ -1 +0,0 @@
.toolbar[data-v-16cf4364]{margin-bottom:16px}.url-cell[data-v-16cf4364]{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;color:var(--text-secondary)}code[data-v-16cf4364]{background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-size:13px}.test-result[data-v-16cf4364]{margin-top:8px;padding:12px;border-radius:8px;font-size:13px}.test-result.success[data-v-16cf4364]{background:#22c55e1f;border:1px solid rgba(34,197,94,.3);color:var(--success)}.test-result.error[data-v-16cf4364]{background:#ef44441f;border:1px solid rgba(239,68,68,.3);color:var(--danger)}.test-result p[data-v-16cf4364]{margin-top:6px;color:var(--text-secondary)}.test-result.success p[data-v-16cf4364]{color:#86efac}.reply-preview[data-v-16cf4364]{word-break:break-all}.field-hint[data-v-16cf4364]{margin-top:4px;font-size:12px;color:var(--text-secondary)}.field-hint-warn[data-v-16cf4364]{color:var(--danger)}.saved-key-hint[data-v-16cf4364]{margin-bottom:6px;font-size:12px;color:var(--success)}.saved-key-hint code[data-v-16cf4364]{background:#22c55e1f;color:var(--success)}.workflow-json[data-v-16cf4364]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.45;min-height:180px;resize:vertical}.workflow-actions[data-v-16cf4364]{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.form-row-2[data-v-16cf4364]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.btn-sm[data-v-16cf4364]{padding:6px 10px;font-size:12px}.file-btn[data-v-16cf4364]{cursor:pointer;display:inline-flex;align-items:center}@media(max-width:640px){.form-row-2[data-v-16cf4364]{grid-template-columns:1fr}}
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
.toolbar[data-v-0259ca3f]{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.empty[data-v-0259ca3f]{text-align:center;padding:32px;color:var(--text-muted)}.type-badge[data-v-0259ca3f]{font-size:11px;padding:2px 6px;border-radius:4px}.type-badge.dir[data-v-0259ca3f]{background:#ffffff0b;color:var(--text-secondary)}.type-badge.menu[data-v-0259ca3f]{background:var(--accent-soft);color:var(--accent)}.type-badge.btn[data-v-0259ca3f]{background:#8fe06a14;color:var(--success)}.path-cell[data-v-0259ca3f]{display:flex;align-items:center;gap:8px;color:var(--text-secondary);font-family:Cascadia Code,Consolas,monospace;font-size:12px}.path-cell[data-v-0259ca3f] svg{color:var(--accent)}.field-hint[data-v-0259ca3f]{margin-top:6px;font-size:12px;color:var(--text-muted)}.danger[data-v-0259ca3f]{color:var(--danger)}
@@ -0,0 +1 @@
.toolbar[data-v-2e1246c9]{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.empty[data-v-2e1246c9]{text-align:center;padding:32px;color:var(--text-muted)}.type-badge[data-v-2e1246c9]{font-size:11px;padding:2px 6px;border-radius:4px}.type-badge.dir[data-v-2e1246c9]{background:#ffffff0b;color:var(--text-secondary)}.type-badge.menu[data-v-2e1246c9]{background:var(--accent-soft);color:var(--accent)}.type-badge.btn[data-v-2e1246c9]{background:#8fe06a14;color:var(--success)}.path-cell[data-v-2e1246c9]{display:flex;align-items:center;gap:8px;color:var(--text-secondary);font-family:Cascadia Code,Consolas,monospace;font-size:12px}.path-cell[data-v-2e1246c9] svg{color:var(--accent)}.field-hint[data-v-2e1246c9]{margin-top:6px;font-size:12px;color:var(--text-muted)}.danger[data-v-2e1246c9]{color:var(--danger)}
@@ -1 +0,0 @@
.toolbar[data-v-b204ae6d]{margin-bottom:16px}.perm-tags[data-v-b204ae6d]{display:flex;flex-wrap:wrap;gap:4px}.perm-tag[data-v-b204ae6d]{font-size:12px;padding:2px 8px;background:var(--accent-soft);color:var(--accent);border-radius:4px}.field-hint[data-v-b204ae6d]{font-size:12px;color:var(--text-muted)}.modal-wide[data-v-b204ae6d]{max-width:640px;max-height:90vh;display:flex;flex-direction:column}.modal-wide .modal-body[data-v-b204ae6d]{overflow-y:auto}.top-check[data-v-b204ae6d]{font-weight:500}.perm-section[data-v-b204ae6d]{border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--bg-tertiary)}.perm-section-header[data-v-b204ae6d]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:13px;font-weight:500}.perm-actions[data-v-b204ae6d]{display:flex;gap:4px}.perm-dir[data-v-b204ae6d]{margin-bottom:14px;padding-bottom:10px;border-bottom:1px dashed var(--border)}.perm-dir[data-v-b204ae6d]:last-child{border-bottom:none;margin-bottom:0}.dir-check[data-v-b204ae6d]{font-weight:600;margin-bottom:8px}.perm-menu[data-v-b204ae6d]{margin-left:22px;margin-bottom:8px}.perm-btns[data-v-b204ae6d]{margin-left:24px;display:flex;flex-direction:column;gap:4px}.btn-check[data-v-b204ae6d]{font-size:13px;color:var(--text-secondary)}.check-item[data-v-b204ae6d]{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:14px;cursor:pointer}.type-badge[data-v-b204ae6d]{font-size:11px;padding:1px 6px;border-radius:4px;font-weight:500}.type-badge.dir[data-v-b204ae6d]{background:#b7f36b12;color:var(--text-secondary)}.type-badge.menu[data-v-b204ae6d]{background:var(--accent-soft);color:var(--accent)}.type-badge.btn[data-v-b204ae6d]{background:#8fe06a14;color:var(--success)}.danger[data-v-b204ae6d]{color:var(--danger)}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
.toolbar[data-v-f4d935cd]{margin-bottom:16px}.perm-tags[data-v-f4d935cd]{display:flex;flex-wrap:wrap;gap:4px}.perm-tag[data-v-f4d935cd]{font-size:12px;padding:2px 8px;background:var(--accent-soft);color:var(--accent);border-radius:4px}.field-hint[data-v-f4d935cd]{font-size:12px;color:var(--text-muted)}.modal-wide[data-v-f4d935cd]{max-width:640px;max-height:90vh;display:flex;flex-direction:column}.modal-wide .modal-body[data-v-f4d935cd]{overflow-y:auto}.top-check[data-v-f4d935cd]{font-weight:500}.perm-section[data-v-f4d935cd]{border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--bg-tertiary)}.perm-section-header[data-v-f4d935cd]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:13px;font-weight:500}.perm-actions[data-v-f4d935cd]{display:flex;gap:4px}.perm-dir[data-v-f4d935cd]{margin-bottom:14px;padding-bottom:10px;border-bottom:1px dashed var(--border)}.perm-dir[data-v-f4d935cd]:last-child{border-bottom:none;margin-bottom:0}.dir-check[data-v-f4d935cd]{font-weight:600;margin-bottom:8px}.perm-menu[data-v-f4d935cd]{margin-left:22px;margin-bottom:8px}.perm-btns[data-v-f4d935cd]{margin-left:24px;display:flex;flex-direction:column;gap:4px}.btn-check[data-v-f4d935cd]{font-size:13px;color:var(--text-secondary)}.check-item[data-v-f4d935cd]{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:14px;cursor:pointer}.type-badge[data-v-f4d935cd]{font-size:11px;padding:1px 6px;border-radius:4px;font-weight:500}.type-badge.dir[data-v-f4d935cd]{background:#b7f36b12;color:var(--text-secondary)}.type-badge.menu[data-v-f4d935cd]{background:var(--accent-soft);color:var(--accent)}.type-badge.btn[data-v-f4d935cd]{background:#8fe06a14;color:var(--success)}.danger[data-v-f4d935cd]{color:var(--danger)}
@@ -1 +0,0 @@
.section-title[data-v-0509a01f]{margin-bottom:16px;font-size:16px}.section-desc[data-v-0509a01f],.field-hint[data-v-0509a01f]{color:var(--text-secondary);font-size:12px}.section-desc[data-v-0509a01f]{margin-bottom:16px;font-size:13px}.voice-persona-panel[data-v-0509a01f],.feature-panel[data-v-0509a01f]{margin-top:16px}.persona-heading[data-v-0509a01f]{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:20px;border-bottom:1px solid var(--border)}.persona-preview[data-v-0509a01f]{display:flex;align-items:center;gap:14px;min-width:0}.persona-avatar[data-v-0509a01f]{width:54px;height:54px;flex:0 0 54px;border-radius:18px;display:grid;place-items:center;border:1px solid rgba(183,243,107,.42);background:linear-gradient(145deg,var(--accent-hover),var(--accent));box-shadow:inset 0 1px #ffffff73,0 5px #577c2f,0 13px 26px #6ea63629;color:#11150e;font-size:22px;font-weight:700}.persona-kicker[data-v-0509a01f]{color:var(--accent);font-size:10px;font-weight:700;letter-spacing:.13em}.persona-preview h3[data-v-0509a01f]{margin-top:3px;font-size:18px}.persona-preview p[data-v-0509a01f]{margin-top:4px;color:var(--text-secondary);font-size:13px;line-height:1.5}.enable-switch[data-v-0509a01f]{display:inline-flex;align-items:center;gap:8px;padding:8px 11px;border:1px solid var(--border);border-radius:999px;color:var(--text-secondary);font-size:12px;white-space:nowrap}.enable-switch input[data-v-0509a01f],.feature-item input[data-v-0509a01f],.check-item input[data-v-0509a01f]{accent-color:var(--accent)}.preset-row[data-v-0509a01f]{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:18px 0}.preset-row>span[data-v-0509a01f]{margin-right:4px;color:var(--text-secondary);font-size:12px}.preset-btn[data-v-0509a01f]{padding:7px 11px;border:1px solid var(--border);border-radius:8px;background:#ffffff05;color:var(--text-secondary);font-size:12px}.preset-btn[data-v-0509a01f]:hover{border-color:#b7f36b66;background:var(--accent-soft);color:var(--accent)}.form-grid[data-v-0509a01f]{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid-3[data-v-0509a01f]{grid-template-columns:1fr 1fr .7fr}.persona-textarea[data-v-0509a01f]{min-height:86px;resize:vertical;line-height:1.55}.field-hint[data-v-0509a01f]{margin-top:6px;line-height:1.5}.input-suffix[data-v-0509a01f]{position:relative}.input-suffix input[data-v-0509a01f]{padding-right:38px}.input-suffix span[data-v-0509a01f]{position:absolute;top:50%;right:12px;color:var(--text-muted);font-size:12px;transform:translateY(-50%)}.reference-box[data-v-0509a01f]{margin-bottom:16px;padding:14px;border:1px dashed var(--border-strong);border-radius:10px;display:flex;align-items:center;justify-content:space-between;gap:16px;background:#b7f36b09}.reference-box strong[data-v-0509a01f]{font-size:13px}.reference-box p[data-v-0509a01f]{margin-top:4px;color:var(--text-secondary);font-size:12px;line-height:1.5}.reference-btn[data-v-0509a01f]{flex:0 0 auto;border:1px solid var(--border)}.persona-actions[data-v-0509a01f]{min-height:38px;display:flex;align-items:center;flex-wrap:wrap;gap:12px}.preview-btn[data-v-0509a01f]{border:1px solid var(--border-strong)}.preview-audio[data-v-0509a01f]{width:min(320px,100%);height:36px}.voice-status[data-v-0509a01f]{color:var(--success);font-size:12px}.voice-status.error[data-v-0509a01f]{color:var(--danger)}.feature-grid[data-v-0509a01f]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:20px}.feature-item[data-v-0509a01f],.check-item[data-v-0509a01f]{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}.success-msg[data-v-0509a01f]{margin-top:12px;color:var(--success);font-size:14px}@media(max-width:760px){.persona-heading[data-v-0509a01f],.reference-box[data-v-0509a01f]{align-items:stretch;flex-direction:column}.enable-switch[data-v-0509a01f]{align-self:flex-start}.form-grid[data-v-0509a01f],.form-grid-3[data-v-0509a01f]{grid-template-columns:1fr}}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
.section-title[data-v-c3e4aba4]{margin-bottom:16px;font-size:16px}.section-desc[data-v-c3e4aba4],.field-hint[data-v-c3e4aba4]{color:var(--text-secondary);font-size:12px}.section-desc[data-v-c3e4aba4]{margin-bottom:16px;font-size:13px}.voice-persona-panel[data-v-c3e4aba4],.feature-panel[data-v-c3e4aba4]{margin-top:16px}.persona-heading[data-v-c3e4aba4]{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:20px;border-bottom:1px solid var(--border)}.persona-preview[data-v-c3e4aba4]{display:flex;align-items:center;gap:14px;min-width:0}.persona-avatar[data-v-c3e4aba4]{width:54px;height:54px;flex:0 0 54px;border-radius:18px;display:grid;place-items:center;border:1px solid rgba(183,243,107,.42);background:linear-gradient(145deg,var(--accent-hover),var(--accent));box-shadow:inset 0 1px #ffffff73,0 5px #577c2f,0 13px 26px #6ea63629;color:#11150e;font-size:22px;font-weight:700}.persona-kicker[data-v-c3e4aba4]{color:var(--accent);font-size:10px;font-weight:700;letter-spacing:.13em}.persona-preview h3[data-v-c3e4aba4]{margin-top:3px;font-size:18px}.persona-preview p[data-v-c3e4aba4]{margin-top:4px;color:var(--text-secondary);font-size:13px;line-height:1.5}.enable-switch[data-v-c3e4aba4]{display:inline-flex;align-items:center;gap:8px;padding:8px 11px;border:1px solid var(--border);border-radius:999px;color:var(--text-secondary);font-size:12px;white-space:nowrap}.enable-switch input[data-v-c3e4aba4],.feature-item input[data-v-c3e4aba4],.check-item input[data-v-c3e4aba4]{accent-color:var(--accent)}.preset-row[data-v-c3e4aba4]{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:18px 0}.preset-row>span[data-v-c3e4aba4]{margin-right:4px;color:var(--text-secondary);font-size:12px}.preset-btn[data-v-c3e4aba4]{padding:7px 11px;border:1px solid var(--border);border-radius:8px;background:#ffffff05;color:var(--text-secondary);font-size:12px}.preset-btn[data-v-c3e4aba4]:hover{border-color:#b7f36b66;background:var(--accent-soft);color:var(--accent)}.form-grid[data-v-c3e4aba4]{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid-3[data-v-c3e4aba4]{grid-template-columns:1fr 1fr .7fr}.persona-textarea[data-v-c3e4aba4]{min-height:86px;resize:vertical;line-height:1.55}.field-hint[data-v-c3e4aba4]{margin-top:6px;line-height:1.5}.input-suffix[data-v-c3e4aba4]{position:relative}.input-suffix input[data-v-c3e4aba4]{padding-right:38px}.input-suffix span[data-v-c3e4aba4]{position:absolute;top:50%;right:12px;color:var(--text-muted);font-size:12px;transform:translateY(-50%)}.reference-box[data-v-c3e4aba4]{margin-bottom:16px;padding:14px;border:1px dashed var(--border-strong);border-radius:10px;display:flex;align-items:center;justify-content:space-between;gap:16px;background:#b7f36b09}.reference-box strong[data-v-c3e4aba4]{font-size:13px}.reference-box p[data-v-c3e4aba4]{margin-top:4px;color:var(--text-secondary);font-size:12px;line-height:1.5}.reference-btn[data-v-c3e4aba4]{flex:0 0 auto;border:1px solid var(--border)}.persona-actions[data-v-c3e4aba4]{min-height:38px;display:flex;align-items:center;flex-wrap:wrap;gap:12px}.preview-btn[data-v-c3e4aba4]{border:1px solid var(--border-strong)}.preview-audio[data-v-c3e4aba4]{width:min(320px,100%);height:36px}.voice-status[data-v-c3e4aba4]{color:var(--success);font-size:12px}.voice-status.error[data-v-c3e4aba4]{color:var(--danger)}.feature-grid[data-v-c3e4aba4]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:20px}.feature-item[data-v-c3e4aba4],.check-item[data-v-c3e4aba4]{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}.success-msg[data-v-c3e4aba4]{margin-top:12px;color:var(--success);font-size:14px}@media(max-width:760px){.persona-heading[data-v-c3e4aba4],.reference-box[data-v-c3e4aba4]{align-items:stretch;flex-direction:column}.enable-switch[data-v-c3e4aba4]{align-self:flex-start}.form-grid[data-v-c3e4aba4],.form-grid-3[data-v-c3e4aba4]{grid-template-columns:1fr}}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -5,8 +5,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>AI Chat 管理后台</title>
<link rel="icon" type="image/svg+xml" href="/admin/favicon.svg" />
<script type="module" crossorigin src="/admin/assets/index-BZEF5hZc.js"></script>
<link rel="stylesheet" crossorigin href="/admin/assets/index-B4BiP-qK.css">
<script type="module" crossorigin src="/admin/assets/index-9aV50nsX.js"></script>
<link rel="stylesheet" crossorigin href="/admin/assets/index-DVjG14Yi.css">
</head>
<body>
<div id="app"></div>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,21 @@
import{q as a}from"./index-CTF1v35B.js";/**
* @license @tabler/icons-vue v3.45.0 - MIT
*
* This source code is licensed under the MIT license.
* See the LICENSE file in the root directory of this source tree.
*/var t=a("outline","plus","Plus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);/**
* @license @tabler/icons-vue v3.45.0 - MIT
*
* This source code is licensed under the MIT license.
* See the LICENSE file in the root directory of this source tree.
*/var v=a("outline","trash","Trash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);/**
* @license @tabler/icons-vue v3.45.0 - MIT
*
* This source code is licensed under the MIT license.
* See the LICENSE file in the root directory of this source tree.
*/var s=a("outline","file-text","FileText",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2",key:"svg-1"}],["path",{d:"M9 9l1 0",key:"svg-2"}],["path",{d:"M9 13l6 0",key:"svg-3"}],["path",{d:"M9 17l6 0",key:"svg-4"}]]);/**
* @license @tabler/icons-vue v3.45.0 - MIT
*
* This source code is licensed under the MIT license.
* See the LICENSE file in the root directory of this source tree.
*/var h=a("outline","movie","Movie",[["path",{d:"M4 6a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2l0 -12",key:"svg-0"}],["path",{d:"M8 4l0 16",key:"svg-1"}],["path",{d:"M16 4l0 16",key:"svg-2"}],["path",{d:"M4 8l4 0",key:"svg-3"}],["path",{d:"M4 16l4 0",key:"svg-4"}],["path",{d:"M4 12l16 0",key:"svg-5"}],["path",{d:"M16 8l4 0",key:"svg-6"}],["path",{d:"M16 16l4 0",key:"svg-7"}]]);export{t as I,v as a,s as b,h as c};
@@ -1 +0,0 @@
import{_ as V,u as k,o as E,c as v,a as i,b as t,d as f,e,t as d,w as S,f as c,v as g,g as x,h as A,r as l,i as I,j as N,k as C,l as h}from"./index-sdqi2xzF.js";import{u as M,I as q,T as B}from"./settings-R2Yjxl-Z.js";const L={class:"auth-page"},R={class:"auth-shell"},D={class:"auth-story"},G={class:"auth-logo"},P={class:"auth-card"},U={class:"auth-header"},j={class:"form-group"},z={class:"form-group"},X={key:0,class:"form-error"},F=["disabled"],H={class:"auth-footer"},J={__name:"LoginView",setup(K){const _=N(),b=C(),w=k(),p=M(),n=l(""),u=l(""),o=l(""),a=l(!1);E(()=>p.loadPublic());async function y(){o.value="",a.value=!0;try{await w.login(n.value,u.value),_.push(b.query.redirect||"/")}catch(m){o.value=m.message}finally{a.value=!1}}return(m,s)=>{const T=I("router-link");return h(),v("div",L,[i(B,{class:"auth-theme-toggle"}),t("section",R,[t("aside",D,[t("span",G,[i(f(q),{size:22,"stroke-width":1.8})]),s[2]||(s[2]=t("span",{class:"auth-eyebrow"},"AI CREATIVE SPACE",-1)),s[3]||(s[3]=t("h1",null,[e("把想法放进来,"),t("br"),e("让创作自然发生。")],-1)),s[4]||(s[4]=t("p",null,"在同一个工作区完成对话、图像生成与内容整理。",-1)),s[5]||(s[5]=t("span",{class:"auth-note"},"TEXT · IMAGE · AGENT",-1))]),t("div",P,[t("div",U,[s[6]||(s[6]=t("span",{class:"auth-status"},[t("i"),e(" 账户登录")],-1)),t("h2",null,d(f(p).siteName),1),s[7]||(s[7]=t("p",null,"欢迎回来,请登录您的账户",-1))]),t("form",{onSubmit:S(y,["prevent"])},[t("div",j,[s[8]||(s[8]=t("label",null,"账号",-1)),c(t("input",{"onUpdate:modelValue":s[0]||(s[0]=r=>n.value=r),class:"form-input",placeholder:"用户名或邮箱",required:""},null,512),[[g,n.value]])]),t("div",z,[s[9]||(s[9]=t("label",null,"密码",-1)),c(t("input",{"onUpdate:modelValue":s[1]||(s[1]=r=>u.value=r),type:"password",class:"form-input",placeholder:"请输入密码",required:""},null,512),[[g,u.value]])]),o.value?(h(),v("p",X,d(o.value),1)):x("",!0),t("button",{type:"submit",class:"btn btn-primary auth-btn",disabled:a.value},d(a.value?"登录中...":"进入创作空间"),9,F)],32),t("p",H,[s[11]||(s[11]=e(" 还没有账户? ",-1)),i(T,{to:"/register"},{default:A(()=>[...s[10]||(s[10]=[e("立即注册",-1)])]),_:1})])])])])}}},W=V(J,[["__scopeId","data-v-036d1210"]]);export{W as default};
@@ -0,0 +1 @@
import{_ as V,u as k,a as E,o as S,c as v,b as i,d as t,e as f,f as e,t as d,w as x,g as c,v as g,h as A,i as I,r as l,j as N,k as C,l as M,m as h}from"./index-CTF1v35B.js";import{I as q,T as B}from"./ThemeToggle-BwEr7zqG.js";const L={class:"auth-page"},R={class:"auth-shell"},D={class:"auth-story"},G={class:"auth-logo"},P={class:"auth-card"},U={class:"auth-header"},j={class:"form-group"},z={class:"form-group"},X={key:0,class:"form-error"},F=["disabled"],H={class:"auth-footer"},J={__name:"LoginView",setup(K){const _=C(),b=M(),w=k(),p=E(),n=l(""),u=l(""),o=l(""),a=l(!1);S(()=>p.loadPublic());async function y(){o.value="",a.value=!0;try{await w.login(n.value,u.value),_.push(b.query.redirect||"/")}catch(m){o.value=m.message}finally{a.value=!1}}return(m,s)=>{const T=N("router-link");return h(),v("div",L,[i(B,{class:"auth-theme-toggle"}),t("section",R,[t("aside",D,[t("span",G,[i(f(q),{size:22,"stroke-width":1.8})]),s[2]||(s[2]=t("span",{class:"auth-eyebrow"},"AI CREATIVE SPACE",-1)),s[3]||(s[3]=t("h1",null,[e("把想法放进来,"),t("br"),e("让创作自然发生。")],-1)),s[4]||(s[4]=t("p",null,"在同一个工作区完成对话、图像生成与内容整理。",-1)),s[5]||(s[5]=t("span",{class:"auth-note"},"TEXT · IMAGE · AGENT",-1))]),t("div",P,[t("div",U,[s[6]||(s[6]=t("span",{class:"auth-status"},[t("i"),e(" 账户登录")],-1)),t("h2",null,d(f(p).siteName),1),s[7]||(s[7]=t("p",null,"欢迎回来,请登录您的账户",-1))]),t("form",{onSubmit:x(y,["prevent"])},[t("div",j,[s[8]||(s[8]=t("label",null,"账号",-1)),c(t("input",{"onUpdate:modelValue":s[0]||(s[0]=r=>n.value=r),class:"form-input",placeholder:"用户名或邮箱",required:""},null,512),[[g,n.value]])]),t("div",z,[s[9]||(s[9]=t("label",null,"密码",-1)),c(t("input",{"onUpdate:modelValue":s[1]||(s[1]=r=>u.value=r),type:"password",class:"form-input",placeholder:"请输入密码",required:""},null,512),[[g,u.value]])]),o.value?(h(),v("p",X,d(o.value),1)):A("",!0),t("button",{type:"submit",class:"btn btn-primary auth-btn",disabled:a.value},d(a.value?"登录中...":"进入创作空间"),9,F)],32),t("p",H,[s[11]||(s[11]=e(" 还没有账户? ",-1)),i(T,{to:"/register"},{default:I(()=>[...s[10]||(s[10]=[e("立即注册",-1)])]),_:1})])])])])}}},W=V(J,[["__scopeId","data-v-036d1210"]]);export{W as default};
@@ -1 +0,0 @@
.auth-page[data-v-09353b56]{position:relative;min-height:100dvh;display:grid;place-items:center;padding:28px;overflow:auto;background:radial-gradient(circle at 72% 16%,rgba(183,243,107,.08),transparent 26%),var(--bg-primary)}.auth-theme-toggle[data-v-09353b56]{position:absolute;top:18px;right:18px;z-index:3}.auth-shell[data-v-09353b56]{position:relative;display:grid;width:min(900px,100%);grid-template-columns:1.08fr .92fr;overflow:hidden;border:1px solid var(--border-strong);border-radius:22px;background:var(--bg-secondary);box-shadow:inset 0 1px #ffffff0b,var(--shadow)}.auth-shell[data-v-09353b56]:after{position:absolute;top:0;left:16%;width:36%;height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent);box-shadow:0 0 17px #b7f36b70;content:""}.auth-story[data-v-09353b56]{position:relative;display:flex;min-height:610px;flex-direction:column;justify-content:center;padding:54px;overflow:hidden;border-right:1px solid var(--border);background:linear-gradient(135deg,rgba(183,243,107,.07),transparent 45%),repeating-linear-gradient(135deg,rgba(255,255,255,.018) 0 1px,transparent 1px 14px),#0c0f13}.auth-logo[data-v-09353b56]{display:grid;width:46px;height:46px;place-items:center;margin-bottom:46px;border:1px solid rgba(183,243,107,.5);border-radius:14px;background:var(--accent);color:#11150e;box-shadow:inset 0 1px #ffffff85,0 5px #55782f,0 14px 28px #6ea6362b}.auth-eyebrow[data-v-09353b56],.auth-note[data-v-09353b56]{color:var(--accent);font-family:Cascadia Code,Consolas,monospace;font-size:10px;letter-spacing:.16em}.auth-story h1[data-v-09353b56]{margin:15px 0 19px;font-size:clamp(36px,4.7vw,54px);font-weight:760;letter-spacing:-.06em;line-height:1.04;text-wrap:balance}.auth-story p[data-v-09353b56]{max-width:31ch;color:var(--text-secondary);font-size:14px;line-height:1.75}.auth-note[data-v-09353b56]{position:absolute;bottom:30px;left:54px;color:var(--text-muted);font-size:9px}.auth-card[data-v-09353b56]{display:flex;flex-direction:column;justify-content:center;padding:42px;background:radial-gradient(circle at 100% 0%,rgba(183,243,107,.05),transparent 28%),var(--bg-secondary)}.auth-header[data-v-09353b56]{margin-bottom:27px}.auth-status[data-v-09353b56]{display:inline-flex;align-items:center;gap:7px;color:var(--text-muted);font-size:11px;font-weight:650;letter-spacing:.06em}.auth-status i[data-v-09353b56]{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px #b7f36b99}.auth-header h2[data-v-09353b56]{margin:12px 0 7px;font-size:27px;letter-spacing:-.045em}.auth-header p[data-v-09353b56],.auth-footer[data-v-09353b56]{color:var(--text-secondary);font-size:13px}.auth-btn[data-v-09353b56]{width:100%;min-height:47px;margin-top:6px}.auth-footer[data-v-09353b56]{margin-top:23px;text-align:center}@media(max-width:720px){.auth-page[data-v-09353b56]{padding:14px}.auth-shell[data-v-09353b56]{grid-template-columns:1fr}.auth-story[data-v-09353b56]{display:none}.auth-card[data-v-09353b56]{min-height:640px;padding:36px 25px}}
@@ -0,0 +1 @@
.auth-page[data-v-4a1b27ff]{position:relative;min-height:100dvh;display:grid;place-items:center;padding:28px;overflow:auto;background:radial-gradient(circle at 72% 16%,rgba(183,243,107,.08),transparent 26%),var(--bg-primary)}.auth-theme-toggle[data-v-4a1b27ff]{position:absolute;top:18px;right:18px;z-index:3}.auth-shell[data-v-4a1b27ff]{position:relative;display:grid;width:min(900px,100%);grid-template-columns:1.08fr .92fr;overflow:hidden;border:1px solid var(--border-strong);border-radius:22px;background:var(--bg-secondary);box-shadow:inset 0 1px #ffffff0b,var(--shadow)}.auth-shell[data-v-4a1b27ff]:after{position:absolute;top:0;left:16%;width:36%;height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent);box-shadow:0 0 17px #b7f36b70;content:""}.auth-story[data-v-4a1b27ff]{position:relative;display:flex;min-height:610px;flex-direction:column;justify-content:center;padding:54px;overflow:hidden;border-right:1px solid var(--border);background:linear-gradient(135deg,rgba(183,243,107,.07),transparent 45%),repeating-linear-gradient(135deg,rgba(255,255,255,.018) 0 1px,transparent 1px 14px),#0c0f13}.auth-logo[data-v-4a1b27ff]{display:grid;width:46px;height:46px;place-items:center;margin-bottom:46px;border:1px solid rgba(183,243,107,.5);border-radius:14px;background:var(--accent);color:#11150e;box-shadow:inset 0 1px #ffffff85,0 5px #55782f,0 14px 28px #6ea6362b}.auth-eyebrow[data-v-4a1b27ff],.auth-note[data-v-4a1b27ff]{color:var(--accent);font-family:Cascadia Code,Consolas,monospace;font-size:10px;letter-spacing:.16em}.auth-story h1[data-v-4a1b27ff]{margin:15px 0 19px;font-size:clamp(36px,4.7vw,54px);font-weight:760;letter-spacing:-.06em;line-height:1.04;text-wrap:balance}.auth-story p[data-v-4a1b27ff]{max-width:31ch;color:var(--text-secondary);font-size:14px;line-height:1.75}.auth-note[data-v-4a1b27ff]{position:absolute;bottom:30px;left:54px;color:var(--text-muted);font-size:9px}.auth-card[data-v-4a1b27ff]{display:flex;flex-direction:column;justify-content:center;padding:42px;background:radial-gradient(circle at 100% 0%,rgba(183,243,107,.05),transparent 28%),var(--bg-secondary)}.auth-header[data-v-4a1b27ff]{margin-bottom:27px}.auth-status[data-v-4a1b27ff]{display:inline-flex;align-items:center;gap:7px;color:var(--text-muted);font-size:11px;font-weight:650;letter-spacing:.06em}.auth-status i[data-v-4a1b27ff]{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px #b7f36b99}.auth-header h2[data-v-4a1b27ff]{margin:12px 0 7px;font-size:27px;letter-spacing:-.045em}.auth-header p[data-v-4a1b27ff],.auth-footer[data-v-4a1b27ff]{color:var(--text-secondary);font-size:13px}.invitation-input[data-v-4a1b27ff]{font-family:Cascadia Code,Consolas,monospace;letter-spacing:.04em;text-transform:uppercase}.field-help[data-v-4a1b27ff]{display:block;margin-top:7px;color:var(--text-muted);font-size:11px;line-height:1.5}.auth-btn[data-v-4a1b27ff]{width:100%;min-height:47px;margin-top:6px}.auth-footer[data-v-4a1b27ff]{margin-top:23px;text-align:center}@media(max-width:720px){.auth-page[data-v-4a1b27ff]{padding:14px}.auth-shell[data-v-4a1b27ff]{grid-template-columns:1fr}.auth-story[data-v-4a1b27ff]{display:none}.auth-card[data-v-4a1b27ff]{min-height:640px;padding:36px 25px}}
@@ -0,0 +1 @@
import{_ as k,u as N,a as R,o as S,c as h,b as f,d as e,e as w,f as a,t as g,w as x,g as u,v as r,h as A,i as C,r as o,j as E,k as I,m as y}from"./index-CTF1v35B.js";import{I as q,T as B}from"./ThemeToggle-BwEr7zqG.js";const M={class:"auth-page"},U={class:"auth-shell"},D={class:"auth-story"},G={class:"auth-logo"},j={class:"auth-card"},z={class:"auth-header"},P={class:"form-group"},X={class:"form-group"},F={class:"form-group"},H={class:"form-group"},J={key:0,class:"form-error"},K=["disabled"],L={class:"auth-footer"},O={__name:"RegisterView",setup(Q){const T=I(),V=N(),i=R(),d=o(""),p=o(""),m=o(""),v=o(""),l=o(""),n=o(!1);S(()=>i.loadPublic());async function c(){if(!i.allowRegister){l.value="当前不允许注册";return}l.value="",n.value=!0;try{await V.register(d.value,p.value,m.value,v.value),T.push("/")}catch(b){l.value=b.message}finally{n.value=!1}}return(b,s)=>{const _=E("router-link");return y(),h("div",M,[f(B,{class:"auth-theme-toggle"}),e("section",U,[e("aside",D,[e("span",G,[f(w(q),{size:22,"stroke-width":1.8})]),s[4]||(s[4]=e("span",{class:"auth-eyebrow"},"START CREATING",-1)),s[5]||(s[5]=e("h1",null,[a("一个账户,"),e("br"),a("连接全部创作工具。")],-1)),s[6]||(s[6]=e("p",null,"使用管理员签发的邀请码加入指定部门,登录后即可使用全部模型与创作工具。",-1)),s[7]||(s[7]=e("span",{class:"auth-note"},"TEXT · IMAGE · AGENT",-1))]),e("div",j,[e("div",z,[s[8]||(s[8]=e("span",{class:"auth-status"},[e("i"),a(" 创建账户")],-1)),e("h2",null,g(w(i).siteName),1),s[9]||(s[9]=e("p",null,"填写信息,开始新的创作会话",-1))]),e("form",{onSubmit:x(c,["prevent"])},[e("div",P,[s[10]||(s[10]=e("label",null,"用户名",-1)),u(e("input",{"onUpdate:modelValue":s[0]||(s[0]=t=>d.value=t),class:"form-input",placeholder:"3-50 个字符",required:""},null,512),[[r,d.value]])]),e("div",X,[s[11]||(s[11]=e("label",null,"邮箱",-1)),u(e("input",{"onUpdate:modelValue":s[1]||(s[1]=t=>p.value=t),type:"email",class:"form-input",placeholder:"your@email.com",required:""},null,512),[[r,p.value]])]),e("div",F,[s[12]||(s[12]=e("label",null,"密码",-1)),u(e("input",{"onUpdate:modelValue":s[2]||(s[2]=t=>m.value=t),type:"password",class:"form-input",placeholder:"至少 6 位",required:""},null,512),[[r,m.value]])]),e("div",H,[s[13]||(s[13]=e("label",null,"邀请码",-1)),u(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>v.value=t),class:"form-input invitation-input",placeholder:"例如 INV-1A2B3C4D5E",autocomplete:"one-time-code",required:""},null,512),[[r,v.value,void 0,{trim:!0}]]),s[14]||(s[14]=e("span",{class:"field-help"},"邀请码仅可使用一次,注册后会自动加入邀请码指定的部门",-1))]),l.value?(y(),h("p",J,g(l.value),1)):A("",!0),e("button",{type:"submit",class:"btn btn-primary auth-btn",disabled:n.value},g(n.value?"注册中...":"创建并进入"),9,K)],32),e("p",L,[s[16]||(s[16]=a(" 已有账户? ",-1)),f(_,{to:"/login"},{default:C(()=>[...s[15]||(s[15]=[a("立即登录",-1)])]),_:1})])])])])}}},Z=k(O,[["__scopeId","data-v-4a1b27ff"]]);export{Z as default};
@@ -1 +0,0 @@
import{_ as V,u as k,o as N,c as b,a as p,b as e,d as h,e as l,t as m,w as R,f as v,v as f,g as S,h as x,r as a,i as A,j as E,l as c}from"./index-sdqi2xzF.js";import{u as I,I as C,T as M}from"./settings-R2Yjxl-Z.js";const q={class:"auth-page"},B={class:"auth-shell"},G={class:"auth-story"},U={class:"auth-logo"},D={class:"auth-card"},j={class:"auth-header"},z={class:"form-group"},P={class:"form-group"},X={class:"form-group"},F={key:0,class:"form-error"},H=["disabled"],J={class:"auth-footer"},K={__name:"RegisterView",setup(L){const _=E(),w=k(),n=I(),r=a(""),i=a(""),d=a(""),t=a(""),u=a(!1);N(()=>n.loadPublic());async function y(){if(!n.allowRegister){t.value="当前不允许注册";return}t.value="",u.value=!0;try{await w.register(r.value,i.value,d.value),_.push("/")}catch(g){t.value=g.message}finally{u.value=!1}}return(g,s)=>{const T=A("router-link");return c(),b("div",q,[p(M,{class:"auth-theme-toggle"}),e("section",B,[e("aside",G,[e("span",U,[p(h(C),{size:22,"stroke-width":1.8})]),s[3]||(s[3]=e("span",{class:"auth-eyebrow"},"START CREATING",-1)),s[4]||(s[4]=e("h1",null,[l("一个账户,"),e("br"),l("连接全部创作工具。")],-1)),s[5]||(s[5]=e("p",null,"创建账户后即可保存会话,并使用可用的模型与 Agent。",-1)),s[6]||(s[6]=e("span",{class:"auth-note"},"TEXT · IMAGE · AGENT",-1))]),e("div",D,[e("div",j,[s[7]||(s[7]=e("span",{class:"auth-status"},[e("i"),l(" 创建账户")],-1)),e("h2",null,m(h(n).siteName),1),s[8]||(s[8]=e("p",null,"填写信息,开始新的创作会话",-1))]),e("form",{onSubmit:R(y,["prevent"])},[e("div",z,[s[9]||(s[9]=e("label",null,"用户名",-1)),v(e("input",{"onUpdate:modelValue":s[0]||(s[0]=o=>r.value=o),class:"form-input",placeholder:"3-50 个字符",required:""},null,512),[[f,r.value]])]),e("div",P,[s[10]||(s[10]=e("label",null,"邮箱",-1)),v(e("input",{"onUpdate:modelValue":s[1]||(s[1]=o=>i.value=o),type:"email",class:"form-input",placeholder:"your@email.com",required:""},null,512),[[f,i.value]])]),e("div",X,[s[11]||(s[11]=e("label",null,"密码",-1)),v(e("input",{"onUpdate:modelValue":s[2]||(s[2]=o=>d.value=o),type:"password",class:"form-input",placeholder:"至少 6 位",required:""},null,512),[[f,d.value]])]),t.value?(c(),b("p",F,m(t.value),1)):S("",!0),e("button",{type:"submit",class:"btn btn-primary auth-btn",disabled:u.value},m(u.value?"注册中...":"创建并进入"),9,H)],32),e("p",J,[s[13]||(s[13]=l(" 已有账户? ",-1)),p(T,{to:"/login"},{default:x(()=>[...s[12]||(s[12]=[l("立即登录",-1)])]),_:1})])])])])}}},W=V(K,[["__scopeId","data-v-09353b56"]]);export{W as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
import{q as n,_ as i,m as p,c as d,d as t,e as a,z as r,S as m}from"./index-CTF1v35B.js";/**
* @license @tabler/icons-vue v3.45.0 - MIT
*
* This source code is licensed under the MIT license.
* See the LICENSE file in the root directory of this source tree.
*/var T=n("outline","sparkles","Sparkles",[["path",{d:"M16 18a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2m0 -12a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2m-7 12a6 6 0 0 1 6 -6a6 6 0 0 1 -6 -6a6 6 0 0 1 -6 6a6 6 0 0 1 6 6",key:"svg-0"}]]);const u={class:"theme-toggle",role:"group","aria-label":"界面主题"},g=["aria-pressed"],k=["aria-pressed"],_={__name:"ThemeToggle",setup(c){const{theme:s,setTheme:o}=m();return(b,e)=>(p(),d("div",u,[t("button",{type:"button",class:r({active:a(s)==="light"}),"aria-pressed":a(s)==="light","aria-label":"使用浅色主题",title:"浅色主题",onClick:e[0]||(e[0]=l=>a(o)("light"))},[...e[2]||(e[2]=[t("span",null,"浅色",-1)])],10,g),t("button",{type:"button",class:r({active:a(s)==="dark"}),"aria-pressed":a(s)==="dark","aria-label":"使用深色主题",title:"深色主题",onClick:e[1]||(e[1]=l=>a(o)("dark"))},[...e[3]||(e[3]=[t("span",null,"深色",-1)])],10,k)]))}},h=i(_,[["__scopeId","data-v-6644b9d7"]]);export{T as I,h as T};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,6 +0,0 @@
import{p as f,_ as k,l as b,c as h,b as u,d as s,y as g,P as y,m as T,r as t,n as c}from"./index-sdqi2xzF.js";/**
* @license @tabler/icons-vue v3.45.0 - MIT
*
* This source code is licensed under the MIT license.
* See the LICENSE file in the root directory of this source tree.
*/var A=f("outline","sparkles","Sparkles",[["path",{d:"M16 18a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2m0 -12a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2m-7 12a6 6 0 0 1 6 -6a6 6 0 0 1 -6 -6a6 6 0 0 1 -6 6a6 6 0 0 1 6 6",key:"svg-0"}]]);const w={class:"theme-toggle",role:"group","aria-label":""},C=["aria-pressed"],I=["aria-pressed"],S={__name:"ThemeToggle",setup(d){const{theme:a,setTheme:o}=y();return(n,e)=>(b(),h("div",w,[u("button",{type:"button",class:g({active:s(a)==="light"}),"aria-pressed":s(a)==="light","aria-label":"使",title:"",onClick:e[0]||(e[0]=r=>s(o)("light"))},[...e[2]||(e[2]=[u("span",null,"",-1)])],10,C),u("button",{type:"button",class:g({active:s(a)==="dark"}),"aria-pressed":s(a)==="dark","aria-label":"使",title:"",onClick:e[1]||(e[1]=r=>s(o)("dark"))},[...e[3]||(e[3]=[u("span",null,"",-1)])],10,I)]))}},B=k(S,[["__scopeId","data-v-6644b9d7"]]),P=T("settings",()=>{const d=t({markdown:!0,image:!0,video:!0,voice:!0,document:!0,emoji:!0,upload_image:!0,upload_video:!0,upload_file:!0,paste_image:!0}),a=t("AI Chat"),o=t(!0),n=t({name:"AI ",greeting:""}),e=t([]),r=t([]),p=t(!1);async function m(){const i=(await c.get("/settings/public")).data.data;d.value=i.features,a.value=i.site_name,o.value=i.allow_register,n.value=i.voice_persona||n.value,p.value=!0}async function v(){const l=await c.get("/models");e.value=l.data.data}async function _(){const l=await c.get("/agents");r.value=l.data.data||[]}return{features:d,siteName:a,allowRegister:o,voicePersona:n,models:e,agents:r,loaded:p,loadPublic:m,loadModels:v,loadAgents:_}});export{A as I,B as T,P as u};
+2 -2
View File
@@ -5,8 +5,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>AI Chat</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<script type="module" crossorigin src="/assets/index-sdqi2xzF.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-De9xW-9E.css">
<script type="module" crossorigin src="/assets/index-CTF1v35B.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DOyHbQvS.css">
</head>
<body>
<div id="app"></div>