Files
xin-school/public/assets/role-BeZ3fBY0.js
T
2026-05-30 17:38:49 +08:00

2 lines
7.1 KiB
JavaScript

import{aj as m,u as J,r as a,j as t,d as O,bc as Q,ar as V,bd as Y,w as h,aq as g,T as Z,a as ee,C as T,B as i,be as se,o as te,am as le,bf as re}from"./index-B-sDl1ER.js";import{X as ae}from"./index-rMui37zI.js";import{T as R}from"./index-C9m5qSM4.js";import{C as ne}from"./index-CO5DzGxy.js";import{F as oe,T as ie}from"./Table-B11dzOaz.js";import"./index-duCmqVUU.js";import"./index-BZjcF0yn.js";import"./tslib.es6-BaFViOhq.js";import"./index-D3yl9SWR.js";import"./progress-C__thZ4V.js";import"./index-CeRfFUxJ.js";import"./index-CkiGQ3z2.js";import"./index-Bc7ikhKh.js";import"./index-DmtjhyJb.js";async function ce(s,r={page:1,pageSize:10}){return m({url:"/system/role/users/"+s,method:"get",params:r})}async function de(s){return m({url:"/system/role/status/"+s,method:"put"})}async function ue(){return m({url:"/system/role/ruleList",method:"get"})}async function ye(s,r){return m({url:"/system/role/setRule",method:"post",data:{role_id:s,rule_ids:r}})}g.extend(re);const{Title:he,Text:me}=Z,Ce=()=>{const{t:s}=J(),[r,S]=a.useState(),[b,k]=a.useState("users"),[v,w]=a.useState([]),[C,F]=a.useState(0),[A,f]=a.useState(!1),[d,z]=a.useState([]),[u,o]=a.useState([]),[K,U]=a.useState(!1),[q,p]=a.useState([]),P=a.useRef(null),E=[{key:"users",icon:t.jsx(O,{}),label:s("sysUserRole.tab.users")},{key:"rules",icon:t.jsx(Q,{}),label:s("sysUserRole.tab.rules")}],N=[{title:"id",dataIndex:"id",valueType:"text",align:"center",width:80,hideInForm:!0},{title:s("sysUserRole.table.roleName"),dataIndex:"name",valueType:"text",align:"center",required:!0,colProps:{span:8},rules:[{required:!0,message:s("sysUserRole.table.roleName.required")}],render:(e,l)=>t.jsx(t.Fragment,{children:t.jsx(V,{title:l.description,children:t.jsx(R,{variant:"filled",color:"blue",children:e})})})},{title:s("sysUserRole.table.sort"),dataIndex:"sort",valueType:"digit",hideInSearch:!0,align:"center",required:!0,colProps:{span:8},rules:[{required:!0,message:s("sysUserRole.table.sort.required")}],render:e=>t.jsx(R,{variant:"filled",color:"purple",children:e})},{title:s("sysUserRole.table.userCount"),dataIndex:"countUser",valueType:"text",hideInForm:!0,align:"center",render:e=>t.jsx("a",{children:t.jsxs("u",{children:[e,s("sysUserRole.userTable.person")]})})},{title:s("sysUserRole.table.status"),dataIndex:"status",valueType:"switch",align:"center",colProps:{span:8},filters:[{text:s("sysUserRole.table.status.disable"),value:0},{text:s("sysUserRole.table.status.enable"),value:1}],hideInSearch:!0,required:!0,rules:[{required:!0,message:s("sysUserRole.table.status.required")}],render:(e,l)=>t.jsx(Y,{disabled:l.id===1,checked:l.status===1,checkedChildren:s("sysUserRole.table.status.enable"),unCheckedChildren:s("sysUserRole.table.status.disable"),onChange:async(n,c)=>{c.stopPropagation();try{await de(l.id),h.success(s("sysUserRole.message.statusUpdateSuccess"))}catch(x){h.error(s("sysUserRole.message.statusUpdateFailed")),console.error("Failed to update role status:",x)}}})},{valueType:"textarea",title:s("sysUserRole.table.description"),dataIndex:"description",colProps:{span:24},hideInTable:!0},{title:s("sysUserRole.table.createdAt"),hideInForm:!0,hideInSearch:!0,dataIndex:"created_at",align:"center",render:e=>e?g(e).fromNow():"-"},{title:s("sysUserRole.table.updatedAt"),hideInForm:!0,hideInSearch:!0,dataIndex:"updated_at",align:"center",render:e=>e?g(e).fromNow():"-"}],L=[{title:s("sysUserRole.userTable.userId"),dataIndex:"id",key:"id",align:"center",width:80},{title:s("sysUserRole.userTable.username"),dataIndex:"username",key:"username",align:"center"},{title:s("sysUserRole.userTable.nickname"),dataIndex:"nickname",key:"nickname",align:"center"},{title:s("sysUserRole.userTable.email"),dataIndex:"email",key:"email",align:"center",ellipsis:!0},{title:s("sysUserRole.userTable.mobile"),dataIndex:"mobile",key:"mobile",align:"center"},{title:s("sysUserRole.userTable.status"),dataIndex:"status",key:"status",align:"center",render:e=>{const l=e===0?{color:"error",text:s("sysUserRole.userTable.status.banned")}:{color:"success",text:s("sysUserRole.userTable.status.normal")};return t.jsx(R,{color:l.color,children:l.text})},width:80}],j=async(e=1,l=10)=>{if(r){f(!0);try{const n=await ce(r,{page:e,pageSize:l}),{data:c,total:x}=n.data.data;w(c),F(x)}finally{f(!1)}}};a.useEffect(()=>{ue().then(e=>{z(e.data.data)})},[]),a.useEffect(()=>{j(1,10)},[r]);const I=e=>{S(e.id),e.ruleIds&&e.ruleIds.length>0?o(e.ruleIds):o([])},_=e=>e.local?t.jsxs(t.Fragment,{children:[s(e.local)," - ",t.jsx("span",{style:{color:"#00000040"},children:e.title})]}):t.jsx(t.Fragment,{children:e.title}),B=e=>{le.isArray(e)?o(e):o(e.checked)},$=e=>{p(e)},y=e=>{let l=[];return e.forEach(n=>{l.push(n.key),n.children&&n.children.length>0&&(l=[...l,...y(n.children)])}),l},X=()=>{const e=y(d);p(e)},D=()=>{p([])},H=()=>{const e=y(d);o(e)},M=()=>{o([])},W=()=>{const e=y(d),l=new Set(u),n=e.filter(c=>!l.has(c));o(n)},G=async()=>{if(!r){h.warning(s("sysUserRole.message.selectRoleFirst"));return}U(!0);try{const e=u.map(l=>Number(l));await ye(r,e),h.success(s("sysUserRole.message.rulesSaveSuccess"))}finally{U(!1)}};return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"mb-5",children:[t.jsx(he,{level:3,children:s("sysUserRole.page.title")}),t.jsx(me,{type:"secondary",children:s("sysUserRole.page.description")})]}),t.jsxs(ee,{gutter:[20,20],children:[t.jsx(T,{xxl:14,lg:12,xs:24,children:t.jsx(ae,{api:"/system/role",accessName:"system.role",columns:N,rowKey:"id",searchShow:!1,searchProps:!1,scroll:{x:800},editShow:e=>e.id!==1,deleteShow:e=>e.id!==1,formProps:{grid:!0,rowProps:{gutter:[20,0]},layout:"vertical"},modalProps:{width:800},operateProps:{fixed:"right"},rowSelection:{type:"radio",selectedRowKeys:r?[r]:[],onChange:(e,l)=>I(l[0])},onRow:e=>({onClick:()=>I(e)})})}),t.jsx(T,{xxl:10,lg:12,xs:24,children:t.jsx(ne,{tabList:E,onTabChange:k,activeTabKey:b,styles:{body:{minHeight:"70vh"}},children:r?b==="users"?t.jsx(oe,{loading:A,dataSource:v,bordered:!0,columns:L,size:"small",pagination:{total:C,showSizeChanger:!0,onChange:j},scroll:{x:600}}):t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{height:"600px",overflow:"auto",marginBottom:12},children:t.jsx(ie,{ref:P,checkable:!0,treeData:d,checkedKeys:u,onCheck:B,titleRender:_,checkStrictly:!0,expandedKeys:q,onExpand:$})}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},children:[t.jsx("span",{style:{color:"#666",fontSize:12},children:s("sysUserRole.permission.selectedCount",{count:u.length})}),t.jsx(i,{size:"small",onClick:X,children:s("sysUserRole.button.expandAll")}),t.jsx(i,{size:"small",onClick:D,children:s("sysUserRole.button.collapseAll")}),t.jsx(i,{size:"small",onClick:H,children:s("sysUserRole.button.selectAll")}),t.jsx(i,{size:"small",onClick:M,children:s("sysUserRole.button.clearAll")}),t.jsx(i,{size:"small",onClick:W,children:s("sysUserRole.button.invertSelection")}),t.jsx(i,{type:"primary",icon:t.jsx(se,{}),loading:K,onClick:G,size:"small",disabled:r===1,children:s("sysUserRole.button.saveRules")})]})]}):t.jsxs("div",{style:{textAlign:"center",color:"#00000040"},children:[t.jsx(te,{style:{fontSize:40,marginBottom:12}}),t.jsx("p",{children:s("sysUserRole.placeholder.selectRole")})]})})})]})]})};export{Ce as default};