1 line
4.8 KiB
JavaScript
1 line
4.8 KiB
JavaScript
import{$ as e,F as t,L as n,M as r,R as i,b as a,bt as o,f as s,g as c,m as l,ot as u,p as d,q as f,s as p,t as m,v as h,y as g}from"./api-DftvpHMa.js";import{a as _}from"./config-provider-DjHSmQsy.js";import{t as v}from"./time-pIfF89ap.js";var y={style:{display:`flex`,"justify-content":`space-between`,"align-items":`center`,"margin-bottom":`20px`}},b={style:{display:`flex`,"justify-content":`space-between`,"align-items":`flex-start`}},x={style:{"font-size":`13px`,"font-weight":`600`,"margin-bottom":`2px`}},S={style:{color:`#999`,"font-size":`11px`,"margin-bottom":`6px`}},C={key:0,style:{"margin-top":`6px`,"font-size":`18px`}},w={key:0,style:{color:`#00B386`}},T={key:1,style:{color:`#ccc`}},E={key:1,style:{"margin-top":`6px`,"font-size":`16px`,"font-weight":`700`,"word-break":`break-all`}},D={style:{color:`#999`,"font-size":`10px`,"margin-top":`4px`}},O={style:{"margin-bottom":`10px`,color:`#999`,"font-size":`12px`}},k=a({__name:`Configs`,setup(a){let k=e([]),A=e(!0),j={"brand.app_name":{label:`App 名称`,desc:`App 内展示名称`,type:`text`},"brand.slogan":{label:`App 标语`,desc:`启动页/关于页口号`,type:`text`},"brand.logo_url":{label:`Logo URL`,desc:`品牌 Logo 远程地址`,type:`url`},"limit.daily_ai_messages":{label:`全局日限额`,desc:`全站每日 AI 消息上限`,type:`number`},"limit.daily_ai_messages_per_user":{label:`每人日限额`,desc:`单用户每日 AI 消息上限`,type:`number`},"limit.max_monthly_budget":{label:`最大月预算`,desc:`用户可设置的最高月预算金额`,type:`number`},"feature.ocr_enabled":{label:`OCR 拍照识别`,desc:`是否开放 OCR 小票识别功能`,type:`switch`},"feature.voice_enabled":{label:`语音输入`,desc:`是否开放语音记账功能`,type:`switch`},"feature.ai_auto_book":{label:`AI 自动入账`,desc:`AI 识别记账意图后是否直接写库`,type:`switch`},"feature.sticker_enabled":{label:`表情包功能`,desc:`是否开放表情包面板和 AI 表情回复`,type:`switch`},"system.default_ledger_name":{label:`默认账本名`,desc:`新用户注册时自动创建`,type:`text`},"system.max_ledgers_per_user":{label:`每人最多账本`,desc:`单用户可创建账本上限`,type:`number`}},M=[{key:`brand`,label:`品牌`,prefix:`brand.`},{key:`limit`,label:`限额`,prefix:`limit.`},{key:`feature`,label:`功能开关`,prefix:`feature.`},{key:`system`,label:`系统`,prefix:`system.`}],N=s(()=>{let e={};for(let t of k.value){let n=M.find(e=>t.key.startsWith(e.prefix))?.key||`other`;e[n]||(e[n]=[]),e[n].push(t)}return e});r(P);async function P(){A.value=!0;try{k.value=await m.configs()}finally{A.value=!1}}let F=e(!1),I=e(null),L=e(``),R=s(()=>I.value?j[I.value.key]:null);function z(e){I.value=e,L.value=e.value,F.value=!0}async function B(){I.value&&(await m.updateConfig(I.value.id,L.value),_.success(`已更新 ${I.value.key}`),F.value=!1,P())}return(e,r)=>{let a=i(`a-button`),s=i(`a-tag`),m=i(`a-card`),_=i(`a-col`),k=i(`a-row`),A=i(`a-tab-pane`),V=i(`a-tabs`),H=i(`a-switch`),U=i(`a-input-number`),W=i(`a-select`),G=i(`a-input`),K=i(`a-modal`);return t(),c(`div`,null,[d(`div`,y,[r[6]||=d(`h2`,{style:{margin:`0`}},`品牌配置`,-1),g(a,{onClick:P},{default:f(()=>[...r[5]||=[h(`刷新`,-1)]]),_:1})]),g(V,null,{default:f(()=>[(t(),c(p,null,n(M,e=>g(A,{key:e.key,tab:e.label},{default:f(()=>[g(k,{gutter:[16,12]},{default:f(()=>[(t(!0),c(p,null,n(N.value[e.key],e=>(t(),l(_,{key:e.id,span:8},{default:f(()=>[g(m,{size:`small`,hoverable:``,onClick:t=>z(e)},{default:f(()=>[d(`div`,b,[d(`div`,null,[d(`div`,x,o(j[e.key]?.label||e.key),1),d(`div`,S,o(j[e.key]?.desc||``),1)]),g(s,{color:`blue`,style:{"margin-left":`8px`}},{default:f(()=>[h(`v`+o(e.version),1)]),_:2},1024)]),j[e.key]?.type===`switch`?(t(),c(`div`,C,[e.value===`true`?(t(),c(`span`,w,`✅ 已开启`)):(t(),c(`span`,T,`❌ 已关闭`))])):(t(),c(`div`,E,o(e.key.includes(`key`)?`••••••••`:e.value||`(空)`),1)),d(`div`,D,o(u(v)(e.updatedAt)),1)]),_:2},1032,[`onClick`])]),_:2},1024))),128))]),_:2},1024)]),_:2},1032,[`tab`])),64))]),_:1}),g(K,{open:F.value,"onUpdate:open":r[4]||=e=>F.value=e,title:`编辑配置: ${I.value?.key}`,onOk:B,width:440},{default:f(()=>[d(`div`,O,o(R.value?.desc),1),R.value?.type===`switch`?(t(),l(H,{key:0,checked:L.value===`true`,onChange:r[0]||=e=>L.value=String(e),"checked-children":`开启`,"un-checked-children":`关闭`},null,8,[`checked`])):R.value?.type===`number`?(t(),l(U,{key:1,value:L.value,"onUpdate:value":r[1]||=e=>L.value=e,style:{width:`100%`}},null,8,[`value`])):R.value?.type===`select`&&R.value.options?(t(),l(W,{key:2,value:L.value,"onUpdate:value":r[2]||=e=>L.value=e,style:{width:`100%`},options:R.value.options.map(e=>({value:e,label:e}))},null,8,[`value`,`options`])):(t(),l(G,{key:3,value:L.value,"onUpdate:value":r[3]||=e=>L.value=e},null,8,[`value`]))]),_:1},8,[`open`,`title`])])}}});export{k as default}; |