mirror of https://github.com/rocboss/paopao-ce
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
12 KiB
1 line
12 KiB
import{A as e,Bt as t,C as n,D as r,H as i,K as a,O as o,Q as s,S as c,W as l,b as u,h as d,lt as f,st as p,w as m,x as h}from"./@css-render-YsNuQTaE.js";import{r as g}from"./pinia-TbaIYBWH.js";import{i as _}from"./vue-router-Dw9lfhBK.js";import{$ as ee,P as te,S as ne,Z as re,ct as ie,et as ae,f as oe,lt as se,nt as ce,ot as le,st as ue,tt as de,u as fe}from"./naive-ui-DIGPL69-.js";import"./@juggle-BrKhuOcS.js";import{a as v,c as y,i as b,l as pe,r as x}from"./sidebar-CIS7wt6Z.js";import{P as S,t as C}from"./index-D3WChr5M.js";import{t as me}from"./main-nav-BLJ4tcq0.js";var he={key:1,class:`empty-wrap`},ge={class:`domain-header`},_e={class:`domain-title`},ve={class:`domain-subtitle`},ye={class:`section-header`},be={class:`section-title`},xe={class:`section-subtitle`},Se={class:`setting-item-top`},Ce={class:`setting-item-title`},we={class:`setting-item-key`},Te={class:`setting-item-description`},Ee={class:`setting-meta`},De={class:`meta-item`},Oe={class:`meta-item`},ke={key:0,class:`meta-item`},Ae={class:`setting-editor`},je={class:`setting-hint`},Me={class:`inactive-group-title`},Ne={class:`inactive-section-title`},Pe={class:`inactive-item-top`},Fe={class:`setting-item-title`},Ie={class:`setting-item-key`},Le={class:`setting-item-description`},Re={class:`setting-meta inactive-meta`},ze={class:`meta-item`},Be={class:`meta-item`},Ve={class:`form-submit-wrap`},w=x(e({__name:`AdminSettings`,setup(e){let x={web:`Web 站点`,app:`应用行为`,search:`搜索能力`,storage:`对象存储`,notifications:`通知服务`,payments:`支付服务`},w={profile:`站点资料`,general:`常规设置`,limits:`限制与阈值`,bridge:`索引桥接`,meili:`Meilisearch`,zinc:`Zinc`,common:`通用存储`,local_oss:`本地 OSS`,minio:`MinIO`,s3:`Amazon S3`,alioss:`AliOSS`,cos:`腾讯 COS`,huawei_obs:`华为 OBS`,sms_juhe:`聚合短信`,alipay:`支付宝`},T=pe(),E=y(),He=b(),{userInfo:D}=g(E),O=_(),k=f(!1),A=f(!1),j=f(!1),M=f([]),N=f([]),P=p({}),F=p({}),I=p({}),L=u(()=>{let e={};for(let t of N.value)e[t.key]=t;return e}),R=u(()=>B(!0)),z=u(()=>B(!1)),Ue=u(()=>z.value.reduce((e,t)=>e+t.itemCount,0)),B=e=>{let t=[],n={};for(let r of M.value){if(r.active!==e)continue;n[r.group]||(n[r.group]={key:r.group,label:We(r.group),sections:[],itemCount:0},t.push(n[r.group]));let i=n[r.group],a=i.sections.find(e=>e.key===r.section);a||(a={key:r.section,label:Ge(r.section),items:[]},i.sections.push(a)),a.items.push({schema:r,value:L.value[r.key]}),i.itemCount++}return t},V=(e,t)=>{for(let t of Object.keys(e))delete e[t];for(let[n,r]of Object.entries(t))e[n]=r},H=e=>e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),We=e=>x[e]??H(e),Ge=e=>w[e]??H(e),U=e=>e.active&&!e.readonly&&e.apply_mode!==`bootstrap_only`,Ke=e=>!!e.options&&e.options.length>0,qe=e=>e.options??[],Je=e=>e===`override`?`管理覆盖`:`启动配置`,Ye=e=>e===`override`?`success`:`default`,W=e=>{switch(e){case`live`:return`即时生效`;case`restart_required`:return`重启后生效`;case`bootstrap_only`:return`仅启动配置`;default:return e}},G=e=>{switch(e){case`live`:return`success`;case`restart_required`:return`warning`;case`bootstrap_only`:return`default`;default:return`default`}},K=e=>{switch(e.type){case`bool`:return!1;case`int`:case`float`:return null;default:return``}},q=(e,t)=>{if(t===void 0)return K(e);switch(e.type){case`bool`:return!!t;case`int`:case`float`:return t===null||t===``?null:typeof t==`number`?t:Number(t);default:return typeof t==`string`?t:String(t??``)}},Xe=e=>{let t=L.value[e.key];return e.secret?K(e):t?.value===void 0?t?.effective_value===void 0?e.bootstrap_value===void 0?K(e):q(e,e.bootstrap_value):q(e,t.effective_value):q(e,t.value)},J=()=>{let e={},t={},n={};for(let r of M.value){if(r.secret){n[r.key]=``;continue}let i=Xe(r);e[r.key]=i,t[r.key]=i}V(P,e),V(F,t),V(I,n)},Y=(e,t)=>{if(e==null)return`未设置`;if(typeof e==`boolean`)return e?`已开启`:`已关闭`;if(typeof e==`number`)return t?.type,`${e}`;let n=String(e).trim();return n.length>0?n:`未设置`},X=e=>e?`已配置`:`未配置`,Ze=e=>e.value?.value===void 0?e.value?.effective_value===void 0?e.schema.bootstrap_value===void 0?null:e.schema.bootstrap_value:e.value.effective_value:e.value.value,Z=e=>e.schema.secret?X(e.value?.configured??e.schema.bootstrap_configured):Y(Ze(e),e.schema),Qe=e=>e.secret?X(e.bootstrap_configured):Y(e.bootstrap_value,e),$e=e=>!e.schema.secret&&e.value?.pending_restart&&e.value.effective_value!==void 0&&e.value.value!==void 0&&e.value.effective_value!==e.value.value,et=e=>e.key.includes(`private_key`),tt=e=>e.schema.active?e.schema.secret?U(e.schema)?`为安全起见不会回显当前明文。留空表示保持原值,输入新内容后会安全替换。`:`为安全起见不会显示当前明文,当前项仅展示是否已配置。`:e.schema.apply_mode===`bootstrap_only`||e.schema.readonly?`该项由启动配置控制,当前页面仅提供查看,不允许直接覆盖。`:e.value?.pending_restart?`新配置已保存,但当前服务仍在使用旧值;重启后会切换到已保存的配置。`:e.schema.apply_mode===`restart_required`?`保存后会写入管理覆盖值,但需要服务重启后才会切换。`:`保存后会立即刷新当前服务中的配置状态。`:`当前功能未启用,所以这项配置暂不参与当前运行行为。`,nt=async e=>{if(e.some(e=>e.startsWith(`web_profile.`)))try{let e=await C();He.updateSiteProfile(e)}catch{}},rt=async()=>{k.value=!0;try{let[e,t]=await Promise.all([v.v1.admin.get.settings.schema(),v.v1.admin.get.settings.values()]);M.value=e.items,N.value=t.items,j.value=t.has_pending_restart,J()}catch{}finally{k.value=!1}},it=async()=>{if(!localStorage.getItem(`PAOPAO_TOKEN`)&&D.value.id===0)return T.triggerAuth(!0),T.triggerAuthKey(`signin`),O.replace({name:`home`}),!1;if(D.value.id===0)try{let e=await S();E.updateUserinfo(e)}catch{return E.userLogout(),O.replace({name:`home`}),!1}return D.value.is_admin?!0:(O.replace({name:`404`}),!1)},at=()=>{ot();let e=[];for(let t of M.value){if(!U(t))continue;if(t.secret){let n=(I[t.key]??``).trim();n.length>0&&e.push({key:t.key,value:n});continue}let n=q(t,P[t.key]),r=q(t,F[t.key]);if((t.type===`int`||t.type===`float`)&&(n===null||Number.isNaN(n)))return window.$message.warning(`${t.label} 请输入有效数值`),null;if(t.type===`string`){let i=String(n??``).trim();i!==String(r??``).trim()&&e.push({key:t.key,value:i});continue}n!==r&&e.push({key:t.key,value:n})}return e},Q=e=>{let t=M.value.find(t=>t.key===e);if(!t)return null;let n=q(t,P[e]);return typeof n!=`number`||Number.isNaN(n)?null:n},$=(e,t)=>{e in P&&(P[e]=t)},ot=()=>{let e=Q(`web_profile.default_tweet_max_length`);if(e!==null){let t=Q(`web_profile.tweet_web_ellipsis_size`),n=Q(`web_profile.tweet_mobile_ellipsis_size`);t!==null&&t>e&&$(`web_profile.tweet_web_ellipsis_size`,e),n!==null&&n>e&&$(`web_profile.tweet_mobile_ellipsis_size`,e)}let t=Q(`app.max_page_size`),n=Q(`app.default_page_size`);t!==null&&n!==null&&n>t&&$(`app.default_page_size`,t)},st=()=>{J()},ct=async e=>{e.preventDefault();let t=at();if(t){if(t.length===0){window.$message.info(`没有需要保存的变更`);return}A.value=!0;try{let e=await v.v1.admin.post.settings.save({items:t});N.value=e.items,j.value=e.has_pending_restart,J(),await nt(e.updated_keys),window.$message.success(`已保存 ${e.updated_keys.length} 项配置`)}catch{}finally{A.value=!1}}};return i(async()=>{await it()&&await rt()}),(e,i)=>{let u=me,f=ue,p=se,g=ie,_=te,v=le,y=fe,b=re,pe=ne,x=de,S=ee,C=ae,w=ce,T=oe;return l(),m(`div`,null,[o(u,{title:`系统配置`}),o(x,{title:`系统配置`,size:`small`,class:`setting-card`},{default:s(()=>[o(T,{show:k.value},{default:s(()=>[o(_,{vertical:``,size:`large`,class:`settings-layout`},{default:s(()=>[j.value?(l(),c(f,{key:0,type:`warning`,class:`setting-alert`},{default:s(()=>[...i[0]||=[r(` 检测到部分配置已经保存,但需要重启服务后才会切换到新值。带有“待重启”标记的配置当前仍在使用旧的生效值。 `,-1)]]),_:1})):n(``,!0),R.value.length===0?(l(),m(`div`,he,[o(p,{size:`large`,description:`暂无可显示的配置项`})])):n(``,!0),(l(!0),m(d,null,a(R.value,e=>(l(),m(`div`,{key:e.key,class:`domain-block`},[h(`div`,ge,[h(`div`,null,[h(`div`,_e,t(e.label),1),h(`div`,ve,t(e.itemCount)+` 项配置 `,1)]),o(g,{round:``,size:`small`},{default:s(()=>[r(t(e.key),1)]),_:2},1024)]),(l(!0),m(d,null,a(e.sections,u=>(l(),c(x,{key:`${e.key}-${u.key}`,size:`small`,class:`section-card`,embedded:``,bordered:!1},{header:s(()=>[h(`div`,ye,[h(`div`,be,t(u.label),1),h(`div`,xe,t(u.items.length)+` 项 `,1)])]),default:s(()=>[(l(!0),m(d,null,a(u.items,e=>(l(),m(`div`,{key:e.schema.key,class:`setting-item`},[h(`div`,Se,[h(`div`,null,[h(`div`,Ce,t(e.schema.label),1),h(`div`,we,t(e.schema.key),1)]),o(_,{size:`small`},{default:s(()=>[o(g,{round:``,size:`small`,type:G(e.schema.apply_mode)},{default:s(()=>[r(t(W(e.schema.apply_mode)),1)]),_:2},1032,[`type`]),o(g,{round:``,size:`small`,type:Ye(e.value?.source)},{default:s(()=>[r(t(Je(e.value?.source)),1)]),_:2},1032,[`type`]),e.schema.secret?(l(),c(g,{key:0,round:``,size:`small`},{default:s(()=>[...i[1]||=[r(` 机密 `,-1)]]),_:1})):n(``,!0),e.value?.pending_restart?(l(),c(g,{key:1,round:``,size:`small`,type:`warning`},{default:s(()=>[...i[2]||=[r(` 待重启 `,-1)]]),_:1})):n(``,!0),e.schema.readonly||e.schema.apply_mode===`bootstrap_only`?(l(),c(g,{key:2,round:``,size:`small`,type:`default`},{default:s(()=>[...i[3]||=[r(` 只读 `,-1)]]),_:1})):n(``,!0)]),_:2},1024)]),h(`div`,Te,t(e.schema.description),1),h(`div`,Ee,[h(`span`,De,` 当前状态:`+t(Z(e)),1),h(`span`,Oe,` 启动基线:`+t(Qe(e.schema)),1),$e(e)?(l(),m(`span`,ke,` 当前生效:`+t(Y(e.value?.effective_value,e.schema)),1)):n(``,!0)]),h(`div`,Ae,[e.schema.secret?(l(),c(v,{key:0,value:I[e.schema.key],"onUpdate:value":t=>I[e.schema.key]=t,type:`password`,"show-password-on":`click`,disabled:!U(e.schema),placeholder:`留空表示保持当前配置,输入后将替换`},null,8,[`value`,`onUpdate:value`,`disabled`])):e.schema.type===`bool`?(l(),c(y,{key:1,value:P[e.schema.key],"onUpdate:value":t=>P[e.schema.key]=t,disabled:!U(e.schema)},null,8,[`value`,`onUpdate:value`,`disabled`])):Ke(e.schema)?(l(),c(b,{key:2,value:P[e.schema.key],"onUpdate:value":t=>P[e.schema.key]=t,options:qe(e.schema),disabled:!U(e.schema)},null,8,[`value`,`onUpdate:value`,`options`,`disabled`])):e.schema.type===`int`||e.schema.type===`float`?(l(),c(pe,{key:3,value:P[e.schema.key],"onUpdate:value":t=>P[e.schema.key]=t,class:`number-input`,precision:e.schema.type===`float`?4:0,step:e.schema.type===`float`?.01:1,disabled:!U(e.schema)},null,8,[`value`,`onUpdate:value`,`precision`,`step`,`disabled`])):(l(),c(v,{key:4,value:P[e.schema.key],"onUpdate:value":t=>P[e.schema.key]=t,type:et(e.schema)?`textarea`:`text`,autosize:et(e.schema)?{minRows:3,maxRows:6}:void 0,disabled:!U(e.schema),placeholder:`请输入配置值`},null,8,[`value`,`onUpdate:value`,`type`,`autosize`,`disabled`]))]),h(`div`,je,t(tt(e)),1)]))),128))]),_:2},1024))),128))]))),128)),z.value.length>0?(l(),c(C,{key:2,class:`inactive-collapse`},{default:s(()=>[o(S,{title:`未激活配置 (${Ue.value})`,name:`inactive`},{default:s(()=>[(l(!0),m(d,null,a(z.value,e=>(l(),m(`div`,{key:`inactive-${e.key}`,class:`inactive-group`},[h(`div`,Me,t(e.label),1),(l(!0),m(d,null,a(e.sections,u=>(l(),m(`div`,{key:`inactive-${e.key}-${u.key}`,class:`inactive-section`},[h(`div`,Ne,t(u.label),1),(l(!0),m(d,null,a(u.items,e=>(l(),m(`div`,{key:`inactive-${e.schema.key}`,class:`inactive-item`},[h(`div`,Pe,[h(`div`,null,[h(`div`,Fe,t(e.schema.label),1),h(`div`,Ie,t(e.schema.key),1)]),o(_,{size:`small`},{default:s(()=>[o(g,{round:``,size:`small`,type:`default`},{default:s(()=>[...i[4]||=[r(`未激活`,-1)]]),_:1}),o(g,{round:``,size:`small`,type:G(e.schema.apply_mode)},{default:s(()=>[r(t(W(e.schema.apply_mode)),1)]),_:2},1032,[`type`]),e.schema.secret?(l(),c(g,{key:0,round:``,size:`small`},{default:s(()=>[...i[5]||=[r(`机密`,-1)]]),_:1})):n(``,!0)]),_:2},1024)]),h(`div`,Le,t(e.schema.description),1),h(`div`,Re,[h(`span`,ze,` 当前状态:`+t(Z(e)),1),h(`span`,Be,` 启动基线:`+t(Qe(e.schema)),1)]),i[6]||=h(`div`,{class:`setting-hint`},` 当前功能或能力未启用,所以该配置暂不参与当前运行时行为。 `,-1)]))),128))]))),128))]))),128))]),_:1},8,[`title`])]),_:1})):n(``,!0),h(`div`,Ve,[o(w,{round:``,quaternary:``,disabled:A.value||k.value,onClick:st},{default:s(()=>[...i[7]||=[r(` 重置未保存更改 `,-1)]]),_:1},8,[`disabled`]),o(w,{round:``,type:`primary`,secondary:``,loading:A.value,onClick:ct},{default:s(()=>[...i[8]||=[r(` 保存配置 `,-1)]]),_:1},8,[`loading`])])]),_:1})]),_:1},8,[`show`])]),_:1})])}}}),[[`__scopeId`,`data-v-e2182001`]]);export{w as default}; |