diff --git a/frontend/packages/market/src/pages/serviceHub/ServiceHubDetail.tsx b/frontend/packages/market/src/pages/serviceHub/ServiceHubDetail.tsx index 69c21350..d6d10f00 100644 --- a/frontend/packages/market/src/pages/serviceHub/ServiceHubDetail.tsx +++ b/frontend/packages/market/src/pages/serviceHub/ServiceHubDetail.tsx @@ -89,10 +89,10 @@ const ServiceHubDetail = ()=>{ const getMySelectList = ()=>{ setMySystemOptionList([]) - fetchData>('apps/can_subscribe',{method:'GET'}).then(response=>{ + fetchData>('apps/can_subscribe',{method:'GET'}).then(response=>{ const {code,data,msg} = response if(code === STATUS_CODE.SUCCESS){ - setMySystemOptionList(data.apps?.map((x:EntityItem)=>{return { + setMySystemOptionList(data.app?.map((x:EntityItem)=>{return { label:x.name, value:x.id }})) }else{ diff --git a/frontend/packages/market/src/pages/serviceHub/management/ServiceHubManagement.tsx b/frontend/packages/market/src/pages/serviceHub/management/ServiceHubManagement.tsx index 64b0de8f..97473e64 100644 --- a/frontend/packages/market/src/pages/serviceHub/management/ServiceHubManagement.tsx +++ b/frontend/packages/market/src/pages/serviceHub/management/ServiceHubManagement.tsx @@ -1,5 +1,5 @@ import { MenuProps, Menu, App, Avatar, Card, Tooltip, Empty, Button, Radio } from "antd"; -import { useState, forwardRef, useEffect, useRef, useMemo, memo } from "react"; +import { useState, forwardRef, useEffect, useRef, useMemo, memo, Ref, useImperativeHandle } from "react"; import { VirtuosoGrid } from "react-virtuoso"; import { BasicResponse, DATA_SHOW_TYPE_OPTIONS, RESPONSE_TIPS, STATUS_CODE } from "@common/const/const"; import { ServiceHubAppListItem } from "../../../const/serviceHub/type"; @@ -17,6 +17,7 @@ import WithPermission from "@common/components/aoplatform/WithPermission"; import InsidePage from "@common/components/aoplatform/InsidePage"; import PageList from "@common/components/aoplatform/PageList"; import { SERVICE_HUB_TABLE_COLUMNS } from "@market/const/serviceHub/const"; +import { ActionType } from "@ant-design/pro-components"; export default function ServiceHubManagement() { const { message ,modal} = App.useApp() @@ -36,23 +37,24 @@ export default function ServiceHubManagement() { const [tableHttpReload, setTableHttpReload] = useState(true); const [tableListDataSource, setTableListDataSource] = useState([]); const [tableSearchWord, setTableSearchWord] = useState('') + const tableRef = useRef(null) -const getServiceList = (dataType?:'block'|'list')=>{ - dataType = dataType ?? dataShowType - if(!accessInit){ - getGlobalAccessData()?.then?.(()=>{getServiceList(dataType)}) - return Promise.resolve({data:[], success:false}) - } + const getServiceList = (dataType?:'block'|'list')=>{ + dataType = dataType ?? dataShowType + if(!accessInit){ + getGlobalAccessData()?.then?.(()=>{getServiceList(dataType)}) + return Promise.resolve({data:[], success:false}) + } + + if(dataType === 'list' && !tableHttpReload){ + setTableHttpReload(true) + return Promise.resolve({ + data: tableListDataSource, + success: true, + }); + } - if(dataType === 'list' && !tableHttpReload){ - setTableHttpReload(true) - return Promise.resolve({ - data: tableListDataSource, - success: true, - }); - } - - setServiceLoading(true) + setServiceLoading(true) return fetchData>(!checkPermission('system.workspace.application.view_all') ? 'my_apps':'apps',{method:'GET',eoParams:{ team: dataType === 'list' ? undefined : teamId,keyword:tableSearchWord},eoTransformKeys:['api_num','subscribe_num','subscribe_verify_num','auth_num','create_time','can_delete']}).then(response=>{ const {code,data,msg} = response if(code === STATUS_CODE.SUCCESS){ @@ -142,13 +144,12 @@ const getServiceList = (dataType?:'block'|'list')=>{ const openModal = async (type:'add'|'edit'|'delete')=>{ - let title:string = '' let content:string|React.ReactNode = '' switch (type){ case 'add': title=$t('添加消费者') - content= + content= break; // case 'edit':{ // title='配置 Open Api' @@ -174,7 +175,15 @@ const getServiceList = (dataType?:'block'|'list')=>{ onOk:()=> { switch (type){ case 'add': - return addManagementRef.current?.save().then((res)=>{if(res === true) getTeamsList();getServiceList()}) + return addManagementRef.current?.save().then((res)=>{if(res === true) { + getTeamsList(); + if(dataShowType === 'list'){ + setTableHttpReload(true) + tableRef.current?.manualReloadTable() + }else{ + getServiceList() + } + }}) // case 'edit': // return editManagementRef.current?.save().then((res)=>{if(res === true) manualReloadTable()}) // case 'delete': @@ -291,7 +300,7 @@ useEffect(() => { buttonStyle="solid" />} >{ - dataShowType === 'block' ? : getServiceList('list')} addNewApp={()=>openModal('add')} setTableHttpReload={setTableHttpReload} setTableSearchWord={setTableSearchWord} editApp={(row:ServiceHubAppListItem)=>{setAppName(row.name);navigateTo(`/consumer/${row.team.id}/inside/${row.id}/service`)}}/> + dataShowType === 'block' ? : getServiceList('list')} ref={tableRef} addNewApp={()=>openModal('add')} setTableHttpReload={setTableHttpReload} setTableSearchWord={setTableSearchWord} editApp={(row:ServiceHubAppListItem)=>{setAppName(row.name);navigateTo(`/consumer/${row.team.id}/inside/${row.id}/service`)}}/> } : @@ -325,16 +334,31 @@ type TableAreaProps = { editApp:(item:ServiceHubAppListItem)=>void } -const TableArea = memo(({language, getServiceList, addNewApp, setTableHttpReload, setTableSearchWord, editApp}:TableAreaProps)=>{ +type TableAreaHandle = { + manualReloadTable:()=>void +} + +const TableArea = memo(forwardRef((props:TableAreaProps, ref:Ref)=>{ + const {language, getServiceList, addNewApp, setTableHttpReload, setTableSearchWord, editApp} = props + const pageListRef = useRef(null); const columns = useMemo(()=>{ const res = SERVICE_HUB_TABLE_COLUMNS.map(x=>{ return {...x,title:typeof x.title === 'string' ? $t(x.title as string) : x.title}}) return res },[language]) + + const manualReloadTable = ()=>{ + pageListRef.current?.reload() + } + useImperativeHandle(ref, () =>({ + manualReloadTable})) + + return ( getServiceList()} addNewBtnTitle={$t("添加消费者")} @@ -348,4 +372,4 @@ const TableArea = memo(({language, getServiceList, addNewApp, setTableHttpReload }} onRowClick={(row:ServiceHubAppListItem)=>editApp(row)} /> - )}) \ No newline at end of file + )})) \ No newline at end of file