noticeTemplate.tsx 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import React from 'react';
  2. import { TableCard } from '@/components';
  3. import '@/style/common.less';
  4. import '../index.less';
  5. import { Tooltip } from 'antd';
  6. export interface NoticeCardProps extends TemplateItem {
  7. detail?: React.ReactNode;
  8. actions?: React.ReactNode[];
  9. avatarSize?: number;
  10. }
  11. export const imgMap = {
  12. dingTalk: {
  13. dingTalkMessage: require('/public/images/notice/dingtalk.png'),
  14. dingTalkRobotWebHook: require('/public/images/notice/dingTalk-rebot.png'),
  15. },
  16. weixin: {
  17. corpMessage: require('/public/images/notice/wechat.png'),
  18. officialMessage: require('/public/images/notice/weixin-official.png'),
  19. },
  20. email: {
  21. embedded: require('/public/images/notice/email.png'),
  22. },
  23. voice: {
  24. aliyun: require('/public/images/notice/voice.png'),
  25. },
  26. sms: {
  27. aliyunSms: require('/public/images/notice/sms.png'),
  28. },
  29. webhook: {
  30. http: require('/public/images/notice/webhook.png'),
  31. },
  32. };
  33. export const typeList = {
  34. weixin: {
  35. corpMessage: '企业消息',
  36. officialMessage: '服务号消息',
  37. },
  38. dingTalk: {
  39. dingTalkMessage: '钉钉消息',
  40. dingTalkRobotWebHook: '群机器人消息',
  41. },
  42. voice: {
  43. aliyun: '阿里云语音',
  44. },
  45. sms: {
  46. aliyunSms: '阿里云短信',
  47. },
  48. email: {
  49. embedded: '默认',
  50. },
  51. webhook: {
  52. http: 'webhook',
  53. },
  54. };
  55. export default (props: NoticeCardProps) => {
  56. return (
  57. <TableCard actions={props.actions} showStatus={false} detail={props.detail} showMask={false}>
  58. <div className={'pro-table-card-item'}>
  59. <div className={'card-item-avatar'}>
  60. <img width={88} height={88} src={imgMap[props.type][props.provider]} alt={props.type} />
  61. </div>
  62. <div className={'card-item-body'}>
  63. <div className={'card-item-header'}>
  64. <span className={'card-item-header-name ellipsis'}>
  65. <Tooltip title={props.name}>{props.name}</Tooltip>
  66. </span>
  67. </div>
  68. <div className={'card-item-content'}>
  69. <div>
  70. <label>通知方式</label>
  71. <div className={'ellipsis'}>{typeList[props.type][props.provider] || '暂无'}</div>
  72. </div>
  73. <div>
  74. <label>说明</label>
  75. <div className={'ellipsis'}>
  76. <Tooltip title={props.description}>{props.description}</Tooltip>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. </TableCard>
  83. );
  84. };