parent
0bb71dea68
commit
77a9c0897d
@ -1,9 +1,7 @@
|
|||||||
import { useContext, useEffect, useMemo } from 'react';
|
import React, { useContext, useMemo } from 'react';
|
||||||
import { CollectionProvider_deprecated, ResourceActionContext, SchemaComponent, useRequest } from '@tachybase/client';
|
import { CollectionProvider_deprecated, ResourceActionContext, SchemaComponent, useRequest } from '@tachybase/client';
|
||||||
import { RolesManagerContext } from '@tachybase/plugin-acl/client';
|
import { RolesManagerContext } from '@tachybase/plugin-acl/client';
|
||||||
|
|
||||||
import { jsx } from 'react/jsx-runtime';
|
|
||||||
|
|
||||||
import { useTranslation } from '../../../locale';
|
import { useTranslation } from '../../../locale';
|
||||||
import { collectionDepartments } from '../collections/departments.collection';
|
import { collectionDepartments } from '../collections/departments.collection';
|
||||||
import { useAddDepartmentsGgt } from '../hooks/useAddDepartmentsGgt';
|
import { useAddDepartmentsGgt } from '../hooks/useAddDepartmentsGgt';
|
||||||
@ -11,48 +9,43 @@ import { useBulkRemoveDepartmentsYyt } from '../hooks/useBulkRemoveDepartmentsYy
|
|||||||
import { useDataSourceFt } from '../hooks/useDataSourceFt';
|
import { useDataSourceFt } from '../hooks/useDataSourceFt';
|
||||||
import { useDisabledVvt } from '../hooks/useDisabledVvt';
|
import { useDisabledVvt } from '../hooks/useDisabledVvt';
|
||||||
import { useRemoveDepartmentXxt } from '../hooks/useRemoveDepartmentXxt';
|
import { useRemoveDepartmentXxt } from '../hooks/useRemoveDepartmentXxt';
|
||||||
import { y } from '../others/y';
|
|
||||||
import { getSchemaDdt } from '../schema/getSchemaDdt';
|
import { getSchemaDdt } from '../schema/getSchemaDdt';
|
||||||
import { useFilterActionPropsZ } from '../scopes/useFilterActionPropsZ';
|
import { useFilterActionPropsZ } from '../scopes/useFilterActionPropsZ';
|
||||||
import { DepartmentTablePpe } from './DepartmentTablePpe';
|
import { DepartmentTablePpe } from './DepartmentTablePpe';
|
||||||
import { DepartmentTitleHht } from './DepartmentTitleHht';
|
import { DepartmentTitleHht } from './DepartmentTitleHht';
|
||||||
|
|
||||||
export const Departments = () => {
|
export const Departments = () => {
|
||||||
const { t: e } = useTranslation(),
|
const { t } = useTranslation();
|
||||||
{ role: t } = useContext(RolesManagerContext),
|
const { role } = useContext(RolesManagerContext);
|
||||||
o = useRequest(
|
const resource = useRequest(
|
||||||
{
|
{
|
||||||
resource: `roles/${t == null ? void 0 : t.name}/departments`,
|
resource: `roles/${role?.name}/departments`,
|
||||||
action: 'list',
|
action: 'list',
|
||||||
params: { appends: ['parent', 'parent.parent(recursively=true)'] },
|
params: { appends: ['parent', 'parent.parent(recursively=true)'] },
|
||||||
},
|
},
|
||||||
{ ready: !!t },
|
{ ready: !!role, refreshDeps: [role] },
|
||||||
);
|
);
|
||||||
useEffect(() => {
|
const schema = useMemo(() => getSchemaDdt(), [role]);
|
||||||
o.run();
|
return (
|
||||||
}, [o, t]);
|
<ResourceActionContext.Provider value={resource}>
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
<CollectionProvider_deprecated collection={collectionDepartments}>
|
||||||
const a = useMemo(() => getSchemaDdt(), [t]);
|
<SchemaComponent
|
||||||
return jsx(ResourceActionContext.Provider, {
|
schema={schema}
|
||||||
value: y({}, o),
|
components={{
|
||||||
children: jsx(CollectionProvider_deprecated, {
|
DepartmentTable: DepartmentTablePpe,
|
||||||
collection: collectionDepartments,
|
DepartmentTitle: DepartmentTitleHht,
|
||||||
children: jsx(SchemaComponent, {
|
}}
|
||||||
schema: a,
|
scope={{
|
||||||
components: {
|
useFilterActionProps: useFilterActionPropsZ,
|
||||||
DepartmentTable: DepartmentTablePpe,
|
t,
|
||||||
DepartmentTitle: DepartmentTitleHht,
|
useRemoveDepartment: useRemoveDepartmentXxt,
|
||||||
},
|
useBulkRemoveDepartments: useBulkRemoveDepartmentsYyt,
|
||||||
scope: {
|
useDataSource: useDataSourceFt,
|
||||||
useFilterActionProps: useFilterActionPropsZ,
|
useDisabled: useDisabledVvt,
|
||||||
t: e,
|
useAddDepartments: useAddDepartmentsGgt,
|
||||||
useRemoveDepartment: useRemoveDepartmentXxt,
|
}}
|
||||||
useBulkRemoveDepartments: useBulkRemoveDepartmentsYyt,
|
></SchemaComponent>
|
||||||
useDataSource: useDataSourceFt,
|
</CollectionProvider_deprecated>
|
||||||
useDisabled: useDisabledVvt,
|
</ResourceActionContext.Provider>
|
||||||
useAddDepartments: useAddDepartmentsGgt,
|
);
|
||||||
},
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
import React, { useState } from 'react';
|
||||||
|
import { useRequest } from '@tachybase/client';
|
||||||
|
|
||||||
|
import { contextK } from '../context/contextK';
|
||||||
|
|
||||||
|
export const DepartmentsProvider = ({ children }) => {
|
||||||
|
const [user, setUser] = useState(null);
|
||||||
|
const [department, setDepartment] = useState(null);
|
||||||
|
const usersRequest = useRequest(
|
||||||
|
{
|
||||||
|
resource: 'users',
|
||||||
|
action: 'list',
|
||||||
|
params: {
|
||||||
|
appends: ['departments', 'departments.parent(recursively=true)'],
|
||||||
|
filter: department ? { 'departments.id': department.id } : {},
|
||||||
|
pageSize: 50,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
manual: true,
|
||||||
|
refreshDeps: [department],
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const departmentsRequest = useRequest({
|
||||||
|
resource: 'departments',
|
||||||
|
action: 'list',
|
||||||
|
params: { pagination: false, filter: { parentId: null } },
|
||||||
|
});
|
||||||
|
return (
|
||||||
|
<contextK.Provider
|
||||||
|
value={{
|
||||||
|
user,
|
||||||
|
setUser,
|
||||||
|
department,
|
||||||
|
setDepartment,
|
||||||
|
usersResource: { service: usersRequest },
|
||||||
|
departmentsResource: { service: departmentsRequest },
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</contextK.Provider>
|
||||||
|
);
|
||||||
|
};
|
@ -1,36 +0,0 @@
|
|||||||
import { useEffect, useState } from 'react';
|
|
||||||
import { useRequest } from '@tachybase/client';
|
|
||||||
|
|
||||||
import { jsx } from 'react/jsx-runtime';
|
|
||||||
|
|
||||||
import { contextK } from '../context/contextK';
|
|
||||||
|
|
||||||
export const GeComponent = (e) => {
|
|
||||||
const [t, o] = useState(null),
|
|
||||||
[a, r] = useState(null),
|
|
||||||
c = useRequest({
|
|
||||||
resource: 'users',
|
|
||||||
action: 'list',
|
|
||||||
params: {
|
|
||||||
appends: ['departments', 'departments.parent(recursively=true)'],
|
|
||||||
filter: a ? { 'departments.id': a.id } : {},
|
|
||||||
pageSize: 50,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
useEffect(() => {
|
|
||||||
c.run();
|
|
||||||
}, [a]);
|
|
||||||
const i = { resource: 'departments', action: 'list', params: { pagination: false, filter: { parentId: null } } },
|
|
||||||
x = useRequest(i);
|
|
||||||
return jsx(contextK.Provider, {
|
|
||||||
value: {
|
|
||||||
user: t,
|
|
||||||
setUser: o,
|
|
||||||
department: a,
|
|
||||||
setDepartment: r,
|
|
||||||
usersResource: { service: c },
|
|
||||||
departmentsResource: { service: x },
|
|
||||||
},
|
|
||||||
children: e.children,
|
|
||||||
});
|
|
||||||
};
|
|
@ -4,15 +4,13 @@ import PluginACLClient from '@tachybase/plugin-acl/client';
|
|||||||
|
|
||||||
import { tval } from '../../locale';
|
import { tval } from '../../locale';
|
||||||
import { Departments } from './components/Departments';
|
import { Departments } from './components/Departments';
|
||||||
import { GeComponent } from './components/GeComponent';
|
import { DepartmentsProvider } from './components/DepartmentsProvider';
|
||||||
import { MmtComponent } from './components/MmtComponent';
|
import { MmtComponent } from './components/MmtComponent';
|
||||||
import { UserDepartmentsField } from './components/UserDepartmentsField';
|
import { UserDepartmentsField } from './components/UserDepartmentsField';
|
||||||
import { DepartmentOwnersFieldSetting } from './settings/DepartmentOwnersFieldSetting';
|
import { DepartmentOwnersFieldSetting } from './settings/DepartmentOwnersFieldSetting';
|
||||||
import { UserDepartmentsFieldSetting } from './settings/UserDepartmentsFieldSetting';
|
import { UserDepartmentsFieldSetting } from './settings/UserDepartmentsFieldSetting';
|
||||||
import { UserMainDepartmentFieldSetting } from './settings/UserMainDepartmentFieldSetting';
|
import { UserMainDepartmentFieldSetting } from './settings/UserMainDepartmentFieldSetting';
|
||||||
|
|
||||||
// import { T } from './others/T';
|
|
||||||
|
|
||||||
export class DepartmentsPlugin extends Plugin {
|
export class DepartmentsPlugin extends Plugin {
|
||||||
async load() {
|
async load() {
|
||||||
this.app.addComponents({
|
this.app.addComponents({
|
||||||
@ -28,16 +26,11 @@ export class DepartmentsPlugin extends Plugin {
|
|||||||
title: tval('Departments'),
|
title: tval('Departments'),
|
||||||
Component: () => {
|
Component: () => {
|
||||||
const context = useSchemaComponentContext();
|
const context = useSchemaComponentContext();
|
||||||
// return jsx(SchemaComponentContext.Provider, {
|
|
||||||
// value: T({ ...o }, { designable: false }),
|
|
||||||
// children: jsx(GeComponent, { children: jsx(MmtComponent, {}) }),
|
|
||||||
// });
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SchemaComponentContext.Provider value={{ ...context, designable: false }}>
|
<SchemaComponentContext.Provider value={{ ...context, designable: false }}>
|
||||||
<GeComponent>
|
<DepartmentsProvider>
|
||||||
<MmtComponent />
|
<MmtComponent />
|
||||||
</GeComponent>
|
</DepartmentsProvider>
|
||||||
</SchemaComponentContext.Provider>
|
</SchemaComponentContext.Provider>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user