PageSourceSearch

https://lizhat-lzy.hf.space/assets/SysConfigManage-DRl5aZ0d.js

js lizhat-lzy.hf.space collected 2026-10-03 17:04:03 UTC 8,718 bytes, 1 lines download raw bytes

1import{_ as le,r as g,J as ae,c as te,K as oe,a as s,b as ne,o as v,i as $,f as i,n as e,e as t,B as k,q as r,m as u,g as se,d as K,t as B,z as ie,A as ue,L as ce}from"./index-DxtIUseY.js";const y=w=>(ie("data-v-cf00a7a4"),w=w(),ue(),w),de={class:"sys-config"},re={class:"title"},fe=y(()=>i("h1",null,"系统配置",-1)),pe={class:"title-actions"},me=y(()=>i("span",{class:"btn-text"},"刷新",-1)),_e={class:"section-header"},ge=y(()=>i("span",{class:"section-title"},"配置项",-1)),ve={class:"tools"},ye=y(()=>i("span",{class:"btn-text"},"新增配置",-1)),be={key:1,class:"value-text"},Ve=y(()=>i("span",{class:"btn-text"},"编辑",-1)),he=y(()=>i("span",{class:"btn-text"},"删除",-1)),ke={__name:"SysConfigManage",setup(w){const N=g(!1),x=g([]),C=g(""),U=g(""),f=g(!1),b=g(!1),n=ae({id:null,configKey:"",configValue:"",configName:"",configGroup:"auth",valueType:"string",remark:"",status:1}),V=l=>{if(!l)throw new Error("无响应");if(l.code===200)return l.data;throw new Error(l.msg||"请求失败")},D={"auth.allow.register":"关闭后后端拒绝注册,前台隐藏注册入口","auth.fixed.code":"未接入短信服务时的固定验证码","auth.allow.code.login":"关闭后只能使用密码登录","auth.register.invite.code":"非空时注册必须携带匹配的邀请码,注册页自动显示邀请码输入框","auth.captcha.login.enabled":"登录图形验证码开关(0/1),开启后登录需输入图形验证码","auth.captcha.register.enabled":"注册图形验证码开关(0/1),开启后注册需输入图形验证码","site.name":"站点名称","site.icp":"备案号"},p=async()=>{N.value=!0;try{const l={};C.value&&(l.group=C.value),x.value=await V(await k.get("/admin/config/list",{params:l}))||[]}catch(l){r.error("获取配置失败: "+l.message),x.value=[]}finally{N.value=!1}},I=te(()=>{const l=(U.value||"").trim().toLowerCase();return l?x.value.filter(o=>(o.configKey||"").toLowerCase().includes(l)||(o.configName||"").toLowerCase().includes(l)):x.value}),M=()=>{b.value=!1,Object.assign(n,{id:null,configKey:"",configValue:"",configName:"",configGroup:"auth",valueType:"string",remark:"",status:1}),f.value=!0},L=l=>{b.value=!0,Object.assign(n,{id:l.id,configKey:l.configKey,configValue:l.configValue??"",configName:l.configName,configGroup:l.configGroup||"base",valueType:l.valueType||"string",remark:l.remark||"",status:l.status??1}),f.value=!0},q=async()=>{try{const l={...n};l.valueType==="boolean"&&(l.configValue=String(!!l.configValue&&l.configValue!=="false")),b.value?await V(await k.put("/admin/config",l)):await V(await k.post("/admin/config",l)),r.success("已保存,立即生效"),f.value=!1,await p()}catch(l){r.error(l.message)}},j=async l=>{try{await ce.confirm(`确定删除配置「${l.configKey}」吗?删除后将回退到默认值。`,"删除确认",{confirmButtonText:"确定删除",cancelButtonText:"取消",type:"error"})}catch{return}try{await V(await k.delete(`/admin/config/${l.id}`)),r.success("已删除"),await p()}catch(o){r.error(o.message)}},O=async l=>{try{const o={id:l.id,configKey:l.configKey,configName:l.configName,configGroup:l.configGroup,valueType:l.valueType,remark:l.remark,status:l.status,configValue:l.configValue==="true"?"false":"true"};await V(await k.put("/admin/config",o)),r.success("已更新,立即生效"),await p()}catch(o){r.error(o.message)}};return oe(p),(l,o)=>{const P=s("Refresh"),T=s("el-icon"),m=s("el-button"),R=s("el-alert"),_=s("el-option"),S=s("el-select"),h=s("el-input"),A=s("Plus"),c=s("el-table-column"),E=s("el-switch"),F=s("el-tag"),H=s("Edit"),J=s("Delete"),Y=s("el-table"),Q=s("el-card"),d=s("el-form-item"),G=s("el-radio"),W=s("el-radio-group"),X=s("el-form"),Z=s("el-dialog"),ee=ne("loading");return v(),$("div",de,[i("div",re,[fe,i("div",pe,[e(m,{type:"primary",onClick:p},{default:t(()=>[e(T,null,{default:t(()=>[e(P)]),_:1}),me]),_:1})])]),e(R,{type:"info",closable:!1,"show-icon":"",class:"tip"},{default:t(()=>[u(" 配置保存在数据库 sys_config 表,修改后立即生效,无需重启。若某配置被删除或不存在,系统会自动回退到配置文件中的默认值。 ")]),_:1}),e(Q,{shadow:"never",class:"section-card"},{header:t(()=>[i("div",_e,[ge,i("div",ve,[e(S,{modelValue:C.value,"onUpdate:modelValue":o[0]||(o[0]=a=>
1C.value=a),placeholder:"全部分组",clearable:"",size:"small",class:"filter-select",onChange:p},{default:t(()=>[e(_,{label:"认证(auth)",value:"auth"}),e(_,{label:"站点(site)",value:"site"}),e(_,{label:"其他(base)",value:"base"})]),_:1},8,["modelValue"]),e(h,{modelValue:U.value,"onUpdate:modelValue":o[1]||(o[1]=a=>U.value=a),placeholder:"搜索配置键/名称",clearable:"",size:"small",class:"search-input"},null,8,["modelValue"]),e(m,{size:"small",type:"primary",onClick:M},{default:t(()=>[e(T,null,{default:t(()=>[e(A)]),_:1}),ye]),_:1})])])]),default:t(()=>[se((v(),K(Y,{data:I.value,border:"",size:"small","max-height":"480"},{empty:t(()=>[u("暂无配置")]),default:t(()=>[e(c,{prop:"configKey",label:"配置键","min-width":"200"}),e(c,{prop:"configName",label:"名称","min-width":"150"}),e(c,{label:"配置值","min-width":"180"},{default:t(({row:a})=>[a.valueType==="boolean"?(v(),K(E,{key:0,"model-value":a.configValue==="true","active-text":"开","inactive-text":"关",onChange:z=>O(a)},null,8,["model-value","onChange"])):(v(),$("span",be,B(a.configValue===""||a.configValue===null?"(空)":a.configValue),1))]),_:1}),e(c,{prop:"configGroup",label:"分组",width:"90",align:"center"}),e(c,{prop:"valueType",label:"类型",width:"90",align:"center"}),e(c,{label:"说明","min-width":"200","show-overflow-tooltip":""},{default:t(({row:a})=>[u(B(a.remark||D[a.configKey]||"—"),1)]),_:1}),e(c,{label:"状态",width:"90",align:"center"},{default:t(({row:a})=>[e(F,{type:a.status===1?"success":"info",effect:"dark"},{default:t(()=>[u(B(a.status===1?"启用":"禁用"),1)]),_:2},1032,["type"])]),_:1}),e(c,{label:"操作",width:"140",align:"center",fixed:"right"},{default:t(({row:a})=>[e(m,{link:"",type:"primary",size:"small",title:"编辑",onClick:z=>L(a)},{default:t(()=>[e(T,null,{default:t(()=>[e(H)]),_:1}),Ve]),_:2},1032,["onClick"]),e(m,{link:"",type:"danger",size:"small",title:"删除",onClick:z=>j(a)},{default:t(()=>[e(T,null,{default:t(()=>[e(J)]),_:1}),he]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"])),[[ee,N.value]])]),_:1}),e(Z,{modelValue:f.value,"onUpdate:modelValue":o[11]||(o[11]=a=>f.value=a),title:(b.value?"编辑":"新增")+"配置",width:"520px"},{footer:t(()=>[e(m,{onClick:o[10]||(o[10]=a=>f.value=!1)},{default:t(()=>[u("取消")]),_:1}),e(m,{type:"primary",onClick:q},{default:t(()=>[u("保存")]),_:1})]),default:t(()=>[e(X,{"label-width":"100px"},{default:t(()=>[e(d,{label:"配置键",required:""},{default:t(()=>[e(h,{modelValue:n.configKey,"onUpdate:modelValue":o[2]||(o[2]=a=>n.configKey=a),placeholder:"如 auth.allow.register",disabled:b.value},null,8,["modelValue","disabled"])]),_:1}),e(d,{label:"名称",required:""},{default:t(()=>[e(h,{modelValue:n.configName,"onUpdate:modelValue":o[3]||(o[3]=a=>n.configName=a),placeholder:"展示名称"},null,8,["modelValue"])]),_:1}),e(d,{label:"值类型"},{default:t(()=>[e(W,{modelValue:n.valueType,"onUpdate:modelValue":o[4]||(o[4]=a=>n.valueType=a)},{default:t(()=>[e(G,{label:"string"},{default:t(()=>[u("字符串")]),_:1}),e(G,{label:"boolean"},{default:t(()=>[u("布尔")]),_:1}),e(G,{label:"number"},{default:t(()=>[u("数字")]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(d,{label:"配置值"},{default:t(()=>[n.valueType==="boolean"?(v(),K(E,{key:0,modelValue:n.configValue,"onUpdate:modelValue":o[5]||(o[5]=a=>n.configValue=a),"active-value":"true","inactive-value":"false","active-text":"开","inactive-text":"关"},null,8,["modelValue"])):(v(),K(h,{key:1,modelValue:n.configValue,"onUpdate:modelValue":o[6]||(o[6]=a=>n.configValue=a),placeholder:"配置值"},null,8,["modelValue"]))]),_:1}),e(d,{label:"分组"},{default:t(()=>[e(S,{modelValue:n.configGroup,"onUpdate:modelValue":o[7]||(o[7]=a=>n.configGroup=a),class:"full"},{default:t(()=>[e(_,{label:"认证 auth",value:"auth"}),e(_,{label:"站点 site",value:"site"}),e(_,{label:"其他 base",value:"base"})]),_:1},8,["modelValue"])]),_:1}),e(d,{label:"状态"},{default:t(()=>[e(E,{modelValue:n.status,"onUpdate:modelValue":o[8]||(o[8]=a=>n.status=a),"active-value":1,"inactive-value":0,"active-text":"启用","inactive-text":"禁用"},null,8,["modelValue"])]),_:1}),e(d,{label:"备注"},{default:t(()=>[e(h,{modelValue:n.remark,"onUpdate:modelValue":o[9]||(o[9]=a=>n.remark=a),type:"textarea",rows:2,placeholder:"可选"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"])])}}},xe=le(ke,[["__scopeId","data-v-cf00a7a4"]]);export{xe as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.