Files
bj_power/bj_power_mes/public_bak_20260918215750/assets/RoleManage-CsgPT0Gj.js
T

2 lines
6.8 KiB
JavaScript
Raw Normal View History

import{_ as Z,j as ee,c as E,d as m,a,w as o,k as y,F as P,h as k,r as d,l as te,i as v,z as le,o as r,n as f,f as c,p as C,A as U,t as b,v as ne,E as h,x as B}from"./index-CeNpw27z.js";import{f as ae}from"./format-Cv489sdL.js";import{c as N}from"./perm-DCTK2KrM.js";import{t as oe,P as se}from"./help-92MqPoF4.js";const ie={style:{display:"flex","justify-content":"space-between","align-items":"center"}},de={style:{color:"#606266"}},re={class:"perm-tree"},ce=Object.assign({name:"RoleManage"},{__name:"RoleManage",setup(ue){const x=v(!1),T=v([]),p=v([]),_=v(),S=B(()=>{const t={};for(const e of p.value)t[e.code]=e.name;return t}),j=B(()=>{const t=p.value.filter(s=>s.type==="MENU"),e=p.value.filter(s=>s.type==="BUTTON"),i=t.map(s=>({label:s.name,code:s.code,children:e.filter(u=>u.parentCode===s.code).map(u=>({label:u.name,code:u.code}))})),g=e.filter(s=>!t.some(u=>u.code===s.parentCode));return g.length&&i.push({label:"未归类",global:!0,children:g.map(s=>({label:s.name,code:s.code}))}),i});function z(t){const e=t.permissionCodes||[];return e.includes("*")?"全部":e.filter(i=>i!=="*").length}function M(t){const e=(t.permissionCodes||[]).filter(i=>i!=="*");return(t.permissionCodes||[]).includes("*")?"全部权限":A(e)}function A(t){if(!t.length)return"-";const e=t.map(i=>S.value[i]||i);return e.length>8?`${e.slice(0,8).join("、")}${e.length} 项`:e.join("、")}async function R(){x.value=!0;try{T.value=await k.get("/roles")||[]}finally{x.value=!1}}async function D(){try{p.value=await k.get("/permissions")||[]}catch{}}const n=te({show:!1,editingId:0,name:"",code:"",remark:"",checked:[]}),V=v(!1);function $(){Object.assign(n,{show:!0,editingId:0,name:"",code:"",remark:"",checked:[]})}function q(t){Object.assign(n,{show:!0,editingId:t.id,name:t.name||"",code:t.code||"",remark:t.remark||"",checked:[...t.permissionCodes||[]]}),setTimeout(()=>{_.value&&_.value.setCheckedKeys(n.checked)},60)}function F(){if(!_.value)return n.checked;const t=_.value.getCheckedKeys()||[];return[...new Set(t)]}async function K(){if(!n.name.trim())return h.warning("请输入角色名称");if(!n.editingId&&!n.code.trim())return h.warning("请输入角色编码");const t={id:n.editingId,name:n.name.trim(),code:n.code.trim(),remark:n.remark.trim()||void 0,permissionCodes:F()};V.value=!0;try{n.editingId?(await k.put("/roles",t),h.success("保存成功")):(await k.post("/roles",t),h.success("角色创建成功")),n.show=!1,await R()}finally{V.value=!1}}async function H(t){try{await ne.confirm(`确定删除角色「${t.name}」?该角色下的用户将受影响。`,"删除确认",{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消"})}catch{return}try{await k.delete(`/roles/${t.id}`),h.success("已删除"),await R()}catch{}}return ee(async()=>{await Promise.all([R(),D()])}),(t,e)=>{const i=d("el-button"),g=d("el-card"),s=d("el-table-column"),u=d("el-tag"),G=d("el-tooltip"),J=d("el-table"),I=d("el-input"),w=d("el-form-item"),L=d("el-tree"),Q=d("el-empty"),W=d("el-form"),X=d("el-dialog"),O=le("loading");return r(),E(P,null,[m("div",null,[a(g,{shadow:"never",class:"mb12"},{default:o(()=>[m("div",ie,[e[6]||(e[6]=m("div",null,[m("b",null,"角色管理"),m("span",{style:{"margin-left":"8px",color:"#909399","font-size":"12px"}}," 角色决定账号的菜单与按钮权限;内置角色(超级管理员/生产操作员/质检员)不可删除 ")],-1)),y(N)("sys.role:add")?(r(),f(i,{key:0,type:"primary",onClick:$},{default:o(()=>[...e[5]||(e[5]=[c("新增角色",-1)])]),_:1})):C("",!0)])]),_:1}),a(g,{shadow:"never"},{default:o(()=>[U((r(),f(J,{data:T.value,border:"",size:"small","empty-text":"暂无角色"},{default:o(()=>[a(s,{prop:"id",label:"ID",width:"64",align:"center"}),a(s,{prop:"code",label:"编码","min-width":"120"}),a(s,{label:"名称","min-width":"150"},{default:o(({row:l})=>[m("span",null,b(l.name),1),["SUPER_ADMIN","OPERATOR","INSPECTOR"].includes(l.code)?(r(),f(u,{key:0,effect:"plain",type:"info",size:"small",style:{"margin-left":"6px"}},{default:o(()=>[...e[7]||(e[7]=[c("内置",-1)])]),_:1})):C("",!0)]),_:1}),a(s,{prop:"rem