Merge remote-tracking branch 'origin/master'

pull/81/MERGE
xiuchen 2024-07-23 17:53:34 +08:00
commit 2cb2fd3a52
11 changed files with 81 additions and 86 deletions

View File

@ -1,6 +1,6 @@
#
# 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
# it under the terms of the GNU Affero General Public License as published by

View File

@ -147,6 +147,7 @@
</goals>
<phase>generate-resources</phase>
<configuration>
<nodeDownloadRoot>https://mirrors.aliyun.com/nodejs-release/</nodeDownloadRoot>
<nodeVersion>v20.10.0</nodeVersion>
<pnpmVersion>v9.1.0</pnpmVersion>
</configuration>
@ -199,6 +200,7 @@
</goals>
<phase>generate-resources</phase>
<configuration>
<nodeDownloadRoot>https://mirrors.aliyun.com/nodejs-release/</nodeDownloadRoot>
<nodeVersion>v20.10.0</nodeVersion>
<pnpmVersion>v9.1.0</pnpmVersion>
</configuration>
@ -251,6 +253,7 @@
</goals>
<phase>generate-resources</phase>
<configuration>
<nodeDownloadRoot>https://mirrors.aliyun.com/nodejs-release/</nodeDownloadRoot>
<nodeVersion>v20.10.0</nodeVersion>
<pnpmVersion>v9.1.0</pnpmVersion>
</configuration>

View File

@ -48,22 +48,22 @@
"@ant-design/charts": "^1.4.3",
"@ant-design/icons": "^5.3.7",
"@ant-design/maps": "^1.0.8",
"@ant-design/pro-components": "^2.7.1",
"@ant-design/pro-components": "^2.7.14",
"@ant-design/pro-editor": "^1.2.1",
"ahooks": "^3.7.11",
"antd": "^5.17.0",
"antd-img-crop": "^4.21.0",
"ahooks": "^3.8.0",
"antd": "^5.19.2",
"antd-img-crop": "^4.22.0",
"antd-style": "^3.6.2",
"classnames": "^2.5.1",
"codemirror": "^5.65.5",
"content-security-policy-parser": "^0.6.0",
"copy-to-clipboard": "^3.3.3",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.11",
"echarts": "^5.5.0",
"dayjs": "^1.11.12",
"echarts": "^5.5.1",
"fetch-jsonp": "^1.3.0",
"form-render": "^2.4.4",
"google-libphonenumber": "^3.2.34",
"form-render": "^2.4.5",
"google-libphonenumber": "^3.2.37",
"js-base64": "^3.7.7",
"js-yaml": "^4.1.0",
"jsencrypt": "^3.3.2",
@ -71,15 +71,15 @@
"moment": "^2.30.1",
"numeral": "^2.0.6",
"omit.js": "^2.0.2",
"qs": "^6.12.1",
"qs": "^6.12.3",
"query-string": "^9.0.0",
"react": "18.2.0",
"react": "18.3.1",
"react-codemirror2": "^8.0.0",
"react-dom": "18.2.0",
"react-fast-marquee": "^1.6.4",
"react-dom": "18.3.1",
"react-fast-marquee": "^1.6.5",
"react-helmet-async": "^2.0.5",
"react-sortable-hoc": "^2.0.0",
"yaml": "^2.4.2"
"yaml": "^2.4.5"
},
"devDependencies": {
"@ant-design/antd-theme-variable": "^1.0.0",
@ -88,20 +88,20 @@
"@types/google-libphonenumber": "^7.4.30",
"@types/history": "^4.7.11",
"@types/js-yaml": "^4.0.9",
"@types/lodash": "^4.17.1",
"@types/lodash": "^4.17.7",
"@types/numeral": "^2.0.5",
"@types/qs": "^6.9.15",
"@types/react": "^18.3.1",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@types/react-helmet": "^6.1.11",
"@umijs/lint": "^4.2.0",
"@umijs/max": "^4.2.0",
"@umijs/lint": "^4.3.6",
"@umijs/max": "^4.3.6",
"cross-env": "^7.0.3",
"cross-port-killer": "^1.4.0",
"eslint": "^8.57.0",
"husky": "^9.0.11",
"lint-staged": "^15.2.2",
"prettier": "^3.2.5",
"husky": "^9.1.1",
"lint-staged": "^15.2.7",
"prettier": "^3.3.3",
"typescript": "*",
"umi-presets-pro": "^2.0.3"
},

View File

