AppList.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import React,{useEffect,useState} from "react"
  2. import {api} from "../utils/api"
  3. import {baseUrl} from "../utils/api"
  4. import {AxiosResponse,AxiosError} from "axios"
  5. import {message,Spin} from "antd"
  6. import "../assets/scss/applist.scss"
  7. export default function AppList(){
  8. const [appList,setAppList] = useState<Array<any>>([])
  9. const [loading,setLoading] = useState<boolean>(true)
  10. useEffect(()=>{
  11. api.appList()
  12. .then((res:AxiosResponse)=>{
  13. if(res.data.code===0){
  14. setAppList(res.data.data)
  15. setLoading(false)
  16. }
  17. })
  18. .catch((err:AxiosError)=>{
  19. message.error(err.message)
  20. Promise.reject(err)
  21. })
  22. },[])
  23. const onAuthz = (e: React.MouseEvent<HTMLElement>,appId:string):void=>{
  24. e.preventDefault()
  25. for(let i = 0;i < appList.length; i++){
  26. if(appList[i].id === appId &&(appList[i].protocol === 'Basic' || appList[i].inducer === 'SP')){
  27. window.open(appList[i].loginUrl);
  28. return;
  29. }
  30. }
  31. window.open(`${baseUrl}/authz/${appId}`)
  32. }
  33. return (
  34. <Spin spinning={loading}>
  35. <ul>
  36. {appList.length>0&&appList.map((app:any)=>
  37. <li onClick={(e)=>onAuthz(e,app.id)} key={app.id}><img src={app.iconBase64} alt=""/></li>
  38. )}
  39. </ul>
  40. </Spin>
  41. )
  42. }