mirror of https://gitee.com/topiam/eiam
pull/81/MERGE
parent
208ea9b8a5
commit
163a267a16
|
@ -1,6 +1,6 @@
|
||||||
#
|
#
|
||||||
# eiam-common - Employee Identity and Access Management
|
# eiam-common - Employee Identity and Access Management
|
||||||
# Copyright \u00A9 2022-Present Jinan Yuanchuang Network Technology Co., Ltd. (support@topiam.cn)
|
# Copyright © 2022-Present Jinan Yuanchuang Network Technology Co., Ltd. (support@topiam.cn)
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|
|
@ -92,13 +92,9 @@ const DingTalkConfig = (props: DingTalkConfigProps) => {
|
||||||
}
|
}
|
||||||
}, [formRef, onConfigValidator]);
|
}, [formRef, onConfigValidator]);
|
||||||
|
|
||||||
useImperativeHandle(
|
useImperativeHandle(basicConfigRef, () => {
|
||||||
basicConfigRef,
|
return { configValidator: configValidator };
|
||||||
() => {
|
}, [configValidator]);
|
||||||
return { configValidator: configValidator };
|
|
||||||
},
|
|
||||||
[configValidator],
|
|
||||||
);
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ProFormText
|
<ProFormText
|
||||||
|
|
|
@ -81,13 +81,9 @@ const FeiShuConfig = (props: {
|
||||||
}
|
}
|
||||||
}, [formRef, onConfigValidator]);
|
}, [formRef, onConfigValidator]);
|
||||||
|
|
||||||
useImperativeHandle(
|
useImperativeHandle(basicConfigRef, () => {
|
||||||
basicConfigRef,
|
return { configValidator: configValidator };
|
||||||
() => {
|
}, [configValidator]);
|
||||||
return { configValidator: configValidator };
|
|
||||||
},
|
|
||||||
[configValidator],
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
|
@ -15,10 +15,8 @@
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { DraggablePanel } from '@ant-design/pro-editor';
|
|
||||||
import { PageContainer } from '@ant-design/pro-components';
|
import { PageContainer } from '@ant-design/pro-components';
|
||||||
import { Col, Flex, Row } from 'antd';
|
import { Col, Row } from 'antd';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import OrgTree from './components/Organization';
|
import OrgTree from './components/Organization';
|
||||||
import UserList from './components/User';
|
import UserList from './components/User';
|
||||||
|
@ -50,19 +48,16 @@ export const User = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PageContainer content={intl.formatMessage({ id: 'pages.account.user_list.desc' })}>
|
<PageContainer content={intl.formatMessage({ id: 'pages.account.user_list.desc' })}>
|
||||||
<div style={{ display: 'flex', justifyContent: 'space-between' }}>
|
<Row gutter={[16, 16]}>
|
||||||
{/* 左侧 */}
|
{/* 左侧 */}
|
||||||
<DraggablePanel
|
<Col {...leftLayout} style={{ minHeight: '100%', overflow: 'auto' }}>
|
||||||
placement="left"
|
|
||||||
maxWidth={800}
|
|
||||||
style={{ flex: 1, padding: 0, borderRadius: 12 }}
|
|
||||||
>
|
|
||||||
<OrgTree onSelect={treeOnSelect} />
|
<OrgTree onSelect={treeOnSelect} />
|
||||||
</DraggablePanel>
|
</Col>
|
||||||
<div style={{ width: 'auto', flex: 1, padding: '0px 6px' }}></div>
|
|
||||||
{/* 表格 */}
|
{/* 表格 */}
|
||||||
<UserList organization={organization} />
|
<Col {...rightLayout} style={{ minHeight: '100%', overflow: 'auto' }}>
|
||||||
</div>
|
<UserList organization={organization} />
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
</PageContainer>
|
</PageContainer>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -39,7 +39,6 @@ import {
|
||||||
updateOrganization,
|
updateOrganization,
|
||||||
} from '@/services/account';
|
} from '@/services/account';
|
||||||
import { useMount } from 'ahooks';
|
import { useMount } from 'ahooks';
|
||||||
import type { ItemType } from 'antd/es/menu/hooks/useItems';
|
|
||||||
import CreateOrganization from '../CreateOrganization';
|
import CreateOrganization from '../CreateOrganization';
|
||||||
import MoveOrganization from './MoveDrawer';
|
import MoveOrganization from './MoveDrawer';
|
||||||
import SearchTree from './SearchTree';
|
import SearchTree from './SearchTree';
|
||||||
|
@ -47,6 +46,7 @@ import UpdateOrganization from '../UpdateOrganization';
|
||||||
import type { DataNode } from '@/utils/tree';
|
import type { DataNode } from '@/utils/tree';
|
||||||
import { updateTreeData } from '@/utils/tree';
|
import { updateTreeData } from '@/utils/tree';
|
||||||
import { useIntl } from '@umijs/max';
|
import { useIntl } from '@umijs/max';
|
||||||
|
import { ItemType } from 'antd/es/menu/interface';
|
||||||
|
|
||||||
const prefixCls = 'account-organization';
|
const prefixCls = 'account-organization';
|
||||||
|
|
||||||
|
@ -318,7 +318,7 @@ export const OrganizationTree = (props: {
|
||||||
return (
|
return (
|
||||||
<div className={styles}>
|
<div className={styles}>
|
||||||
<Card
|
<Card
|
||||||
style={{ height: 'calc(100vh - 220px)', overflow: 'auto' }}
|
style={{ height: 'calc(100vh - 200px)', overflow: 'auto' }}
|
||||||
bordered={false}
|
bordered={false}
|
||||||
className={classnames(`${prefixCls}`)}
|
className={classnames(`${prefixCls}`)}
|
||||||
>
|
>
|
||||||
|
|
|
@ -387,7 +387,7 @@ export default (props: UserListProps) => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{!organization ? (
|
{!organization ? (
|
||||||
<Card style={{ height: 'calc(100vh - 220px)' }} bordered={false}>
|
<Card style={{ height: 'calc(100vh - 200px)' }} bordered={false}>
|
||||||
<Skeleton paragraph={{ rows: 10 }} active={true} />
|
<Skeleton paragraph={{ rows: 10 }} active={true} />
|
||||||
</Card>
|
</Card>
|
||||||
) : (
|
) : (
|
||||||
|
@ -396,10 +396,10 @@ export default (props: UserListProps) => {
|
||||||
scroll={{ x: 1200 }}
|
scroll={{ x: 1200 }}
|
||||||
params={{ organizationId: organization?.id, inclSubOrganization }}
|
params={{ organizationId: organization?.id, inclSubOrganization }}
|
||||||
style={{
|
style={{
|
||||||
height: 'calc(100vh - 220px)',
|
height: 'calc(100vh - 200px)',
|
||||||
overflow: 'auto',
|
overflow: 'auto',
|
||||||
}}
|
}}
|
||||||
cardProps={{ style: { minHeight: 'calc(100vh - 220px)' } }}
|
cardProps={{ style: { minHeight: 'calc(100vh - 200px)' } }}
|
||||||
search={{
|
search={{
|
||||||
defaultCollapsed: true,
|
defaultCollapsed: true,
|
||||||
}}
|
}}
|
||||||
|
|
|
@ -290,16 +290,16 @@ export default (props: { app: GetApp | Record<string, any> }) => {
|
||||||
>
|
>
|
||||||
{(fields, { add, remove }, { errors }) => (
|
{(fields, { add, remove }, { errors }) => (
|
||||||
<>
|
<>
|
||||||
{fields.map((field, index) => (
|
{fields.map(({ key, name, ...restField }, index) => (
|
||||||
<Form.Item
|
<Form.Item
|
||||||
{...(index === 0 ? layout : formItemLayoutWithOutLabel)}
|
{...(index === 0 ? layout : formItemLayoutWithOutLabel)}
|
||||||
required={true}
|
required={true}
|
||||||
key={field.key}
|
key={key}
|
||||||
label={
|
label={
|
||||||
index === 0
|
index === 0
|
||||||
? intl.formatMessage({
|
? intl.formatMessage({
|
||||||
id: 'pages.app.config.detail.protocol_config.oidc.redirect_uris',
|
id: 'pages.app.config.detail.protocol_config.oidc.redirect_uris',
|
||||||
})
|
})
|
||||||
: ''
|
: ''
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
@ -311,7 +311,8 @@ export default (props: { app: GetApp | Record<string, any> }) => {
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
{...field}
|
{...restField}
|
||||||
|
name={[name]}
|
||||||
validateTrigger={['onChange', 'onBlur']}
|
validateTrigger={['onChange', 'onBlur']}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
|
@ -335,7 +336,7 @@ export default (props: { app: GetApp | Record<string, any> }) => {
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<DeleteOutlined onClick={() => remove(field.name)} />
|
<DeleteOutlined onClick={() => remove(name)} />
|
||||||
</div>
|
</div>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
))}
|
))}
|
||||||
|
@ -345,8 +346,8 @@ export default (props: { app: GetApp | Record<string, any> }) => {
|
||||||
label={
|
label={
|
||||||
fields.length === 0
|
fields.length === 0
|
||||||
? intl.formatMessage({
|
? intl.formatMessage({
|
||||||
id: 'pages.app.config.detail.protocol_config.oidc.redirect_uris',
|
id: 'pages.app.config.detail.protocol_config.oidc.redirect_uris',
|
||||||
})
|
})
|
||||||
: ''
|
: ''
|
||||||
}
|
}
|
||||||
extra={intl.formatMessage({
|
extra={intl.formatMessage({
|
||||||
|
@ -369,16 +370,16 @@ export default (props: { app: GetApp | Record<string, any> }) => {
|
||||||
<Form.List name="postLogoutRedirectUris">
|
<Form.List name="postLogoutRedirectUris">
|
||||||
{(fields, { add, remove }, {}) => (
|
{(fields, { add, remove }, {}) => (
|
||||||
<>
|
<>
|
||||||
{fields.map((field, index) => {
|
{fields.map(({ key, name, ...restField }, index) => {
|
||||||
return (
|
return (
|
||||||
<Form.Item
|
<Form.Item
|
||||||
{...(index === 0 ? layout : formItemLayoutWithOutLabel)}
|
{...(index === 0 ? layout : formItemLayoutWithOutLabel)}
|
||||||
key={field.key}
|
key={key}
|
||||||
label={
|
label={
|
||||||
index === 0
|
index === 0
|
||||||
? intl.formatMessage({
|
? intl.formatMessage({
|
||||||
id: 'pages.app.config.detail.protocol_config.oidc.post_logout_redirect_uris',
|
id: 'pages.app.config.detail.protocol_config.oidc.post_logout_redirect_uris',
|
||||||
})
|
})
|
||||||
: ''
|
: ''
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
@ -390,7 +391,8 @@ export default (props: { app: GetApp | Record<string, any> }) => {
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
{...field}
|
{...restField}
|
||||||
|
name={[name]}
|
||||||
validateTrigger={['onChange', 'onBlur']}
|
validateTrigger={['onChange', 'onBlur']}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
|
@ -414,7 +416,7 @@ export default (props: { app: GetApp | Record<string, any> }) => {
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<DeleteOutlined onClick={() => remove(field.name)} />
|
<DeleteOutlined onClick={() => remove(name)} />
|
||||||
</div>
|
</div>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
);
|
);
|
||||||
|
@ -424,8 +426,8 @@ export default (props: { app: GetApp | Record<string, any> }) => {
|
||||||
label={
|
label={
|
||||||
fields.length === 0
|
fields.length === 0
|
||||||
? intl.formatMessage({
|
? intl.formatMessage({
|
||||||
id: 'pages.app.config.detail.protocol_config.oidc.post_logout_redirect_uris',
|
id: 'pages.app.config.detail.protocol_config.oidc.post_logout_redirect_uris',
|
||||||
})
|
})
|
||||||
: ''
|
: ''
|
||||||
}
|
}
|
||||||
extra={intl.formatMessage({
|
extra={intl.formatMessage({
|
||||||
|
|
Loading…
Reference in New Issue