@ -92,13 +92,9 @@ const DingTalkConfig = (props: DingTalkConfigProps) => {
}
}, [formRef, onConfigValidator]);
useImperativeHandle(
basicConfigRef,
() => {
return { configValidator: configValidator };
},
[configValidator],
);
useImperativeHandle(basicConfigRef, () => {
return { configValidator: configValidator };
}, [configValidator]);
return (
<>
<ProFormText

View File

@ -81,13 +81,9 @@ const FeiShuConfig = (props: {
}
}, [formRef, onConfigValidator]);
useImperativeHandle(
basicConfigRef,
() => {
return { configValidator: configValidator };
},
[configValidator],
);
useImperativeHandle(basicConfigRef, () => {
return { configValidator: configValidator };
}, [configValidator]);
return (
<>

View File

@ -15,10 +15,8 @@
* 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/>.
*/
import { DraggablePanel } from '@ant-design/pro-editor';
import { PageContainer } from '@ant-design/pro-components';
import { Col, Flex, Row } from 'antd';
import { Col, Row } from 'antd';
import { useState } from 'react';
import OrgTree from './components/Organization';
import UserList from './components/User';
@ -50,19 +48,16 @@ export const User = () => {
return (
<PageContainer content={intl.formatMessage({ id: 'pages.account.user_list.desc' })}>
<div style={{ display: 'flex', justifyContent: 'space-between' }}>
<Row gutter={[16, 16]}>
{/* 左侧 */}
<DraggablePanel
placement="left"
maxWidth={800}
style={{ flex: 1, padding: 0, borderRadius: 12 }}
>
<Col {...leftLayout} style={{ minHeight: '100%', overflow: 'auto' }}>
<OrgTree onSelect={treeOnSelect} />
</DraggablePanel>
<div style={{ width: 'auto', flex: 1, padding: '0px 6px' }}></div>
</Col>
{/* 表格 */}
<UserList organization={organization} />
</div>
<Col {...rightLayout} style={{ minHeight: '100%', overflow: 'auto' }}>
<UserList organization={organization} />
</Col>
</Row>
</PageContainer>
);
};

View File

@ -39,7 +39,6 @@ import {
updateOrganization,
} from '@/services/account';
import { useMount } from 'ahooks';
import type { ItemType } from 'antd/es/menu/hooks/useItems';
import CreateOrganization from '../CreateOrganization';
import MoveOrganization from './MoveDrawer';
import SearchTree from './SearchTree';
@ -47,6 +46,7 @@ import UpdateOrganization from '../UpdateOrganization';
import type { DataNode } from '@/utils/tree';
import { updateTreeData } from '@/utils/tree';
import { useIntl } from '@umijs/max';
import { ItemType } from 'antd/es/menu/interface';
const prefixCls = 'account-organization';
@ -318,7 +318,7 @@ export const OrganizationTree = (props: {
return (
<div className={styles}>
<Card
style={{ height: 'calc(100vh - 220px)', overflow: 'auto' }}
style={{ height: 'calc(100vh - 200px)', overflow: 'auto' }}
bordered={false}
className={classnames(`${prefixCls}`)}
>

View File

@ -387,7 +387,7 @@ export default (props: UserListProps) => {
return (
<>
{!organization ? (
<Card style={{ height: 'calc(100vh - 220px)' }} bordered={false}>
<Card style={{ height: 'calc(100vh - 200px)' }} bordered={false}>
<Skeleton paragraph={{ rows: 10 }} active={true} />
</Card>
) : (
@ -396,10 +396,10 @@ export default (props: UserListProps) => {
scroll={{ x: 1200 }}
params={{ organizationId: organization?.id, inclSubOrganization }}
style={{
height: 'calc(100vh - 220px)',
height: 'calc(100vh - 200px)',
overflow: 'auto',
}}
cardProps={{ style: { minHeight: 'calc(100vh - 220px)' } }}
cardProps={{ style: { minHeight: 'calc(100vh - 200px)' } }}
search={{
defaultCollapsed: true,
}}

View File

@ -290,16 +290,16 @@ export default (props: { app: GetApp | Record<string, any> }) => {
>
{(fields, { add, remove }, { errors }) => (
<>
{fields.map((field, index) => (
{fields.map(({ key, name, ...restField }, index) => (
<Form.Item
{...(index === 0 ? layout : formItemLayoutWithOutLabel)}
required={true}
key={field.key}
key={key}
label={
index === 0
? 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
{...field}
{...restField}
name={[name]}
validateTrigger={['onChange', 'onBlur']}
rules={[
{
@ -335,7 +336,7 @@ export default (props: { app: GetApp | Record<string, any> }) => {
})}
/>
</Form.Item>
<DeleteOutlined onClick={() => remove(field.name)} />
<DeleteOutlined onClick={() => remove(name)} />
</div>
</Form.Item>
))}
@ -345,8 +346,8 @@ export default (props: { app: GetApp | Record<string, any> }) => {
label={
fields.length === 0
? 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({
@ -369,16 +370,16 @@ export default (props: { app: GetApp | Record<string, any> }) => {
<Form.List name="postLogoutRedirectUris">
{(fields, { add, remove }, {}) => (
<>
{fields.map((field, index) => {
{fields.map(({ key, name, ...restField }, index) => {
return (
<Form.Item
{...(index === 0 ? layout : formItemLayoutWithOutLabel)}
key={field.key}
key={key}
label={
index === 0
? 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
{...field}
{...restField}
name={[name]}
validateTrigger={['onChange', 'onBlur']}
rules={[
{
@ -414,7 +416,7 @@ export default (props: { app: GetApp | Record<string, any> }) => {
})}
/>
</Form.Item>
<DeleteOutlined onClick={() => remove(field.name)} />
<DeleteOutlined onClick={() => remove(name)} />
</div>
</Form.Item>
);
@ -424,8 +426,8 @@ export default (props: { app: GetApp | Record<string, any> }) => {
label={
fields.length === 0
? 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({

View File

@ -130,6 +130,7 @@
</goals>
<phase>generate-resources</phase>
<configuration>
<nodeDownloadRoot>https://mirrors.aliyun.com/nodejs-release/</nodeDownloadRoot>
<nodeVersion>v20.10.0</nodeVersion>
<pnpmVersion>v9.1.0</pnpmVersion>
</configuration>
@ -182,6 +183,7 @@
</goals>
<phase>generate-resources</phase>
<configuration>
<nodeDownloadRoot>https://mirrors.aliyun.com/nodejs-release/</nodeDownloadRoot>
<nodeVersion>v20.10.0</nodeVersion>
<pnpmVersion>v9.1.0</pnpmVersion>
</configuration>
@ -234,6 +236,7 @@
</goals>
<phase>generate-resources</phase>
<configuration>
<nodeDownloadRoot>https://mirrors.aliyun.com/nodejs-release/</nodeDownloadRoot>
<nodeVersion>v20.10.0</nodeVersion>
<pnpmVersion>v9.1.0</pnpmVersion>
</configuration>

View File

@ -48,17 +48,17 @@
"@ahooksjs/use-url-state": "^3.5.1",
"@ant-design/icons": "^5.3.7",
"@ant-design/maps": "^1.0.8",
"@ant-design/pro-components": "^2.7.1",
"ahooks": "^3.7.11",
"antd": "^5.17.0",
"antd-img-crop": "^4.21.0",
"@ant-design/pro-components": "^2.7.14",
"ahooks": "^3.8.0",
"antd": "^5.19.2",
"antd-img-crop": "^4.22.0",
"antd-style": "^3.6.2",
"classnames": "^2.5.1",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.11",
"dayjs": "^1.11.12",
"fetch-jsonp": "^1.3.0",
"form-render": "^2.4.4",
"google-libphonenumber": "^3.2.34",
"form-render": "^2.4.5",
"google-libphonenumber": "^3.2.37",
"js-base64": "^3.7.7",
"js-yaml": "^4.1.0",
"jsencrypt": "^3.3.2",
@ -67,13 +67,13 @@
"nanoid": "^5.0.7",
"numeral": "^2.0.6",
"omit.js": "^2.0.2",
"qs": "^6.12.1",
"qs": "^6.12.3",
"query-string": "^9.0.0",
"react": "18.3.1",
"react-dom": "18.3.1",
"react-fast-marquee": "^1.6.4",
"react-fast-marquee": "^1.6.5",
"react-helmet-async": "^2.0.5",
"yaml": "^2.4.2"
"yaml": "^2.4.5"
},
"devDependencies": {
"@ant-design/antd-theme-variable": "^1.0.0",
@ -82,20 +82,20 @@
"@types/google-libphonenumber": "^7.4.30",
"@types/history": "^4.7.11",
"@types/js-yaml": "^4.0.9",
"@types/lodash": "^4.17.1",
"@types/lodash": "^4.17.7",
"@types/numeral": "^2.0.5",
"@types/qs": "^6.9.15",
"@types/react": "^18.3.1",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@types/react-helmet": "^6.1.11",
"@umijs/lint": "^4.2.0",
"@umijs/max": "^4.2.0",
"@umijs/lint": "^4.3.6",
"@umijs/max": "^4.3.6",
"cross-env": "^7.0.3",
"cross-port-killer": "^1.4.0",
"eslint": "^8.57.0",
"husky": "^9.0.11",
"lint-staged": "^15.2.2",
"prettier": "^3.2.5",
"husky": "^9.1.1",
"lint-staged": "^15.2.7",
"prettier": "^3.3.3",
"typescript": "*",
"umi-presets-pro": "^2.0.3"
},