index.tsx 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React from 'react';
  2. import { StatusColorEnum } from '@/components/BadgeStatus';
  3. import { TableCard } from '@/components';
  4. import '@/style/common.less';
  5. import { Badge, Tooltip } from 'antd';
  6. import type { AccessItem } from '@/pages/link/AccessConfig/typings';
  7. import './index.less';
  8. import classNames from 'classnames';
  9. export interface AccessConfigCardProps extends AccessItem {
  10. detail?: React.ReactNode;
  11. actions?: React.ReactNode[];
  12. avatarSize?: number;
  13. showTool?: boolean;
  14. activeStyle?: string;
  15. }
  16. const defaultImage = require('/public/images/device-access.png');
  17. export default (props: AccessConfigCardProps) => {
  18. return (
  19. <TableCard
  20. showMask={false}
  21. actions={props.actions}
  22. status={props.state.value}
  23. statusText={props.state.text}
  24. statusNames={{
  25. enabled: StatusColorEnum.processing,
  26. disabled: StatusColorEnum.error,
  27. }}
  28. showTool={props.showTool}
  29. contentClassName={props.state.value === 'disabled' ? 'tableCardDisabled' : 'tableCardEnabled'}
  30. className={classNames('access-config-card-item', props.activeStyle)}
  31. >
  32. <div className="context-access">
  33. <div>
  34. <img width={88} height={88} src={defaultImage} alt={''} />
  35. </div>
  36. <div className="card">
  37. <div className="header">
  38. <Tooltip title={props.name}>
  39. <div className="title ellipsis">{props.name || '--'}</div>
  40. </Tooltip>
  41. <div className="desc">{props.description || '--'}</div>
  42. </div>
  43. <div className="container">
  44. <div className="server">
  45. <div className="subTitle">{props?.channelInfo?.name || '--'}</div>
  46. {props.channelInfo?.addresses.slice(0, 2).map((i: any, index: number) => (
  47. <div className="subItem" key={i.address + `_address${index}`}>
  48. <Badge color={i.health === -1 ? 'red' : 'green'} text={i.address} />
  49. </div>
  50. ))}
  51. </div>
  52. <div className="procotol">
  53. <div className="subTitle">{props?.protocolDetail?.name || '--'}</div>
  54. <div className="desc">{props.protocolDetail?.description || '--'}</div>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. </TableCard>
  60. );
  61. };