Files
Migu2.0/MiGu.Server/wwwroot/assets/SystemCenterView-DTMANlHu.js
T

3 lines
24 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{aN as Q,bZ as Ye,bC as C,bs as u,aG as x,aD as c,aK as e,x as Ze,c8 as l,ai as R,bE as D,aE as E,N as ie,bS as T,aj as Qe,O as ue,z as el,bL as S,r as de,aJ as d,bl as ll,ad as re,aF as H,ay as Z,aW as al,X as b,y as tl,ak as ee,bp as he,h as ol,S as nl,G as Se,a4 as Te,Z as Ie,a8 as ze,R as Ae,t as Pe,bA as se,b4 as B,bV as sl,ac as Ne,a9 as Re,bv as Ve,c9 as we,b$ as il,ab as ul,aS as ke,b9 as dl,aP as Ce,bD as rl,F as ml,a2 as pl,w as cl,v as fl,Y as Ue,aa as _l,u as vl,L as bl,c7 as xe,bW as gl,bX as yl}from"./index-D5GfLbIx.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{C as Vl}from"./ConfigPageBase-CgfsngDp.js";/* empty css *//* empty css */import{a as Ee,m as wl}from"./mapEdit-BXIATxCI.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css */import"./PermissionGuard-CR4qtxrh.js";import"./reflection-BwOBPyb9.js";import"./monitorConfigCache-DXn96T8F.js";const kl={class:"theme-customizer"},Cl={class:"tc-title-row"},Ul={class:"tc-name"},xl={class:"tc-panel"},El={class:"tc-picker-row"},$l={class:"tc-hex"},hl={class:"tc-field-hint"},Sl={class:"tc-actions"},Tl={class:"tc-footer"},Il=Q({__name:"ThemeCustomizer",setup(v){const s=Ye(),I=C(s.themeId),M=["#7c3aed","#8b5cf6","#c4b5fd","#5b21b6","#4c1d95","#6366f1","#a855f7","#9333ea","#1565c0","#00796b","#b71c1c","#455a64","#e65100"],A=Z(()=>s.availableThemes.some(y=>w(y.id)));function w(y){const p=s.themeOverrides[y];return!!p&&Object.keys(p).length>0}function m(y){const p=s.getMergedTheme(al(y));return{background:`linear-gradient(135deg, ${p.preview} 0%, ${p.previewAccent} 100%)`}}function i(y,p,z){z&&(s.setThemeColor(y,p,z),y===s.themeId&&b.success("已应用当前主题配色"))}function $(y){s.clearThemeOverrides(y),b.info("已恢复该主题默认配色")}function g(){s.clearAllThemeOverrides(),b.info("已恢复全部主题默认配色")}return(y,p)=>{const z=re,O=el,r=ue,F=ie,q=de,G=tl,J=Ze;return u(),x("div",kl,[p[6]||(p[6]=c("p",{class:"tc-hint"}," 为各主题单独调色;修改后立即预览。当前生效主题会同步应用到全站。保存系统配置时一并写入本地。 ",-1)),e(J,{modelValue:I.value,"onUpdate:modelValue":p[0]||(p[0]=n=>I.value=n),accordion:""},{default:l(()=>[(u(!0),x(R,null,D(T(s).availableThemes,n=>(u(),E(G,{key:n.id,name:n.id},{title:l(()=>[c("div",Cl,[c("span",{class:"tc-swatch",style:ll(m(n.id))},null,4),c("span",Ul,S(n.name),1),w(n.id)?(u(),E(z,{key:0,size:"small",type:"warning",effect:"plain"},{default:l(()=>[...p[1]||(p[1]=[d("已自定义",-1)])]),_:1})):H("",!0),n.id===T(s).themeId?(u(),E(z,{key:1,size:"small",type:"success",effect:"plain"},{default:l(()=>[...p[2]||(p[2]=[d("当前",-1)])]),_:1})):H("",!0)])]),default:l(()=>[c("div",xl,[e(F,{"label-width":"100px",class:"tc-form"},{default:l(()=>[(u(!0),x(R,null,D(T(Qe),V=>(u(),E(r,{key:V.key,label:V.label},{default:l(()=>[c("div",El,[e(O,{"model-value":T(s).getThemeColor(n.id,V.key),"color-format":"hex",predefine:M,"onUpdate:modelValue":f=>i(n.id,V.key,f)},null,8,["model-value","onUpdate:modelValue"]),c("span",$l,S(T(s).getThemeColor(n.id,V.key)),1),c("span",hl,S(V.hint),1)])]),_:2},1032,["label"]))),128))]),_:2},1024),c("div",Sl,[e(q,{size:"small",onClick:V=>T(s).setThemeId(n.id)},{default:l(()=>[...p[3]||(p[3]=[d("切换到此主题",-1)])]),_:1},8,["onClick"]),e(q,{size:"small",disabled:!w(n.id),onClick:V=>$(n.id)},{default:l(()=>[...p[4]||(p[4]=[d("恢复默认",-1)])]),_:1},8,["disabled","onClick"])])])]),_:2},1032,["name"]))),128))]),_:1},8,["modelValue"]),c("div",Tl,[e(q,{size:"small",type:"warning",plain:"",disabled:!A.value,onClick:g},{default:l(()=>[...p[5]||(p[5]=[d(" 重置全部主题配色 ",-1)])]),_:1},8,["disabled"])])])}}}),zl=ee(Il,[["__scopeId","data-v-8a725bd2"]]),Al=Q({__name:"SystemConfigView",setup(v){const s=se({endpoint:"https://api.openai.com/v1/chat/completions",apiKey:"",model:"gpt-4o-mini",systemPrompt:"你是一个 AGV 路网设计师。",temperature:.4,maxTokens:4096,timeoutSec:60,configured:!1}),I=C(!1),M=C(!1);he(async()=>{try{const m=await Ee.get();Object.assign(s,m)}catch(m){b.warning(`无法读取 AI 配置:${m.message}`)}});async function A(){try{I.value=!0,await Ee.save({...s}),b.success("AI 配置已保存"),s.configured=!!s.apiKey}catch(m){b.error(`保存失败:${m.message}`)}finally{I.value=!1}}async function w(){try{M.value=!0;const m=await wl.aiMapGenerate({prompt:'测试连通:仅返回 "ok",不要生成任何站点或路径。',mode:"sites",bounds:[0,0,0,0]});b.success(`AI 服务连通正常:返回工具调用 ${m.usedTools} 次`)}catch(m){b.error(`连通失败:${m.message}`)}finally{M.value=!1}}return(m,i)=>{const $=nl,g=ue,y=Se,p=Ie,z=Te,O=ze,r=Ae,F=ie,q=re,G=de,J=Pe;return u(),x(R,null,[e(Vl,{section:"system",title:"系统级配置",description:"运行参数、日志策略、安全策略(对齐 SystemConfig",defaults:T(ol)},{default:l(({payload:n,update:V})=>[e(F,{"label-width":"160px",model:n},{default:l(()=>[e(g,{label:"调度循环 (Hz)"},{default:l(()=>[e($,{"model-value":n.dispatchLoopHz,min:1,max:200,"onUpdate:modelValue":f=>V({...n,dispatchLoopHz:f??0})},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(y,{"content-position":"left"},{default:l(()=>[...i[7]||(i[7]=[d("日志策略",-1)])]),_:1}),e(g,{label:"日志级别"},{default:l(()=>[e(z,{"model-value":n.log.level,"onUpdate:modelValue":f=>V({...n,log:{...n.log,level:f}})},{default:l(()=>[(u(),x(R,null,D(["trace","debug","info","warn","error"],f=>e(p,{key:f,label:f,value:f},null,8,["label","value"])),64))]),_:1},8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(g,{label:"日志保留 (天)"},{default:l(()=>[e($,{"model-value":n.log.rollDays,min:1,max:365,"onUpdate:modelValue":f=>V({...n,log:{...n.log,rollDays:f??0}})},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(g,{label:"单文件上限 (MB)"},{default:l(()=>[e($,{"model-value":n.log.maxSizeMB,min:1,max:4096,"onUpdate:modelValue":f=>V({...n,log:{...n.log,maxSizeMB:f??0}})},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(y,{"content-position":"left"},{default:l(()=>[...i[8]||(i[8]=[d("安全策略",-1)])]),_:1}),e(g,{label:"JWT 过期 (分钟)"},{default:l(()=>[e($,{"model-value":n.security.jwtExpireMin,min:5,max:43200,"onUpdate:modelValue":f=>V({...n,security:{...n.security,jwtExpireMin:f??0}})},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(g,{label:"启用 Swagger"},{default:l(()=>[e(O,{"model-value":n.security.enableSwagger,"onUpdate:modelValue":f=>V({...n,security:{...n.security,enableSwagger:!!f}})},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(g,{label:"CORS 白名单"},{default:l(()=>[e(r,{type:"textarea",rows:3,"model-value":n.security.corsWhitelist.join(`
`),"onUpdate:modelValue":f=>V({...n,security:{...n.security,corsWhitelist:f.split(/\s+/).filter(Boolean)}})},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(y,{"content-position":"left"},{default:l(()=>[...i[9]||(i[9]=[d("界面主题配色",-1)])]),_:1}),e(g,{label:"主题取色盘"},{default:l(()=>[e(zl)]),_:1})]),_:2},1032,["model"])]),_:1},8,["defaults"]),e(J,{class:"ai-service-card",shadow:"never"},{header:l(()=>[i[12]||(i[12]=c("span",null,"AI 服务(地图编辑器「AI 生图」依赖)",-1)),s.configured?(u(),E(q,{key:0,type:"success",size:"small",effect:"dark",class:"ml-8"},{default:l(()=>[...i[10]||(i[10]=[d("已配置",-1)])]),_:1})):(u(),E(q,{key:1,type:"warning",size:"small",effect:"dark",class:"ml-8"},{default:l(()=>[...i[11]||(i[11]=[d("未配置",-1)])]),_:1}))]),default:l(()=>[e(F,{"label-width":"140px",size:"default"},{default:l(()=>[e(g,{label:"Endpoint"},{default:l(()=>[e(r,{modelValue:s.endpoint,"onUpdate:modelValue":i[0]||(i[0]=n=>s.endpoint=n),placeholder:"https://api.openai.com/v1/chat/completions"},null,8,["modelValue"])]),_:1}),e(g,{label:"API Key"},{default:l(()=>[e(r,{modelValue:s.apiKey,"onUpdate:modelValue":i[1]||(i[1]=n=>s.apiKey=n),type:"password","show-password":"",placeholder:"sk-..."},null,8,["modelValue"])]),_:1}),e(g,{label:"模型"},{default:l(()=>[e(r,{modelValue:s.model,"onUpdate:modelValue":i[2]||(i[2]=n=>s.model=n),placeholder:"gpt-4o-mini"},null,8,["modelValue"])]),_:1}),e(g,{label:"System Prompt"},{default:l(()=>[e(r,{modelValue:s.systemPrompt,"onUpdate:modelValue":i[3]||(i[3]=n=>s.systemPrompt=n),type:"textarea",rows:4},null,8,["modelValue"])]),_:1}),e(g,{label:"Temperature"},{default:l(()=>[e($,{modelValue:s.temperature,"onUpdate:modelValue":i[4]||(i[4]=n=>s.temperature=n),min:0,max:2,step:.1},null,8,["modelValue"])]),_:1}),e(g,{label:"Max Tokens"},{default:l(()=>[e($,{modelValue:s.maxTokens,"onUpdate:modelValue":i[5]||(i[5]=n=>s.maxTokens=n),min:64,max:32e3,step:64},null,8,["modelValue"])]),_:1}),e(g,{label:"超时 (秒)"},{default:l(()=>[e($,{modelValue:s.timeoutSec,"onUpdate:modelValue":i[6]||(i[6]=n=>s.timeoutSec=n),min:5,max:600},null,8,["modelValue"])]),_:1}),e(g,null,{default:l(()=>[e(G,{type:"primary",loading:I.value,onClick:A},{default:l(()=>[...i[13]||(i[13]=[d("保存 AI 配置",-1)])]),_:1},8,["loading"]),e(G,{loading:M.value,onClick:w},{default:l(()=>[...i[14]||(i[14]=[d("测试连通",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})],64)}}}),Pl=ee(Al,[["__scopeId","data-v-b66101c5"]]);async function Nl(){const{data:v}=await B.get("/rbac/catalog");return v}async function Rl(){const{data:v}=await B.get("/rbac/roles");return v}async function Ml(v){if(v.id){const{data:I}=await B.put(`/rbac/roles/${v.id}`,v);return I}const{data:s}=await B.post("/rbac/roles",v);return s}async function Ol(v){await B.delete(`/rbac/roles/${v}`)}async function Bl(){const{data:v}=await B.get("/rbac/users");return v}async function Dl(v){const{data:s}=await B.post("/rbac/users",v);return s}async function $e(v,s){const{data:I}=await B.put(`/rbac/users/${v}`,s);return I}async function ql(v,s){await B.put(`/rbac/users/${v}/password`,{password:s})}async function jl(v){await B.delete(`/rbac/users/${v}`)}const Ll={class:"rbac-header"},Fl={class:"tab-toolbar"},Gl={class:"toolbar-hint"},Kl={key:0,class:"muted"},Wl={class:"tab-toolbar"},Hl={class:"toolbar-hint"},Jl={key:1},Xl={key:0,class:"page-picker"},Yl={class:"page-group-head"},Zl={class:"page-group-title"},Ql={class:"page-group-actions"},ea={key:1,class:"wildcard-hint"},la=Q({__name:"AuthRoleView",setup(v){const s=sl(),I=Z(()=>s.user?.id??""),M=C("users"),A=C(!1),w=C(!1),m=C(null),i=C([]),$=C([]);function g(o){return i.value.find(a=>a.id===o)?.name??o}function y(o){return o==="*"?"通用":o==="Platform"?"管理端":o==="RCSMonitor"?"运营端":o}function p(o){return o==="*"?"danger":o==="Platform"?"warning":"success"}async function z(){A.value=!0;try{const[o,a,_]=await Promise.all([Nl(),Rl(),Bl()]);m.value=o,i.value=a,$.value=_}catch(o){b.error(`加载失败:${L(o)}`)}finally{A.value=!1}}const O=C(!1),r=se({id:null,username:"",displayName:"",password:"",roleIds:[],enabled:!0});function F(){Object.assign(r,{id:null,username:"",displayName:"",password:"",roleIds:[],enabled:!0}),O.value=!0}function q(o){Object.assign(r,{id:o.id,username:o.username,displayName:o.displayName,password:"",roleIds:[...o.roleIds],enabled:o.enabled}),O.value=!0}async function G(){w.value=!0;try{r.id?(await $e(r.id,{displayName:r.displayName,roleIds:r.roleIds,enabled:r.enabled}),b.success("用户已更新")):(await Dl({username:r.username,displayName:r.displayName,password:r.password,roleIds:r.roleIds,enabled:r.enabled}),b.success("用户已创建")),O.value=!1,await z()}catch(o){b.error(L(o))}finally{w.value=!1}}async function J(o,a){o._busy=!0;try{await $e(o.id,{enabled:a}),o.enabled=a,b.success(a?"已启用":"已停用")}catch(_){b.error(L(_))}finally{o._busy=!1}}async function n(o){try{await Ue.confirm(`确定删除用户「${o.username}」?此操作不可恢复。`,"删除确认",{type:"warning"})}catch{return}try{await jl(o.id),b.success("用户已删除"),await z()}catch(a){b.error(L(a))}}const V=C(!1),f=C(null),X=C("");function Me(o){f.value=o,X.value="",V.value=!0}async function Oe(){if(f.value){if(!X.value){b.warning("请输入新密码");return}w.value=!0;try{await ql(f.value.id,X.value),b.success("密码已重置"),V.value=!1}catch(o){b.error(L(o))}finally{w.value=!1}}}const K=C(!1),U=se({id:null,name:"",description:"",scope:"Platform"}),P=C([]),j=C(!1),le=C([]),ae=C([]),me=Z(()=>(m.value?.pages??[]).filter(o=>U.scope==="*"||o.scope===U.scope)),pe=Z(()=>{const o=new Map;for(const a of me.value)o.has(a.group)||o.set(a.group,[]),o.get(a.group).push(a);return[...o.entries()].map(([a,_])=>({group:a,pages:_}))});function Be(){Object.assign(U,{id:null,name:"",description:"",scope:"Platform"}),P.value=[],j.value=!1,le.value=[],ae.value=[],K.value=!0}function De(o){Object.assign(U,{id:o.id,name:o.name,description:o.description,scope:o.scope}),j.value=o.pages.includes("*"),P.value=j.value?[]:[...o.pages],le.value=[...o.ops],ae.value=o.widgetGrants.map(a=>({...a})),K.value=!0}function qe(){const o=new Set(me.value.map(a=>a.key));P.value=P.value.filter(a=>o.has(a))}function ce(o,a){const _=o.map(h=>h.key);a?P.value=[...new Set([...P.value,..._])]:P.value=P.value.filter(h=>!_.includes(h))}async function je(){if(!U.name.trim()){b.warning("请填写角色名称");return}w.value=!0;try{await Ml({id:U.id??void 0,name:U.name,description:U.description,scope:U.scope,pages:j.value?["*"]:P.value,ops:le.value,widgetGrants:ae.value}),b.success(U.id?"角色已更新":"角色已创建"),K.value=!1,await z()}catch(o){b.error(L(o))}finally{w.value=!1}}async function Le(o){try{await Ue.confirm(`确定删除角色「${o.name}」?`,"删除确认",{type:"warning"})}catch{return}try{await Ol(o.id),b.success("角色已删除"),await z()}catch(a){b.error(L(a))}}function L(o){return o instanceof Error?o.message:String(o)}return he(z),(o,a)=>{const _=de,h=ul,Y=re,te=ze,fe=_l,_e=Re,Fe=Ne,Ge=Pe,W=Ae,N=ue,ve=Ie,be=Te,oe=ie,ne=ml,ge=cl,Ke=pl,We=Se,He=vl,Je=fl,Xe=bl,ye=il;return u(),x(R,null,[e(Ge,{shadow:"never",class:"rbac-card"},{header:l(()=>[c("div",Ll,[a[19]||(a[19]=c("div",{class:"rbac-title-wrap"},[c("span",{class:"rbac-title"},"权限与角色管理"),c("span",{class:"rbac-desc"},"为角色分配可访问页面、操作与控件,并为用户指派角色(标准 RBAC)。")],-1)),e(_,{icon:T(rl),loading:A.value,onClick:z},{default:l(()=>[...a[18]||(a[18]=[d("刷新",-1)])]),_:1},8,["icon","loading"])])]),default:l(()=>[e(Fe,{modelValue:M.value,"onUpdate:modelValue":a[0]||(a[0]=t=>M.value=t),class:"rbac-tabs"},{default:l(()=>[e(_e,{label:"用户管理",name:"users"},{default:l(()=>[c("div",Fl,[c("span",Gl,"共 "+S($.value.length)+" 个用户",1),e(_,{type:"primary",icon:T(Ve),onClick:F},{default:l(()=>[...a[20]||(a[20]=[d("新增用户",-1)])]),_:1},8,["icon"])]),we((u(),E(fe,{data:$.value,size:"default",border:"",stripe:""},{default:l(()=>[e(h,{label:"用户名",prop:"username",width:"140"}),e(h,{label:"显示名",prop:"displayName",width:"150"}),e(h,{label:"角色","min-width":"200"},{default:l(({row:t})=>[(u(!0),x(R,null,D(t.roleIds,k=>(u(),E(Y,{key:k,size:"small",effect:"plain",class:"mg-tag"},{default:l(()=>[d(S(g(k)),1)]),_:2},1024))),128)),t.roleIds.length?H("",!0):(u(),x("span",Kl,"—"))]),_:1}),e(h,{label:"可用域",width:"180"},{default:l(({row:t})=>[(u(!0),x(R,null,D(t.scopes,k=>(u(),E(Y,{key:k,size:"small",type:"info",effect:"plain",class:"mg-tag"},{default:l(()=>[d(S(y(k)),1)]),_:2},1024))),128))]),_:1}),e(h,{label:"启用",width:"90",align:"center"},{default:l(({row:t})=>[e(te,{"model-value":t.enabled,loading:t._busy,onChange:k=>J(t,!!k)},null,8,["model-value","loading","onChange"])]),_:1}),e(h,{label:"操作",width:"220",align:"center"},{default:l(({row:t})=>[e(_,{link:"",type:"primary",icon:T(ke),onClick:k=>q(t)},{default:l(()=>[...a[21]||(a[21]=[d("编辑",-1)])]),_:1},8,["icon","onClick"]),e(_,{link:"",type:"warning",icon:T(dl),onClick:k=>Me(t)},{default:l(()=>[...a[22]||(a[22]=[d("改密",-1)])]),_:1},8,["icon","onClick"]),e(_,{link:"",type:"danger",icon:T(Ce),disabled:t.id===I.value,onClick:k=>n(t)},{default:l(()=>[...a[23]||(a[23]=[d("删除",-1)])]),_:1},8,["icon","disabled","onClick"])]),_:1})]),_:1},8,["data"])),[[ye,A.value]])]),_:1}),e(_e,{label:"角色与页面权限",name:"roles"},{default:l(()=>[c("div",Wl,[c("span",Hl,"共 "+S(i.value.length)+" 个角色",1),e(_,{type:"primary",icon:T(Ve),onClick:Be},{default:l(()=>[...a[24]||(a[24]=[d("新增角色",-1)])]),_:1},8,["icon"])]),we((u(),E(fe,{data:i.value,size:"default",border:"",stripe:""},{default:l(()=>[e(h,{label:"角色名称",width:"160"},{default:l(({row:t})=>[c("span",null,S(t.name),1),t.system?(u(),E(Y,{key:0,size:"small",type:"success",effect:"plain",class:"mg-tag"},{default:l(()=>[...a[25]||(a[25]=[d("内置",-1)])]),_:1})):H("",!0)]),_:1}),e(h,{label:"描述",prop:"description","min-width":"180","show-overflow-tooltip":""}),e(h,{label:"归属域",width:"120"},{default:l(({row:t})=>[e(Y,{size:"small",type:p(t.scope),effect:"plain"},{default:l(()=>[d(S(y(t.scope)),1)]),_:2},1032,["type"])]),_:1}),e(h,{label:"可访问页面",width:"130",align:"center"},{default:l(({row:t})=>[t.pages.includes("*")?(u(),E(Y,{key:0,size:"small",type:"danger",effect:"plain"},{default:l(()=>[...a[26]||(a[26]=[d("全部页面",-1)])]),_:1})):(u(),x("span",Jl,S(t.pages.length)+" 个",1))]),_:1}),e(h,{label:"操作",width:"160",align:"center"},{default:l(({row:t})=>[e(_,{link:"",type:"primary",icon:T(ke),onClick:k=>De(t)},{default:l(()=>[...a[27]||(a[27]=[d("编辑",-1)])]),_:1},8,["icon","onClick"]),e(_,{link:"",type:"danger",icon:T(Ce),disabled:t.system,onClick:k=>Le(t)},{default:l(()=>[...a[28]||(a[28]=[d("删除",-1)])]),_:1},8,["icon","disabled","onClick"])]),_:1})]),_:1},8,["data"])),[[ye,A.value]])]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(ne,{modelValue:O.value,"onUpdate:modelValue":a[7]||(a[7]=t=>O.value=t),title:r.id?"编辑用户":"新增用户",width:"480px","destroy-on-close":""},{footer:l(()=>[e(_,{onClick:a[6]||(a[6]=t=>O.value=!1)},{default:l(()=>[...a[29]||(a[29]=[d("取消",-1)])]),_:1}),e(_,{type:"primary",loading:w.value,onClick:G},{default:l(()=>[...a[30]||(a[30]=[d("保存",-1)])]),_:1},8,["loading"])]),default:l(()=>[e(oe,{"label-width":"84px","label-position":"right"},{default:l(()=>[e(N,{label:"用户名",required:""},{default:l(()=>[e(W,{modelValue:r.username,"onUpdate:modelValue":a[1]||(a[1]=t=>r.username=t),disabled:!!r.id,placeholder:"登录用户名"},null,8,["modelValue","disabled"])]),_:1}),e(N,{label:"显示名"},{default:l(()=>[e(W,{modelValue:r.displayName,"onUpdate:modelValue":a[2]||(a[2]=t=>r.displayName=t),placeholder:"界面展示名称(留空则同用户名)"},null,8,["modelValue"])]),_:1}),r.id?H("",!0):(u(),E(N,{key:0,label:"初始密码",required:""},{default:l(()=>[e(W,{modelValue:r.password,"onUpdate:modelValue":a[3]||(a[3]=t=>r.password=t),type:"password","show-password":"",placeholder:"设置初始登录密码"},null,8,["modelValue"])]),_:1})),e(N,{label:"角色"},{default:l(()=>[e(be,{modelValue:r.roleIds,"onUpdate:modelValue":a[4]||(a[4]=t=>r.roleIds=t),multiple:"",filterable:"",placeholder:"选择一个或多个角色",style:{width:"100%"}},{default:l(()=>[(u(!0),x(R,null,D(i.value,t=>(u(),E(ve,{key:t.id,label:`${t.name}${y(t.scope)}`,value:t.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(N,{label:"启用"},{default:l(()=>[e(te,{modelValue:r.enabled,"onUpdate:modelValue":a[5]||(a[5]=t=>r.enabled=t)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"]),e(ne,{modelValue:V.value,"onUpdate:modelValue":a[10]||(a[10]=t=>V.value=t),title:"重置密码",width:"420px","destroy-on-close":""},{footer:l(()=>[e(_,{onClick:a[9]||(a[9]=t=>V.value=!1)},{default:l(()=>[...a[31]||(a[31]=[d("取消",-1)])]),_:1}),e(_,{type:"primary",loading:w.value,onClick:Oe},{default:l(()=>[...a[32]||(a[32]=[d("确定",-1)])]),_:1},8,["loading"])]),default:l(()=>[e(oe,{"label-width":"84px"},{default:l(()=>[e(N,{label:"用户"},{default:l(()=>[c("span",null,S(f.value?.displayName)+""+S(f.value?.username)+"",1)]),_:1}),e(N,{label:"新密码",required:""},{default:l(()=>[e(W,{modelValue:X.value,"onUpdate:modelValue":a[8]||(a[8]=t=>X.value=t),type:"password","show-password":"",placeholder:"输入新密码"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),e(ne,{modelValue:K.value,"onUpdate:modelValue":a[17]||(a[17]=t=>K.value=t),title:U.id?"编辑角色":"新增角色",width:"760px",top:"6vh","destroy-on-close":""},{footer:l(()=>[e(_,{onClick:a[16]||(a[16]=t=>K.value=!1)},{default:l(()=>[...a[36]||(a[36]=[d("取消",-1)])]),_:1}),e(_,{type:"primary",loading:w.value,onClick:je},{default:l(()=>[...a[37]||(a[37]=[d("保存",-1)])]),_:1},8,["loading"])]),default:l(()=>[e(oe,{"label-width":"92px","label-position":"right"},{default:l(()=>[e(Ke,{gutter:12},{default:l(()=>[e(ge,{span:12},{default:l(()=>[e(N,{label:"角色名称",required:""},{default:l(()=>[e(W,{modelValue:U.name,"onUpdate:modelValue":a[11]||(a[11]=t=>U.name=t),placeholder:"如:场景设计员"},null,8,["modelValue"])]),_:1})]),_:1}),e(ge,{span:12},{default:l(()=>[e(N,{label:"归属域",required:""},{default:l(()=>[e(be,{modelValue:U.scope,"onUpdate:modelValue":a[12]||(a[12]=t=>U.scope=t),style:{width:"100%"},onChange:qe},{default:l(()=>[(u(!0),x(R,null,D(m.value?.scopes??[],t=>(u(),E(ve,{key:t.value,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),e(N,{label:"描述"},{default:l(()=>[e(W,{modelValue:U.description,"onUpdate:modelValue":a[13]||(a[13]=t=>U.description=t),placeholder:"角色用途说明"},null,8,["modelValue"])]),_:1}),e(We,{"content-position":"left"},{default:l(()=>[...a[33]||(a[33]=[d("可访问页面",-1)])]),_:1}),e(N,{label:"授权方式"},{default:l(()=>[e(te,{modelValue:j.value,"onUpdate:modelValue":a[14]||(a[14]=t=>j.value=t),"active-text":"该域全部页面(含未来新增)","inactive-text":"按页面精确勾选","inline-prompt":"",style:{"--el-switch-on-color":"var(--mg-primary, #6366f1)"}},null,8,["modelValue"])]),_:1}),j.value?(u(),x("div",ea,"已授予「"+S(y(U.scope))+"」下的全部页面(包括未来新增的页面)。",1)):(u(),x("div",Xl,[(u(!0),x(R,null,D(pe.value,t=>(u(),x("div",{key:t.group,class:"page-group"},[c("div",Yl,[c("span",Zl,S(t.group),1),c("span",Ql,[e(_,{link:"",type:"primary",size:"small",onClick:k=>ce(t.pages,!0)},{default:l(()=>[...a[34]||(a[34]=[d("全选",-1)])]),_:1},8,["onClick"]),e(_,{link:"",type:"info",size:"small",onClick:k=>ce(t.pages,!1)},{default:l(()=>[...a[35]||(a[35]=[d("清空",-1)])]),_:1},8,["onClick"])])]),e(Je,{modelValue:P.value,"onUpdate:modelValue":a[15]||(a[15]=k=>P.value=k),class:"page-checks"},{default:l(()=>[(u(!0),x(R,null,D(t.pages,k=>(u(),E(He,{key:k.key,value:k.key,label:k.key},{default:l(()=>[d(S(k.label),1)]),_:2},1032,["value","label"]))),128))]),_:2},1032,["modelValue"])]))),128)),pe.value.length?H("",!0):(u(),E(Xe,{key:0,description:"该域暂无可分配页面","image-size":60}))]))]),_:1})]),_:1},8,["modelValue","title"])],64)}}}),aa=ee(la,[["__scopeId","data-v-2392979d"]]),ta={class:"config-hub-page"},oa={class:"config-pane"},na={class:"config-pane"},sa=Q({__name:"SystemCenterView",setup(v){const s=gl(),I=yl(),M=["system","auth"];function A(){const m=s.query.tab;return typeof m=="string"&&M.includes(m)?m:"system"}const w=C(A());return xe(w,m=>{s.query.tab!==m&&I.replace({query:{...s.query,tab:m}})}),xe(()=>s.query.tab,()=>{const m=A();m!==w.value&&(w.value=m)}),(m,i)=>{const $=Re,g=Ne;return u(),x("div",ta,[e(g,{modelValue:w.value,"onUpdate:modelValue":i[0]||(i[0]=y=>w.value=y),class:"hub-tabs"},{default:l(()=>[e($,{name:"system",label:"系统级配置"},{default:l(()=>[c("div",oa,[e(Pl)])]),_:1}),e($,{name:"auth",label:"权限与角色",lazy:""},{default:l(()=>[c("div",na,[e(aa)])]),_:1})]),_:1},8,["modelValue"])])}}}),Ra=ee(sa,[["__scopeId","data-v-ee3a3656"]]);export{Ra as default};