index.tsx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import { PageContainer } from '@ant-design/pro-layout';
  2. import { InstanceModel, service } from '@/pages/device/Instance';
  3. import { history } from 'umi';
  4. import { Button } from 'antd';
  5. import { useEffect, useState } from 'react';
  6. import { statusMap } from '@/pages/device/Product';
  7. import { observer } from '@formily/react';
  8. import Config from '@/pages/device/Instance/Detail/Config';
  9. import Metadata from '@/pages/device/Instance/Detail/Metadata';
  10. import Log from '@/pages/device/Instance/Detail/Log';
  11. import Alarm from '@/pages/device/Instance/Detail/Alarm';
  12. import Info from '@/pages/device/Instance/Detail/Info';
  13. import Functions from '@/pages/device/Instance/Detail/Functions';
  14. import Running from '@/pages/device/Instance/Detail/Running';
  15. import { useIntl } from '@@/plugin-locale/localeExports';
  16. const InstanceDetail = observer(() => {
  17. const intl = useIntl();
  18. const [tab, setTab] = useState<string>('detail');
  19. const getDetail = (id: string) => {
  20. service.detail(id).then((response) => {
  21. InstanceModel.detail = response?.result;
  22. });
  23. };
  24. useEffect(() => {
  25. if (!InstanceModel.current) {
  26. history.goBack();
  27. } else {
  28. getDetail(InstanceModel.current?.id);
  29. }
  30. }, []);
  31. const list = [
  32. {
  33. key: 'detail',
  34. tab: intl.formatMessage({
  35. id: 'pages.device.instanceDetail.detail',
  36. defaultMessage: '实例信息',
  37. }),
  38. component: <Config />,
  39. },
  40. {
  41. key: 'running',
  42. tab: intl.formatMessage({
  43. id: 'pages.device.instanceDetail.running',
  44. defaultMessage: '运行状态',
  45. }),
  46. component: <Running />,
  47. },
  48. {
  49. key: 'metadata',
  50. tab: intl.formatMessage({
  51. id: 'pages.device.instanceDetail.metadata',
  52. defaultMessage: '物模型',
  53. }),
  54. component: <Metadata />,
  55. },
  56. {
  57. key: 'functions',
  58. tab: intl.formatMessage({
  59. id: 'pages.device.instanceDetail.functions',
  60. defaultMessage: '设备功能',
  61. }),
  62. component: <Functions />,
  63. },
  64. {
  65. key: 'log',
  66. tab: intl.formatMessage({
  67. id: 'pages.device.instanceDetail.log',
  68. defaultMessage: '日志管理',
  69. }),
  70. component: <Log />,
  71. },
  72. {
  73. key: 'alarm',
  74. tab: intl.formatMessage({
  75. id: 'pages.device.instanceDetail.alarm',
  76. defaultMessage: '告警设置',
  77. }),
  78. component: <Alarm />,
  79. },
  80. {
  81. key: 'visualization',
  82. tab: intl.formatMessage({
  83. id: 'pages.device.instanceDetail.visualization',
  84. defaultMessage: '可视化',
  85. }),
  86. component: null,
  87. },
  88. {
  89. key: 'shadow',
  90. tab: intl.formatMessage({
  91. id: 'pages.device.instanceDetail.shadow',
  92. defaultMessage: '设备影子',
  93. }),
  94. component: null,
  95. },
  96. ];
  97. return (
  98. <PageContainer
  99. onBack={history.goBack}
  100. onTabChange={setTab}
  101. tabList={list}
  102. content={<Info />}
  103. extra={[
  104. statusMap[0],
  105. <Button key="2">
  106. {intl.formatMessage({
  107. id: 'pages.device.productDetail.disable',
  108. defaultMessage: '停用',
  109. })}
  110. </Button>,
  111. <Button key="1" type="primary">
  112. {intl.formatMessage({
  113. id: 'pages.device.productDetail.setting',
  114. defaultMessage: '应用配置',
  115. })}
  116. </Button>,
  117. ]}
  118. >
  119. {list.find((k) => k.key === tab)?.component}
  120. </PageContainer>
  121. );
  122. });
  123. export default InstanceDetail;