diff --git a/package.json b/package.json index 4f88228..a9aca5f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kne-components/components-admin", - "version": "1.1.40", + "version": "1.1.41", "description": "用于实现一个后台管理系统的必要组件", "scripts": { "init": "husky", @@ -93,10 +93,12 @@ "@kne/react-icon": "^0.1.4", "@kne/react-intl": "^0.1.9", "@kne/react-org-chart": "^0.1.6", + "@kne/timeline": "^1.0.2", "@kne/token-storage": "^1.0.0", "@kne/use-control-value": "^0.1.9", "@kne/use-ref-callback": "^0.1.2", "@kne/use-refer-navigate": "^1.0.0", - "md5": "^2.3.0" + "md5": "^2.3.0", + "xlsx": "^0.18.5" } } diff --git a/src/components/Apis/getApis.js b/src/components/Apis/getApis.js index 652e811..12a9244 100644 --- a/src/components/Apis/getApis.js +++ b/src/components/Apis/getApis.js @@ -235,6 +235,10 @@ const getApis = options => { url: `${prefix}/tenant/admin/org-remove`, method: 'POST' }, + orgBatchImport: { + url: `${prefix}/tenant/admin/org-batch-import`, + method: 'POST' + }, userList: { url: `${prefix}/tenant/admin/user-list`, method: 'GET' @@ -321,6 +325,28 @@ const getApis = options => { method: 'POST' } }, + sharedGroup: { + list: { + url: `${prefix}/tenant/admin/shared-group/list`, + method: 'GET' + }, + create: { + url: `${prefix}/tenant/admin/shared-group/create`, + method: 'POST' + }, + save: { + url: `${prefix}/tenant/admin/shared-group/save`, + method: 'POST' + }, + setStatus: { + url: `${prefix}/tenant/admin/shared-group/set-status`, + method: 'POST' + }, + remove: { + url: `${prefix}/tenant/admin/shared-group/remove`, + method: 'POST' + } + }, permission: { list: { url: `${prefix}/tenant/admin/permission/list`, @@ -377,6 +403,10 @@ const getApis = options => { url: `${prefix}/tenant/org-remove`, method: 'POST' }, + orgBatchImport: { + url: `${prefix}/tenant/org-batch-import`, + method: 'POST' + }, userList: { url: `${prefix}/tenant/user-list`, method: 'GET' @@ -439,6 +469,28 @@ const getApis = options => { method: 'POST' } }, + sharedGroup: { + list: { + url: `${prefix}/tenant/shared-group/list`, + method: 'GET' + }, + create: { + url: `${prefix}/tenant/shared-group/create`, + method: 'POST' + }, + save: { + url: `${prefix}/tenant/shared-group/save`, + method: 'POST' + }, + setStatus: { + url: `${prefix}/tenant/shared-group/set-status`, + method: 'POST' + }, + remove: { + url: `${prefix}/tenant/shared-group/remove`, + method: 'POST' + } + }, permission: { list: { url: `${prefix}/tenant/permission/list`, diff --git a/src/components/BizUnit/index.js b/src/components/BizUnit/index.js index 8af6e96..17f3382 100644 --- a/src/components/BizUnit/index.js +++ b/src/components/BizUnit/index.js @@ -1,5 +1,5 @@ import { createWithRemoteLoader } from '@kne/remote-loader'; -import { useRef, useState, useEffect } from 'react'; +import { useRef, useState, useEffect, useMemo } from 'react'; import { Flex } from 'antd'; import useRefCallback from '@kne/use-ref-callback'; import merge from 'lodash/merge'; @@ -41,6 +41,7 @@ const BizUnit = createWithRemoteLoader({ }, keywordFilterName: 'keyword', keywordFilterLabel: formatMessage({ id: 'Keyword' }), + mapFilterValue: null, getFilterValue: filterValue => ({ params: { filter: filterValue @@ -53,7 +54,9 @@ const BizUnit = createWithRemoteLoader({ const ref = useRef(); const { SearchInput, getFilterValue } = Filter; const [filter, setFilter] = useState([]); - const filterValue = getFilterValue(filter); + const filterValue = options.mapFilterValue ? options.mapFilterValue(filter, getFilterValue) : getFilterValue(filter); + const filterParamsKey = useMemo(() => JSON.stringify(filterValue), [filterValue]); + const isFirstFilterEffect = useRef(true); const topOptions = ( {allowKeywordSearch && } @@ -104,12 +107,26 @@ const BizUnit = createWithRemoteLoader({ }); const handlerMount = useRefCallback(() => { - onMount && onMount({ filter: { value: filter, onChange: setFilter }, topOptions, tableOptions }); + onMount && + onMount({ + filter: { value: filter, onChange: setFilter }, + filterList, + topOptions, + tableOptions + }); }); useEffect(() => { handlerMount(); - }, [handlerMount]); + }, [handlerMount, filter]); + + useEffect(() => { + if (isFirstFilterEffect.current) { + isFirstFilterEffect.current = false; + return; + } + ref.current?.reload?.(); + }, [filterParamsKey]); if (typeof children === 'function') { return children({ filter: { value: filter, onChange: setFilter, list: filterList }, diff --git a/src/components/Signature/index.js b/src/components/Signature/index.js index 321c1b4..454eb54 100644 --- a/src/components/Signature/index.js +++ b/src/components/Signature/index.js @@ -6,6 +6,7 @@ import withLocale from './withLocale'; import { useIntl } from '@kne/react-intl'; import BizUnit from '@components/BizUnit'; import { useRef } from 'react'; +import TablePageRender from '../BizUnit/TablePageRender'; const VerifyAction = createWithRemoteLoader({ modules: ['components-core:FormInfo', 'components-core:FormInfo@useFormModal', 'components-core:Global@usePreset'] @@ -68,8 +69,7 @@ const VerifyAction = createWithRemoteLoader({ /> ) }); - }} - > + }}> {formatMessage({ id: 'Verify' })} ); @@ -82,98 +82,99 @@ const CreateButton = createWithRemoteLoader({ 'components-core:Global@usePreset', 'components-core:InfoPage@CentralContent' ] -})(({ remoteModules, onSuccess }) => { - const [FormInfo, useFormModal, usePreset, CentralContent] = remoteModules; - const { formatMessage } = useIntl(); - const { ajax, apis } = usePreset(); - const { TextArea } = FormInfo.fields; - const formModal = useFormModal(); - const { modal } = App.useApp(); +})( + withLocale(({ remoteModules, onSuccess }) => { + const [FormInfo, useFormModal, usePreset, CentralContent] = remoteModules; + const { formatMessage } = useIntl(); + const { ajax, apis } = usePreset(); + const { TextArea } = FormInfo.fields; + const formModal = useFormModal(); + const { modal } = App.useApp(); - return ( -