scene.tsx 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import React from 'react';
  2. import { StatusColorEnum } from '@/components/BadgeStatus';
  3. import { Ellipsis, TableCard } from '@/components';
  4. import '@/style/common.less';
  5. import '../index.less';
  6. import type { SceneItem } from '@/pages/rule-engine/Scene/typings';
  7. import { CheckOutlined } from '@ant-design/icons';
  8. const defaultImage = require('/public/images/scene.png');
  9. // @ts-ignore
  10. export interface SceneCardProps extends SceneItem {
  11. detail?: React.ReactNode;
  12. actions?: React.ReactNode[];
  13. avatarSize?: number;
  14. className?: string;
  15. onUnBind?: (e: any) => void;
  16. showBindBtn?: boolean;
  17. cardType?: 'bind' | 'unbind';
  18. showTool?: boolean;
  19. onClick?: () => void;
  20. }
  21. enum TriggerWayType {
  22. manual = '手动触发',
  23. timer = '定时触发',
  24. device = '设备触发',
  25. }
  26. export const ExtraSceneCard = (props: SceneCardProps) => {
  27. return (
  28. <TableCard
  29. status={props.state.value}
  30. statusText={props.state.text}
  31. statusNames={{
  32. started: StatusColorEnum.success,
  33. disable: StatusColorEnum.error,
  34. notActive: StatusColorEnum.warning,
  35. }}
  36. showTool={props.showTool}
  37. showMask={false}
  38. actions={props.actions}
  39. onClick={props.onClick}
  40. className={props.className}
  41. >
  42. <div className={'pro-table-card-item context-access'}>
  43. <div className={'card-item-avatar'}>
  44. <img width={88} height={88} src={defaultImage} alt={''} />
  45. </div>
  46. <div className={'card-item-body'}>
  47. <div className={'card-item-header'}>
  48. <Ellipsis title={props.name} titleClassName={'card-item-header-name'} />
  49. </div>
  50. <div>
  51. <div>
  52. <label>触发方式</label>
  53. <Ellipsis title={TriggerWayType[props.triggerType]} />
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. <div className={'checked-icon'}>
  59. <div>
  60. <CheckOutlined />
  61. </div>
  62. </div>
  63. </TableCard>
  64. );
  65. };
  66. export default (props: SceneCardProps) => {
  67. return (
  68. <TableCard
  69. showMask={false}
  70. detail={props.detail}
  71. showTool={props.showTool}
  72. actions={props.actions}
  73. status={props.state.value}
  74. statusText={props.state.text}
  75. statusNames={{
  76. started: StatusColorEnum.success,
  77. disable: StatusColorEnum.error,
  78. notActive: StatusColorEnum.warning,
  79. }}
  80. >
  81. <div className={'pro-table-card-item'}>
  82. <div className={'card-item-avatar'}>
  83. <img width={88} height={88} src={defaultImage} alt={''} />
  84. </div>
  85. <div className={'card-item-body'}>
  86. <div className={'card-item-header'}>
  87. <Ellipsis title={props.name} titleClassName={'card-item-header-name'} />
  88. </div>
  89. <div>
  90. <div>
  91. <label>触发方式</label>
  92. <Ellipsis title={TriggerWayType[props.triggerType]} />
  93. </div>
  94. </div>
  95. </div>
  96. </div>
  97. </TableCard>
  98. );
  99. };