index.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. import PageContent from '@/components/PageContent';
  2. import TabsContent from '@/components/TabsContent';
  3. import { getNotificationList } from '@/services/message';
  4. import { UnityAction } from '@/utils/utils';
  5. import { useParams, useRequest, useSearchParams } from '@umijs/max';
  6. import { Button, Spin } from 'antd';
  7. import dayjs from 'dayjs';
  8. import { useState } from 'react';
  9. import styles from './index.less';
  10. const icon1 = require('@/assets/message/work.png');
  11. const icon2 = require('@/assets/message/check.png');
  12. const icon3 = require('@/assets/message/warning.png');
  13. const MessageCenter = () => {
  14. const { projectId } = useParams();
  15. const [searchParams] = useSearchParams();
  16. const [tab, setTab] = useState('2');
  17. //, msgType: 工况:11, 自检:12, 预警:13
  18. const { data, run, loading } = useRequest(() =>
  19. getNotificationList({ projectId, msgType: 11 }, { manual: true }),
  20. );
  21. const {
  22. data: dataWarning,
  23. run: runWarning,
  24. loading: loadingWarning,
  25. } = useRequest(() =>
  26. getNotificationList({ projectId, msgType: 13 }, { manual: true }),
  27. );
  28. const {
  29. data: dataSelf,
  30. run: runSelf,
  31. loading: loadingSelf,
  32. } = useRequest(() => getNotificationList({ projectId, msgType: 12 }));
  33. const handleTabsChange = (tab) => {
  34. setTab(tab);
  35. switch (tab) {
  36. case '1':
  37. run();
  38. break;
  39. case '2':
  40. runSelf();
  41. break;
  42. case '3':
  43. runWarning();
  44. break;
  45. }
  46. };
  47. const handleReadClick = () => {
  48. UnityAction.sendMsg('notiReadAll', '');
  49. };
  50. const handlerSeeClick = (item) => {
  51. if (tab === '1') {
  52. // if (item?.MandateId) {
  53. UnityAction.sendMsg('OpenTaskModal', `mandate_id=${item.MandateId}`);
  54. // }
  55. } else {
  56. UnityAction.sendMsg('notiZiJian', item.PatrolId);
  57. }
  58. };
  59. const RenderContent = ({ loading, data, icon }) => {
  60. return (
  61. <Spin spinning={loading}>
  62. <div className="content-tab">
  63. {data?.map((item) => {
  64. const time = item?.CreatedOn
  65. ? dayjs(item.CreatedOn).format('YYYY-MM-DD HH:mm')
  66. : '';
  67. return (
  68. <div key={item.ID} className={`card-box ${styles.itemContent}`}>
  69. <div className={styles.left}>
  70. <img className={styles.img} src={icon} />
  71. <div>
  72. <div className={styles.text}>{item.MsgBody}</div>
  73. <div className={styles.time}>{time}</div>
  74. </div>
  75. </div>
  76. <div className={styles.right}>
  77. <div
  78. className={
  79. item?.ReadStatus ? styles.redPoint : styles.nonePoint
  80. }
  81. />
  82. <Button
  83. className={styles.btn}
  84. type="primary"
  85. onClick={() => handlerSeeClick(item)}
  86. >
  87. 查看
  88. </Button>
  89. </div>
  90. </div>
  91. );
  92. })}
  93. </div>
  94. </Spin>
  95. );
  96. };
  97. return (
  98. <PageContent tabs>
  99. <TabsContent
  100. center={false}
  101. defaultActiveKey={searchParams.get('type') || '2'}
  102. onChange={handleTabsChange}
  103. items={[
  104. {
  105. label: `系统自检`,
  106. key: '2',
  107. children: (
  108. <RenderContent
  109. loading={loadingSelf}
  110. data={dataSelf?.list}
  111. icon={icon2}
  112. />
  113. ),
  114. },
  115. {
  116. label: `预警数据`,
  117. key: '3',
  118. children: (
  119. <RenderContent
  120. loading={loadingWarning}
  121. data={dataWarning?.list}
  122. icon={icon3}
  123. />
  124. ),
  125. },
  126. {
  127. label: `水厂工况`,
  128. key: '1',
  129. children: (
  130. <RenderContent loading={loading} data={data?.list} icon={icon1} />
  131. ),
  132. },
  133. ]}
  134. />
  135. <div className={styles.allRead} onClick={handleReadClick}>
  136. 全部已读
  137. </div>
  138. </PageContent>
  139. );
  140. };
  141. export default MessageCenter;