index.tsx 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { PageContainer } from '@ant-design/pro-layout';
  2. import { history, useParams } from 'umi';
  3. import { Descriptions } from 'antd';
  4. import { service, state } from '@/pages/device/Firmware';
  5. import History from './History';
  6. import { useEffect, useState } from 'react';
  7. import type { FirmwareItem } from '@/pages/device/Firmware/typings';
  8. import Task from '@/pages/device/Firmware/Detail/Task';
  9. import { observer } from '@formily/react';
  10. const Detail = observer(() => {
  11. const [data, setData] = useState<FirmwareItem | undefined>(state.current);
  12. const param = useParams<{ id: string }>();
  13. useEffect(() => {
  14. if (!state.current) {
  15. service.detail(param.id).then((resp) => {
  16. if (resp.status === 200) {
  17. setData(resp.result);
  18. }
  19. });
  20. }
  21. }, [param.id]);
  22. const list = [
  23. {
  24. key: 'task',
  25. tab: '升级任务',
  26. component: <Task />,
  27. },
  28. {
  29. key: 'history',
  30. tab: '升级记录',
  31. component: <History />,
  32. },
  33. ];
  34. return (
  35. <PageContainer
  36. tabActiveKey={state.tab}
  37. onBack={history.goBack}
  38. onTabChange={(key) => {
  39. state.tab = key as 'task' | 'history';
  40. }}
  41. content={
  42. <>
  43. <Descriptions size="small" column={3}>
  44. {[
  45. { key: 'ID', value: data?.id },
  46. { key: '所属产品', value: data?.productName },
  47. { key: '版本号', value: data?.version },
  48. { key: '版本序号', value: data?.versionOrder },
  49. { key: '签名方式', value: data?.signMethod },
  50. { key: '签名', value: data?.sign },
  51. ].map((item) => (
  52. <Descriptions.Item key={item.key} label={item.key}>
  53. {item.value}
  54. </Descriptions.Item>
  55. ))}
  56. </Descriptions>
  57. </>
  58. }
  59. title={<>固件: {state.current?.name}</>}
  60. tabList={list}
  61. >
  62. {list.find((k) => k.key === state.tab)?.component}
  63. </PageContainer>
  64. );
  65. });
  66. export default Detail;