ConfigInfoDrawer.BdEJ-C1T.js 15 KB

1
  1. import{ae as e,af as l,z as a,ad as i,A as t,t as o,q as s,a as n,J as u,P as r}from"./element-plus.DYHj_7Hl.js";import{w as d,g as p,P as c,J as m,_}from"./index.KDUAIHt0.js";import{u as v}from"./vue-i18n.DXLOBfKS.js";import{E as f}from"./size.DawKDxKL.js";import{S as g}from"./EnterpriseForm.DEsU47HX.js";import{M as y,aD as b,a_ as h,aL as w,s as j,bJ as k,I as x,H as V,u as D,F as I,aX as P,v as U,bk as z,bL as C,q as S,aU as B,aS as J}from"./@vue.DbmRtknU.js";import"./lodash-es.DaM9m3L-.js";import"./async-validator.j0i5Y79Y.js";import"./@popperjs.DxtSUbXb.js";import"./@ctrl.BEgk5vdO.js";import"./dayjs.DCWbrgJ0.js";import"./memoize-one.BAtLgO95.js";import"./normalize-wheel-es.TzhA1irr.js";import"./@floating-ui.8vigAAFV.js";import"./pinia.BlfmsheH.js";import"./@vueuse.0G3dmZIi.js";import"./nprogress.BTjJXJ-u.js";import"./codemirror.CYSLATvI.js";import"./diff-match-patch.DkK4wJpa.js";import"./vue-web-terminal.D-rog7dz.js";import"./vue.MGxsMDTR.js";/* empty css */import"./vue-router.yxIMtaxH.js";import"./axios.Da-QW0H8.js";import"./qs.BQjOrGHM.js";import"./side-channel.4q28KFJj.js";import"./es-errors.DTEWvbA_.js";import"./object-inspect.DvQZIv3_.js";import"./side-channel-list.Do0-XmF5.js";import"./side-channel-map.DNHQ53lO.js";import"./get-intrinsic.Bbe5x-9b.js";import"./es-object-atoms.CyiuHMUS.js";import"./math-intrinsics.pM-JTNwN.js";import"./gopd.BudZp56J.js";import"./es-define-property.F0aoeP8o.js";import"./has-symbols.BcO-SUVM.js";import"./get-proto.Cb_fpw-j.js";import"./dunder-proto.WEH3rgQR.js";import"./call-bind-apply-helpers.DJjIjCF_.js";import"./function-bind.DrnB-baK.js";import"./hasown.BXcyoiLU.js";import"./call-bound.22gFUC2Q.js";import"./side-channel-weakmap.DpSeWE6i.js";import"./pinia-plugin-persistedstate.COWkwNh5.js";import"./@intlify.DPMNdUn_.js";const O={class:"flex items-center gap-2 w-full"},A={class:"flex items-center gap-2 w-full"},F={class:"flex items-center gap-2 w-full"},E={class:"flex items-center gap-2 w-full"},N={class:"space-y-2"},T={class:"space-y-2"},q={key:1,class:"space-y-2"},L=_(y({__name:"ConfigInfoDrawer",props:{modelValue:{type:Boolean}},emits:["update:modelValue"],setup(_,{emit:y}){const L=()=>Math.random().toString(36).substr(2,9),$=e=>/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e),H=d(),K=S(()=>(H.device,m.DESKTOP,"60%")),M=v().t,G=p(),W=B("website"),X=_,Q=y,R=S({get:()=>X.modelValue,set:e=>Q("update:modelValue",e)}),Y=J({id:void 0,config_name:"",config_key:"",config_value:"",config_type:void 0,description:""}),Z=J({}),ee=e=>{Z[e]=!0},le=S(()=>Object.keys(Z).length>0),ae=async()=>{var e,l,a;const i=Object.keys(Z);if(0!==i.length)try{if("white_api_list_path"in Z&&(null==(e=ve.value.white_api_list_path)?void 0:e.id)){const e=ue.value.map(e=>e.value.trim()).filter(Boolean),l=JSON.stringify(e);await c.updateParams(ve.value.white_api_list_path.id,{...ve.value.white_api_list_path,config_value:l})}if("ip_black_list"in Z&&(null==(l=fe.value.ip_black_list)?void 0:l.id)){const e=re.value.map(e=>e.value.trim()).filter(Boolean),l=JSON.stringify(e);await c.updateParams(fe.value.ip_black_list.id,{...fe.value.ip_black_list,config_value:l})}if("ip_white_list"in Z&&(null==(a=ge.value.ip_white_list)?void 0:a.id)){const e=de.value.map(e=>e.value.trim()).filter(Boolean),l=JSON.stringify(e);await c.updateParams(ge.value.ip_white_list.id,{...ge.value.ip_white_list,config_value:l})}const t=i.filter(e=>!["white_api_list_path","ip_black_list","ip_white_list"].includes(e)).map(e=>{const l=oe.value[e]||ye.value[e]||se.value[e]||ne.value[e]||ge.value[e];return l&&l.id?c.updateParams(l.id,{...l}):Promise.resolve()});await Promise.all(t),i.forEach(e=>{delete Z[e]}),G.isConfigLoaded=!1,await G.getConfig(),pe()}catch(t){}};async function ie(){R.value=!1}function te(){(()=>{var e,l,a,i,t;pe();const o=Object.keys(Z);for(const s of o)oe.value[s]?oe.value[s].config_value=(null==(e=G.configData[s])?void 0:e.config_value)||"":ye.value[s]?ye.value[s].config_value=(null==(l=G.configData[s])?void 0:l.config_value)||"":se.value[s]?se.value[s].config_value=(null==(a=G.configData[s])?void 0:a.config_value)||"":ne.value[s]?ne.value[s].config_value=(null==(i=G.configData[s])?void 0:i.config_value)||"":ge.value[s]&&"ip_white_list"!==s&&(ge.value[s].config_value=(null==(t=G.configData[s])?void 0:t.config_value)||""),delete Z[s];r.close()})()}const oe=S(()=>({sys_web_title:G.configData.sys_web_title,sys_web_version:G.configData.sys_web_version,sys_web_description:G.configData.sys_web_description})),se=S(()=>({sys_help_doc:G.configData.sys_help_doc,sys_git_code:G.configData.sys_git_code,sys_keep_record:G.configData.sys_keep_record,sys_web_copyright:G.configData.sys_web_copyright,sys_web_privacy:G.configData.sys_web_privacy})),ne=S(()=>({sys_web_clause:G.configData.sys_web_clause})),ue=B([]),re=B([]),de=B([]),pe=()=>{var e,l,a;const i=(null==(e=G.configData.white_api_list_path)?void 0:e.config_value)||"";try{const e=JSON.parse(i);Array.isArray(e)?ue.value=e.filter(e=>"string"==typeof e&&e.trim()).map(e=>({id:L(),value:e.trim()})):ue.value=i?i.split("\n").filter(e=>e.trim()).map(e=>({id:L(),value:e.trim()})):[{id:L(),value:""}]}catch{ue.value=i?i.split("\n").filter(e=>e.trim()).map(e=>({id:L(),value:e.trim()})):[{id:L(),value:""}]}const t=(null==(l=G.configData.ip_black_list)?void 0:l.config_value)||"";try{const e=JSON.parse(t);Array.isArray(e)?re.value=e.filter(e=>"string"==typeof e&&e.trim()).map(e=>({id:L(),value:e.trim()})):re.value=t?t.split("\n").filter(e=>e.trim()).map(e=>({id:L(),value:e.trim()})):[{id:L(),value:""}]}catch{re.value=t?t.split("\n").filter(e=>e.trim()).map(e=>({id:L(),value:e.trim()})):[{id:L(),value:""}]}const o=(null==(a=G.configData.ip_white_list)?void 0:a.config_value)||"";try{const e=JSON.parse(o);Array.isArray(e)?de.value=e.filter(e=>"string"==typeof e&&e.trim()).map(e=>({id:L(),value:e.trim()})):de.value=o?o.split("\n").filter(e=>e.trim()).map(e=>({id:L(),value:e.trim()})):[{id:L(),value:""}]}catch{de.value=o?o.split("\n").filter(e=>e.trim()).map(e=>({id:L(),value:e.trim()})):[{id:L(),value:""}]}},ce=()=>{ue.value.push({id:L(),value:""}),ee("white_api_list_path")},me=()=>{re.value.push({id:L(),value:""}),ee("ip_black_list")},_e=()=>{de.value.push({id:L(),value:""}),ee("ip_white_list")},ve=S(()=>({white_api_list_path:G.configData.white_api_list_path})),fe=S(()=>({ip_black_list:G.configData.ip_black_list})),ge=S(()=>({demo_enable:G.configData.demo_enable,ip_white_list:G.configData.ip_white_list})),ye=S(()=>({sys_web_logo:{...G.configData.sys_web_logo,maxFileSize:5},sys_web_favicon:{...G.configData.sys_web_favicon,maxFileSize:5},sys_login_background:{...G.configData.sys_login_background,maxFileSize:10}})),be=e=>{s.error(`上传失败:${e.message||"请稍后重试"}`)};return b(()=>{pe(),G.getConfig()}),(r,d)=>{const p=i,c=o,m=t,_=a,v=l,y=n,b=u,S=e,B=h("hasPerm");return w(),j(f,{modelValue:R.value,"onUpdate:modelValue":d[1]||(d[1]=e=>R.value=e),title:"配置中心",size:K.value,"destroy-on-close":"",onClose:te},{footer:k(()=>[x(y,{onClick:ie},{default:k(()=>[...d[16]||(d[16]=[V("取消",-1)])]),_:1}),C((w(),j(y,{type:"primary",disabled:!le.value,onClick:ae},{default:k(()=>[...d[17]||(d[17]=[V(" 保存 ",-1)])]),_:1},8,["disabled"])),[[B,["module_system:config:update"]]])]),default:k(()=>[x(S,{modelValue:W.value,"onUpdate:modelValue":d[0]||(d[0]=e=>W.value=e),type:"border-card"},{default:k(()=>[x(v,{label:"网站配置",name:"website"},{default:k(()=>[x(_,{model:Y,"label-suffix":":","label-width":"auto","label-position":"right"},{default:k(()=>[x(p,null,{default:k(()=>[...d[2]||(d[2]=[V("网站配置",-1)])]),_:1}),(w(!0),D(I,null,P(oe.value,(e,l)=>(w(),D("div",{key:l},[x(m,{label:e.config_name},{default:k(()=>[U("span",O,[x(c,{modelValue:e.config_value,"onUpdate:modelValue":l=>e.config_value=l,placeholder:z(M)("common.inputText"),clearable:"",style:{width:"100%"},onInput:e=>ee(l)},null,8,["modelValue","onUpdate:modelValue","placeholder","onInput"])])]),_:2},1032,["label"])]))),128)),x(p,null,{default:k(()=>[...d[3]||(d[3]=[V("网站图标",-1)])]),_:1}),(w(!0),D(I,null,P(ye.value,(e,l)=>(w(),D("div",{key:l},[x(m,{label:e.config_name},{default:k(()=>[U("div",A,[x(g,{modelValue:e.config_value,"onUpdate:modelValue":l=>e.config_value=l,data:{type:l},name:"file","max-file-size":e.maxFileSize,"show-tip":!0,"enable-preview":!0,onSuccess:e=>((e,l)=>{const a=e.file_url;l in G.configData&&(G.configData[l].config_value=a),l in oe.value?oe.value[l].config_value=a:l in ye.value&&(ye.value[l].config_value=a),ee(l)})(e,l),onError:be},null,8,["modelValue","onUpdate:modelValue","data","max-file-size","onSuccess"])])]),_:2},1032,["label"])]))),128))]),_:1},8,["model"])]),_:1}),x(v,{label:"安全隐私",name:"securityPrivacy"},{default:k(()=>[x(_,{model:Y,"label-suffix":":","label-width":"auto","label-position":"right"},{default:k(()=>[x(p,null,{default:k(()=>[...d[4]||(d[4]=[V("安全隐私",-1)])]),_:1}),(w(!0),D(I,null,P(se.value,(e,l)=>(w(),D("div",{key:l},[x(m,{label:e.config_name},{default:k(()=>[U("span",F,[x(c,{modelValue:e.config_value,"onUpdate:modelValue":l=>e.config_value=l,placeholder:z(M)("common.inputText"),clearable:"",style:{width:"100%"},onInput:e=>ee(l)},null,8,["modelValue","onUpdate:modelValue","placeholder","onInput"])])]),_:2},1032,["label"])]))),128))]),_:1},8,["model"])]),_:1}),x(v,{label:"用户协议",name:"userAgreement"},{default:k(()=>[x(_,{model:Y,"label-suffix":":","label-width":"auto","label-position":"right"},{default:k(()=>[x(p,null,{default:k(()=>[...d[5]||(d[5]=[V("用户协议",-1)])]),_:1}),(w(!0),D(I,null,P(ne.value,(e,l)=>(w(),D("div",{key:l},[x(m,{label:e.config_name},{default:k(()=>[U("span",E,[x(c,{modelValue:e.config_value,"onUpdate:modelValue":l=>e.config_value=l,placeholder:z(M)("common.inputText"),clearable:"",style:{width:"100%"},onInput:e=>ee(l)},null,8,["modelValue","onUpdate:modelValue","placeholder","onInput"])])]),_:2},1032,["label"])]))),128))]),_:1},8,["model"])]),_:1}),x(v,{label:"接口白名单",name:"apiWhitelist"},{default:k(()=>[x(_,{model:Y,"label-suffix":":","label-width":"auto","label-position":"right"},{default:k(()=>[x(p,null,{default:k(()=>[...d[6]||(d[6]=[V("接口白名单",-1)])]),_:1}),(w(!0),D(I,null,P(ve.value,(e,l)=>(w(),D("div",{key:l},[x(m,{label:e.config_name},{default:k(()=>[U("div",N,[(w(!0),D(I,null,P(ue.value,e=>(w(),D("div",{key:e.id,class:"flex items-center gap-2"},[x(c,{modelValue:e.value,"onUpdate:modelValue":l=>e.value=l,placeholder:"/api/v1/users/get",clearable:"",onInput:e=>ee(l),onBlur:l=>{var a;a=e.value,!/^\/[\w\-/]+$/.test(a)&&e.value.trim()&&z(s).warning("请输入有效的接口路径格式(以/开头)")}},null,8,["modelValue","onUpdate:modelValue","onInput","onBlur"]),x(y,{type:"danger",icon:"minus",circle:"",size:"small",onClick:l=>{return a=e.id,void(ue.value.length<=1?s.warning("至少需要保留一个接口白名单配置"):(ue.value=ue.value.filter(e=>e.id!==a),ee("white_api_list_path")));var a}},null,8,["onClick"])]))),128)),x(y,{type:"primary",icon:"plus",size:"small",style:{"margin-top":"10px"},onClick:ce},{default:k(()=>[...d[7]||(d[7]=[V(" 添加接口路径 ",-1)])]),_:1}),d[8]||(d[8]=U("div",{class:"text-xs text-gray-500 mt-2"}," 配置说明:添加到白名单的接口路径无需登录即可访问,支持完整路径配置。 ",-1))])]),_:2},1032,["label"])]))),128))]),_:1},8,["model"])]),_:1}),x(v,{label:"IP黑名单",name:"ipBlacklist"},{default:k(()=>[x(_,{model:Y,"label-suffix":":","label-width":"auto","label-position":"right"},{default:k(()=>[x(p,null,{default:k(()=>[...d[9]||(d[9]=[V("IP黑名单",-1)])]),_:1}),(w(!0),D(I,null,P(fe.value,(e,l)=>(w(),D("div",{key:l},[x(m,{label:e.config_name},{default:k(()=>[U("div",T,[(w(!0),D(I,null,P(re.value,e=>(w(),D("div",{key:e.id,class:"flex items-center gap-2"},[x(c,{modelValue:e.value,"onUpdate:modelValue":l=>e.value=l,placeholder:"192.168.1.1",clearable:"",style:{flex:"1"},onInput:e=>ee(l),onBlur:l=>{!$(e.value)&&e.value.trim()&&z(s).warning("请输入有效的IP地址格式")}},null,8,["modelValue","onUpdate:modelValue","onInput","onBlur"]),x(y,{type:"danger",icon:"minus",circle:"",size:"small",onClick:l=>{return a=e.id,void(re.value.length<=1?s.warning("至少需要保留一个IP黑名单配置"):(re.value=re.value.filter(e=>e.id!==a),ee("ip_black_list")));var a}},null,8,["onClick"])]))),128)),x(y,{type:"primary",icon:"plus",size:"small",style:{"margin-top":"10px"},onClick:me},{default:k(()=>[...d[10]||(d[10]=[V(" 添加IP地址 ",-1)])]),_:1}),d[11]||(d[11]=U("div",{class:"text-xs text-gray-500 mt-2"}," 配置说明:添加到黑名单的IP地址将无法访问系统,支持单个IP配置。 ",-1))])]),_:2},1032,["label"])]))),128))]),_:1},8,["model"])]),_:1}),x(v,{label:"演示环境配置",name:"demo"},{default:k(()=>[x(_,{model:Y,"label-suffix":":","label-width":"auto","label-position":"right"},{default:k(()=>[x(p,null,{default:k(()=>[...d[12]||(d[12]=[V("演示环境配置",-1)])]),_:1}),(w(!0),D(I,null,P(ge.value,(e,l)=>(w(),D("div",{key:l},[x(m,{label:e.config_name},{default:k(()=>["demo_enable"===l?(w(),D(I,{key:0},[x(b,{"inline-prompt":"","active-text":"启用","inactive-text":"禁用","model-value":"true"===e.config_value,"onUpdate:modelValue":a=>{e.config_value=a?"true":"false",ee(l)}},null,8,["model-value","onUpdate:modelValue"]),d[13]||(d[13]=U("div",{class:"text-xs text-gray-500 mt-1"}," 配置说明:启用后系统将进入演示模式,部分功能可能受限。 ",-1))],64)):"ip_white_list"===l?(w(),D("div",q,[(w(!0),D(I,null,P(de.value,e=>(w(),D("div",{key:e.id,class:"flex items-center gap-2"},[x(c,{modelValue:e.value,"onUpdate:modelValue":l=>e.value=l,placeholder:"192.168.1.1",clearable:"",style:{flex:"1"},onInput:e=>ee(l),onBlur:l=>{!$(e.value)&&e.value.trim()&&z(s).warning("请输入有效的IP地址格式")}},null,8,["modelValue","onUpdate:modelValue","onInput","onBlur"]),x(y,{type:"danger",icon:"minus",circle:"",size:"small",onClick:l=>{return a=e.id,void(de.value.length<=1?s.warning("至少需要保留一个IP白名单配置"):(de.value=de.value.filter(e=>e.id!==a),ee("ip_white_list")));var a}},null,8,["onClick"])]))),128)),x(y,{type:"primary",icon:"plus",size:"small",style:{"margin-top":"10px"},onClick:_e},{default:k(()=>[...d[14]||(d[14]=[V(" 添加IP地址 ",-1)])]),_:1}),d[15]||(d[15]=U("div",{class:"text-xs text-gray-500 mt-2"}," 配置说明:演示模式下,只有白名单中的IP地址可以访问系统,支持单个IP配置。 ",-1))])):(w(),j(c,{key:2,modelValue:e.config_value,"onUpdate:modelValue":l=>e.config_value=l,placeholder:z(M)("common.inputText"),clearable:"",style:{width:"100%"},onInput:e=>ee(l)},null,8,["modelValue","onUpdate:modelValue","placeholder","onInput"]))]),_:2},1032,["label"])]))),128))]),_:1},8,["model"])]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["modelValue","size"])}}}),[["__scopeId","data-v-1ced9db4"]]);export{L as default};