You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

info.tsx 4.7 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /*
  2. * @Author: 赵伟
  3. * @Date: 2024-04-16 13:58:08
  4. * @Description: 镜像详情
  5. */
  6. import KFIcon from '@/components/KFIcon';
  7. import PageTitle from '@/components/PageTitle';
  8. import SubAreaTitle from '@/components/SubAreaTitle';
  9. import { getMirrorInfoReq } from '@/services/mirror';
  10. import { formatDate } from '@/utils/date';
  11. import { to } from '@/utils/promise';
  12. import { useNavigate, useParams } from '@umijs/max';
  13. import { Col, Row, Tabs, type TabsProps } from 'antd';
  14. import { useEffect, useState } from 'react';
  15. import styles from './info.less';
  16. type MirrorInfoData = {
  17. name?: string;
  18. description?: string;
  19. version_count?: string;
  20. create_time?: string;
  21. };
  22. type MirrorVersionData = {
  23. id: number;
  24. version: string;
  25. url: string;
  26. status: string;
  27. file_size: string;
  28. create_time: string;
  29. };
  30. const tabItems = [
  31. {
  32. key: '1',
  33. label: '预测',
  34. icon: <KFIcon type="icon-yuce" />,
  35. },
  36. {
  37. key: '2',
  38. label: '调用指南',
  39. icon: <KFIcon type="icon-tiaoyongzhinan" />,
  40. },
  41. {
  42. key: '3',
  43. label: '服务日志',
  44. icon: <KFIcon type="icon-fuwurizhi" />,
  45. },
  46. ];
  47. function ModelDeploymentInfo() {
  48. const navigate = useNavigate();
  49. const urlParams = useParams();
  50. const [mirrorInfo, setMirrorInfo] = useState<MirrorInfoData>({});
  51. const [activeTab, setActiveTab] = useState<string>('1');
  52. useEffect(() => {
  53. getMirrorInfo();
  54. }, []);
  55. // 获取镜像详情
  56. const getMirrorInfo = async () => {
  57. const id = Number(urlParams.id);
  58. const [res] = await to(getMirrorInfoReq(id));
  59. if (res && res.data) {
  60. const { name = '', description = '', version_count = '', create_time: time } = res.data;
  61. const create_time = formatDate(time);
  62. setMirrorInfo({
  63. name,
  64. description,
  65. version_count,
  66. create_time,
  67. });
  68. }
  69. };
  70. // 切换 Tab,重置数据
  71. const hanleTabChange: TabsProps['onChange'] = (value) => {
  72. setActiveTab(value);
  73. };
  74. return (
  75. <div className={styles['model-deployment-info']}>
  76. <PageTitle title="服务详情"></PageTitle>
  77. <div className={styles['model-deployment-info__content']}>
  78. <div>
  79. <SubAreaTitle
  80. title="基本信息"
  81. image={require('@/assets/img/mirror-basic.png')}
  82. style={{ marginBottom: '26px' }}
  83. ></SubAreaTitle>
  84. <div className={styles['model-deployment-info__basic']}>
  85. <Row gutter={40} style={{ marginBottom: '20px' }}>
  86. <Col span={10}>
  87. <div className={styles['model-deployment-info__basic__item']}>
  88. <div className={styles['label']}>服务名称:</div>
  89. <div className={styles['value']}>{mirrorInfo.name}</div>
  90. </div>
  91. </Col>
  92. <Col span={10}>
  93. <div className={styles['model-deployment-info__basic__item']}>
  94. <div className={styles['label']}>镜像:</div>
  95. <div className={styles['value']}>{mirrorInfo.version_count ?? '--'}</div>
  96. </div>
  97. </Col>
  98. </Row>
  99. <Row gutter={40} style={{ marginBottom: '20px' }}>
  100. <Col span={10}>
  101. <div className={styles['model-deployment-info__basic__item']}>
  102. <div className={styles['label']}>状态:</div>
  103. <div className={styles['value']}>{mirrorInfo.name}</div>
  104. </div>
  105. </Col>
  106. <Col span={10}>
  107. <div className={styles['model-deployment-info__basic__item']}>
  108. <div className={styles['label']}>模型:</div>
  109. <div className={styles['value']}>{mirrorInfo.version_count ?? '--'}</div>
  110. </div>
  111. </Col>
  112. </Row>
  113. <Row gutter={40} style={{ marginBottom: '20px' }}>
  114. <Col span={10}>
  115. <div className={styles['model-deployment-info__basic__item']}>
  116. <div className={styles['label']}>环境变量:</div>
  117. <div className={styles['value']}>{mirrorInfo.name}</div>
  118. </div>
  119. </Col>
  120. </Row>
  121. <Row gutter={40}>
  122. <Col span={24}>
  123. <div className={styles['model-deployment-info__basic__item']}>
  124. <div className={styles['label']}>描述:</div>
  125. <div className={styles['value']}>{mirrorInfo.description}</div>
  126. </div>
  127. </Col>
  128. </Row>
  129. </div>
  130. <div>
  131. <Tabs activeKey={activeTab} items={tabItems} onChange={hanleTabChange} />
  132. </div>
  133. </div>
  134. </div>
  135. </div>
  136. );
  137. }
  138. export default ModelDeploymentInfo;