1import{d as ns,u as is,c as F,o as as,f as i,g as s,s as l,t as d,j as c,h as B,i as g,p as w,ab as ds,F as p,r as v,m as G,G as S,v as z,H as us,J as rs,D as H,y as _,e as a,A as cs}from"./CxjwaSEV.js";import{R as ps,a as D}from"./CKkkeG25.js";import{u as ms,a as vs}from"./CO4UvFh5.js";import"./Bu7hayz2.js";const fs={class:"ops-page"},bs={key:0,class:"ops-error"},ws={class:"ops-card block"},_s={class:"ops-table matrix"},ys={class:"cell-sub mono"},ks={key:0,class:"yes"},gs={key:1,class:"no"},hs={class:"ops-card block"},Cs={class:"block-head"},xs={class:"block-head-sub"},$s={key:0,class:"empty"},Es={key:1,class:"ops-table"},As={class:"cell-sub"},Rs={key:0,class:"cell-sub"},Ss={class:"cell-sub"},Os={key:0,class:"tag warn"},Ts={key:1,class:"cell-sub"},Us={class:"cell-time"},Vs=["onClick"],Ps=["onClick"],Ds=["disabled","onClick"],Ls={key:0},Ms={class:"modal"},Is={class:"modal-head"},Bs={class:"modal-body"},Gs={class:"form-grid"},Ns={class:"field"},js=["disabled"],Fs={class:"field"},zs={class:"field"},Hs=["value"],Ks={key:0,class:"field"},qs={key:1,class:"field"},Js={class:"perm-area"},Zs={class:"switch-line"},Qs={class:"cell-sub"},Ws={key:0,class:"perm-warn"},Xs={class:"perm-warn-bar"},Ys={class:"cell-sub"},se={key:0,class:"diff missing"},ee={key:1,class:"diff extra"},te={key:0,class:"diff-detail"},le={key:1,class:"perm-grid"},oe={class:"perm-group-title"},ne=["checked","onChange"],ie={key:2,class:"perm-preview"},ae={class:"modal-foot"},de={class:"modal narrow"},ue={class:"modal-head"},re={class:"modal-body"},ce={key:0,class:"ops-error"},pe={class:"field"},me={class:"field"},ve={class:"modal-foot"},fe={class:"modal narrow"},be={class:"modal-head"},we={class:"modal-body"},_e={class:"del-text"},ye={class:"modal-foot"},ke={key:4,class:"ops-toast"},O="/admin/accounts",ge=ns({__name:"index",setup(he){is({title:"è´¦å·ä¸æé - è¿è¥åå°"});const{profile:K,restore:q}=ms(),{request:x,guarded:$}=vs(),L=F(()=>K.value),M=_(!1),f=_(""),E=_(""),A=_([]),N=[{title:"æ°æ®çæ¿",items:["dashboard.view"]},{title:"妿 ¡ / æºæ",items:["school.view","school.edit","school.audit"]},{title:"å
容管ç",items:["content.view","content.edit"]},{title:"AI éé",items:["harvest.view","harvest.edit"]},{title:"é¢çº¦",items:["appointment.view","appointment.edit"]},{title:"线索",items:["lead.view","lead.edit"]},{title:"AI è§å线索",items:["ai_lead.view","ai_lead.edit"]},{title:"ç³»ç»",items:["account.manage"]}],T={"dashboard.view":"æ¥çæ°æ®çæ¿","school.view":"æ¥ç妿 ¡/æºæ","school.edit":"ç¼è¾å¦æ ¡å
容","school.audit":"å®¡æ ¸åå¸ / å 餿¢å¤","content.view":"æ¥çæç« ä¸é
ç½®","content.edit":"ç¼è¾åå¸æç« ä¸è¿è¥é
ç½®","harvest.view":"æ¥çééå·¥ä½å°","harvest.edit":"ééæå / æ¹å / åå¸","appointment.view":"æ¥çé¢çº¦","appointment.edit":"å¤çé¢çº¦","lead.view":"æ¥ç线索","lead.edit":"è·è¿ / 导åºçº¿ç´¢","lead.phone":"æ¥çå®¶é¿å®æ´ææºå·","ai_lead.view":"æ¥ç AI è§å线索","ai_lead.edit":"è·è¿ AI è§å线索","account.manage":"è´¦å·ä¸æé管ç","billing.view":"æ¥çå¥é¤ / è´¦å","billing.edit":"å¼é / è°æ´å¥é¤","commission.view":"æ¥çä½£é","commission.edit":"ç»ç® / è°æ´ä½£é","coop_lead.view":"æ¥çåä½ç³è¯·","coop_lead.edit":"å¤çåä½ç³è¯·","site_config.view":"æ¥çç«ç¹é
ç½®","site_config.edit":"ç¼è¾ç«ç¹é
ç½®","traffic.view":"æ¥çæµéç»è®¡"},J={super:"err",manager:"warn",editor:"info",viewer:"muted"},U=_(!1),u=_(null),o=H({username:"",display_name:"",role:"editor",password:"Admin@2026",status:"active",custom:!1,permissions:[]});function k(n){return ps[n]||[]}function V(n){return D.find(e=>e.code===n)?.label||n}function Z(n){const e=o.permissions.indexOf(n);e>=0?o.permissions.splice(e,1):o.permissions.push(n)}function Q(){Object.assign(o,{username:"",display_name:"",role:"editor",password:"Admin@2026",status:"active",custom:!1,permissions:[]}),u.value={mode:"create"}}function W(n){Object.assign(o,{username:n.username,display_name:n.display_name||"",role:n.role,password:"",status:n.status,custom:!!n.custom,permissions:n.custom?[...n.permissions||[]]:[...k(n.role)]}),u.value={mode:"edit",row:n}}function X(){o.custom=!1,o.permissions=[...k(o.role)],R("å·²æ¢å¤ã"+V(o.role)+"ãçé»è®¤æé")}function Y(){o.custom&&!o.permissions.length&&(o.permissions=[...k(o.role)])}const h=F(()=>
1{if(!o.custom)return{missing:[],extra:[]};const n=k(o.role),e=o.permissions;return{missing:n.filter(t=>!e.includes(t)),extra:e.filter(t=>!n.includes(t))}});function ss(n){return n?String(n).slice(0,16).replace("T"," "):"â"}function R(n){E.value=n,setTimeout(()=>{E.value===n&&(E.value="")},2400)}async function P(){M.value=!0,f.value="";const n=await $(()=>x("GET",O));M.value=!1,n&&(A.value=n)}async function es(){if(f.value="",u.value?.mode==="create"){if(!/^[A-Za-z0-9_.-]{3,30}$/.test(o.username.trim())){f.value="è´¦å·åé为 3-30 ä½åæ¯ / æ°å / . _ -";return}if(String(o.password).length<6){f.value="åå§å¯ç è³å° 6 ä½";return}const n={username:o.username.trim(),display_name:o.display_name.trim()||o.username.trim(),role:o.role,password:o.password};o.custom&&(n.permissions=o.permissions),await $(()=>x("POST",O,n))&&(u.value=null,R("è´¦å·å·²å建"),P())}else{const n=u.value?.row;if(!n)return;if(o.custom){if(!o.permissions.length){f.value="å·²å¾éãåç¬æå®æéãä½ä¸é¡¹é½æ²¡éï¼è¯¥è´¦å·å°æ æ³è®¿é®ä»»ä½é¡µé¢ã请å¾éæéæéï¼æå
³éå¼å
³ä»¥ç»§æ¿è§è²é»è®¤ã";return}if(!o.permissions.includes("dashboard.view")&&!o.permissions.includes("account.manage")){f.value="å½åèªå®ä¹æé缺å°ãæ¥çæ°æ®çæ¿ãï¼dashboard.viewï¼ï¼ä¿åå该账å·ç»å½åä¼æç¤ºãæ æä½æéãï¼åå°å页é¢åæ æ³æå¼ã请补å¾è¯¥é¡¹ï¼æç¹ãæ¢å¤è§è²é»è®¤ãã";return}}const e={role:o.role,status:o.status};e.permissions=o.custom?o.permissions:null,await $(()=>x("PUT",`${O}/${n.id}`,e))&&(u.value=null,R("å·²ä¿å"),P())}}const y=_(null),m=H({password:"",confirm:""}),C=_("");function ts(n){m.password="",m.confirm="",C.value="",y.value={row:n}}async function j(){if(C.value="",String(m.password).length<6){C.value="å¯ç è³å° 6 ä½";return}if(m.password!==m.confirm){C.value="两次è¾å
¥çå¯ç ä¸ä¸è´";return}const n=y.value?.row;if(!n)return;await $(()=>x("PUT",`${O}/${n.id}/password`,{password:m.password}))&&(y.value=null,R(`å·²éç½® ${n.username} çå¯ç `))}const b=_(null);function ls(n){if(n.id===L.value?.uid){f.value="ä¸è½å é¤å½åç»å½çè´¦å·";return}b.value={row:n}}async function os(){const n=b.value?.row;if(!n)return;await $(()=>x("DELETE",`${O}/${n.id}`))&&(b.value=null,R(`å·²å é¤è´¦å· ${n.username}`),P())}return as(()=>{q(),P()}),(n,e)=>(a(),i("div",fs,[s("div",{class:"ops-page-head"},[e[18]||(e[18]=s("h1",null,"è´¦å·ä¸æé",-1)),e[19]||(e[19]=s("p",{class:"ops-page-sub"}," å级è§è²ï¼è¶
级管çå / è¿è¥ä¸»ç®¡ / å
容ç¼è¾ / åªè¯»è§å¯ · å¯é对å个账å·å¾®è°æé ",-1)),s("button",{class:"ops-btn ops-btn-new",onClick:Q},"ï¼ æ°å»ºè´¦å·")]),l(f)?(a(),i("div",bs,d(l(f)),1)):c("",!0),s("div",ws,[s("div",{class:"block-head clickable",onClick:e[0]||(e[0]=t=>U.value=!l(U))},[s("span",{class:B(["caret",{open:l(U)}])},"â¸",2),e[20]||(e[20]=g(" è§è²æéç©éµ ",-1)),e[21]||(e[21]=s("span",{class:"block-head-sub"},"åè§è²é»è®¤æéä¸è§ï¼å个账å·å¯åç¬æå®è¦ç",-1))]),w(s("table",_s,[s("thead",null,[s("tr",null,[e[22]||(e[22]=s("th",{style:{width:"260px"}},"æéç¹",-1)),(a(!0),i(p,null,v(l(D),t=>(a(),i("th",{key:t.code,class:"center"},d(t.label),1))),128))])]),s("tbody",null,[(a(),i(p,null,v(N,t=>(a(),i(p,{key:t.title},[(a(!0),i(p,null,v(t.items,r=>(a(),i("tr",{key:r},[s("td",null,[g(d(T[r]||r)+" ",1),s("span",ys,d(r),1)]),(a(!0),i(p,null,v(l(D),I=>(a(),i("td",{key:I.code,class:"center"},[k(I.code).includes(r)?(a(),i("span",ks,"â")):(a(),i("span",gs,"â"))]))),128))]))),128))],64))),64))])],512),[[ds,l(U)]])]),s("div",hs,[s("div",Cs,[e[23]||(e[23]=g("åå°è´¦å·",-1)),s("span",xs,d(l(A).length)+" 个",1)]),l(M)&&!l(A).length?(a(),i("div",$s,"å è½½ä¸â¦")):(a(),i("table",Es,[e[25]||(e[25]=s("thead",null,[s("tr",null,[s("th",{style:{width:"200px"}},"è´¦å·"),s("th",{style:{width:"120px"}},"è§è²"),s("th",null,"æé"),s("th",{style:{width:"90px"}},"ç¶æ"),s("th",{style:{width:"150px"}},"æè¿ç»å½"),s("th",{style:{width:"210px"}},"æä½")])],-1)),s("tbody",null,[(a(!0),i(p,null,v(l(A),t=>(a(),i("tr",{key:t.id},[s("td",null,[s("strong",null,d(t.username),1),s("div",As,d(t.display_name||"â"),1)]),s("td",null,[s("span",{class:B(["tag",J[t.role]||"muted"])},d(V(t.role)),3),t.id===l(L)?.uid?(a(),i("div",Rs,"å½åç»å½")):c("",!0)]),s("td",Ss,[t.custom?(a(),i("span",Os,"èªå®ä¹")):(a(),i("span",Ts,"è§è²é»è®¤")),g(" "+d(t.effective_permissions?.length??0)+" 项 ",1)]),s("td",null,[s("span",{class:B(["tag",t.status==="active"?"ok":"muted"])},d(t.status==="active"?"å¯ç¨":"åç¨"),3)]),s("td",Us,d(ss(t.last_login_at)),1),s("td",null,[s("button",{class:"ops-mini",onClick:r=>W(t)},"ç¼è¾",8,Vs),s("button",{class:"ops-mini",onClick:r=>ts(t)},"éç½®å¯ç ",8,Ps),s("button",{class:"ops-mini danger",disabled:t.id===l(L)?.uid,onClick:r=>ls(t)}," å é¤ ",8,Ds)])]))),128)),l(A).length?c("",!0):(a(),i("tr",Ls,[...e[24]||(e[24]=[s("td",{colspan:"6",class:"empty"},"ææ è´¦å·",-1)])]))])]))]),l(u)?(a(),i("div",{key:1,class:"modal-mask",onClick:e[9]||(e[9]=G(t=>u.value=null,["self"]))},[s("div",Ms,[s("div",Is,[s("strong",null,d(l(u).mode==="create"?"æ°å»ºè´¦å·":`ç¼è¾è´¦å· · ${l(u).row?.username}`),1),s("button",{class:"close",onClick:e[1]||(e[1]=t=>u.value=null)},"Ã")]),s("div",Bs,[s("div",Gs,[s("div",Ns,[e[26]||(e[26]=s("label",null,"è´¦å·å",-1)),w(s("input",{"onUpdate:modelValue":e[2]||(e[2]=t=>l(o).username=t),class:"ops-input full",disabled:l(u).mode==="edit",placeholder:"å¦ï¼editor01"},null,8,js),[[S,l(o).username]])]),s("div",Fs,[e[27]||(e[27]=s("label",null,"æ¾ç¤ºå",-1)),w(s("input",{"onUpdate:modelValue":e[3]||(e[3]=t=>l(o).display_name=t),class:"ops-input full",placeholder:"å¦ï¼å
容ç¼è¾-å°ç"},null,512),[[S,l(o).display_name]])]),s("div",zs,[e[28]||(e[28]=s("label",null,"è§è²",-1)),w(s("select",{"onUpdate:modelValue":e[4]||(e[4]=t=>l(o).role=t),class:"ops-select",style:{width:"100%"}},[(a(!0),i(p,null,v(l(D),t=>(a(),i("option",{key:t.code,value:t.code},d(t.label),9,Hs))),128))],512),[[z,l(o).role]])]),l(u).mode==="create"?(a(),i("div",Ks,[e[29]||(e[29]=s("label",null,"åå§å¯ç ",-1)),w(s("input",{"onUpdate:modelValue":e[5]||(e[5]=t=>l(o).password=t),class:"ops-input full",placeholder:"é»è®¤ Admin@2026"},null,512),[[S,l(o).password]])])):(a(),i("div",qs,[e[31]||(e[31]=s("label",null,"ç¶æ",-1)),w(s("select",{"onUpdate:modelValue":e[6]||(e[6]=t=>l(o).status=t),class:"ops-select",style:{width:"100%"}},[...e[30]||(e[30]=[s("option",{value:"active"},"å¯ç¨",-1),s("option",{value:"disabled"},"åç¨",-1)])],512),[[z,l(o).status]])]))]),s("div",Js,[s("label",Zs,[w(s("input",{"onUpdate:modelValue":e[7]||
1(e[7]=t=>l(o).custom=t),type:"checkbox",onChange:Y},null,544),[[us,l(o).custom]]),s("span",null,[e[32]||(e[32]=g("åç¬æå®æé",-1)),s("em",Qs,"ï¼ä¸å¾éåç»§æ¿ã"+d(V(l(o).role))+"ãé»è®¤ "+d(k(l(o).role).length)+" 项ï¼",1)])]),l(o).custom?(a(),i("div",Ws,[e[34]||(e[34]=s("strong",null,"â èªå®ä¹æéä¼å®å
¨å代è§è²é»è®¤ï¼ä¸æ¯è¿½å ",-1)),e[35]||(e[35]=s("p",null," ä¿ååè´¦å·åªæ¥æä¸é¢å¾éçæéãè¥æ¼æãæ¥çæ°æ®çæ¿ãï¼è¯¥è´¦å·ç»å½åä¼æç¤ºãæ æä½æéï¼éè¦ï¼dashboard.viewï¼ãï¼åå°ææé¡µé¢é½æä¸å¼ã ",-1)),s("div",Xs,[s("button",{class:"ops-mini",onClick:X},"æ¢å¤ã"+d(V(l(o).role))+"ãé»è®¤",1),s("span",Ys,"å·²é "+d(l(o).permissions.length)+" 项",1),l(h).missing.length?(a(),i("span",se," 缺å°é»è®¤é¡¹ "+d(l(h).missing.length)+" 个 ",1)):c("",!0),l(h).extra.length?(a(),i("span",ee," è¶
åºé»è®¤ "+d(l(h).extra.length)+" 个 ",1)):c("",!0)]),l(h).missing.length?(a(),i("div",te,[e[33]||(e[33]=s("span",{class:"cell-sub"},"缺å°ï¼",-1)),(a(!0),i(p,null,v(l(h).missing,t=>(a(),i("span",{key:t,class:"perm-chip chip-bad"},d(T[t]||t),1))),128))])):c("",!0)])):c("",!0),l(o).custom?(a(),i("div",le,[(a(),i(p,null,v(N,t=>s("div",{key:t.title,class:"perm-group"},[s("div",oe,d(t.title),1),(a(!0),i(p,null,v(t.items,r=>(a(),i("label",{key:r,class:"perm-item"},[s("input",{type:"checkbox",checked:l(o).permissions.includes(r),onChange:I=>Z(r)},null,40,ne),s("span",null,d(T[r]||r),1)]))),128))])),64))])):(a(),i("div",ie,[(a(!0),i(p,null,v(k(l(o).role),t=>(a(),i("span",{key:t,class:"perm-chip"},d(T[t]||t),1))),128))]))])]),s("div",ae,[s("button",{class:"ops-btn ghost",onClick:e[8]||(e[8]=t=>u.value=null)},"åæ¶"),s("button",{class:"ops-btn",onClick:es},d(l(u).mode==="create"?"å建":"ä¿å"),1)])])])):c("",!0),l(y)?(a(),i("div",{key:2,class:"modal-mask",onClick:e[14]||(e[14]=G(t=>y.value=null,["self"]))},[s("div",de,[s("div",ue,[s("strong",null,"éç½®å¯ç · "+d(l(y).row?.username),1),s("button",{class:"close",onClick:e[10]||(e[10]=t=>y.value=null)},"Ã")]),s("div",re,[l(C)?(a(),i("div",ce,d(l(C)),1)):c("",!0),s("div",pe,[e[36]||(e[36]=s("label",null,"æ°å¯ç ",-1)),w(s("input",{"onUpdate:modelValue":e[11]||(e[11]=t=>l(m).password=t),type:"password",class:"ops-input full",placeholder:"è³å° 6 ä½"},null,512),[[S,l(m).password]])]),s("div",me,[e[37]||(e[37]=s("label",null,"确认æ°å¯ç ",-1)),w(s("input",{"onUpdate:modelValue":e[12]||(e[12]=t=>l(m).confirm=t),type:"password",class:"ops-input full",placeholder:"忬¡è¾å
¥",onKeyup:rs(j,["enter"])},null,544),[[S,l(m).confirm]])]),e[38]||(e[38]=s("p",{class:"cell-sub"},"éç½®å该账å·çæ§å¯ç ç«å³å¤±æï¼è¯·éè¿å®å
¨æ¸ éåç¥ä½¿ç¨äººã",-1))]),s("div",ve,[s("button",{class:"ops-btn ghost",onClick:e[13]||(e[13]=t=>y.value=null)},"åæ¶"),s("button",{class:"ops-btn",onClick:j},"确认éç½®")])])])):c("",!0),l(b)?(a(),i("div",{key:3,class:"modal-mask",onClick:e[17]||(e[17]=G(t=>b.value=null,["self"]))},[s("div",fe,[s("div",be,[e[39]||(e[39]=s("strong",null,"å é¤è´¦å·",-1)),s("button",{class:"close",onClick:e[15]||(e[15]=t=>b.value=null)},"Ã")]),s("div",we,[s("p",_e,[e[40]||(e[40]=g(" 确认å é¤è´¦å· ",-1)),s("strong",null,d(l(b).row?.username),1),g(" ï¼"+d(l(b).row?.display_name||"â")+"ï¼ï¼ ",1)]),e[41]||(e[41]=s("p",{class:"cell-sub"}," 该账å·ä¸ºè½¯å é¤ï¼å é¤åç«å³æ æ³ç»å½åå°ãå
¶å岿ä½è®°å½ä¼ä¿çã ",-1))]),s("div",ye,[s("button",{class:"ops-btn ghost",onClick:e[16]||(e[16]=t=>b.value=null)},"åæ¶"),s("button",{class:"ops-btn danger",onClick:os},"确认å é¤")])])])):c("",!0),l(E)?(a(),i("div",ke,d(l(E)),1)):c("",!0)]))}}),Ae=cs(ge,[["__scopeId","data-v-730bd13f"]]);export{Ae 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.