Files
YG_FT/frontend/dist/assets/ProjectDetailView-BXpXNuUF.js
2026-07-27 09:12:47 +08:00

2 lines
7.8 KiB
JavaScript
Raw Permalink 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{E as te,a as oe}from"./index-DOmj2wT1.js";import{E as G}from"./index-CunlXsH6.js";import{a as H,E as K}from"./index-uEvcRnhb.js";import{E as se}from"./index-DcESg4sN.js";import{E as re,a as ne}from"./index-CUZ1e7n7.js";import{E as O}from"./index-Dn5wkPSB.js";import{E as ue}from"./index-RB3L_ftg.js";import{a as ie,E as de}from"./index-DbiC_J6H.js";import{v as J}from"./directive-DnYsEmpc.js";import{aH as me,aF as pe,d as Q,D as ce,e as A,w as a,j as W,o as i,K as X,c as $,s as e,x as s,M as N,ad as R,aa as x,g as Y,y as f,A as U,G as _e,f as z,ac as ve,v as fe,da as be,q as F}from"./index-_T_ZwAU8.js";import{E as ye}from"./index-C-WN4qF8.js";import{a as Ve,b as ge,d as we,u as Ee,r as ke,e as Ce}from"./project-rPDb_gVb.js";import{E as je}from"./index-DOTsJDGF.js";import{E as xe,a as $e}from"./index-dqKVgrM4.js";import{E as De}from"./index-DeTpqSIv.js";import{_ as Z}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-BlzMMKhq.js";import"./_baseClone-BuLLSdZ_.js";import"./index-DPr6SX3u.js";import"./vnode-BBSgohgu.js";import"./index-DrL-DdXi.js";import"./index-CaL9AHzU.js";import"./index-CnFjh-NG.js";import"./index-jXIxALr6.js";import"./index-LblaQ-sT.js";import"./raf-BSHx3Xj9.js";import"./scroll-xdnWlbe1.js";import"./index-I-t9u_Se.js";import"./clamp-eKDmixUu.js";import"./toNumber-B7ieOfxs.js";import"./_baseIteratee-C37ZLjhl.js";import"./index-CwdOMQew.js";import"./use-dialog-CuUtYO5o.js";import"./index-D1ZBBHpl.js";import"./index-BWwMJoxR.js";import"./debounce-CtiCYe7I.js";import"./validator-CXbrKCjC.js";import"./omit-BNuYgpQl.js";const Ue=(k,n)=>pe(`/resources/${k}/${n}/acl`),Me=(k,n,d)=>me(`/resources/${k}/${n}/acl`,{entries:d}),Ae=Q({__name:"AclDialog",props:{modelValue:{type:Boolean},resourceType:{},resourceId:{}},emits:["update:modelValue"],setup(k,{emit:n}){const d=k,m=n,p=W({get:()=>d.modelValue,set:b=>m("update:modelValue",b)}),c=f([]),V=f(!1),g=["read","write","execute","download","delete","share"];async function _(){V.value=!0;try{c.value=await Ue(d.resourceType,d.resourceId)}finally{V.value=!1}}ce(p,b=>{b&&_()});function D(){c.value.push({subject_type:"user",subject_id:"",permissions:[]})}function I(b){c.value.splice(b,1)}async function w(){await Me(d.resourceType,d.resourceId,c.value),U.success("ACL 已保存"),p.value=!1}return(b,r)=>{const C=G,M=H,P=K,v=je,l=xe,B=$e,E=De,L=O,y=J;return i(),A(L,{modelValue:p.value,"onUpdate:modelValue":r[1]||(r[1]=u=>p.value=u),title:"资源授权 (ACL)",width:"640px"},{footer:a(()=>[e(C,{onClick:r[0]||(r[0]=u=>p.value=!1)},{default:a(()=>[...r[4]||(r[4]=[s("取消",-1)])]),_:1}),e(C,{type:"primary",onClick:w},{default:a(()=>[...r[5]||(r[5]=[s("保存",-1)])]),_:1})]),default:a(()=>[X((i(),$("div",null,[e(C,{type:"primary",size:"small",onClick:D},{default:a(()=>[...r[2]||(r[2]=[s("添加授权项",-1)])]),_:1}),(i(!0),$(N,null,R(c.value,(u,j)=>(i(),$("div",{key:j,class:"acl-row"},[e(P,{modelValue:u.subject_type,"onUpdate:modelValue":t=>u.subject_type=t,style:{width:"140px"}},{default:a(()=>[e(M,{label:"用户",value:"user"}),e(M,{label:"项目角色",value:"project_role"})]),_:1},8,["modelValue","onUpdate:modelValue"]),e(v,{modelValue:u.subject_id,"onUpdate:modelValue":t=>u.subject_id=t,placeholder:"subject ID",style:{width:"200px"}},null,8,["modelValue","onUpdate:modelValue"]),e(B,{modelValue:u.permissions,"onUpdate:modelValue":t=>u.permissions=t},{default:a(()=>[(i(),$(N,null,R(g,t=>e(l,{key:t,value:t},{default:a(()=>[s(x(t),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue","onUpdate:modelValue"]),e(C,{link:"",type:"danger",onClick:t=>I(j)},{default:a(()=>[...r[3]||(r[3]=[s("删除",-1)])]),_:1},8,["onClick"])]))),128)),c.value.length===0?(i(),A(E,{key:0,description:"暂无授权"})):Y("",!0)])),[[y,V.value]])]),_:1},8,["modelValue"])}}}),Ie=Z(Ae,[["__scopeId","data-v-64940f3b"]]),Pe={class:"page-wrap"},Be={class:"detail-actions"},Le={class:"card-header"},Te=Q({__name:"ProjectDetailView",setup(k){const n=ve(),d=fe(),m=f(null),p=f([]),c=f([]),V=f(!1),g=f(!1),_=f({user_id:"",role:"developer"}),D=f(!1),I=W(()=>{const v=new Set(p.value.map(l=>l.user_id));return c.value.filter(l=>!v.has(l.id))});async function w(){V.value=!0;try{m.value=await Ve(n.params.id),p.value=await ge(n.params.id),c.value=await be()}finally{V.value=!1}}function b(){_.value={user_id:"",role:"developer"},g.value=!0}async function r(){await we(n.params.id,_.value),U.success("已添加成员"),g.value=!1,w()}async function C(v,l){await Ee(n.params.id,v.user_id,l),U.success("角色已更新"),w()}async function M(v){await ye.confirm(`确定移除成员 ${v.user_id}`,"确认",{type:"warning"}),await ke(n.params.id,v.user_id),U.success("已移除"),w()}async function P(){await Ce(n.params.id),U.success("已归档"),w()}return _e(w),(v,l)=>{const B=ue,E=re,L=ne,y=G,u=se,j=de,t=H,T=K,h=ie,S=oe,ee=te,le=O,ae=J;return X((i(),$("div",Pe,[e(B,{onBack:l[0]||(l[0]=o=>z(d).push("/projects")),content:"项目详情"}),m.value?(i(),A(u,{key:0,class:"detail-card"},{default:a(()=>[e(L,{column:2,border:""},{default:a(()=>[e(E,{label:"名称"},{default:a(()=>[s(x(m.value.name),1)]),_:1}),e(E,{label:"编码"},{default:a(()=>[s(x(m.value.code),1)]),_:1}),e(E,{label:"租户"},{default:a(()=>[s(x(m.value.tenant_id),1)]),_:1}),e(E,{label:"状态"},{default:a(()=>[s(x(m.value.status),1)]),_:1}),e(E,{label:"描述",span:2},{default:a(()=>[s(x(m.value.description||"-"),1)]),_:1})]),_:1}),F("div",Be,[e(y,{type:"warning",onClick:P},{default:a(()=>[...l[7]||(l[7]=[s("归档项目",-1)])]),_:1}),e(y,{type:"primary",onClick:l[1]||(l[1]=o=>D.value=!0)},{default:a(()=>[...l[8]||(l[8]=[s("资源授权 (ACL)",-1)])]),_:1})])]),_:1})):Y("",!0),e(u,{class:"member-card"},{header:a(()=>[F("div",Le,[l[10]||(l[10]=F("span",null,"项目成员",-1)),e(y,{type:"primary",size:"small",onClick:b},{default:a(()=>[...l[9]||(l[9]=[s("添加成员",-1)])]),_:1})])]),default:a(()=>[e(h,{data:p.value,"empty-text":"暂无成员"},{default:a(()=>[e(j,{prop:"user_id",label:"用户 ID","min-width":"160"}),e(j,{prop:"role",label:"角色",width:"200"},{default:a(({row:o})=>[e(T,{"model-value":o.role,onChange:q=>C(o,q)},{default:a(()=>[e(t,{label:"拥有者",value:"owner"}),e(t,{label:"管理员",value:"admin"}),e(t,{label:"开发者",value:"developer"}),e(t,{label:"观察者",value:"viewer"})]),_:1},8,["model-value","onChange"])]),_:1}),e(j,{label:"操作",width:"120",align:"center"},{default:a(({row:o})=>[e(y,{link:"",type:"danger",onClick:q=>M(o)},{default:a(()=>[...l[11]||(l[11]=[s("移除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])]),_:1}),e(le,{modelValue:g.value,"onUpdate:modelValue":l[5]||(l[5]=o=>g.value=o),title:"添加成员",width:"420px"},{footer:a(()=>[e(y,{onClick:l[4]||(l[4]=o=>g.value=!1)},{default:a(()=>[...l[12]||(l[12]=[s("取消",-1)])]),_:1}),e(y,{type:"primary",onClick:r},{default:a(()=>[...l[13]||(l[13]=[s("确定",-1)])]),_:1})]),default:a(()=>[e(ee,{model:_.value,"label-width":"90px"},{default:a(()=>[e(S,{label:"用户",required:""},{default:a(()=>[e(T,{modelValue:_.value.user_id,"onUpdate:modelValue":l[2]||(l[2]=o=>_.value.user_id=o),placeholder:"选择用户",filterable:"",style:{width:"100%"}},{default:a(()=>[(i(!0),$(N,null,R(I.value,o=>(i(),A(t,{key:o.id,label:`${o.display_name} (${o.username})`,value:o.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(S,{label:"角色"},{default:a(()=>[e(T,{modelValue:_.value.role,"onUpdate:modelValue":l[3]||(l[3]=o=>_.value.role=o)},{default:a(()=>[e(t,{label:"拥有者",value:"owner"}),e(t,{label:"管理员",value:"admin"}),e(t,{label:"开发者",value:"developer"}),e(t,{label:"观察者",value:"viewer"})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),e(Ie,{modelValue:D.value,"onUpdate:modelValue":l[6]||(l[6]=o=>D.value=o),"resource-type":"project","resource-id":z(n).params.id},null,8,["modelValue","resource-id"])])),[[ae,V.value]])}}}),wl=Z(Te,[["__scopeId","data-v-d80730a4"]]);export{wl as default};