index.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. import PageContent from '@/components/PageContent';
  2. import TabsContent from '@/components/TabsContent';
  3. import { getNotificationList, readNotification } 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(searchParams.get('type') || '1');
  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. runSelf();
  38. break;
  39. case '2':
  40. runWarning();
  41. break;
  42. case '3':
  43. run();
  44. break;
  45. }
  46. };
  47. const handleReadClick = () => {
  48. UnityAction.sendMsg('notiReadAll', '');
  49. };
  50. const handlerSeeClick = (item) => {
  51. readNotification(item.ID);
  52. if (tab === '3') {
  53. // if (item?.MandateId) {
  54. UnityAction.sendMsg('OpenTaskModal', `mandate_id=${item.MandateId}`);
  55. run();
  56. // }
  57. } else if (tab == '1') {
  58. UnityAction.sendMsg('notiZiJian', item.PatrolId);
  59. runSelf();
  60. } else {
  61. runWarning();
  62. }
  63. };
  64. const RenderContent = ({ loading, data, icon }) => {
  65. return (
  66. <Spin spinning={loading}>
  67. <div className="content-tab">
  68. {data?.map((item) => {
  69. const time = item?.CreatedOn
  70. ? dayjs(item.CreatedOn).format('YYYY-MM-DD HH:mm')
  71. : '';
  72. return (
  73. <div key={item.ID} className={`card-box ${styles.itemContent}`}>
  74. <div className={styles.left}>
  75. <img className={styles.img} src={icon} />
  76. <div>
  77. <div className={styles.text}>{item.MsgBody}</div>
  78. <div className={styles.time}>{time}</div>
  79. </div>
  80. </div>
  81. <div className={styles.right}>
  82. <div
  83. className={
  84. item.ReadStatus === 0 ? styles.redPoint : styles.nonePoint
  85. }
  86. />
  87. <Button
  88. className={styles.btn}
  89. type="primary"
  90. onClick={() => handlerSeeClick(item)}
  91. >
  92. 查看
  93. </Button>
  94. </div>
  95. </div>
  96. );
  97. })}
  98. </div>
  99. </Spin>
  100. );
  101. };
  102. return (
  103. <PageContent tabs>
  104. <TabsContent
  105. center={false}
  106. defaultActiveKey={tab}
  107. onChange={handleTabsChange}
  108. items={[
  109. {
  110. label: `系统自检`,
  111. key: '1',
  112. children: (
  113. <RenderContent
  114. loading={loadingSelf}
  115. data={dataSelf?.list}
  116. icon={icon2}
  117. />
  118. ),
  119. },
  120. {
  121. label: `预警数据`,
  122. key: '2',
  123. children: (
  124. <RenderContent
  125. loading={loadingWarning}
  126. data={dataWarning?.list}
  127. icon={icon3}
  128. />
  129. ),
  130. },
  131. {
  132. label: `水厂工况`,
  133. key: '3',
  134. children: (
  135. <RenderContent loading={loading} data={data?.list} icon={icon1} />
  136. ),
  137. },
  138. ]}
  139. />
  140. <div className={styles.allRead} onClick={handleReadClick}>
  141. 全部已读
  142. </div>
  143. </PageContent>
  144. );
  145. };
  146. export default MessageCenter;