CourseShow.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //课程详情图片标题按钮主讲人组合
  2. import { Link } from "react-router-dom";
  3. import { Image, Button, Space, Col, Row, Breadcrumb } from "antd";
  4. import { Typography } from "antd";
  5. import { HomeOutlined } from "@ant-design/icons";
  6. import { IUser } from "../auth/User";
  7. import { API_HOST } from "../../request";
  8. import UserName from "../auth/UserName";
  9. const { Title } = Typography;
  10. interface IWidget {
  11. title?: string;
  12. subtitle?: string;
  13. coverUrl?: string;
  14. teacher?: IUser;
  15. }
  16. const Widget = ({ title, subtitle, coverUrl, teacher }: IWidget) => {
  17. return (
  18. <>
  19. <Row>
  20. <Col flex="auto"></Col>
  21. <Col flex="960px">
  22. <Space direction="vertical">
  23. <Breadcrumb>
  24. <Breadcrumb.Item>
  25. <HomeOutlined />
  26. </Breadcrumb.Item>
  27. <Breadcrumb.Item>
  28. <Link to="/course/list">课程</Link>
  29. </Breadcrumb.Item>
  30. <Breadcrumb.Item>{title}</Breadcrumb.Item>
  31. </Breadcrumb>
  32. <Space>
  33. <Image
  34. width={200}
  35. style={{ borderRadius: 12 }}
  36. src={API_HOST + "/" + coverUrl}
  37. fallback={`${API_HOST}/app/course/img/default.jpg`}
  38. />
  39. <Space direction="vertical">
  40. <Title level={3}>{title}</Title>
  41. <Title level={5}>{subtitle}</Title>
  42. <Button type="primary">关注</Button>
  43. </Space>
  44. </Space>
  45. <div>
  46. 主讲人: <UserName {...teacher} />
  47. </div>
  48. </Space>
  49. </Col>
  50. <Col flex="auto"></Col>
  51. </Row>
  52. </>
  53. );
  54. };
  55. export default Widget;
  56. /*
  57. <Button type="primary">关注</Button>
  58. <Button type="primary" disabled>
  59. 已关注
  60. </Button>
  61. */