index.tsx 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import PageContent from '@/components/PageContent';
  2. import PageTitle from '@/components/PageTitle';
  3. import { MandateType } from '@/pages/TaskManage/constent';
  4. import styles from '@/pages/TaskManage/index.less';
  5. import { getMandateList } from '@/services/TaskManage';
  6. import { RightOutlined } from '@ant-design/icons';
  7. import { useParams } from '@umijs/max';
  8. import { List, Spin } from "antd";
  9. import { BaseOptionType } from 'rc-select/es/Select';
  10. import React, { useEffect, useState } from 'react';
  11. import { useNavigate } from 'umi';
  12. const TaskManage = () => {
  13. const { projectID } = useParams();
  14. const project_id = Number(projectID === '' ? '0' : projectID);
  15. const navigate = useNavigate();
  16. const [mandateCount, setMandateCount] = useState<number[]>([0, 0, 0]);
  17. const [loading, setLoading] = useState(false);
  18. useEffect(() => {
  19. const requests = [];
  20. for (let i = 0; i < 3; i++) {
  21. requests.push(
  22. getMandateList({
  23. project_id,
  24. pageSize: 1,
  25. currentPage: 1,
  26. mandate_type: i + 1,
  27. }),
  28. );
  29. }
  30. setLoading(true)
  31. Promise.all(requests)
  32. .then((resList) => {
  33. if (resList.filter((item) => item.code !== 200).length) {
  34. throw new Error('请求错误');
  35. }
  36. const typeCount = [0, 0, 0];
  37. resList.forEach((item, index) => {
  38. typeCount[index] = item.data.pagination?.total;
  39. });
  40. setMandateCount(typeCount);
  41. })
  42. .catch((err) => {
  43. console.log(err);
  44. }).finally(()=>{
  45. setLoading(false)
  46. });
  47. }, []);
  48. const goTaskList = (item: number) => {
  49. navigate(`/task-manage/list?project_id=${project_id}&mandateType=${item}`);
  50. };
  51. const makeList = (item: BaseOptionType, index: number) => {
  52. return (
  53. <List.Item
  54. className={styles.listItem}
  55. onClick={() => {
  56. goTaskList(item.value);
  57. }}
  58. >
  59. <List.Item.Meta
  60. title={<span className={styles.fontS28}>{item.label}</span>}
  61. />
  62. <div className={styles.itemCount}>
  63. <div className={styles.countNumber}>{mandateCount[index]}</div>
  64. <div className={styles.fontS22}>任务数量</div>
  65. </div>
  66. <RightOutlined />
  67. </List.Item>
  68. );
  69. };
  70. return (
  71. <PageContent>
  72. <PageTitle clo>任务管理</PageTitle>
  73. <Spin spinning={loading}>
  74. <List
  75. className={styles.taskList}
  76. bordered
  77. itemLayout="horizontal"
  78. dataSource={MandateType}
  79. renderItem={makeList}
  80. pagination={false}
  81. />
  82. </Spin>
  83. </PageContent>
  84. );
  85. };
  86. export default TaskManage;
  87. // export default connect(
  88. // ({
  89. // mandate,
  90. // loading,
  91. // }: any): { mandateList: IMandateType[]; loading: boolean } => {
  92. // return {
  93. // mandateList: mandate.mandateList,
  94. // loading: loading.models['mandate'],
  95. // };
  96. // },
  97. // )(TaskManage);