cascade.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import React from 'react';
  2. import type { CascadeItem } from '@/pages/media/Cascade/typings';
  3. import { StatusColorEnum } from '@/components/BadgeStatus';
  4. import { TableCard } from '@/components';
  5. import '@/style/common.less';
  6. import '../index.less';
  7. import { Badge } from 'antd';
  8. export interface CascadeCardProps extends CascadeItem {
  9. detail?: React.ReactNode;
  10. actions?: React.ReactNode[];
  11. avatarSize?: number;
  12. }
  13. const defaultImage = require('/public/images/device-type-3-big.png');
  14. export default (props: CascadeCardProps) => {
  15. return (
  16. <TableCard
  17. showMask={false}
  18. actions={props.actions}
  19. status={props.status.value}
  20. statusText={props.status.text}
  21. statusNames={{
  22. enabled: StatusColorEnum.processing,
  23. disabled: StatusColorEnum.error,
  24. }}
  25. >
  26. <div className={'pro-table-card-item'}>
  27. <div className={'card-item-avatar'}>
  28. <img width={88} height={88} src={defaultImage} alt={''} />
  29. </div>
  30. <div className={'card-item-body'}>
  31. <div className={'card-item-header'}>
  32. <span className={'card-item-header-name ellipsis'}>{props.name}</span>
  33. </div>
  34. <div>通道数量: {props?.count || 0}</div>
  35. <div style={{ display: 'flex', width: '100%' }}>
  36. <Badge status={props.onlineStatus?.value === 'offline' ? 'error' : 'success'} />
  37. <div
  38. style={{
  39. width: '90%',
  40. overflow: 'hidden',
  41. whiteSpace: 'nowrap',
  42. textOverflow: 'ellipsis',
  43. }}
  44. >
  45. sip:{props.sipConfigs[0]?.sipId}@{props.sipConfigs[0]?.hostAndPort}
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </TableCard>
  51. );
  52. };