index.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. import React, { useState, useEffect, useMemo } from 'react';
  2. import { Card, Table, Empty, Button, Modal, message } from 'antd';
  3. import menuStyle from './index.less';
  4. import { connect, useNavigate } from 'umi';
  5. import { getToken } from '@/utils/utils';
  6. const noIcon = require('@/assets/UnityMenu/noIcon.png');
  7. function HomePage(props) {
  8. let navigate = useNavigate();
  9. const curMenu = [
  10. {
  11. id: 1,
  12. name: '项目立项',
  13. active: true,
  14. click: () => {
  15. window.open(
  16. ` http://120.55.44.4:8899/#/purchase/home/approval/list?JWT-TOKEN=${getToken()}`,
  17. );
  18. },
  19. Icon: require('@/assets/UnityMenu/project.png'),
  20. },
  21. {
  22. id: 5,
  23. name: '工时管理',
  24. active: true,
  25. click: () => {
  26. window.open(
  27. `http://120.55.44.4:8899/#/purchase/home/work-hours?JWT-TOKEN=${getToken()}`,
  28. );
  29. },
  30. Icon: require('@/assets/UnityMenu/time.png'),
  31. },
  32. {
  33. id: 6,
  34. name: '供应商管理',
  35. active: true,
  36. click: () => {
  37. navigate('/manufacturer');
  38. },
  39. Icon: require('@/assets/UnityMenu/Manufacturer.png'),
  40. },
  41. {
  42. id: 2,
  43. name: '合同管理',
  44. active: true,
  45. click: () => {
  46. navigate('/contract-manager');
  47. },
  48. Icon: require('@/assets/UnityMenu/agreement.png'),
  49. },
  50. {
  51. id: 4,
  52. name: 'BOM清单',
  53. active: true,
  54. click: () => {
  55. window.open(
  56. `http://120.55.44.4:8896/#/bom/home?JWT-TOKEN=${getToken()}`,
  57. );
  58. },
  59. Icon: require('@/assets/UnityMenu/Bom.png'),
  60. },
  61. {
  62. id: 3,
  63. name: 'OA审批',
  64. active: true,
  65. click: () => {
  66. navigate('/oa');
  67. },
  68. Icon: require('@/assets/UnityMenu/OA.png'),
  69. },
  70. {
  71. id: 7,
  72. name: '文档管理',
  73. active: true,
  74. click: () => {
  75. navigate('/fileManagement');
  76. },
  77. Icon: require('@/assets/UnityMenu/transfer.png'),
  78. },
  79. {
  80. id: 8,
  81. name: 'PSR管理',
  82. active: true,
  83. click: () => {
  84. navigate('/psrManage');
  85. },
  86. Icon: require('@/assets/UnityMenu/system.png'),
  87. },
  88. {
  89. id: 9,
  90. name: '个人中心',
  91. active: true,
  92. click: () => {
  93. navigate('/profile');
  94. },
  95. Icon: require('@/assets/UnityMenu/userCenter.png'),
  96. },
  97. ];
  98. return (
  99. <div className={menuStyle.background}>
  100. <div className={menuStyle.menuContent}>
  101. <MenuContent list={curMenu}></MenuContent>
  102. </div>
  103. </div>
  104. );
  105. }
  106. function MenuContent({ list }) {
  107. const row = useMemo(() => {
  108. const result = [];
  109. for (let i = 0; i < list.length; i += 5) {
  110. result.push(list.slice(i, i + 5));
  111. }
  112. return result;
  113. }, [list]);
  114. return row.map((rowList) => (
  115. <div className={menuStyle.wrap}>
  116. {rowList.map((item) => (
  117. <MenuItem key={item.id} item={item} />
  118. ))}
  119. <div className={menuStyle.empty}></div>
  120. <div className={menuStyle.empty}></div>
  121. <div className={menuStyle.empty}></div>
  122. </div>
  123. ));
  124. }
  125. function MenuItem({ item }) {
  126. return (
  127. <div className={menuStyle.item}>
  128. <div
  129. onClick={() => item.click?.(item)}
  130. className={menuStyle.menu}
  131. style={item.active ? {} : { cursor: 'not-allowed' }}
  132. >
  133. <img
  134. className={menuStyle.pic}
  135. src={
  136. item.active ? item.Icon : require('@/assets/UnityMenu/newModel.png')
  137. }
  138. style={item.active ? {} : { cursor: 'not-allowed' }}
  139. />
  140. </div>
  141. <div style={{ marginTop: 22, width: 152, textAlign: 'center' }}>
  142. <span
  143. onClick={() => item.click?.(item)}
  144. className={menuStyle.menuFriName}
  145. style={item.active ? {} : { color: '#6081B2', cursor: 'not-allowed' }}
  146. >
  147. {item.name}
  148. </span>
  149. </div>
  150. </div>
  151. );
  152. }
  153. export default HomePage;