@fudanda/admin-antd 2.20261109.1-beta.1 → 2.20261109.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/ApiTokensPage-w3JGRNQC.js +2 -0
- package/dist/chunks/ApiTokensPage-w3JGRNQC.js.map +1 -0
- package/dist/chunks/{App-CfQx7jWq.js → App-nh6_qOo8.js} +5 -5
- package/dist/chunks/{App-CfQx7jWq.js.map → App-nh6_qOo8.js.map} +1 -1
- package/dist/chunks/{AppModal-CVoUC2t3.js → AppModal-CEouaU03.js} +2 -2
- package/dist/chunks/{AppModal-CVoUC2t3.js.map → AppModal-CEouaU03.js.map} +1 -1
- package/dist/chunks/{ArcBaseAdmin-DQyddbFC.js → ArcBaseAdmin-CX7fQz4x.js} +2 -2
- package/dist/chunks/{ArcBaseAdmin-DQyddbFC.js.map → ArcBaseAdmin-CX7fQz4x.js.map} +1 -1
- package/dist/chunks/{DepartmentsPage-CQx53QGE.js → DepartmentsPage-BdD9VfDI.js} +2 -2
- package/dist/chunks/{DepartmentsPage-CQx53QGE.js.map → DepartmentsPage-BdD9VfDI.js.map} +1 -1
- package/dist/chunks/{DictsPage-BGnamkWk.js → DictsPage-fxBdV1-3.js} +2 -2
- package/dist/chunks/{DictsPage-BGnamkWk.js.map → DictsPage-fxBdV1-3.js.map} +1 -1
- package/dist/chunks/{EntityContextRuntime-CbzeMNXR.js → EntityContextRuntime-CMhoj6qe.js} +2 -2
- package/dist/chunks/{EntityContextRuntime-CbzeMNXR.js.map → EntityContextRuntime-CMhoj6qe.js.map} +1 -1
- package/dist/chunks/EntityContextRuntime-Dc89ZSnM.js +1 -0
- package/dist/chunks/{ExportButton-sMPAV2hd.js → ExportButton-DGxB2tcu.js} +2 -2
- package/dist/chunks/{ExportButton-sMPAV2hd.js.map → ExportButton-DGxB2tcu.js.map} +1 -1
- package/dist/chunks/{FileViewerPreviewPanel-Rti7pUhU.js → FileViewerPreviewPanel-BMZ7FdKV.js} +3 -3
- package/dist/chunks/{FileViewerPreviewPanel-Rti7pUhU.js.map → FileViewerPreviewPanel-BMZ7FdKV.js.map} +1 -1
- package/dist/chunks/{FilesPage-D_iYsUwl.js → FilesPage-DrgWELKy.js} +3 -3
- package/dist/chunks/{FilesPage-D_iYsUwl.js.map → FilesPage-DrgWELKy.js.map} +1 -1
- package/dist/chunks/{IdentitySecurityPage-rDYX5ksX.js → IdentitySecurityPage-BjTKvr-O.js} +2 -2
- package/dist/chunks/{IdentitySecurityPage-rDYX5ksX.js.map → IdentitySecurityPage-BjTKvr-O.js.map} +1 -1
- package/dist/chunks/{LogStatsScaffold-CMIz4z0a.js → LogStatsScaffold-DaB0JeAN.js} +2 -2
- package/dist/chunks/{LogStatsScaffold-CMIz4z0a.js.map → LogStatsScaffold-DaB0JeAN.js.map} +1 -1
- package/dist/chunks/{LoginLogsPage-Bv5pPJb2.js → LoginLogsPage-VmYC7i6q.js} +2 -2
- package/dist/chunks/{LoginLogsPage-Bv5pPJb2.js.map → LoginLogsPage-VmYC7i6q.js.map} +1 -1
- package/dist/chunks/{LoginLogsTable-DYcTx2oR.js → LoginLogsTable-CULcc_e8.js} +2 -2
- package/dist/chunks/{LoginLogsTable-DYcTx2oR.js.map → LoginLogsTable-CULcc_e8.js.map} +1 -1
- package/dist/chunks/{MarkdownPreviewPanel-lqs6AsoN.js → MarkdownPreviewPanel-CBcPc7Wv.js} +2 -2
- package/dist/chunks/{MarkdownPreviewPanel-lqs6AsoN.js.map → MarkdownPreviewPanel-CBcPc7Wv.js.map} +1 -1
- package/dist/chunks/{MasterDetailLayout-B5uqvh98.js → MasterDetailLayout-ByIBpmkZ.js} +2 -2
- package/dist/chunks/{MasterDetailLayout-B5uqvh98.js.map → MasterDetailLayout-ByIBpmkZ.js.map} +1 -1
- package/dist/chunks/{McpSettingsPage-Cdej9Evi.js → McpSettingsPage-C5V_rj2V.js} +2 -2
- package/dist/chunks/{McpSettingsPage-Cdej9Evi.js.map → McpSettingsPage-C5V_rj2V.js.map} +1 -1
- package/dist/chunks/{MemberAssignmentSheet-AKvLbbYW.js → MemberAssignmentSheet-DL0fg1Yf.js} +2 -2
- package/dist/chunks/{MemberAssignmentSheet-AKvLbbYW.js.map → MemberAssignmentSheet-DL0fg1Yf.js.map} +1 -1
- package/dist/chunks/{MenuCommandPalette-ia0pSIFg.js → MenuCommandPalette-C2PvK3Gh.js} +2 -2
- package/dist/chunks/{MenuCommandPalette-ia0pSIFg.js.map → MenuCommandPalette-C2PvK3Gh.js.map} +1 -1
- package/dist/chunks/{MenusPage-Bh55bvKH.js → MenusPage-Bytd1HlW.js} +2 -2
- package/dist/chunks/{MenusPage-Bh55bvKH.js.map → MenusPage-Bytd1HlW.js.map} +1 -1
- package/dist/chunks/{MonacoPreviewPanel-CT_sjf7Z.js → MonacoPreviewPanel-BZrNIcFZ.js} +2 -2
- package/dist/chunks/{MonacoPreviewPanel-CT_sjf7Z.js.map → MonacoPreviewPanel-BZrNIcFZ.js.map} +1 -1
- package/dist/chunks/{NavListPanel-DMIUMh7q.js → NavListPanel-zwUDIYSP.js} +2 -2
- package/dist/chunks/{NavListPanel-DMIUMh7q.js.map → NavListPanel-zwUDIYSP.js.map} +1 -1
- package/dist/chunks/{OperationLogsPage-7XVfmhxP.js → OperationLogsPage-D2BQdGNp.js} +2 -2
- package/dist/chunks/{OperationLogsPage-7XVfmhxP.js.map → OperationLogsPage-D2BQdGNp.js.map} +1 -1
- package/dist/chunks/{OperationLogsTable-gp-WZxiF.js → OperationLogsTable-DaaON4QR.js} +3 -3
- package/dist/chunks/{OperationLogsTable-gp-WZxiF.js.map → OperationLogsTable-DaaON4QR.js.map} +1 -1
- package/dist/chunks/{PDFPreviewPanel-CyfhyWav.js → PDFPreviewPanel-CMmnWBKW.js} +3 -3
- package/dist/chunks/{PDFPreviewPanel-CyfhyWav.js.map → PDFPreviewPanel-CMmnWBKW.js.map} +1 -1
- package/dist/chunks/{PositionsPage-Bwua1vNV.js → PositionsPage-CBZITssT.js} +2 -2
- package/dist/chunks/{PositionsPage-Bwua1vNV.js.map → PositionsPage-CBZITssT.js.map} +1 -1
- package/dist/chunks/{PreferencesSheetBody-C80D3dOM.js → PreferencesSheetBody-B0poTPEA.js} +2 -2
- package/dist/chunks/{PreferencesSheetBody-C80D3dOM.js.map → PreferencesSheetBody-B0poTPEA.js.map} +1 -1
- package/dist/chunks/{ProfilePage-DeTw-59a.js → ProfilePage-DLhacdWt.js} +2 -2
- package/dist/chunks/{ProfilePage-DeTw-59a.js.map → ProfilePage-DLhacdWt.js.map} +1 -1
- package/dist/chunks/{ProjectInfoPage-Bqn3gfXa.js → ProjectInfoPage-CJpGxpu5.js} +2 -2
- package/dist/chunks/{ProjectInfoPage-Bqn3gfXa.js.map → ProjectInfoPage-CJpGxpu5.js.map} +1 -1
- package/dist/chunks/{RelationPanel-Bio-ig-l.js → RelationPanel-BsbfEDo2.js} +2 -2
- package/dist/chunks/{RelationPanel-Bio-ig-l.js.map → RelationPanel-BsbfEDo2.js.map} +1 -1
- package/dist/chunks/{RolesPage-fwUSs2HR.js → RolesPage-46dzdiah.js} +2 -2
- package/dist/chunks/{RolesPage-fwUSs2HR.js.map → RolesPage-46dzdiah.js.map} +1 -1
- package/dist/chunks/{SessionConflictModal-Dw4opoNP.js → SessionConflictModal-Bm38eExL.js} +2 -2
- package/dist/chunks/{SessionConflictModal-Dw4opoNP.js.map → SessionConflictModal-Bm38eExL.js.map} +1 -1
- package/dist/chunks/SettingModuleDetail-BjxUJeH5.js +17 -0
- package/dist/chunks/SettingModuleDetail-BjxUJeH5.js.map +1 -0
- package/dist/chunks/{SettingsPage-Cy5-q-P6.js → SettingsPage-C32Vuizm.js} +2 -2
- package/dist/chunks/{SettingsPage-Cy5-q-P6.js.map → SettingsPage-C32Vuizm.js.map} +1 -1
- package/dist/chunks/{StatCard-BROG4NSp.js → StatCard-CRPfkSBY.js} +2 -2
- package/dist/chunks/{StatCard-BROG4NSp.js.map → StatCard-CRPfkSBY.js.map} +1 -1
- package/dist/chunks/{UserGroupsPage-CsTBkUPy.js → UserGroupsPage-08G5MdGm.js} +2 -2
- package/dist/chunks/{UserGroupsPage-CsTBkUPy.js.map → UserGroupsPage-08G5MdGm.js.map} +1 -1
- package/dist/chunks/{UserLogsPanels-3u8Z93YU.js → UserLogsPanels-nbIrMym9.js} +2 -2
- package/dist/chunks/{UserLogsPanels-3u8Z93YU.js.map → UserLogsPanels-nbIrMym9.js.map} +1 -1
- package/dist/chunks/{UserTransferSelect-ChLj4EkS.js → UserTransferSelect-C8betaWG.js} +2 -2
- package/dist/chunks/{UserTransferSelect-ChLj4EkS.js.map → UserTransferSelect-C8betaWG.js.map} +1 -1
- package/dist/chunks/{UsersPage-CfNnQJi4.js → UsersPage-BjTiNEqF.js} +2 -2
- package/dist/chunks/{UsersPage-CfNnQJi4.js.map → UsersPage-BjTiNEqF.js.map} +1 -1
- package/dist/chunks/{browser-BKLM0ThC-D0TgzKTC.js → browser-BKLM0ThC-Cp7Gi4-F.js} +1 -1
- package/dist/chunks/{code-BkkeN2fd.js → code-LswxAr98.js} +1 -1
- package/dist/chunks/{direct-engine-m32m22nx.js → direct-engine-Dv_6v4sx.js} +1 -1
- package/dist/chunks/{html-BGNWR_Bp.js → html-BokjxlLb.js} +1 -1
- package/dist/chunks/{line-CsTeuEcK.js → line-Bqh6atHH.js} +1 -1
- package/dist/chunks/{lrc-D6gjnGZ5.js → lrc-T5e1svZG.js} +1 -1
- package/dist/chunks/{markdown-BglUe9j8.js → markdown-BpWokN1s.js} +1 -1
- package/dist/chunks/{patch-C97Yl3jr.js → patch-BYVX5C9G.js} +1 -1
- package/dist/chunks/{worker-engine-B7_3qQVS.js → worker-engine-CtUAeI4G.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/{src-DAkFn9SG.js → src-D6UlLiVN.js} +2 -2
- package/dist/{src-DAkFn9SG.js.map → src-D6UlLiVN.js.map} +1 -1
- package/package.json +9 -9
- package/dist/chunks/ApiTokensPage-DiRMgViD.js +0 -2
- package/dist/chunks/ApiTokensPage-DiRMgViD.js.map +0 -1
- package/dist/chunks/EntityContextRuntime-C9q95WDf.js +0 -1
- package/dist/chunks/SettingModuleDetail-I9CSJ-fh.js +0 -17
- package/dist/chunks/SettingModuleDetail-I9CSJ-fh.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,t}from"./rolldown-runtime-Bruge11p.js";import{Ht as n,I as r,It as i,M as a,O as o,Rt as s,T as c,Vt as l,Y as u,b as d,d as f,it as p,q as m,st as h,u as g}from"./clipboard-dpqHdCyy.js";import{n as _}from"./feedback-B1UL2ETz.js";import{t as v}from"./builtin_esm-external-require-react-DikU2FHA.js";import{_ as y,g as b}from"./App-
|
|
1
|
+
import{n as e,t}from"./rolldown-runtime-Bruge11p.js";import{Ht as n,I as r,It as i,M as a,O as o,Rt as s,T as c,Vt as l,Y as u,b as d,d as f,it as p,q as m,st as h,u as g}from"./clipboard-dpqHdCyy.js";import{n as _}from"./feedback-B1UL2ETz.js";import{t as v}from"./builtin_esm-external-require-react-DikU2FHA.js";import{_ as y,g as b}from"./App-nh6_qOo8.js";import{n as x,t as S}from"./UserAvatar-PoQSTuhw.js";import{createContext as ee,useCallback as C,useContext as te,useEffect as w,useMemo as T,useState as E}from"react";import{Fragment as ne,jsx as D,jsxs as O}from"react/jsx-runtime";import{usePagination as re}from"@fudanda/admin-antd/core/hooks/usePagination";import{textMatches as k}from"@fudanda/admin-antd/core/utils/pinyin";import{usePinyinReady as ie}from"@fudanda/admin-antd/core/hooks/usePinyinReady";import{useScopeMembers as ae}from"@fudanda/admin-antd/core/hooks/queries/scope-members";function oe(){return te(A)?.defaultOptions??{}}var A;function j(){return(j=e((()=>{A=ee(null)})))()}function se(e){return typeof e==`function`}function ce(e,...t){return se(e)?e(...t):e}/* @__NO_SIDE_EFFECTS__ */
|
|
2
2
|
function le({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0)n=e.nextSub;else{for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}}while(1)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(1)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function ue(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}function M(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=I(n,e)}function de(){if(!(U>0)){for(;B<V;){let e=N[B];N[B++]=void 0,e.notify()}B=0,V=0}}function fe(e,t){let n=typeof e==`function`,r=e,i={_snapshot:n?void 0:e,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:+!n,get(){return H!==void 0&&F(i,H,P),i._snapshot},subscribe(e){let t=ue(e),n={current:!1},r=pe(()=>{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=H,o=t?.compare??Object.is;if(n)H=i,++P,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=5);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{H=a,n&&(i.flags&=-5),M(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&R(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&z(e)}}else e&32&&(i.flags=e&-33);return H!==void 0&&F(i,H,P),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(L(e),z(e),de())}},i}function pe(e){let t=()=>{let t=H;H=n,++P,n.depsTail=void 0,n.flags=6;try{return e()}finally{H=t,n.flags&=-5,M(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){let e=this.flags;e&16||e&32&&R(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,M(this)}};return t(),n}var N,P,F,I,L,R,z,B,V,H,U;function W(){return(W=e((()=>{N=[],P=0,{link:F,unlink:I,propagate:L,checkDirty:R,shallowPropagate:z}=/* @__PURE__ */ le({update(e){return e._update()},notify(e){N[V++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,M(e))}}),B=0,V=0,U=0})))()}var G;function K(){return(K=e((()=>{W(),G=class{constructor(e,t){this.atom=fe(e),this.get=this.get.bind(this),this.setState=this.setState.bind(this),this.subscribe=this.subscribe.bind(this),t&&(this.actions=t(this))}setState(e){this.atom.set(e)}get state(){return this.atom.get()}get(){return this.state}subscribe(e){return this.atom.subscribe(ue(e))}}})))()}function q(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();let n=J(e);if(n.length!==J(t).length)return!1;for(let r=0;r<n.length;r++)if(!Object.prototype.hasOwnProperty.call(t,n[r])||!Object.is(e[n[r]],t[n[r]]))return!1;return!0}function J(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}var Y;function X(){return(X=e((()=>{Y=class{#e;constructor({pluginId:e}){this.#e=e}getPluginId(){return this.#e}createEventPayload(e,t){return{type:`${this.#e}:${e}`,payload:t,pluginId:this.#e}}emit(e,t){}on(e,t,n){return()=>{}}onAll(e){return()=>{}}onAllPluginEvents(e){return()=>{}}}})))()}var Z;function me(){return(me=e((()=>{X(),Z=Y})))()}function he(e,t){ye.set(e,t)}function ge(e){if(e!==void 0)try{return JSON.parse(JSON.stringify(e))}catch{return null}}function _e(e){return typeof e.get==`function`?e.get():e.state}function ve(e){return{key:e.key,store:{state:ge(_e(e.store))},options:ge(e.options)}}var ye,be,xe,Q;function Se(){return(Se=e((()=>{me(),ye=/* @__PURE__ */ new Map,be=class extends Z{constructor(e){super({pluginId:`pacer`,debug:e?.debug,reconnectEveryMs:1e3})}},xe=(e,t)=>{let n=t.key;n&&(he(n,t),Q.emit(e,ve({...t,key:n})))},Q=new be})))()}
|
|
3
3
|
/**
|
|
4
4
|
* @license React
|
|
@@ -20,4 +20,4 @@ var Ce=/* @__PURE__ */ t((e=>{var t=v();function n(e,t){return e===t&&(e!==0||1/
|
|
|
20
20
|
* LICENSE file in the root directory of this source tree.
|
|
21
21
|
*/
|
|
22
22
|
var t=v(),n=we();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useSyncExternalStore,o=t.useRef,s=t.useEffect,c=t.useMemo,l=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,u){var d=o(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=c(function(){function e(e){if(!a){if(a=!0,o=e,e=r(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return s=t}return s=e}if(t=s,i(o,e))return t;var n=r(e);return u!==void 0&&u(t,n)?(o=e,t):(o=e,s=n)}var a=!1,o,s,c=n===void 0?null:n;return[function(){return e(t())},c===null?void 0:function(){return e(c())}]},[t,n,r,u]);var p=a(e,d[0],d[1]);return s(function(){f.hasValue=!0,f.value=p},[p]),l(p),p}})),Ee=/* @__PURE__ */ t(((e,t)=>{t.exports=Te()}));function De(e,t){return e===t}function Oe(e,t=e=>e,n){let r=n?.compare??De,i=C(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=C(()=>e.get(),[e]);return(0,ke.useSyncExternalStoreWithSelector)(i,a,a,t,r)}var ke;function Ae(){return(Ae=e((()=>{ke=Ee()})))()}function je(){return{canLeadingExecute:!0,executionCount:0,isPending:!1,lastArgs:void 0,status:`idle`,maybeExecuteCount:0}}var Me,Ne;function Pe(){return(Pe=e((()=>{Se(),K(),Me={enabled:!0,leading:!1,trailing:!0,wait:0},Ne=class{#e;constructor(e,t){this.fn=e,this.store=new G(je()),this.setOptions=e=>{this.options={...this.options,...e},this.#n()||this.cancel()},this.#t=e=>{this.store.setState(t=>{let n={...t,...e},{isPending:r}=n;return{...n,status:this.#n()?r?`pending`:`idle`:`disabled`}}),xe(`Debouncer`,this)},this.#n=()=>!!ce(this.options.enabled,this),this.#r=()=>ce(this.options.wait,this),this.maybeExecute=(...e)=>{if(!this.#n())return;this.#t({maybeExecuteCount:this.store.state.maybeExecuteCount+1});let t=!1;this.options.leading&&this.store.state.canLeadingExecute&&(this.#t({canLeadingExecute:!1}),t=!0,this.#i(...e)),this.options.trailing&&this.#t({isPending:!0,lastArgs:e}),this.#e&&clearTimeout(this.#e),this.#e=setTimeout(()=>{this.#t({canLeadingExecute:!0}),this.options.trailing&&!t&&this.#i(...e)},this.#r())},this.#i=(...e)=>{this.#n()&&(this.fn(...e),this.#t({executionCount:this.store.state.executionCount+1,isPending:!1,lastArgs:void 0}),this.options.onExecute?.(e,this))},this.flush=()=>{this.store.state.isPending&&this.store.state.lastArgs&&(this.#a(),this.#i(...this.store.state.lastArgs))},this.#a=()=>{this.#e&&=(clearTimeout(this.#e),void 0)},this.cancel=()=>{this.#a(),this.#t({canLeadingExecute:!0,isPending:!1})},this.reset=()=>{this.#t(je())},this.key=t.key,this.options={...Me,...t},this.#t(this.options.initialState??{}),this.key&&Q.on(`d-Debouncer`,e=>{e.payload.key===this.key&&(this.#t(e.payload.store.state),this.setOptions(e.payload.options))})}#t;#n;#r;#i;#a}})))()}function Fe(e,t,n=()=>({})){let r={...oe().debouncer,...t},[i]=E(()=>{let t=new Ne(e,r);return t.Subscribe=function(e){let n=Oe(t.store,e.selector,{compare:q});return typeof e.children==`function`?e.children(n):e.children},t});i.fn=e,i.setOptions(r),w(()=>()=>{r.onUnmount?r.onUnmount(i):i.cancel()},[]);let a=Oe(i.store,n,{compare:q});return T(()=>({...i,state:a}),[i,a])}function Ie(){return(Ie=e((()=>{j(),Ae(),Pe()})))()}function Le(e,t,n){let[r,i]=E(e),a=Fe(i,t,n);return[r,a.maybeExecute,a]}function Re(){return(Re=e((()=>{Ie()})))()}function ze(e,t,n){let[r,i,a]=Le(e,t,n);return w(()=>{i(e)},[e,i]),[r,a]}function Be(){return(Be=e((()=>{Re()})))()}function Ve({preview:e,count:t,scope:n}){let[r,i]=E(!1),a=e??[],s=t??0;if(s===0)return/* @__PURE__ */ D(o,{color:`blue`,children:`0`});let l=/* @__PURE__ */ O(c,{spacing:6,children:[/* @__PURE__ */ D(f,{maxCount:4,size:`extra-extra-small`,overlapFrom:`end`,children:a.map(e=>/* @__PURE__ */ D(g,{style:{width:22,height:22,minWidth:22,lineHeight:`22px`,fontSize:12,cursor:`inherit`},src:e.avatar??void 0,alt:e.nickname,color:`light-blue`,title:e.nickname,children:e.nickname?.[0]},e.id))}),/* @__PURE__ */ D(o,{color:`blue`,style:{flexShrink:0},children:s})]});return n?/* @__PURE__ */ O(ne,{children:[/* @__PURE__ */ D(`button`,{type:`button`,onClick:()=>i(!0),"aria-label":`查看${$[n.type]}「${n.name}」的 ${s} 名成员`,style:{display:`inline-flex`,alignItems:`center`,padding:0,border:`none`,background:`transparent`,cursor:`pointer`,font:`inherit`,color:`inherit`},children:l}),r&&/* @__PURE__ */ D(He,{scope:n,total:s,onClose:()=>i(!1)})]}):l}function He({scope:e,total:t,onClose:n}){let[a,o]=E(``),[s,l]=E(``),{page:u,pageSize:f,setPage:h,resetPage:v}=re(),y=ae(e.type,e.id,{page:u,pageSize:f,keyword:s||void 0}),b=y.data,[x]=ze(a.trim(),{wait:300});return w(()=>{l(e=>e===x?e:(v(),x))},[x,v]),/* @__PURE__ */ O(_,{title:`${$[e.type]}「${e.name}」成员`,visible:!0,onCancel:n,footer:null,width:640,closeOnEsc:!0,children:[/* @__PURE__ */ O(c,{style:{width:`100%`,marginBottom:8},children:[/* @__PURE__ */ D(p,{placeholder:`搜索昵称 / 用户名`,value:a,onChange:o}),/* @__PURE__ */ O(i.Text,{type:`tertiary`,size:`small`,children:[`共 `,t,` 人`]})]}),/* @__PURE__ */ D(r,{size:`small`,loading:y.isFetching,dataSource:b?.list??[],grid:{span:12},emptyContent:/* @__PURE__ */ D(d,{description:s?`没有匹配「${s}」的成员`:`暂无成员`}),renderItem:e=>/* @__PURE__ */ D(r.Item,{style:{padding:`8px 4px`},header:/* @__PURE__ */ D(g,{size:`small`,src:e.avatar??void 0,color:`light-blue`,alt:e.nickname,children:e.nickname?.[0]}),main:/* @__PURE__ */ O(`div`,{style:{minWidth:0},children:[/* @__PURE__ */ D(i.Text,{ellipsis:{showTooltip:!0},style:{maxWidth:`100%`},children:e.nickname}),/* @__PURE__ */ D(`div`,{children:/* @__PURE__ */ D(i.Text,{type:`tertiary`,size:`small`,ellipsis:{showTooltip:!0},style:{maxWidth:`100%`},children:e.username})})]})},e.id)}),(b?.total??0)>f&&/* @__PURE__ */ D(`div`,{style:{display:`flex`,justifyContent:`flex-end`,marginTop:8},children:/* @__PURE__ */ D(m,{size:`small`,hoverShowPageSelect:!0,currentPage:u,pageSize:f,total:b?.total??0,onPageChange:h})})]})}var $;function Ue(){return(Ue=e((()=>{Be(),a(),h(),$={department:`部门`,role:`角色`,position:`岗位`,userGroup:`用户组`}})))()}function We(e,t){let n=new Map(e.map(e=>[e.id,e])),r=/* @__PURE__ */ new Map,i=[];e.forEach(e=>{let t=e.parentId&&n.has(e.parentId)?e.parentId:0;if(t){r.has(t)||r.set(t,[]);let n=r.get(t);n&&n.push(e.id)}else i.push(e.id)});let a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Set;t.forEach(e=>{let t=e._departmentId??null;if(t!==null&&n.has(t)){a.has(t)||a.set(t,[]);let n=a.get(t);n&&n.push(e),o.add(e.value)}});function s(e){let t=n.get(e);if(!t)return null;let i=(r.get(e)??[]).map(s).filter(e=>e!==null),o=a.get(e)??[],c=[...i,...o];return{key:`dept-${e}`,value:`dept-${e}`,label:t.name,disabled:!0,children:c}}let c=[];i.forEach(e=>{let t=s(e);t&&c.push(t)});let l=t.filter(e=>!o.has(e.value));return l.length>0&&c.push({key:`dept-none`,value:`dept-none`,label:`无部门`,disabled:!0,children:l}),c}function Ge(e){let t=/* @__PURE__ */ new Map,n=[];e.forEach(e=>{if(e._departmentName){t.has(e._departmentName)||t.set(e._departmentName,[]);let n=t.get(e._departmentName);n&&n.push(e)}else n.push(e)});let r=[];return t.forEach((e,t)=>{r.push({key:`dept-${t}`,value:`dept-${t}`,label:t,disabled:!0,children:e})}),n.length>0&&r.push({key:`dept-none`,value:`dept-none`,label:`无部门`,disabled:!0,children:n}),r}function Ke({dataSource:e,value:t,onChange:r,departments:i}){let[a,o]=E(`flat`);ie();let c=T(()=>e.map(e=>({key:String(e.id),value:e.id,label:e.nickname,disabled:!1,_username:e.username,_avatar:e.avatar,_departmentName:e.departmentName,_departmentId:e.departmentId})),[e]),d=(e,t)=>k(t._username??``,e)||k(t.label??``,e)||k(t._departmentName??``,e),f=e=>/* @__PURE__ */ D(`div`,{style:{height:52,boxSizing:`border-box`,display:`flex`,alignItems:`center`,padding:`0 12px`},children:/* @__PURE__ */ D(s,{onChange:()=>e.onChange(e.value),checked:e.checked,style:{display:`flex`,alignItems:`center`,width:`100%`},children:/* @__PURE__ */ O(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,minWidth:0},children:[/* @__PURE__ */ D(S,{name:e.label,avatar:e._avatar,size:32,style:{flexShrink:0}}),/* @__PURE__ */ O(`div`,{style:{minWidth:0},children:[/* @__PURE__ */ O(`div`,{style:{fontSize:14,lineHeight:`20px`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:[e.label,/* @__PURE__ */ D(`span`,{style:{fontSize:12,color:`var(--arc-antd-color-text-2)`,marginLeft:4,fontWeight:400},children:e._username})]}),e._departmentName&&/* @__PURE__ */ D(`div`,{style:{fontSize:12,lineHeight:`16px`,color:`var(--arc-antd-color-text-2)`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e._departmentName})]})]})})},e.key),p=e=>/* @__PURE__ */ O(`div`,{style:{height:52,boxSizing:`border-box`,display:`flex`,alignItems:`center`,padding:`0 12px`,gap:10,justifyContent:`space-between`},children:[/* @__PURE__ */ D(S,{name:e.label,avatar:e._avatar,size:32,style:{flexShrink:0}}),/* @__PURE__ */ O(`div`,{style:{flex:1,minWidth:0},children:[/* @__PURE__ */ O(`div`,{style:{fontSize:14,lineHeight:`20px`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:[e.label,/* @__PURE__ */ D(`span`,{style:{fontSize:12,color:`var(--arc-antd-color-text-2)`,marginLeft:4,fontWeight:400},children:e._username})]}),e._departmentName&&/* @__PURE__ */ D(`div`,{style:{fontSize:12,lineHeight:`16px`,color:`var(--arc-antd-color-text-2)`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e._departmentName})]}),/* @__PURE__ */ D(b,{size:14,onClick:e.onRemove,style:{cursor:`pointer`,color:`var(--arc-antd-color-text-2)`,flexShrink:0}})]},e.key),m=T(()=>i&&i.length>0?We(i,c):Ge(c),[i,c]),h=C((e,t)=>{let n=t;return n._username?k(n._username,e)||k(n.label??``,e)||k(n._departmentName??``,e):!1},[]),g=C((e,t)=>{let n=t;return n._username?/* @__PURE__ */ O(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[/* @__PURE__ */ D(S,{name:n.label??``,avatar:n._avatar,size:24,style:{flexShrink:0}}),/* @__PURE__ */ D(`span`,{style:{fontSize:14},children:n.label}),/* @__PURE__ */ D(`span`,{style:{fontSize:12,color:`var(--arc-antd-color-text-2)`},children:n._username})]}):/* @__PURE__ */ D(`span`,{style:{fontSize:13,fontWeight:500},children:e})},[]),_={style:{width:`100%`},value:t,onChange:e=>r(e||[]),renderSelectedItem:p,inputProps:{placeholder:`搜索姓名、账号、部门`},emptyContent:{left:`暂无可选用户`,right:`暂无成员`,search:`无匹配用户`}};return/* @__PURE__ */ O(`div`,{children:[/* @__PURE__ */ D(`div`,{style:{marginBottom:8,display:`flex`,justifyContent:`flex-end`},children:/* @__PURE__ */ O(n,{value:a,onChange:e=>o(e.target.value),type:`button`,children:[/* @__PURE__ */ D(l,{value:`flat`,children:`列表`}),/* @__PURE__ */ D(l,{value:`tree`,children:`部门树`})]})}),a===`flat`?/* @__PURE__ */ D(u,{..._,dataSource:c,filter:d,renderSourceItem:f}):/* @__PURE__ */ D(u,{..._,type:`treeList`,dataSource:m,filter:!0,treeProps:{filterTreeNode:h,renderLabel:g,disableStrictly:!1}})]})}function qe(){return(qe=e((()=>{a(),y(),x()})))()}export{Ue as i,qe as n,Ve as r,Ke as t};
|
|
23
|
-
//# sourceMappingURL=UserTransferSelect-
|
|
23
|
+
//# sourceMappingURL=UserTransferSelect-C8betaWG.js.map
|
package/dist/chunks/{UserTransferSelect-ChLj4EkS.js.map → UserTransferSelect-C8betaWG.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserTransferSelect-ChLj4EkS.js","mappings":"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","names":["useDefaultPacerOptions","useContext","PacerContext","createContext","isFunction","value","parseFunctionOrValue","args","createReactiveSystem","link","prevDep","sub","dep","nextDep","version","prevSub","newLink","unlink","nextSub","unwatched","propagate","next","stack","flags","isValidLink","notify","subSubs","checkDirty","checkDepth","dirty","update","subs","shallowPropagate","firstSub","hasMultipleSubs","checkLink","toObserver","isObserver","nextHandler","self","errorHandler","completionHandler","purgeDeps","depsTail","flush","notifyIndex","queuedEffectsLength","effect","queuedEffects","createAtom","isComputed","valueOrFn","getter","atom","activeSub","cycle","obs","observerOrFn","observed","e","compare","options","getValue","oldValue","newValue","run","effectObj","fn","actionsFactory","updater","shallow","objA","objB","k","v","keysA","getOwnKeys","i","obj","#pluginId","pluginId","eventSuffix","EventClientNoOp","registerPacerDevtoolsInstance","pacerDevtoolsInstancesByKey","key","instance","cloneJsonSafe","readStoreSnapshot","store","toPacerDevtoolsWirePayload","EventClient","props","pacerEventClient","event","PacerEventClient","React","require_builtin_esm_external_require_react","is","x","y","objectIs","useState","useEffect","useLayoutEffect","useDebugValue","useSyncExternalStore$2","getSnapshot","_useState","inst","forceUpdate","checkIfSnapshotChanged","subscribe","latestGetSnapshot","nextValue","useSyncExternalStore$1","shim","require_use_sync_external_store_shim_production","require_shim","useSyncExternalStore","useRef","useMemo","instRef","memoizedSelector","hasMemo","nextSnapshot","selector","isEqual","currentSelection","memoizedSelection","memoizedSnapshot","nextSelection","maybeGetServerSnapshot","getServerSnapshot","require_with_selector_production","defaultCompare","a","b","useSelector","s","useCallback","source","handleStoreChange","unsubscribe","useSyncExternalStoreWithSelector","getDefaultDebouncerState","Store","newOptions","#getEnabled","#setState","combinedState","state","newState","isPending","emitChange","#getWait","_didLeadingExecute","#execute","#timeoutId","#clearTimeout","initialOptions","defaultOptions","useDebouncer","mergedOptions","debouncer","debouncerInstance","Debouncer","selected","useDebouncedState","debouncedValue","setDebouncedValue","useDebouncedValue","UserPreviewCell","open","setOpen","list","preview","total","count","Tag","content","Space","AvatarGroup","Avatar","m","scope","_Fragment","SCOPE_LABEL","ScopeMemberModal","keywordDraft","setKeywordDraft","keyword","setKeyword","usePagination","query","useScopeMembers","data","debouncedDraft","prev","resetPage","Modal","onClose","KeywordInput","Typography","List","Empty","member","pageSize","Pagination","page","setPage","buildHierarchicalTree","deptMap","departments","d","childDeptIds","rootDeptIds","parent","usersByDept","assignedUserIds","users","deptId","u","buildDeptNode","dept","childDepts","n","deptUsers","children","result","node","id","noDeptUsers","buildFlatTree","noDept","item","name","UserTransferSelect","viewMode","setViewMode","usePinyinReady","transferData","dataSource","filter","textMatches","input","renderSourceItem","Checkbox","UserAvatar","renderSelectedItem","X","treeData","filterTreeNode","treeNode","inputValue","renderTreeLabel","nodeData","label","sharedProps","onChange","values","RadioGroup","Radio","Transfer"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],"sources":["../../../../node_modules/@tanstack/react-pacer/dist/provider/PacerProvider.js","../../../../node_modules/@tanstack/pacer/dist/utils.js","../../../../node_modules/@tanstack/store/dist/alien.js","../../../../node_modules/@tanstack/store/dist/atom.js","../../../../node_modules/@tanstack/store/dist/store.js","../../../../node_modules/@tanstack/store/dist/shallow.js","../../../../node_modules/@tanstack/devtools-event-client/dist/esm/noop.js","../../../../node_modules/@tanstack/devtools-event-client/dist/esm/index.js","../../../../node_modules/@tanstack/pacer/dist/event-client.js","../../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../../node_modules/use-sync-external-store/shim/index.js","../../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../../../node_modules/use-sync-external-store/shim/with-selector.js","../../../../node_modules/@tanstack/react-store/dist/useSelector.js","../../../../node_modules/@tanstack/pacer/dist/debouncer.js","../../../../node_modules/@tanstack/react-pacer/dist/debouncer/useDebouncer.js","../../../../node_modules/@tanstack/react-pacer/dist/debouncer/useDebouncedState.js","../../../../node_modules/@tanstack/react-pacer/dist/debouncer/useDebouncedValue.js","../../src/components/UserPreviewCell.tsx","../../src/components/UserTransferSelect.tsx"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"import { useEffect, useState } from 'react';\nimport { useDebouncedValue } from '@tanstack/react-pacer';\nimport { Avatar, AvatarGroup, Empty, List, Modal, Pagination, Space, Tag, Typography } from \"@/ui\";\nimport type { UserPreview } from '@fudanda/shared/identity';\nimport { KeywordInput } from \"@/components/search-filters\";\nimport { usePagination } from \"@fudanda/react-core/hooks/usePagination\";\nimport { useScopeMembers, type ScopeMember, type UserScopeType } from \"@fudanda/react-core/hooks/queries/scope-members\";\nexport type UserPreviewItem = UserPreview;\n/** 成员归属:给定后单元格可点击,弹窗展示该范围内的完整成员名单 */\nexport interface UserPreviewScope {\n type: UserScopeType;\n id: number;\n /** 弹窗标题里的对象名,如部门名 / 角色名 */\n name: string;\n}\ninterface UserPreviewCellProps {\n /** 预览成员列表(最多展示 4 个头像) */\n readonly preview?: UserPreviewItem[] | null;\n /** 成员总数(为 0 时仅显示数量 Tag) */\n readonly count?: number | null;\n /**\n * 成员归属范围。传入后单元格变为可点击并弹出成员名单;不传则退化为纯展示。\n * 四个来源的查询接口都用各自页面的 `:list` 权限守卫,\n * 即「能看见这个列表页就能看这一列的成员」,调用方无需再做权限判断。\n */\n readonly scope?: UserPreviewScope;\n}\nconst SCOPE_LABEL: Record<UserScopeType, string> = {\n department: '部门',\n role: '角色',\n position: '岗位',\n userGroup: '用户组',\n};\n/** 表格「成员 / 用户」列单元格:头像组 + 数量 Tag,Departments / Roles / Positions / UserGroups 等列表页共用 */\nexport function UserPreviewCell({ preview, count, scope }: UserPreviewCellProps) {\n const [open, setOpen] = useState(false);\n const list = preview ?? [];\n const total = count ?? 0;\n if (total === 0)\n return <Tag color=\"blue\">0</Tag>;\n const content = (<Space spacing={6}>\n <AvatarGroup maxCount={4} size=\"extra-extra-small\" overlapFrom=\"end\">\n {list.map((m) => (<Avatar key={m.id} style={{ width: 22, height: 22, minWidth: 22, lineHeight: '22px', fontSize: 12, cursor: 'inherit' }} src={m.avatar ?? undefined} alt={m.nickname} color=\"light-blue\" title={m.nickname}>\n {m.nickname?.[0]}\n </Avatar>))}\n </AvatarGroup>\n <Tag color=\"blue\" style={{ flexShrink: 0 }}>{total}</Tag>\n </Space>);\n // 不传 scope 时退化为纯展示,保持既有调用方(若有)不受影响\n if (!scope)\n return content;\n return (<>\n <button type=\"button\" onClick={() => setOpen(true)} aria-label={`查看${SCOPE_LABEL[scope.type]}「${scope.name}」的 ${total} 名成员`} style={{\n display: 'inline-flex', alignItems: 'center', padding: 0, border: 'none',\n background: 'transparent', cursor: 'pointer', font: 'inherit', color: 'inherit',\n }}>\n {content}\n </button>\n {/* 弹窗按需挂载:不展开就不发请求,列表有几十行也不会打出几十个查询 */}\n {open && <ScopeMemberModal scope={scope} total={total} onClose={() => setOpen(false)}/>}\n </>);\n}\ninterface ScopeMemberModalProps {\n readonly scope: UserPreviewScope;\n readonly total: number;\n readonly onClose: () => void;\n}\nfunction ScopeMemberModal({ scope, total, onClose }: ScopeMemberModalProps) {\n const [keywordDraft, setKeywordDraft] = useState('');\n const [keyword, setKeyword] = useState('');\n const { page, pageSize, setPage, resetPage } = usePagination();\n const query = useScopeMembers(scope.type, scope.id, { page, pageSize, keyword: keyword || undefined });\n const data = query.data;\n /*\n 输入即搜(300ms 防抖)而非回车触发:\n KeywordInput 带 showClear,点 × 只会清空输入框,不会触发一次「回车搜索」——\n 用户以为清掉了筛选,列表却仍停在上一次的过滤结果。以 draft 为唯一输入源就没有这个缝隙。\n 搜索必须重置页码:停在第 3 页搜一个只有 2 条结果的关键字会落到空页。\n */\n const [debouncedDraft] = useDebouncedValue(keywordDraft.trim(), { wait: 300 });\n useEffect(() => {\n setKeyword((prev) => {\n if (prev === debouncedDraft)\n return prev;\n resetPage();\n return debouncedDraft;\n });\n }, [debouncedDraft, resetPage]);\n return (<Modal title={`${SCOPE_LABEL[scope.type]}「${scope.name}」成员`} visible onCancel={onClose} footer={null} width={640} closeOnEsc>\n <Space style={{ width: '100%', marginBottom: 8 }}>\n <KeywordInput placeholder=\"搜索昵称 / 用户名\" value={keywordDraft} onChange={setKeywordDraft}/>\n <Typography.Text type=\"tertiary\" size=\"small\">共 {total} 人</Typography.Text>\n </Space>\n <List<ScopeMember> size=\"small\" loading={query.isFetching} dataSource={data?.list ?? []} grid={{ span: 12 }} emptyContent={<Empty description={keyword ? `没有匹配「${keyword}」的成员` : '暂无成员'}/>} renderItem={(member) => (<List.Item key={member.id} style={{ padding: '8px 4px' }} header={(<Avatar size=\"small\" src={member.avatar ?? undefined} color=\"light-blue\" alt={member.nickname}>\n {member.nickname?.[0]}\n </Avatar>)} main={(<div style={{ minWidth: 0 }}>\n <Typography.Text ellipsis={{ showTooltip: true }} style={{ maxWidth: '100%' }}>{member.nickname}</Typography.Text>\n <div>\n <Typography.Text type=\"tertiary\" size=\"small\" ellipsis={{ showTooltip: true }} style={{ maxWidth: '100%' }}>\n {member.username}\n </Typography.Text>\n </div>\n </div>)}/>)}/>\n {(data?.total ?? 0) > pageSize && (<div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: 8 }}>\n <Pagination size=\"small\" hoverShowPageSelect currentPage={page} pageSize={pageSize} total={data?.total ?? 0} onPageChange={setPage}/>\n </div>)}\n </Modal>);\n}\n","import { useCallback, useMemo, useState } from 'react';\nimport { Checkbox, Radio, RadioGroup, Transfer } from \"@/ui\";\nimport { X } from 'lucide-react';\nimport type { ApiDepartment as Department } from '@fudanda/shared/api/departments';\nimport { usePinyinReady } from \"@fudanda/react-core/hooks/usePinyinReady\";\nimport { textMatches } from \"@fudanda/react-core/utils/pinyin\";\nimport { UserAvatar } from \"@/components/UserAvatar\";\nexport interface UserTransferUser {\n id: number;\n username: string;\n nickname: string;\n avatar?: string | null;\n departmentId?: number | null;\n departmentName?: string | null;\n}\ninterface UserTransferSelectProps {\n dataSource: UserTransferUser[];\n value: number[];\n onChange: (ids: number[]) => void;\n /** 传入扁平部门列表可在树形模式中呈现真实多级层级,不传则按 departmentName 平铺分组 */\n departments?: Department[];\n}\ninterface TransferDataItem {\n key: string;\n value: number;\n label: string;\n disabled: boolean;\n _username: string;\n _avatar?: string | null;\n _departmentName?: string | null;\n _departmentId?: number | null;\n}\ninterface DeptTreeNode {\n key: string;\n value: string;\n label: string;\n disabled: true; // 部门节点不可选,只作为分组导航\n children: Array<DeptTreeNode | TransferDataItem>;\n}\ntype SourceItem = TransferDataItem & {\n onChange: (value: string | number) => void;\n checked: boolean;\n};\ntype SelectedItem = TransferDataItem & {\n onRemove: () => void;\n};\ntype ViewMode = 'flat' | 'tree';\nfunction buildHierarchicalTree(departments: Department[], users: TransferDataItem[]): Array<DeptTreeNode | TransferDataItem> {\n const deptMap = new Map(departments.map((d) => [d.id, d]));\n const childDeptIds = new Map<number, number[]>();\n const rootDeptIds: number[] = [];\n departments.forEach((d) => {\n const parent = d.parentId && deptMap.has(d.parentId) ? d.parentId : 0;\n if (parent) {\n if (!childDeptIds.has(parent))\n childDeptIds.set(parent, []);\n const list = childDeptIds.get(parent);\n if (list)\n list.push(d.id);\n }\n else {\n rootDeptIds.push(d.id);\n }\n });\n const usersByDept = new Map<number | null, TransferDataItem[]>();\n const assignedUserIds = new Set<number>();\n users.forEach((u) => {\n const deptId = u._departmentId ?? null;\n if (deptId !== null && deptMap.has(deptId)) {\n if (!usersByDept.has(deptId))\n usersByDept.set(deptId, []);\n const list = usersByDept.get(deptId);\n if (list)\n list.push(u);\n assignedUserIds.add(u.value);\n }\n });\n function buildDeptNode(deptId: number): DeptTreeNode | null {\n const dept = deptMap.get(deptId);\n if (!dept)\n return null;\n const childDepts = (childDeptIds.get(deptId) ?? [])\n .map(buildDeptNode)\n .filter((n): n is DeptTreeNode => n !== null);\n const deptUsers = usersByDept.get(deptId) ?? [];\n const children: Array<DeptTreeNode | TransferDataItem> = [...childDepts, ...deptUsers];\n return { key: `dept-${deptId}`, value: `dept-${deptId}`, label: dept.name, disabled: true as const, children };\n }\n const result: Array<DeptTreeNode | TransferDataItem> = [];\n rootDeptIds.forEach((id) => {\n const node = buildDeptNode(id);\n if (node)\n result.push(node);\n });\n // Users with no matched department\n const noDeptUsers = users.filter((u) => !assignedUserIds.has(u.value));\n if (noDeptUsers.length > 0) {\n result.push({ key: 'dept-none', value: 'dept-none', label: '无部门', disabled: true as const, children: noDeptUsers });\n }\n return result;\n}\nfunction buildFlatTree(users: TransferDataItem[]): DeptTreeNode[] {\n const deptMap = new Map<string, TransferDataItem[]>();\n const noDept: TransferDataItem[] = [];\n users.forEach((item) => {\n if (item._departmentName) {\n if (!deptMap.has(item._departmentName))\n deptMap.set(item._departmentName, []);\n const list = deptMap.get(item._departmentName);\n if (list)\n list.push(item);\n }\n else {\n noDept.push(item);\n }\n });\n const result: DeptTreeNode[] = [];\n deptMap.forEach((u, name) => {\n result.push({ key: `dept-${name}`, value: `dept-${name}`, label: name, disabled: true as const, children: u });\n });\n if (noDept.length > 0) {\n result.push({ key: 'dept-none', value: 'dept-none', label: '无部门', disabled: true as const, children: noDept });\n }\n return result;\n}\n/**\n * 用户穿梭框选择器,展示头像、昵称、账号和部门名称。\n * 支持两种视图:扁平列表 / 部门树形(可传入 departments 显示真实多级层级)。\n */\nexport function UserTransferSelect({ dataSource, value, onChange, departments, }: Readonly<UserTransferSelectProps>) {\n const [viewMode, setViewMode] = useState<ViewMode>('flat');\n // 拼音词典就绪后重渲染,补上已输入关键字的拼音命中\n usePinyinReady();\n const transferData = useMemo<TransferDataItem[]>(() => dataSource.map((u) => ({\n key: String(u.id),\n value: u.id,\n label: u.nickname,\n disabled: false,\n _username: u.username,\n _avatar: u.avatar,\n _departmentName: u.departmentName,\n _departmentId: u.departmentId,\n })), [dataSource]);\n // ─── 扁平模式过滤(子串 + 拼音首字母 / 全拼) ─────────────────────────────\n const filter = (input: string, item: {\n _username?: string;\n label?: string;\n _departmentName?: string | null;\n [key: string]: unknown;\n }) => {\n return (textMatches(item._username ?? '', input) ||\n textMatches(item.label ?? '', input) ||\n textMatches(item._departmentName ?? '', input));\n };\n // ─── 扁平模式 - 左侧候选项渲染 ────────────────────────────────\n const renderSourceItem = (item: SourceItem) => (<div key={item.key} style={{ height: 52, boxSizing: 'border-box', display: 'flex', alignItems: 'center', padding: '0 12px' }}>\n <Checkbox onChange={() => item.onChange(item.value)} checked={item.checked} style={{ display: 'flex', alignItems: 'center', width: '100%' }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: 10, minWidth: 0 }}>\n <UserAvatar name={item.label} avatar={item._avatar} size={32} style={{ flexShrink: 0 }}/>\n <div style={{ minWidth: 0 }}>\n <div style={{ fontSize: 14, lineHeight: '20px', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {item.label}\n <span style={{ fontSize: 12, color: 'var(--arc-antd-color-text-2)', marginLeft: 4, fontWeight: 400 }}>\n {item._username}\n </span>\n </div>\n {item._departmentName && (<div style={{ fontSize: 12, lineHeight: '16px', color: 'var(--arc-antd-color-text-2)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {item._departmentName}\n </div>)}\n </div>\n </div>\n </Checkbox>\n </div>);\n // ─── 右侧已选项渲染(扁平 / 树形共用) ────────────────────────\n const renderSelectedItem = (item: SelectedItem) => (<div key={item.key} style={{ height: 52, boxSizing: 'border-box', display: 'flex', alignItems: 'center', padding: '0 12px', gap: 10, justifyContent: 'space-between' }}>\n <UserAvatar name={item.label} avatar={item._avatar} size={32} style={{ flexShrink: 0 }}/>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: 14, lineHeight: '20px', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {item.label}\n <span style={{ fontSize: 12, color: 'var(--arc-antd-color-text-2)', marginLeft: 4, fontWeight: 400 }}>\n {item._username}\n </span>\n </div>\n {item._departmentName && (<div style={{ fontSize: 12, lineHeight: '16px', color: 'var(--arc-antd-color-text-2)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {item._departmentName}\n </div>)}\n </div>\n <X size={14} onClick={item.onRemove} style={{ cursor: 'pointer', color: 'var(--arc-antd-color-text-2)', flexShrink: 0 }}/>\n </div>);\n // ─── 树形模式数据构建 ──────────────────────────────────────────\n const treeData = useMemo(() => departments && departments.length > 0\n ? buildHierarchicalTree(departments, transferData)\n : buildFlatTree(transferData), [departments, transferData]);\n // ─── 树形模式 - 搜索过滤(仅叶节点,子串 + 拼音) ─────────────────────────\n const filterTreeNode = useCallback((inputValue: string, treeNode: Record<string, unknown>) => {\n const item = treeNode as Partial<TransferDataItem>;\n if (!item._username)\n return false; // 部门节点不直接匹配\n return (textMatches(item._username, inputValue) ||\n textMatches(item.label ?? '', inputValue) ||\n textMatches(item._departmentName ?? '', inputValue));\n }, []);\n // ─── 树形模式 - 节点标签渲染 ──────────────────────────────────\n const renderTreeLabel = useCallback((label: React.ReactNode, nodeData: Record<string, unknown>) => {\n const item = nodeData as Partial<TransferDataItem>;\n if (!item._username) {\n return <span style={{ fontSize: 13, fontWeight: 500 }}>{label}</span>;\n }\n return (<div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n <UserAvatar name={item.label ?? ''} avatar={item._avatar} size={24} style={{ flexShrink: 0 }}/>\n <span style={{ fontSize: 14 }}>{item.label}</span>\n <span style={{ fontSize: 12, color: 'var(--arc-antd-color-text-2)' }}>{item._username}</span>\n </div>);\n }, []);\n const sharedProps = {\n style: { width: '100%' },\n value,\n onChange: (values: Array<string | number>) => onChange((values as number[]) || []),\n renderSelectedItem: renderSelectedItem as (item: unknown) => React.ReactNode,\n inputProps: { placeholder: '搜索姓名、账号、部门' },\n emptyContent: { left: '暂无可选用户', right: '暂无成员', search: '无匹配用户' } as const,\n };\n return (<div>\n <div style={{ marginBottom: 8, display: 'flex', justifyContent: 'flex-end' }}>\n <RadioGroup value={viewMode} onChange={(e) => setViewMode(e.target.value as ViewMode)} type=\"button\">\n <Radio value=\"flat\">列表</Radio>\n <Radio value=\"tree\">部门树</Radio>\n </RadioGroup>\n </div>\n\n {viewMode === 'flat' ? (<Transfer {...sharedProps} dataSource={transferData}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filter={filter as any} renderSourceItem={renderSourceItem as (item: unknown) => React.ReactNode}/>) : (<Transfer {...sharedProps} type=\"treeList\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSource={treeData as any} filter treeProps={{\n filterTreeNode: filterTreeNode as unknown as never,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n renderLabel: renderTreeLabel as any,\n disableStrictly: false, // 部门节点 disabled=true 但不影响子节点(用户)可选\n }}/>)}\n </div>);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"UserTransferSelect-C8betaWG.js","mappings":"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","names":["useDefaultPacerOptions","useContext","PacerContext","createContext","isFunction","value","parseFunctionOrValue","args","createReactiveSystem","link","prevDep","sub","dep","nextDep","version","prevSub","newLink","unlink","nextSub","unwatched","propagate","next","stack","flags","isValidLink","notify","subSubs","checkDirty","checkDepth","dirty","update","subs","shallowPropagate","firstSub","hasMultipleSubs","checkLink","toObserver","isObserver","nextHandler","self","errorHandler","completionHandler","purgeDeps","depsTail","flush","notifyIndex","queuedEffectsLength","effect","queuedEffects","createAtom","isComputed","valueOrFn","getter","atom","activeSub","cycle","obs","observerOrFn","observed","e","compare","options","getValue","oldValue","newValue","run","effectObj","fn","actionsFactory","updater","shallow","objA","objB","k","v","keysA","getOwnKeys","i","obj","#pluginId","pluginId","eventSuffix","EventClientNoOp","registerPacerDevtoolsInstance","pacerDevtoolsInstancesByKey","key","instance","cloneJsonSafe","readStoreSnapshot","store","toPacerDevtoolsWirePayload","EventClient","props","pacerEventClient","event","PacerEventClient","React","require_builtin_esm_external_require_react","is","x","y","objectIs","useState","useEffect","useLayoutEffect","useDebugValue","useSyncExternalStore$2","getSnapshot","_useState","inst","forceUpdate","checkIfSnapshotChanged","subscribe","latestGetSnapshot","nextValue","useSyncExternalStore$1","shim","require_use_sync_external_store_shim_production","require_shim","useSyncExternalStore","useRef","useMemo","instRef","memoizedSelector","hasMemo","nextSnapshot","selector","isEqual","currentSelection","memoizedSelection","memoizedSnapshot","nextSelection","maybeGetServerSnapshot","getServerSnapshot","require_with_selector_production","defaultCompare","a","b","useSelector","s","useCallback","source","handleStoreChange","unsubscribe","useSyncExternalStoreWithSelector","getDefaultDebouncerState","Store","newOptions","#getEnabled","#setState","combinedState","state","newState","isPending","emitChange","#getWait","_didLeadingExecute","#execute","#timeoutId","#clearTimeout","initialOptions","defaultOptions","useDebouncer","mergedOptions","debouncer","debouncerInstance","Debouncer","selected","useDebouncedState","debouncedValue","setDebouncedValue","useDebouncedValue","UserPreviewCell","open","setOpen","list","preview","total","count","Tag","content","Space","AvatarGroup","Avatar","m","scope","_Fragment","SCOPE_LABEL","ScopeMemberModal","keywordDraft","setKeywordDraft","keyword","setKeyword","usePagination","query","useScopeMembers","data","debouncedDraft","prev","resetPage","Modal","onClose","KeywordInput","Typography","List","Empty","member","pageSize","Pagination","page","setPage","buildHierarchicalTree","deptMap","departments","d","childDeptIds","rootDeptIds","parent","usersByDept","assignedUserIds","users","deptId","u","buildDeptNode","dept","childDepts","n","deptUsers","children","result","node","id","noDeptUsers","buildFlatTree","noDept","item","name","UserTransferSelect","viewMode","setViewMode","usePinyinReady","transferData","dataSource","filter","textMatches","input","renderSourceItem","Checkbox","UserAvatar","renderSelectedItem","X","treeData","filterTreeNode","treeNode","inputValue","renderTreeLabel","nodeData","label","sharedProps","onChange","values","RadioGroup","Radio","Transfer"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],"sources":["../../../../node_modules/@tanstack/react-pacer/dist/provider/PacerProvider.js","../../../../node_modules/@tanstack/pacer/dist/utils.js","../../../../node_modules/@tanstack/store/dist/alien.js","../../../../node_modules/@tanstack/store/dist/atom.js","../../../../node_modules/@tanstack/store/dist/store.js","../../../../node_modules/@tanstack/store/dist/shallow.js","../../../../node_modules/@tanstack/devtools-event-client/dist/esm/noop.js","../../../../node_modules/@tanstack/devtools-event-client/dist/esm/index.js","../../../../node_modules/@tanstack/pacer/dist/event-client.js","../../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../../node_modules/use-sync-external-store/shim/index.js","../../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../../../node_modules/use-sync-external-store/shim/with-selector.js","../../../../node_modules/@tanstack/react-store/dist/useSelector.js","../../../../node_modules/@tanstack/pacer/dist/debouncer.js","../../../../node_modules/@tanstack/react-pacer/dist/debouncer/useDebouncer.js","../../../../node_modules/@tanstack/react-pacer/dist/debouncer/useDebouncedState.js","../../../../node_modules/@tanstack/react-pacer/dist/debouncer/useDebouncedValue.js","../../src/components/UserPreviewCell.tsx","../../src/components/UserTransferSelect.tsx"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"import { useEffect, useState } from 'react';\nimport { useDebouncedValue } from '@tanstack/react-pacer';\nimport { Avatar, AvatarGroup, Empty, List, Modal, Pagination, Space, Tag, Typography } from \"@/ui\";\nimport type { UserPreview } from '@fudanda/shared/identity';\nimport { KeywordInput } from \"@/components/search-filters\";\nimport { usePagination } from \"@fudanda/react-core/hooks/usePagination\";\nimport { useScopeMembers, type ScopeMember, type UserScopeType } from \"@fudanda/react-core/hooks/queries/scope-members\";\nexport type UserPreviewItem = UserPreview;\n/** 成员归属:给定后单元格可点击,弹窗展示该范围内的完整成员名单 */\nexport interface UserPreviewScope {\n type: UserScopeType;\n id: number;\n /** 弹窗标题里的对象名,如部门名 / 角色名 */\n name: string;\n}\ninterface UserPreviewCellProps {\n /** 预览成员列表(最多展示 4 个头像) */\n readonly preview?: UserPreviewItem[] | null;\n /** 成员总数(为 0 时仅显示数量 Tag) */\n readonly count?: number | null;\n /**\n * 成员归属范围。传入后单元格变为可点击并弹出成员名单;不传则退化为纯展示。\n * 四个来源的查询接口都用各自页面的 `:list` 权限守卫,\n * 即「能看见这个列表页就能看这一列的成员」,调用方无需再做权限判断。\n */\n readonly scope?: UserPreviewScope;\n}\nconst SCOPE_LABEL: Record<UserScopeType, string> = {\n department: '部门',\n role: '角色',\n position: '岗位',\n userGroup: '用户组',\n};\n/** 表格「成员 / 用户」列单元格:头像组 + 数量 Tag,Departments / Roles / Positions / UserGroups 等列表页共用 */\nexport function UserPreviewCell({ preview, count, scope }: UserPreviewCellProps) {\n const [open, setOpen] = useState(false);\n const list = preview ?? [];\n const total = count ?? 0;\n if (total === 0)\n return <Tag color=\"blue\">0</Tag>;\n const content = (<Space spacing={6}>\n <AvatarGroup maxCount={4} size=\"extra-extra-small\" overlapFrom=\"end\">\n {list.map((m) => (<Avatar key={m.id} style={{ width: 22, height: 22, minWidth: 22, lineHeight: '22px', fontSize: 12, cursor: 'inherit' }} src={m.avatar ?? undefined} alt={m.nickname} color=\"light-blue\" title={m.nickname}>\n {m.nickname?.[0]}\n </Avatar>))}\n </AvatarGroup>\n <Tag color=\"blue\" style={{ flexShrink: 0 }}>{total}</Tag>\n </Space>);\n // 不传 scope 时退化为纯展示,保持既有调用方(若有)不受影响\n if (!scope)\n return content;\n return (<>\n <button type=\"button\" onClick={() => setOpen(true)} aria-label={`查看${SCOPE_LABEL[scope.type]}「${scope.name}」的 ${total} 名成员`} style={{\n display: 'inline-flex', alignItems: 'center', padding: 0, border: 'none',\n background: 'transparent', cursor: 'pointer', font: 'inherit', color: 'inherit',\n }}>\n {content}\n </button>\n {/* 弹窗按需挂载:不展开就不发请求,列表有几十行也不会打出几十个查询 */}\n {open && <ScopeMemberModal scope={scope} total={total} onClose={() => setOpen(false)}/>}\n </>);\n}\ninterface ScopeMemberModalProps {\n readonly scope: UserPreviewScope;\n readonly total: number;\n readonly onClose: () => void;\n}\nfunction ScopeMemberModal({ scope, total, onClose }: ScopeMemberModalProps) {\n const [keywordDraft, setKeywordDraft] = useState('');\n const [keyword, setKeyword] = useState('');\n const { page, pageSize, setPage, resetPage } = usePagination();\n const query = useScopeMembers(scope.type, scope.id, { page, pageSize, keyword: keyword || undefined });\n const data = query.data;\n /*\n 输入即搜(300ms 防抖)而非回车触发:\n KeywordInput 带 showClear,点 × 只会清空输入框,不会触发一次「回车搜索」——\n 用户以为清掉了筛选,列表却仍停在上一次的过滤结果。以 draft 为唯一输入源就没有这个缝隙。\n 搜索必须重置页码:停在第 3 页搜一个只有 2 条结果的关键字会落到空页。\n */\n const [debouncedDraft] = useDebouncedValue(keywordDraft.trim(), { wait: 300 });\n useEffect(() => {\n setKeyword((prev) => {\n if (prev === debouncedDraft)\n return prev;\n resetPage();\n return debouncedDraft;\n });\n }, [debouncedDraft, resetPage]);\n return (<Modal title={`${SCOPE_LABEL[scope.type]}「${scope.name}」成员`} visible onCancel={onClose} footer={null} width={640} closeOnEsc>\n <Space style={{ width: '100%', marginBottom: 8 }}>\n <KeywordInput placeholder=\"搜索昵称 / 用户名\" value={keywordDraft} onChange={setKeywordDraft}/>\n <Typography.Text type=\"tertiary\" size=\"small\">共 {total} 人</Typography.Text>\n </Space>\n <List<ScopeMember> size=\"small\" loading={query.isFetching} dataSource={data?.list ?? []} grid={{ span: 12 }} emptyContent={<Empty description={keyword ? `没有匹配「${keyword}」的成员` : '暂无成员'}/>} renderItem={(member) => (<List.Item key={member.id} style={{ padding: '8px 4px' }} header={(<Avatar size=\"small\" src={member.avatar ?? undefined} color=\"light-blue\" alt={member.nickname}>\n {member.nickname?.[0]}\n </Avatar>)} main={(<div style={{ minWidth: 0 }}>\n <Typography.Text ellipsis={{ showTooltip: true }} style={{ maxWidth: '100%' }}>{member.nickname}</Typography.Text>\n <div>\n <Typography.Text type=\"tertiary\" size=\"small\" ellipsis={{ showTooltip: true }} style={{ maxWidth: '100%' }}>\n {member.username}\n </Typography.Text>\n </div>\n </div>)}/>)}/>\n {(data?.total ?? 0) > pageSize && (<div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: 8 }}>\n <Pagination size=\"small\" hoverShowPageSelect currentPage={page} pageSize={pageSize} total={data?.total ?? 0} onPageChange={setPage}/>\n </div>)}\n </Modal>);\n}\n","import { useCallback, useMemo, useState } from 'react';\nimport { Checkbox, Radio, RadioGroup, Transfer } from \"@/ui\";\nimport { X } from 'lucide-react';\nimport type { ApiDepartment as Department } from '@fudanda/shared/api/departments';\nimport { usePinyinReady } from \"@fudanda/react-core/hooks/usePinyinReady\";\nimport { textMatches } from \"@fudanda/react-core/utils/pinyin\";\nimport { UserAvatar } from \"@/components/UserAvatar\";\nexport interface UserTransferUser {\n id: number;\n username: string;\n nickname: string;\n avatar?: string | null;\n departmentId?: number | null;\n departmentName?: string | null;\n}\ninterface UserTransferSelectProps {\n dataSource: UserTransferUser[];\n value: number[];\n onChange: (ids: number[]) => void;\n /** 传入扁平部门列表可在树形模式中呈现真实多级层级,不传则按 departmentName 平铺分组 */\n departments?: Department[];\n}\ninterface TransferDataItem {\n key: string;\n value: number;\n label: string;\n disabled: boolean;\n _username: string;\n _avatar?: string | null;\n _departmentName?: string | null;\n _departmentId?: number | null;\n}\ninterface DeptTreeNode {\n key: string;\n value: string;\n label: string;\n disabled: true; // 部门节点不可选,只作为分组导航\n children: Array<DeptTreeNode | TransferDataItem>;\n}\ntype SourceItem = TransferDataItem & {\n onChange: (value: string | number) => void;\n checked: boolean;\n};\ntype SelectedItem = TransferDataItem & {\n onRemove: () => void;\n};\ntype ViewMode = 'flat' | 'tree';\nfunction buildHierarchicalTree(departments: Department[], users: TransferDataItem[]): Array<DeptTreeNode | TransferDataItem> {\n const deptMap = new Map(departments.map((d) => [d.id, d]));\n const childDeptIds = new Map<number, number[]>();\n const rootDeptIds: number[] = [];\n departments.forEach((d) => {\n const parent = d.parentId && deptMap.has(d.parentId) ? d.parentId : 0;\n if (parent) {\n if (!childDeptIds.has(parent))\n childDeptIds.set(parent, []);\n const list = childDeptIds.get(parent);\n if (list)\n list.push(d.id);\n }\n else {\n rootDeptIds.push(d.id);\n }\n });\n const usersByDept = new Map<number | null, TransferDataItem[]>();\n const assignedUserIds = new Set<number>();\n users.forEach((u) => {\n const deptId = u._departmentId ?? null;\n if (deptId !== null && deptMap.has(deptId)) {\n if (!usersByDept.has(deptId))\n usersByDept.set(deptId, []);\n const list = usersByDept.get(deptId);\n if (list)\n list.push(u);\n assignedUserIds.add(u.value);\n }\n });\n function buildDeptNode(deptId: number): DeptTreeNode | null {\n const dept = deptMap.get(deptId);\n if (!dept)\n return null;\n const childDepts = (childDeptIds.get(deptId) ?? [])\n .map(buildDeptNode)\n .filter((n): n is DeptTreeNode => n !== null);\n const deptUsers = usersByDept.get(deptId) ?? [];\n const children: Array<DeptTreeNode | TransferDataItem> = [...childDepts, ...deptUsers];\n return { key: `dept-${deptId}`, value: `dept-${deptId}`, label: dept.name, disabled: true as const, children };\n }\n const result: Array<DeptTreeNode | TransferDataItem> = [];\n rootDeptIds.forEach((id) => {\n const node = buildDeptNode(id);\n if (node)\n result.push(node);\n });\n // Users with no matched department\n const noDeptUsers = users.filter((u) => !assignedUserIds.has(u.value));\n if (noDeptUsers.length > 0) {\n result.push({ key: 'dept-none', value: 'dept-none', label: '无部门', disabled: true as const, children: noDeptUsers });\n }\n return result;\n}\nfunction buildFlatTree(users: TransferDataItem[]): DeptTreeNode[] {\n const deptMap = new Map<string, TransferDataItem[]>();\n const noDept: TransferDataItem[] = [];\n users.forEach((item) => {\n if (item._departmentName) {\n if (!deptMap.has(item._departmentName))\n deptMap.set(item._departmentName, []);\n const list = deptMap.get(item._departmentName);\n if (list)\n list.push(item);\n }\n else {\n noDept.push(item);\n }\n });\n const result: DeptTreeNode[] = [];\n deptMap.forEach((u, name) => {\n result.push({ key: `dept-${name}`, value: `dept-${name}`, label: name, disabled: true as const, children: u });\n });\n if (noDept.length > 0) {\n result.push({ key: 'dept-none', value: 'dept-none', label: '无部门', disabled: true as const, children: noDept });\n }\n return result;\n}\n/**\n * 用户穿梭框选择器,展示头像、昵称、账号和部门名称。\n * 支持两种视图:扁平列表 / 部门树形(可传入 departments 显示真实多级层级)。\n */\nexport function UserTransferSelect({ dataSource, value, onChange, departments, }: Readonly<UserTransferSelectProps>) {\n const [viewMode, setViewMode] = useState<ViewMode>('flat');\n // 拼音词典就绪后重渲染,补上已输入关键字的拼音命中\n usePinyinReady();\n const transferData = useMemo<TransferDataItem[]>(() => dataSource.map((u) => ({\n key: String(u.id),\n value: u.id,\n label: u.nickname,\n disabled: false,\n _username: u.username,\n _avatar: u.avatar,\n _departmentName: u.departmentName,\n _departmentId: u.departmentId,\n })), [dataSource]);\n // ─── 扁平模式过滤(子串 + 拼音首字母 / 全拼) ─────────────────────────────\n const filter = (input: string, item: {\n _username?: string;\n label?: string;\n _departmentName?: string | null;\n [key: string]: unknown;\n }) => {\n return (textMatches(item._username ?? '', input) ||\n textMatches(item.label ?? '', input) ||\n textMatches(item._departmentName ?? '', input));\n };\n // ─── 扁平模式 - 左侧候选项渲染 ────────────────────────────────\n const renderSourceItem = (item: SourceItem) => (<div key={item.key} style={{ height: 52, boxSizing: 'border-box', display: 'flex', alignItems: 'center', padding: '0 12px' }}>\n <Checkbox onChange={() => item.onChange(item.value)} checked={item.checked} style={{ display: 'flex', alignItems: 'center', width: '100%' }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: 10, minWidth: 0 }}>\n <UserAvatar name={item.label} avatar={item._avatar} size={32} style={{ flexShrink: 0 }}/>\n <div style={{ minWidth: 0 }}>\n <div style={{ fontSize: 14, lineHeight: '20px', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {item.label}\n <span style={{ fontSize: 12, color: 'var(--arc-antd-color-text-2)', marginLeft: 4, fontWeight: 400 }}>\n {item._username}\n </span>\n </div>\n {item._departmentName && (<div style={{ fontSize: 12, lineHeight: '16px', color: 'var(--arc-antd-color-text-2)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {item._departmentName}\n </div>)}\n </div>\n </div>\n </Checkbox>\n </div>);\n // ─── 右侧已选项渲染(扁平 / 树形共用) ────────────────────────\n const renderSelectedItem = (item: SelectedItem) => (<div key={item.key} style={{ height: 52, boxSizing: 'border-box', display: 'flex', alignItems: 'center', padding: '0 12px', gap: 10, justifyContent: 'space-between' }}>\n <UserAvatar name={item.label} avatar={item._avatar} size={32} style={{ flexShrink: 0 }}/>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: 14, lineHeight: '20px', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {item.label}\n <span style={{ fontSize: 12, color: 'var(--arc-antd-color-text-2)', marginLeft: 4, fontWeight: 400 }}>\n {item._username}\n </span>\n </div>\n {item._departmentName && (<div style={{ fontSize: 12, lineHeight: '16px', color: 'var(--arc-antd-color-text-2)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {item._departmentName}\n </div>)}\n </div>\n <X size={14} onClick={item.onRemove} style={{ cursor: 'pointer', color: 'var(--arc-antd-color-text-2)', flexShrink: 0 }}/>\n </div>);\n // ─── 树形模式数据构建 ──────────────────────────────────────────\n const treeData = useMemo(() => departments && departments.length > 0\n ? buildHierarchicalTree(departments, transferData)\n : buildFlatTree(transferData), [departments, transferData]);\n // ─── 树形模式 - 搜索过滤(仅叶节点,子串 + 拼音) ─────────────────────────\n const filterTreeNode = useCallback((inputValue: string, treeNode: Record<string, unknown>) => {\n const item = treeNode as Partial<TransferDataItem>;\n if (!item._username)\n return false; // 部门节点不直接匹配\n return (textMatches(item._username, inputValue) ||\n textMatches(item.label ?? '', inputValue) ||\n textMatches(item._departmentName ?? '', inputValue));\n }, []);\n // ─── 树形模式 - 节点标签渲染 ──────────────────────────────────\n const renderTreeLabel = useCallback((label: React.ReactNode, nodeData: Record<string, unknown>) => {\n const item = nodeData as Partial<TransferDataItem>;\n if (!item._username) {\n return <span style={{ fontSize: 13, fontWeight: 500 }}>{label}</span>;\n }\n return (<div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n <UserAvatar name={item.label ?? ''} avatar={item._avatar} size={24} style={{ flexShrink: 0 }}/>\n <span style={{ fontSize: 14 }}>{item.label}</span>\n <span style={{ fontSize: 12, color: 'var(--arc-antd-color-text-2)' }}>{item._username}</span>\n </div>);\n }, []);\n const sharedProps = {\n style: { width: '100%' },\n value,\n onChange: (values: Array<string | number>) => onChange((values as number[]) || []),\n renderSelectedItem: renderSelectedItem as (item: unknown) => React.ReactNode,\n inputProps: { placeholder: '搜索姓名、账号、部门' },\n emptyContent: { left: '暂无可选用户', right: '暂无成员', search: '无匹配用户' } as const,\n };\n return (<div>\n <div style={{ marginBottom: 8, display: 'flex', justifyContent: 'flex-end' }}>\n <RadioGroup value={viewMode} onChange={(e) => setViewMode(e.target.value as ViewMode)} type=\"button\">\n <Radio value=\"flat\">列表</Radio>\n <Radio value=\"tree\">部门树</Radio>\n </RadioGroup>\n </div>\n\n {viewMode === 'flat' ? (<Transfer {...sharedProps} dataSource={transferData}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filter={filter as any} renderSourceItem={renderSourceItem as (item: unknown) => React.ReactNode}/>) : (<Transfer {...sharedProps} type=\"treeList\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSource={treeData as any} filter treeProps={{\n filterTreeNode: filterTreeNode as unknown as never,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n renderLabel: renderTreeLabel as any,\n disableStrictly: false, // 部门节点 disabled=true 但不影响子节点(用户)可选\n }}/>)}\n </div>);\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Bruge11p.js";import{$ as t,It as n,J as r,M as i,Mt as a,O as o,Q as s,R as c,T as l,Ut as u,V as d,W as f,a as p,bt as m,c as h,h as g,i as ee,it as _,j as v,jt as y,l as b,m as x,n as S,nt as te,o as ne,ot as re,r as C,st as ie,v as ae,vt as oe,w,xt as T,y as E,yt as se}from"./clipboard-dpqHdCyy.js";import{i as D,n as ce,r as le}from"./feedback-B1UL2ETz.js";import{n as O,t as ue}from"./MasterDetailLayout-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bruge11p.js";import{$ as t,It as n,J as r,M as i,Mt as a,O as o,Q as s,R as c,T as l,Ut as u,V as d,W as f,a as p,bt as m,c as h,h as g,i as ee,it as _,j as v,jt as y,l as b,m as x,n as S,nt as te,o as ne,ot as re,r as C,st as ie,v as ae,vt as oe,w,xt as T,y as E,yt as se}from"./clipboard-dpqHdCyy.js";import{i as D,n as ce,r as le}from"./feedback-B1UL2ETz.js";import{n as O,t as ue}from"./MasterDetailLayout-ByIBpmkZ.js";import{n as de,r as fe,s as pe,t as me}from"./toolbar-controls-CrM8hKZg.js";import{a as he,i as ge,n as _e,o as ve,r as ye,s as be,t as xe}from"./UserLogsPanels-nbIrMym9.js";import{i as Se,n as Ce,r as we,t as Te}from"./chevrons-up-down-CDj3bN7O.js";import{n as k,t as Ee}from"./eye-off-BZuZBFEk.js";import{o as De,s as Oe}from"./OperationLogsTable-DaaON4QR.js";import{n as ke,t as Ae}from"./useStatusToggle-D7g3Ew35.js";import{n as A,t as je}from"./ResponsiveTableActions-CnTxLUos.js";import{i as Me,r as Ne,t as Pe}from"./deleteAction-CNNyRUSw.js";import{n as Fe}from"./listTableProps-BAghXGb4.js";import{n as Ie,t as Le}from"./DateTimeText-DldSUPjX.js";import{a as Re,i as ze,n as Be,r as Ve,s as He,t as Ue}from"./table-columns-CvT6OHd2.js";import{a as We,i as Ge,o as Ke,r as qe,t as Je}from"./EditFormModal-DVQksS9R.js";import{n as Ye,t as Xe}from"./ConfigurableTable-8sYmeul2.js";import{B as Ze,I as Qe,L as $e,V as j,b as M,x as et}from"./App-nh6_qOo8.js";import{n as tt,t as nt}from"./UserAvatar-PoQSTuhw.js";import{n as N,t as rt}from"./AppModal-CEouaU03.js";import{n as it,t as P}from"./PasswordInput-D1X5p0WR.js";import{n as at,t as ot}from"./DictTag-ChBs3uuY.js";import{n as st,t as ct}from"./ExportButton-DGxB2tcu.js";import{n as lt,t as ut}from"./webmcp-crud-D-Dz8BY4.js";import{a as dt,i as ft,n as F,r as I,t as pt}from"./DataScopePanel-BCsm8Lz8.js";import{useCallback as mt,useEffect as ht,useMemo as L,useRef as R,useState as z}from"react";import{Fragment as B,jsx as V,jsxs as H}from"react/jsx-runtime";import{abortSubmit as gt}from"@fudanda/admin-antd/core/lib/abort-submit";import{USER_STATUSES as _t,buildTree as U,enumValueOf as vt}from"@fudanda/client/core";import{useDictItems as yt}from"@fudanda/admin-antd/core/hooks/useDictItems";import{goTransport as bt}from"@fudanda/admin-antd/core/lib/go-transport";import{departmentContract as xt,identityDirectoryContract as W,positionContract as St,roleContract as Ct,userContract as G}from"@fudanda/admin-antd/core/lib/native-operations";import{api as K,useApiMutation as wt}from"@fudanda/admin-antd/core/lib/contract-query";import{usePermission as Tt}from"@fudanda/admin-antd/core/hooks/usePermission";import{useFilterQuery as Et}from"@fudanda/admin-antd/core/hooks/useFilterQuery";import{useListSearch as Dt}from"@fudanda/admin-antd/core/hooks/useListSearch";import{formatDateForApi as Ot,formatDateTimeRangeForApi as kt}from"@fudanda/admin-antd/core/utils/date";import{useListDeepLink as At}from"@fudanda/admin-antd/core/hooks/useListDeepLink";import{useAssignUserRoles as jt,useBatchUserPassword as Mt,useBatchUserStatus as Nt,useDeleteUsers as Pt,useKickUserSessions as Ft,useResetUserPassword as It,useSaveUser as Lt,useSaveUserDataPermission as Rt,useSaveUserMenus as zt,useUnlockUser as Bt,useUserDataPermission as Vt,useUserDetail as Ht,useUserEffectivePermissions as Ut,useUserList as Wt,userKeys as Gt}from"@fudanda/admin-antd/core/hooks/queries/users";import{useAuth as Kt}from"@fudanda/admin-antd/core/hooks/useAuth";import{useMenuTree as qt}from"@fudanda/admin-antd/core/hooks/queries/menus";import{useMySettings as Jt}from"@fudanda/admin-antd/core/hooks/queries/settings";import{downloadBlob as Yt}from"@fudanda/admin-antd/core/utils/download";import{useIdentityCapabilities as Xt}from"@fudanda/admin-antd/core/hooks/queries/auth-public";import{DATA_SCOPES as Zt,mostPermissiveDataScope as Qt}from"@fudanda/client/identity";import{uploadAvatarBlobToFileCenter as $t}from"@fudanda/admin-antd/core/utils/avatar-upload";import{formatPasswordPolicyHint as en}from"@fudanda/client/settings";import{isAllKeysExpanded as tn}from"@fudanda/admin-antd/core/hooks/useTreeExpansion";import{departmentsToTreeData as nn,useFlatDepartments as rn}from"@fudanda/admin-antd/core/hooks/queries/departments";import{useAllPositions as an}from"@fudanda/admin-antd/core/hooks/queries/positions";import{useAllRoles as on}from"@fudanda/admin-antd/core/hooks/queries/roles";import{useRevealedValue as sn}from"@fudanda/admin-antd/core/components/sensitive/useRevealedValue";import{useSensitiveFormFields as cn}from"@fudanda/admin-antd/core/hooks/useSensitiveFormFields";import{useDirectoryCreate as ln,useDirectoryProvision as q,useDirectorySync as un,useDirectorySyncStatus as dn,useDirectoryUpdate as J}from"@fudanda/admin-antd/core/hooks/queries/identity-directory";import{transferTemplate as fn,transferUsers as pn}from"@fudanda/client/api/transfers";import{isMaskedFieldValue as mn}from"@fudanda/admin-antd/core/hooks/queries/data-mask";var hn,gn;function _n(){return(_n=e((()=>{
|
|
2
2
|
/**
|
|
3
3
|
* @license lucide-react v1.67.0 - ISC
|
|
4
4
|
*
|
|
@@ -27,4 +27,4 @@ T(),bn={name:`pencil-line`,size:24,node:[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`
|
|
|
27
27
|
* See the LICENSE file in the root directory of this source tree.
|
|
28
28
|
*/
|
|
29
29
|
T(),X={name:`undo-2`,size:24,node:[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]},X.node,Cn=m(X)})))()}function Tn({selectedRowKeys:e,clearSelection:t,run:n,disableLabel:r=`停用`,confirm:i=`disable`,entity:a=`项`,confirmContent:o,danger:s=!1,successMessage:c}){return async l=>{let u=[...e];if(u.length===0)return;let d=l===`enabled`?`启用`:r,f=async()=>{await n(u,l),t(),D.success(c?.(l,u.length)??`批量${d}成功`)};if(!(i===`always`||i===`disable`&&l===`disabled`))return f();let p={title:`确认批量${d}选中的 ${u.length} ${a}?`,content:o?.(l,u.length),onOk:f};s&&l===`disabled`?ne(p):ce.confirm(p)}}function En(){return(En=e((()=>{i(),b()})))()}function Dn({control:e,field:t,label:r,...i}){let a=d(),o=e.record?.id??0,s=sn({entity:e.entity,id:o,field:t}),u=e.record?.[t],f=typeof u==`string`&&u?u:Ue;if(e.isLocked(t)){let o=s.revealed??f;return/* @__PURE__ */ V(c.Slot,{label:r,children:/* @__PURE__ */ H(l,{spacing:4,wrap:!0,className:`sensitive-form-locked`,children:[/* @__PURE__ */ V(n.Text,{className:`sensitive-form-locked__value`,children:o}),s.canReveal&&(s.revealed===null?/* @__PURE__ */ V(v,{content:`查看明文(记录审计)`,children:/* @__PURE__ */ V(x,{size:`small`,theme:`borderless`,type:`tertiary`,icon:/* @__PURE__ */ V(vn,{size:14}),loading:s.revealing,"aria-label":`查看明文`,onClick:()=>void s.show()})}):/* @__PURE__ */ V(v,{content:`收起明文`,children:/* @__PURE__ */ V(x,{size:`small`,theme:`borderless`,type:`tertiary`,icon:/* @__PURE__ */ V(Ee,{size:14}),"aria-label":`收起明文`,onClick:s.hide})})),/* @__PURE__ */ V(x,{size:`small`,theme:`borderless`,icon:/* @__PURE__ */ V(xn,{size:14}),disabled:i.disabled,onClick:()=>{e.unlock(t),a.setValue(t,s.revealed??``)},children:`修改`})]})})}let p=e.isUnlocked(t);return/* @__PURE__ */ V(c.Input,{...i,field:t,label:r,extraText:p?/* @__PURE__ */ H(l,{spacing:4,children:[/* @__PURE__ */ V(n.Text,{type:`tertiary`,size:`small`,children:`留空则保持原值不变`}),/* @__PURE__ */ V(x,{size:`small`,theme:`borderless`,type:`tertiary`,icon:/* @__PURE__ */ V(Cn,{size:12}),onClick:()=>{e.relock(t),a.setValue(t,u)},children:`取消修改`})]}):i.extraText})}function On(){return(On=e((()=>{i(),yn(),k(),Sn(),wn(),ze()})))()}function kn({administrator:e}){let t=dn(e),r=un();return e?/* @__PURE__ */ H(l,{wrap:!0,children:[/* @__PURE__ */ V(x,{loading:r.isPending||t.data?.running,disabled:!t.data||t.data.running,onClick:()=>{r.mutateAsync({}).catch(()=>{})},children:`同步统一账户`}),/* @__PURE__ */ H(n.Text,{type:`tertiary`,children:[`最近成功同步:`,t.data?.lastSuccessAt?/* @__PURE__ */ V(Le,{value:t.data.lastSuccessAt,mode:`absolute`}):`尚未完成`]}),(t.isError||t.data?.error)&&/* @__PURE__ */ V(n.Text,{type:`danger`,children:t.data?.error||`无法读取同步状态`})]}):null}function An({user:e,onClose:t}){let n=cn({entity:`User`,fields:jn,record:e??null}),r=ln(),i=J(),a=R(null),[o]=z(()=>crypto.randomUUID()),[s,l]=z(!1),[u,d]=z(``),f=q(o,s),p=async()=>{if(!a.current||s)return;let c;try{let s=await a.current.validate();if(e){let t=W.update.input.shape.body.parse(n.strip(s));await i.mutateAsync({params:{id:e.id},body:t})}else{let e=s;c=W.create.input.shape.body.parse({...e,requestId:o,displayName:e.displayName??``,email:e.email??``,phone:e.phone??``}),await r.mutateAsync({body:c})}D.success(e?`统一资料已更新`:`统一账户已创建,请在本应用分配权限`),t()}catch(e){c&&l(!0),d(e instanceof Error?e.message:String(e))}finally{a.current?.setValue(`initialPassword`,``),c&&(c.initialPassword=``)}};return/* @__PURE__ */ H(rt,{title:e?`统一账户资料`:`创建统一账户`,visible:!0,onCancel:t,onOk:()=>{p()},confirmLoading:r.isPending||i.isPending,okButtonProps:{disabled:s},children:[/* @__PURE__ */ H(c,{getFormApi:e=>{a.current=e},initValues:{displayName:e?.externalDisplayName||e?.nickname||``,email:e?.email||``,phone:e?.phone||``},children:[!e&&/* @__PURE__ */ V(c.Input,{field:`username`,label:`统一用户名`,rules:[{required:!0}]}),/* @__PURE__ */ V(c.Input,{field:`displayName`,label:`显示名`}),/* @__PURE__ */ V(Dn,{control:n,field:`email`,label:`邮箱`}),/* @__PURE__ */ V(Dn,{control:n,field:`phone`,label:`手机`}),!e&&/* @__PURE__ */ V(P,{field:`initialPassword`,label:`初始密码`,autoComplete:`new-password`,rules:[{required:!0}]})]}),/* @__PURE__ */ V(`p`,{children:`角色、部门和本应用停用状态在“本应用权限”中设置。密码后续修改和 MFA 由 Casdoor 管理。`}),u&&/* @__PURE__ */ V(`p`,{role:`alert`,children:u}),s&&/* @__PURE__ */ V(x,{loading:f.isFetching,onClick:()=>{f.refetch().then(({data:e})=>{e?.status===`complete`?(D.success(`开户已确认,请刷新用户列表`),t()):d(`开户结果尚未确认,请稍后再次查询。不会重新发送初始密码。`)})},children:`查询开户结果`})]})}var jn;function Mn(){return(Mn=e((()=>{i(),N(),Ie(),it(),On(),jn=[`email`,`phone`]})))()}function Nn({userId:e,userName:t,visible:n,onClose:r}){let[i,s]=z([]),[c,u]=z([]),[d,f]=z([]),[p,m]=z([]),[h,g]=z([]),[_,v]=z(`direct`),b=qt({enabled:n}),x=Ut(e,n),S=zt();ht(()=>{n&&v(`direct`)},[n,e]),ht(()=>{n&&x.data&&(s(x.data.directMenuIds),u(x.data.roleMenuIds),f(x.data.groupMenuIds??[]),m(x.data.groups??[]),g(x.data.effectiveMenuIds))},[n,x.data]);let te=async()=>{await S.mutateAsync({params:{id:e},body:{menuIds:i}}),D.success(`菜单权限已更新`);let t=/* @__PURE__ */ new Set([...i,...c,...d]);g([...t]),r()};function ne(){let e=x.data?.menuSources??{},t={};for(let n of h){let r=(e[String(n)]??[]).map(e=>/* @__PURE__ */ V(o,{size:`small`,color:e===`用户直接授权`?`green`:e.includes(`用户组:`)?`orange`:`blue`,children:e},e));t[String(n)]=/* @__PURE__ */ V(l,{spacing:4,style:{marginLeft:4},children:r})}return t}return/* @__PURE__ */ V(rt,{title:`菜单权限 — ${t}`,visible:n,onCancel:r,footer:_===`effective`?null:/* @__PURE__ */ V(ee,{onCancel:r,onOk:te,okText:`保存`,loading:S.isPending,disabled:!x.isSuccess}),width:640,children:/* @__PURE__ */ H(a,{collapsible:`auto`,activeKey:_,onChange:v,children:[/* @__PURE__ */ V(y,{tab:`直接授权`,itemKey:`direct`,children:/* @__PURE__ */ V(ft,{allMenus:b.data??[],checkedMenuIds:i,onChange:s,loading:b.isFetching||x.isFetching})}),/* @__PURE__ */ H(y,{tab:`最终有效权限`,itemKey:`effective`,children:[/* @__PURE__ */ H(`div`,{style:{marginBottom:8,fontSize:12,color:`var(--arc-antd-color-text-2)`},children:[/* @__PURE__ */ V(`div`,{children:`最终权限 = 角色权限 ∪ 用户组继承 ∪ 用户直接授权,仅供预览`}),/* @__PURE__ */ H(`div`,{style:{display:`grid`,gridTemplateColumns:`88px minmax(0, 1fr)`,columnGap:8,rowGap:6,alignItems:`start`,marginTop:6},children:[/* @__PURE__ */ V(`span`,{children:`权限来源:`}),/* @__PURE__ */ V(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:6},children:[...new Set(Object.values(x.data?.menuSources??{}).flat())].map(e=>/* @__PURE__ */ V(o,{size:`small`,color:e===`用户直接授权`?`green`:e.includes(`用户组:`)?`orange`:`blue`,children:e},e))}),p.length>0&&/* @__PURE__ */ H(B,{children:[/* @__PURE__ */ V(`span`,{children:`继承自用户组:`}),/* @__PURE__ */ V(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:6},children:p.map(e=>/* @__PURE__ */ V(o,{size:`small`,color:`orange`,children:e.name},e.id))})]})]})]}),/* @__PURE__ */ V(ft,{allMenus:b.data??[],checkedMenuIds:h,loading:b.isFetching||x.isFetching,readonly:!0,labelSuffix:ne()})]})]})})}function Pn(){return(Pn=e((()=>{i(),N(),dt(),p()})))()}function Fn(e){return e===null?`未设置`:pt.find(t=>t.value===e)?.label??e}function In(e){return Qt(e)??`self`}function Ln({userId:e,userName:t,visible:n,deptTree:r,onClose:i}){let a=L(()=>U(r.map(e=>({...e,children:[]})),{keepEmptyChildren:!0}),[r]),[s,c]=z(null),[l,u]=z([]),[d,f]=z(null),[p,m]=z([]),[h,g]=z(null),[ee,_]=z([]),[v,y]=z([]),b=Vt(e,n),x=Rt();ht(()=>{n&&b.data&&(c(b.data.userDataScope??null),u(b.data.deptScopeIds),f(b.data.roleDataScope??null),m(b.data.roleDeptScopeIds),g(b.data.groupDataScope??null),_(b.data.groupDeptScopeIds??[]),y(b.data.groups??[]))},[n,b.data]);let S=async()=>{await x.mutateAsync({params:{id:e},body:{dataScope:vt(Zt,s),deptScopeIds:s===`custom`?l:[]}}),D.success(`数据权限已更新`),i()},te=In([s,d,h]),ne=te===`custom`?[.../* @__PURE__ */ new Set([...s===`custom`?l:[],...p,...ee])]:[];return/* @__PURE__ */ H(rt,{title:`数据权限 — ${t}`,visible:n,onCancel:i,onOk:S,okButtonProps:{disabled:!b.isSuccess},confirmLoading:x.isPending,width:440,children:[/* @__PURE__ */ H(`div`,{style:{marginBottom:12},children:[/* @__PURE__ */ V(Z,{strong:!0,style:{display:`block`,marginBottom:6},children:`角色数据权限(只读)`}),/* @__PURE__ */ V(F,{dataScope:d??`self`,deptScopeIds:p,deptTree:a,loading:b.isFetching,readonly:!0})]}),v.length>0&&/* @__PURE__ */ H(B,{children:[/* @__PURE__ */ V(ae,{margin:12}),/* @__PURE__ */ H(`div`,{style:{marginBottom:12},children:[/* @__PURE__ */ H(Z,{strong:!0,style:{display:`block`,marginBottom:6},children:[`用户组继承权限(只读)`,v.map(e=>/* @__PURE__ */ V(o,{size:`small`,color:`orange`,style:{marginLeft:6},children:e.name},e.id))]}),/* @__PURE__ */ V(F,{dataScope:h??`self`,deptScopeIds:ee,deptTree:a,loading:b.isFetching,readonly:!0})]})]}),/* @__PURE__ */ V(ae,{margin:12}),/* @__PURE__ */ H(`div`,{style:{marginBottom:12},children:[/* @__PURE__ */ V(Z,{strong:!0,style:{display:`block`,marginBottom:6},children:`用户直接权限`}),/* @__PURE__ */ V(F,{dataScope:s,deptScopeIds:l,deptTree:a,onScopeChange:c,onDeptIdsChange:u,loading:b.isFetching,nullable:!0})]}),/* @__PURE__ */ V(ae,{margin:12}),/* @__PURE__ */ H(`div`,{children:[/* @__PURE__ */ H(Z,{strong:!0,style:{display:`block`,marginBottom:6},children:[`最终有效权限:`,/* @__PURE__ */ V(Z,{type:`secondary`,style:{fontWeight:`normal`,marginLeft:8},children:Fn(te)})]}),/* @__PURE__ */ V(F,{dataScope:te,deptScopeIds:ne,deptTree:a,loading:b.isFetching,readonly:!0})]})]})}var Z;function Rn(){return(Rn=e((()=>{i(),N(),I(),{Text:Z}=n})))()}function zn({visible:e,user:t,onClose:n,onUpdated:r}){let i=wt(G.update,{requestOptions:{silent:!0},invalidate:e=>{e.invalidateQueries({queryKey:Gt.lists}),e.invalidateQueries({queryKey:Gt.detail(t.id)})}}),a=async e=>(await i.mutateAsync({params:{id:t.id},body:e===null?{clearFields:[`avatar`]}:{avatar:e}}),K(G.detail,{params:{id:t.id}}));async function o(e){try{r(await a(e)),D.success(`头像已更新`),n()}catch(e){D.error(e instanceof Error&&e.message?e.message:`头像更新失败`)}}function s(){h({title:`确定要移除该用户头像吗?`,content:`移除后将使用昵称缩写作为默认头像。`,onOk:async()=>{try{r(await a(null)),D.success(`头像已移除`),n()}catch(e){D.error(e instanceof Error&&e.message?e.message:`移除失败`)}}})}return/* @__PURE__ */ V(ve,{visible:e,currentAvatar:t.avatar,confirmLoading:i.isPending,uploadBlob:$t,onCancel:n,onSelect:e=>void o(e),onRemove:t.avatar?s:void 0})}function Bn(){return(Bn=e((()=>{i(),be(),b()})))()}function Vn({userId:e,userName:t,visible:n,canViewLoginLogs:r,canViewOperationLogs:i,onClose:o}){let s=r?`login`:`operation`,[c,l]=z(s);return ht(()=>{n||l(s)},[n,s]),/* @__PURE__ */ V(le,{title:`登录与操作记录 · ${t}`,visible:n,onCancel:o,width:1180,bodyStyle:{padding:`0 16px 16px`},closeOnEsc:!0,children:/* @__PURE__ */ H(a,{collapsible:`auto`,type:`line`,activeKey:c,onChange:e=>l(e),children:[r&&/* @__PURE__ */ V(y,{tab:`登录记录`,itemKey:`login`,children:/* @__PURE__ */ V(xe,{scope:{kind:`user`,userId:e},enabled:n&&c===`login`,columnSettingsKey:`user-logs-login-logs`})}),i&&/* @__PURE__ */ V(y,{tab:`操作记录`,itemKey:`operation`,children:/* @__PURE__ */ V(_e,{scope:{kind:`user`,userId:e},enabled:n&&c===`operation`,columnSettingsKey:`user-logs-operation-logs`})})]})})}function Hn(){return(Hn=e((()=>{i(),ye()})))()}function Un({entity:e,title:t,label:i=`导入`,beforeSubmit:a,onFinished:s}){let c=R(null),l=R(!1),[d,f]=z(!1),[p,m]=z(`error`),[h,g]=z(null),[ee,_]=z(!1),v=e=>{(!a||a())&&(l.current=e,c.current?.click())},y=async e=>{_(!0),f(!0),g(null);try{let t=await bt.upload(pn,{body:{file:e,dryRun:l.current?`true`:`false`,duplicate:p}});g(t),l.current||s?.()}catch(e){D.error(e instanceof Error?e.message:`导入失败`),_(!1)}finally{f(!1)}},b=async()=>{let e=await(await bt.download(fn)).blob();Yt(e,`${t}导入模板.xlsx`)};return e===`identity.users`?/* @__PURE__ */ H(B,{children:[/* @__PURE__ */ V(`input`,{ref:c,type:`file`,accept:`.xlsx`,style:{display:`none`},onChange:e=>{let t=e.target.files?.[0];e.target.value=``,t&&y(t)}}),/* @__PURE__ */ V(E,{trigger:`click`,position:`bottomLeft`,clickToHide:!0,render:/* @__PURE__ */ H(E.Menu,{children:[/* @__PURE__ */ V(E.Item,{onClick:()=>v(!1),children:`上传文件导入`}),/* @__PURE__ */ V(E.Item,{onClick:()=>v(!0),children:`预检文件(仅校验不落库)`}),/* @__PURE__ */ V(E.Item,{onClick:()=>void b(),children:`下载导入模板`}),/* @__PURE__ */ V(E.Item,{children:/* @__PURE__ */ V(u,{"aria-label":`重复数据处理`,value:p,onChange:e=>m(e),optionList:[{value:`error`,label:`重复时报错`},{value:`skip`,label:`跳过重复用户`},{value:`update`,label:`更新已有用户`}]})})]}),children:/* @__PURE__ */ H(x,{icon:/* @__PURE__ */ V(M,{size:14}),loading:d,children:[i,` `,/* @__PURE__ */ V(Ze,{size:12})]})}),/* @__PURE__ */ V(ce,{title:`${t}导入`,visible:ee,maskClosable:!1,closable:!d,onCancel:()=>_(!1),width:640,footer:/* @__PURE__ */ V(x,{type:`primary`,disabled:d,onClick:()=>_(!1),children:`完成`}),children:d?/* @__PURE__ */ V(n.Text,{children:`正在同步处理,请等待当前请求完成。`}):h&&/* @__PURE__ */ H(B,{children:[h.dryRun&&/* @__PURE__ */ V(n.Text,{type:`warning`,children:`预检模式:仅校验数据,不写入任何记录。`}),/* @__PURE__ */ H(n.Paragraph,{children:[`共 `,h.total,` 行,成功 `,h.success,`,失败 `,h.failed,`,跳过 `,h.skipped]}),/* @__PURE__ */ V(r,{rowKey:`row`,size:`small`,dataSource:h.rows,columns:[{title:`行`,dataIndex:`row`,width:70},{title:`内容`,dataIndex:`label`},{title:`结果`,dataIndex:`status`,width:80,render:e=>/* @__PURE__ */ V(o,{color:e===`failed`?`red`:e===`success`?`green`:`grey`,children:e===`failed`?`失败`:e===`success`?`成功`:`跳过`})},{title:`说明`,dataIndex:`message`}],pagination:{pageSize:8}})]})})]}):null}function Wn(){return(Wn=e((()=>{i(),j(),et()})))()}function Gn(e){return/* @__PURE__ */ V(Un,{...e})}function Kn(){return(Kn=e((()=>{Wn()})))()}function qn({entity:e,id:t,field:r,value:i}){let a=sn({entity:e,id:t,field:r});if(i==null||i===``)return/* @__PURE__ */ V(n.Text,{type:`quaternary`,children:Ue});let o=a.isMasked&&a.canReveal,s=a.revealed??i;return/* @__PURE__ */ H(`span`,{className:`sensitive-text`,children:[/* @__PURE__ */ V(n.Text,{ellipsis:{showTooltip:!0},style:{minWidth:0},children:s}),o&&(a.revealed===null?/* @__PURE__ */ V(v,{content:`查看明文(记录审计)`,children:/* @__PURE__ */ V(x,{size:`small`,theme:`borderless`,type:`tertiary`,icon:/* @__PURE__ */ V(vn,{size:14}),loading:a.revealing,"aria-label":`查看明文`,onClick:()=>void a.show()})}):/* @__PURE__ */ H(B,{children:[/* @__PURE__ */ V(v,{content:`复制明文`,children:/* @__PURE__ */ V(x,{size:`small`,theme:`borderless`,type:`tertiary`,icon:/* @__PURE__ */ V(oe,{size:14}),"aria-label":`复制明文`,onClick:()=>void S(a.revealed??``)})}),/* @__PURE__ */ V(v,{content:`收起`,children:/* @__PURE__ */ V(x,{size:`small`,theme:`borderless`,type:`tertiary`,icon:/* @__PURE__ */ V(Ee,{size:14}),"aria-label":`收起明文`,onClick:a.hide})})]}))]})}function Jn(){return(Jn=e((()=>{i(),se(),yn(),k(),C(),ze()})))()}function Q(e){return e.username.trim().toLowerCase()===`admin`}function Yn(){let{hasPermission:e}=Tt(),{updateUser:t,user:n}=Kt(),{page:r,pageSize:i,buildPagination:a,draftParams:d,bind:p,bindKeyword:m,submittedParams:h,handleSearch:ee,applySearch:v,handleReset:y}=Dt({defaults:Xn,listKey:Gt.lists});At([`keyword`],e=>v({...Xn,keyword:e.keyword??``}));let[b,S]=z(!1),C=R(null),[ie,ae]=z(null),[oe,T]=z(!1),[E,se]=z(null),[ce,le]=z(!1),[O,pe]=z(null),[he,_e]=z(!1),[ve,ye]=z([]),[be,xe]=z(null),[Se,Ce]=z(!1),[k,Ee]=z(null),[Oe,Ae]=z(!1),A=Xt().data?.externalLogin===!0,[Me,Ie]=z(null),[Le,ze]=z(``),[Ue,We]=z(``),[qe,Ye]=z(``),{items:Ze}=yt(`common_status`),{options:$e}=yt(`user_gender`),[j,M]=z([]),[et,tt]=z([]),N=e(`system:role:list`),it=e(`system:department:list`),at=e(`system:position:list`),st=on({enabled:N}),ut=rn({enabled:it}),dt=an({enabled:at}),ft=Jt(),F=st.data??Qn,I=ut.data??$n,pt=dt.data??er,U=ft.data?.identitySecurity.password??null,bt=Et({keyword:h.keyword,phone:h.phone,departmentId:h.departmentId,status:vt(_t,h.status),...kt(h.timeRange)}),W=Wt({page:r,pageSize:i,...bt}),K=W.data?.list??Zn,wt=Lt(),Rt=It(),zt=Pt(),Vt=Bt(),qt=Nt(),Yt=Nt(),Zt=Mt(),Qt=jt(),$t=Ut(O?.id,he),sn=Ft(),ln=R(null),q=Ke({entityName:`用户`,save:Ge(wt,{create:G.create.input.shape.body,update:G.update.input.shape.body}),useDetail:Ht,defaults:{positionIds:[],roleIds:[],status:`enabled`},toValues:e=>({username:e.username,nickname:e.nickname,email:e.email??void 0,phone:e.phone??void 0,gender:e.gender??void 0,birthDate:e.birthDate??void 0,departmentId:e.departmentId??void 0,positionIds:e.positionIds??e.positions?.map(e=>e.id)??[],roleIds:e.roles.map(e=>e.id),status:e.status}),beforeSave:(e,{editing:t})=>{let n=ln.current,r=n?n.strip(e):e,i=[];t&&(r.departmentId??i.push(`departmentId`),`email`in r&&!r.email&&i.push(`email`),`phone`in r&&!r.phone&&i.push(`phone`),r.gender||i.push(`gender`),r.birthDate||i.push(`birthDate`));let a={username:r.username,nickname:r.nickname,email:r.email||void 0,phone:r.phone||void 0,departmentId:r.departmentId??void 0,gender:r.gender||void 0,birthDate:r.birthDate?Ot(r.birthDate):void 0,positionIds:r.positionIds??[],roleIds:r.roleIds??[],status:r.status,...t?{clearFields:i}:{password:r.password}};return`email`in r||delete a.email,`phone`in r||delete a.phone,t&&Q(t)&&r.status===`disabled`&&(D.warning(`admin 账号不允许禁用`),gt(`admin_status_forbidden`)),A?{departmentId:a.departmentId,positionIds:a.positionIds,roleIds:a.roleIds,status:a.status,clearFields:r.departmentId==null?[`departmentId`]:[]}:a},labelWidth:72}),un=q.editing;lt({resource:`users`,title:`用户`,permission:`system:user`,hasPermission:e,modal:q,list:G.list,detail:G.detail,create:G.create.input.shape.body,update:G.update.input.shape.body,updateFields:[`nickname`,`email`,`phone`,`departmentId`,`positionIds`,`roleIds`,`gender`,`birthDate`,`status`,`clearFields`],updateClearFields:[`email`,`phone`,`departmentId`,`gender`,`birthDate`],fields:[`id`,`username`,`nickname`,`email`,`phone`,`gender`,`birthDate`,`departmentId`,`departmentName`,`status`,`createdAt`,`updatedAt`],filters:bt,selectedIds:j,canCreate:!A,remove:e=>zt.mutateAsync([e]),onDeleted:()=>M([]),busy:b||oe||ce||he||Se||Oe||Me!==null,guardRecord:(e,t)=>{if(t===`delete`&&Q(e))throw Error(`admin 账号不允许删除`)},guardValues:(e,t)=>{if(t&&`username`in e)throw Error(`编辑时不能修改用户名`);if(t&&[`email`,`phone`].some(n=>n in e&&mn(t[n])))throw Error(`敏感字段处于锁定状态,请在页面处理`);if(A&&[`username`,`nickname`,`email`,`phone`,`gender`,`birthDate`].some(t=>t in e))throw Error(`外部身份字段由身份目录维护`);if(!it&&`departmentId`in e||!at&&Array.isArray(e.positionIds)&&e.positionIds.length>0||!N&&Array.isArray(e.roleIds)&&e.roleIds.length>0)throw Error(`缺少关联字段的读取权限`)},lookups:[{name:`departments`,title:`部门`,operation:xt.flat,permission:`system:department:list`,fields:[`id`,`name`,`parentId`]},{name:`positions`,title:`岗位`,operation:St.all,permission:`system:position:list`,fields:[`id`,`name`,`code`]},{name:`roles`,title:`角色`,operation:Ct.all,permission:`system:role:list`,fields:[`id`,`name`,`code`]}]});let dn=cn({entity:`User`,fields:[`email`,`phone`],record:un});ln.current=dn;let J=Ke({save:{mutateAsync:async({id:e,values:t})=>(e??gt(`missing_user`),await Rt.mutateAsync({params:{id:e},body:{password:t.password}}),{}),isPending:!1},beforeSave:e=>(e.password!==e.confirmPassword&&(D.error(`两次密码输入不一致`),gt(`password_not_match`)),e),successMessage:()=>`密码修改成功`,onSaved:()=>We(``)}),fn=e(`system:log:login`),pn=e(`system:log:operation`),hn=fn||pn,_n=L(()=>{if(!K.length)return 0;let e=new Set(j);return K.filter(t=>e.has(t.id)&&!Q(t)).length},[K,j]),Y=L(()=>{if(!K.length)return[];let e=new Set(j);return K.filter(t=>e.has(t.id)&&!Q(t)).map(e=>e.id)},[K,j]),vn=ke({toggle:(e,t)=>Yt.mutateAsync({body:{ids:[e.id],status:t?`enabled`:`disabled`}}),confirmDisable:e=>({danger:!0,title:`确认停用用户「${e.nickname??e.username}」?`,content:`停用后该用户将无法登录。`,okText:`确认停用`}),disabled:t=>Q(t)||!e(`system:user:update`)}),yn=Tn({selectedRowKeys:Y,clearSelection:()=>M([]),run:(e,t)=>qt.mutateAsync({body:{ids:e,status:t}}),confirm:`always`,entity:`个用户`,confirmContent:e=>e===`disabled`?`停用后该用户将无法登录。`:`启用后该用户可正常登录。`,danger:!0}),bn=()=>{let e=K.filter(e=>j.includes(e.id)&&!Q(e)).map(e=>e.id);e.length===0?D.warning(`admin 账号不允许删除`):Pe({title:`确认删除选中的 ${e.length} 个用户?`,content:`删除后无法恢复,请谨慎操作。`,run:()=>zt.mutateAsync(e),successMessage:`批量删除成功`,onDeleted:()=>M([])})},xn=L(()=>nn(I,{keepEmptyChildren:!0}),[I]),Sn=L(()=>[{key:$,value:$,label:`全部部门`},...xn],[xn]),X=L(()=>I.map(e=>String(e.id)),[I]),Cn=R(!1);ht(()=>{Cn.current||I.length===0||(Cn.current=!0,tt(X))},[X,I.length]);let wn=tn(et,X);function En(){tt(wn?[]:X)}let On=L(()=>pt.map(e=>({value:e.id,label:e.name})),[pt]),jn=q.openCreate,Mn=q.openEdit,Pn=J.openEdit,{mutateAsync:Fn}=Vt,In=mt(async e=>{await Fn({params:{id:e}}),D.success(`已清除登录验证码要求`)},[Fn]),{mutateAsync:Z}=sn,{refetch:Rn}=W,Bn=L(()=>[{title:`用户`,dataIndex:`nickname`,minWidth:260,ellipsis:{showTitle:!1},render:(e,t)=>/* @__PURE__ */ H(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,minWidth:0},children:[/* @__PURE__ */ V(`span`,{title:t.isOnline?`在线`:`离线`,style:{flexShrink:0,width:8,height:8,borderRadius:`50%`,background:t.isOnline?`var(--arc-antd-color-success)`:`var(--arc-antd-color-fill-2)`,display:`inline-block`,boxShadow:t.isOnline?`0 0 0 2px color-mix(in srgb, var(--arc-antd-color-success) 20%, transparent)`:void 0}}),/* @__PURE__ */ V(nt,{name:t.nickname||t.username,avatar:t.avatar,size:24}),/* @__PURE__ */ H(`span`,{className:`table-cell-ellipsis`,title:`${t.externalDisplayName||t.nickname}(${t.externalUsername||t.username})`,children:[t.externalDisplayName||t.nickname,`(`,t.externalUsername||t.username,`)`,t.accountSource===`casdoor`&&/* @__PURE__ */ H(o,{size:`small`,children:[`Casdoor · `,t.remoteStatus===`active`?`有效`:`停用或删除`]})]}),t.loginChallengeRequired&&/* @__PURE__ */ V(o,{size:`small`,color:`orange`,style:{flexShrink:0},children:`需验证码`})]})},{title:`手机号码`,dataIndex:`phone`,width:150,render:(e,t)=>/* @__PURE__ */ V(qn,{entity:`User`,id:t.id,field:`phone`,value:e})},{title:`邮箱`,dataIndex:`email`,defaultHidden:!0,width:240,render:(e,t)=>/* @__PURE__ */ V(qn,{entity:`User`,id:t.id,field:`email`,value:e})},{title:`部门`,dataIndex:`departmentName`,width:140,render:He},{...Re({title:`岗位`,dataIndex:`positions`,width:160,contentWidth:128,getItems:e=>(e??[]).map(e=>({key:String(e.id),label:e.name})),tagColor:`purple`,popoverWidth:200,empty:/* @__PURE__ */ V(o,{color:`grey`,children:`无岗位`})}),defaultHidden:!0},Re({title:`角色`,dataIndex:`roles`,width:180,contentWidth:148,getItems:e=>e.map(e=>({key:String(e.id),label:e.name})),tagColor:`blue`,popoverWidth:240,empty:/* @__PURE__ */ V(o,{color:`grey`,children:`无角色`})}),{title:`性别`,dataIndex:`gender`,defaultHidden:!0,width:80,render:e=>e?/* @__PURE__ */ V(ot,{dictCode:`user_gender`,value:e}):null},Ve(`最近登录`,`lastLoginAt`,{defaultHidden:!0}),Ve(`最近活跃`,`lastActiveAt`,{defaultHidden:!0}),{title:`关联信息`,key:`relations`,defaultHidden:!0,width:120,render:(e,t)=>/* @__PURE__ */ V(De,{entityRef:{type:`identity.user`,key:String(t.id)}})},{...Be,defaultHidden:!0},vn.column(),je({width:180,desktopInlineKeys:[`edit`,`delete`],actions:t=>{let n=Q(t);return[{key:`edit`,label:A?`本应用权限`:`编辑`,hidden:!e(`system:user:update`),onClick:()=>{Mn(t)}},{key:`directory-profile`,label:`统一账户资料`,hidden:!A||!e(`system:user:update`),onClick:()=>Ie(t)},Ne({hidden:A||!e(`system:user:delete`),disabled:n,disabledReason:`admin 账号不允许删除`,title:`确定要删除该用户吗?`,run:()=>zt.mutateAsync([t.id])}),{key:`avatar`,label:`管理头像`,hidden:A||!e(`system:user:update`),onClick:()=>{xe(t),Ce(!0)}},{key:`password`,label:`修改密码`,hidden:A||!e(`system:user:update`),onClick:()=>{Pn(t)}},{key:`unlock`,label:`清除登录验证码要求`,hidden:!t.loginChallengeRequired||!e(`system:user:update`),onClick:()=>In(t.id)},{key:`logs`,label:`登录与操作记录`,hidden:!hn,onClick:()=>{Ee(t),Ae(!0)}},{key:`menu-permission`,label:`菜单权限`,hidden:!e(`system:user:assign`),onClick:()=>{ae(t),T(!0)}},{key:`assign-role`,label:`分配角色`,hidden:!e(`system:user:assign`),onClick:()=>{pe(t),ye(t.roles.map(e=>e.id)),_e(!0)}},{key:`data-permission`,label:`数据权限`,hidden:!e(`system:user:assign`),onClick:()=>{se(t),le(!0)}},{key:`force-logout`,label:`强制下线`,danger:!0,dividerBefore:!0,hidden:!e(`system:session:forceLogout`),disabled:!t.isOnline,disabledReason:`该用户当前不在线`,onClick:()=>{ne({title:`强制下线`,content:`确定要强制下线用户「${t.nickname}(${t.username})」的全部会话吗?`,onOk:async()=>{await Z({params:{id:t.id}}),D.success(`已强制下线`),Rn()}})}}]}})],[A,e,vn,zt,In,Z,Rn,Mn,Pn,hn]),[Hn,Un]=z(!1),[Wn,Kn]=z(!1),Jn=/* @__PURE__ */ H(`div`,{className:`users-dept-sidebar`,children:[/* @__PURE__ */ V(ue.Header,{className:`users-dept-sidebar-title`,style:{padding:`10px 12px`,minHeight:44,marginBottom:4},extra:/* @__PURE__ */ V(x,{className:`users-dept-tree-action`,theme:`borderless`,size:`small`,icon:V(wn?we:Te,{size:14}),onClick:En,children:wn?`全部折叠`:`全部展开`}),children:/* @__PURE__ */ V(`span`,{className:`users-dept-sidebar-title-text`,children:`组织架构`})}),/* @__PURE__ */ V(f,{blockNode:!0,treeData:Sn,expandedKeys:et,value:d.departmentId===void 0?$:String(d.departmentId),filterTreeNode:(e,t,n)=>n.key===$||String(n.label??``).toLocaleLowerCase().includes(e.toLocaleLowerCase()),showFilteredOnly:!0,searchPlaceholder:`搜索部门`,onExpand:e=>{tt(e.map(String))},onSelect:e=>{let t=e===$?void 0:Number(e),n={...d,departmentId:t};v(n),Un(!1)},style:{width:`100%`}})]}),Yn=(e=!1)=>/* @__PURE__ */ V(x,{theme:`borderless`,icon:/* @__PURE__ */ V(gn,{size:14}),onClick:()=>Un(!0),style:{display:e||Wn?void 0:`none`},children:`按部门`}),tr=()=>/* @__PURE__ */ H(B,{children:[!A&&_n>0&&e(`system:user:delete`)&&/* @__PURE__ */ V(me,{count:_n,onClick:bn}),Y.length>0&&e(`system:user:update`)&&/* @__PURE__ */ H(B,{children:[/* @__PURE__ */ V(de,{count:Y.length,onChange:yn,danger:!0}),!A&&/* @__PURE__ */ H(x,{theme:`light`,icon:/* @__PURE__ */ V(Qe,{size:14}),onClick:()=>S(!0),children:[`批量修改密码 (`,Y.length,`)`]})]})]}),nr=()=>!A&&e(`system:user:import`)?/* @__PURE__ */ V(Gn,{entity:`identity.users`,title:`用户`,onFinished:()=>void Rn()}):null;return/* @__PURE__ */ H(`div`,{className:`page-container page-container--stretch`,children:[/* @__PURE__ */ V(ue,{master:Jn,detail:/* @__PURE__ */ V(`div`,{className:`users-content`,children:/* @__PURE__ */ V(Xe,{searchConfig:s({keyword:/* @__PURE__ */ V(_,{placeholder:`搜索用户名/昵称/邮箱`,...m(`keyword`),width:260}),filters:/* @__PURE__ */ H(B,{children:[/* @__PURE__ */ V(_,{placeholder:`搜索手机号码`,...m(`phone`),width:180}),/* @__PURE__ */ V(re,{items:Ze,...p(`status`)}),/* @__PURE__ */ V(te,{placeholder:[`开始时间`,`结束时间`],...p(`timeRange`)})]}),onSearch:ee,onReset:y,create:/* @__PURE__ */ V(fe,{permission:`system:user:create`,onClick:()=>A?Ie(!0):jn()}),actions:/* @__PURE__ */ H(B,{children:[Yn(),tr(),/* @__PURE__ */ V(ct,{entity:`system.users`,query:bt,watermark:!1,permission:`system:user:export`}),nr(),A&&/* @__PURE__ */ V(kn,{administrator:n?.roles.some(e=>e.code===`super_admin`)??!1})]}),filterTitle:`用户筛选`,actionTitle:`用户操作`}),columns:Bn,...Fe(W,{pagination:a,empty:`暂无数据`,rowSelection:{selectedRowKeys:j,onChange:e=>{let t=(e??[]).map(Number),n=new Set(t),r=K.filter(e=>Q(e)).map(e=>e.id),i=t.filter(e=>!r.includes(e));i.length<t.length&&r.some(e=>n.has(e))&&D.warning(`admin 账号不支持批量删除`),M(i)}}})})}),defaultSize:220,minSize:160,maxSize:400,showDetail:!Hn,onMasterBack:()=>Un(!1),masterBackLabel:`返回用户列表`,onResponsiveChange:Kn,persistKey:`users`,style:{flex:1,minHeight:0,overflow:`hidden`}}),Me&&/* @__PURE__ */ V(An,{user:Me===!0?void 0:Me,onClose:()=>{Ie(null),Rn()}}),/* @__PURE__ */ H(Je,{modal:q,okButtonProps:{disabled:q.detailLoading},width:660,children:[un?/* @__PURE__ */ H(B,{children:[/* @__PURE__ */ H(w,{gutter:16,children:[/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(c.Input,{field:`username`,label:`用户名`,disabled:!0})}),/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(c.Input,{field:`nickname`,label:`昵称`,disabled:A,placeholder:`请输入昵称`,rules:[{required:!0,message:`请输入昵称`}]})})]}),/* @__PURE__ */ V(w,{gutter:16,children:/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(Dn,{control:dn,disabled:A,field:`phone`,label:`手机号码`,placeholder:`请输入手机号码`,rules:[{pattern:/^1[3-9]\d{9}$/,message:`请输入正确的手机号码`}]})})})]}):/* @__PURE__ */ H(B,{children:[/* @__PURE__ */ H(w,{gutter:16,children:[/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(c.Input,{field:`username`,label:`用户名`,placeholder:`请输入用户名`,rules:[{required:!0,message:`请输入用户名`}]})}),/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(c.Input,{field:`nickname`,label:`昵称`,disabled:A,placeholder:`请输入昵称`,rules:[{required:!0,message:`请输入昵称`}]})})]}),/* @__PURE__ */ H(w,{gutter:16,children:[/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(P,{field:`password`,label:`密码`,placeholder:`请输入密码`,rules:[{required:!0,message:`请输入密码`}],onChange:e=>ze(String(e??``)),helpText:/* @__PURE__ */ V(ge,{password:Le,policy:U})})}),/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(c.Input,{field:`phone`,label:`手机号码`,placeholder:`请输入手机号码`,rules:[{pattern:/^1[3-9]\d{9}$/,message:`请输入正确的手机号码`}]})})]})]}),/* @__PURE__ */ H(w,{gutter:16,children:[/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(Dn,{control:dn,field:`email`,disabled:A,label:`邮箱`,placeholder:`请输入邮箱`,rules:[{type:`email`,message:`邮箱格式不正确`}]})}),/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(c.TreeSelect,{field:`departmentId`,label:`所属部门`,disabled:!it,style:{width:`100%`},treeData:xn,placeholder:`请选择所属部门`,filterTreeNode:!0,showClear:!0})})]}),/* @__PURE__ */ H(w,{gutter:16,children:[/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(c.Select,{field:`positionIds`,label:`岗位`,disabled:!at,style:{width:`100%`},multiple:!0,filter:!0,showClear:!0,optionList:On,placeholder:`请选择岗位`})}),/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(c.Select,{field:`roleIds`,label:`角色`,disabled:!N,style:{width:`100%`},multiple:!0,filter:!0,optionList:F.map(e=>({value:e.id,label:e.name})),placeholder:`请选择角色`})})]}),/* @__PURE__ */ H(w,{gutter:16,children:[/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(c.Select,{field:`gender`,disabled:A,label:`性别`,style:{width:`100%`},showClear:!0,optionList:$e,placeholder:`请选择性别`})}),/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(c.DatePicker,{field:`birthDate`,disabled:A,label:`出生日期`,type:`date`,style:{width:`100%`},placeholder:`请选择出生日期`,showClear:!0})})]}),/* @__PURE__ */ V(w,{gutter:16,children:/* @__PURE__ */ V(g,{span:12,children:/* @__PURE__ */ V(c.Select,{field:`status`,label:`状态`,style:{width:`100%`},optionList:Ze.map(e=>({value:e.value,label:e.label,disabled:un?Q(un)&&e.value===`disabled`:!1})),placeholder:`请选择状态`})})})]}),/* @__PURE__ */ H(Je,{modal:J,title:J.editing?`修改密码 - ${J.editing.nickname}`:`修改密码`,onCancel:()=>{J.close(),We(``)},width:420,children:[/* @__PURE__ */ V(P,{field:`password`,label:`新密码`,placeholder:`请输入新密码`,rules:[{required:!0,message:`请输入新密码`},{min:6,message:`密码至少 6 个字符`}],onChange:e=>We(String(e??``)),helpText:/* @__PURE__ */ V(ge,{password:Ue,policy:U})}),/* @__PURE__ */ V(P,{field:`confirmPassword`,label:`确认密码`,placeholder:`请再次输入新密码`,rules:[{required:!0,message:`请确认新密码`}]})]}),!1,/* @__PURE__ */ V(rt,{title:`批量修改密码(共 ${Y.length} 个用户)`,visible:b,onCancel:()=>{S(!1),C.current?.setValues({password:``,confirmPassword:``}),Ye(``)},confirmLoading:Zt.isPending,onOk:async()=>{if(C.current)try{let e=await C.current.validate();if(e.password!==e.confirmPassword){C.current.setError(`confirmPassword`,`两次密码输入不一致`);return}await Zt.mutateAsync({body:{ids:Y,password:e.password}}),D.success(`密码修改成功`),S(!1),C.current.setValues({password:``,confirmPassword:``}),Ye(``),M([])}catch{}},children:/* @__PURE__ */ H(c,{getFormApi:e=>{C.current=e},labelPosition:`left`,labelWidth:90,children:[/* @__PURE__ */ V(P,{field:`password`,label:`新密码`,placeholder:U?en(U):`请输入新密码`,rules:[{required:!0,message:`请输入新密码`}],onChange:e=>Ye(String(e??``)),helpText:/* @__PURE__ */ V(ge,{password:qe,policy:U})}),/* @__PURE__ */ V(P,{field:`confirmPassword`,label:`确认密码`,placeholder:`请再次输入新密码`,rules:[{required:!0,message:`请确认密码`}]})]})}),be&&/* @__PURE__ */ V(zn,{visible:Se,user:be,onClose:()=>Ce(!1),onUpdated:e=>{W.refetch(),xe(e),t(e)}}),k&&/* @__PURE__ */ V(Vn,{visible:Oe,userId:k.id,userName:`${k.nickname||k.username}(${k.username})`,canViewLoginLogs:fn,canViewOperationLogs:pn,onClose:()=>Ae(!1)}),ie&&/* @__PURE__ */ V(Nn,{userId:ie.id,userName:ie.nickname||ie.username,visible:oe,onClose:()=>T(!1)}),E&&/* @__PURE__ */ V(Ln,{userId:E.id,userName:E.nickname||E.username,visible:ce,deptTree:I,onClose:()=>le(!1)}),/* @__PURE__ */ H(rt,{title:`分配角色——${O?.nickname||O?.username||``}`,visible:he,onCancel:()=>_e(!1),confirmLoading:Qt.isPending,onOk:async()=>{O&&(await Qt.mutateAsync({params:{id:O.id},body:{roleIds:ve}}),D.success(`角色分配成功`),_e(!1))},okText:`保存`,cancelText:`取消`,width:480,children:[/* @__PURE__ */ H(`div`,{children:[/* @__PURE__ */ V(`div`,{style:{marginBottom:6,fontSize:13,fontWeight:600},children:`直接分配角色`}),/* @__PURE__ */ V(u,{multiple:!0,filter:!0,showClear:!0,style:{width:`100%`},value:ve,onChange:e=>ye(e??[]),optionList:F.map(e=>({value:e.id,label:e.name})),placeholder:`请选择要分配的角色`})]}),/* @__PURE__ */ H(`div`,{style:{marginTop:18,paddingTop:14,borderTop:`1px solid var(--arc-antd-color-border)`},children:[/* @__PURE__ */ V(`div`,{style:{marginBottom:6,fontSize:13,fontWeight:600},children:`用户组继承角色`}),/* @__PURE__ */ V(`div`,{style:{marginBottom:8,fontSize:12,color:`var(--arc-antd-color-text-2)`},children:`以下角色由用户组自动继承,只能在用户组中调整。`}),$t.isFetching?/* @__PURE__ */ V(`div`,{style:{color:`var(--arc-antd-color-text-2)`,fontSize:12},children:`正在加载继承关系…`}):$t.data?.inheritedRoles.length?/* @__PURE__ */ V(l,{spacing:6,wrap:!0,children:$t.data.inheritedRoles.map(e=>/* @__PURE__ */ H(o,{color:`orange`,style:{marginBottom:4},children:[e.name,`(来自:`,e.groupNames.join(`、`),`)`]},e.id))}):/* @__PURE__ */ V(`div`,{style:{color:`var(--arc-antd-color-text-2)`,fontSize:12},children:`暂无用户组继承角色`})]})]})]})}var Xn,$,Zn,Qn,$n,er;function tr(){return(tr=e((()=>{Mn(),it(),Oe(),i(),Ce(),Se(),_n(),$e(),tt(),he(),at(),N(),Ye(),O(),A(),ze(),Pn(),Rn(),Bn(),Hn(),st(),Kn(),pe(),ie(),b(),En(),Me(),t(),Ae(),We(),On(),Jn(),qe(),ut(),Xn={keyword:``,phone:``,status:void 0,timeRange:null,departmentId:void 0},$=`all-departments`,Zn=[],Qn=[],$n=[],er=[]})))()}tr();export{Yn as default};
|
|
30
|
-
//# sourceMappingURL=UsersPage-
|
|
30
|
+
//# sourceMappingURL=UsersPage-BjTiNEqF.js.map
|