scene.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React from 'react';
  2. import { StatusColorEnum } from '@/components/BadgeStatus';
  3. import { TableCard } from '@/components';
  4. import '@/style/common.less';
  5. import '../index.less';
  6. import type { SceneItem } from '@/pages/rule-engine/Scene/typings';
  7. import { Tooltip } from 'antd';
  8. export interface DeviceCardProps extends SceneItem {
  9. tools: React.ReactNode[];
  10. }
  11. const defaultImage = require('/public/images/scene.png');
  12. enum TriggerWayType {
  13. manual = '手动触发',
  14. timer = '定时触发',
  15. device = '设备触发',
  16. }
  17. export default (props: DeviceCardProps) => {
  18. return (
  19. <TableCard
  20. showMask={false}
  21. actions={props.tools}
  22. status={props.state.value}
  23. statusText={props.state.text}
  24. statusNames={{
  25. started: StatusColorEnum.success,
  26. disable: StatusColorEnum.error,
  27. notActive: StatusColorEnum.warning,
  28. }}
  29. >
  30. <div className={'pro-table-card-item'}>
  31. <div className={'card-item-avatar'}>
  32. <img width={88} height={88} src={defaultImage} alt={''} />
  33. </div>
  34. <div className={'card-item-body'}>
  35. <div className={'card-item-header'}>
  36. <span className={'card-item-header-name ellipsis'}>
  37. <Tooltip title={props.name}>{props.name}</Tooltip>
  38. </span>
  39. </div>
  40. <div className={'card-item-content'}>
  41. <div>
  42. <label>触发方式</label>
  43. <div className={'ellipsis'}>{TriggerWayType[props.triggerType]}</div>
  44. </div>
  45. <div>
  46. <label>说明</label>
  47. <div className={'ellipsis'}>{props.description || ''}</div>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. </TableCard>
  53. );
  54. };