index.tsx 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. import styles from "./index.module.scss";
  2. import LeftBar from "@/components/LeftBar";
  3. import React, { useEffect, useState } from "react";
  4. import SpinLoding from "@/components/SpinLoding";
  5. import { Route, Switch } from "react-router-dom";
  6. import AuthRoute from "@/components/AuthRoute";
  7. import NotFound from "@/components/NotFound";
  8. import history from "@/utils/history";
  9. import { useSelector } from "react-redux";
  10. import { RootState } from "@/store";
  11. const LookObject1 = React.lazy(
  12. () => import("../ObjectSon/Object1/LookObject1")
  13. );
  14. const LookObject2 = React.lazy(
  15. () => import("../ObjectSon/Object2/LookObject2")
  16. );
  17. const LookObject3 = React.lazy(
  18. () => import("../ObjectSon/Object3/LookObject3")
  19. );
  20. const LookObject4 = React.lazy(
  21. () => import("../ObjectSon/Object4/LookObject4")
  22. );
  23. const LookObject5 = React.lazy(
  24. () => import("../ObjectSon/Object5/LookObject5")
  25. );
  26. const LookObject6 = React.lazy(
  27. () => import("../ObjectSon/Object6/LookObject6")
  28. );
  29. const dataTemp = [
  30. {
  31. id: 1,
  32. name: "藏品登记",
  33. done: false,
  34. Com: React.lazy(() => import("../ObjectSon/Object1")),
  35. path: "/object",
  36. },
  37. {
  38. id: 2,
  39. done: false,
  40. name: "藏品总账",
  41. Com: React.lazy(() => import("../ObjectSon/Object2")),
  42. path: "/object/2",
  43. },
  44. {
  45. id: 3,
  46. done: false,
  47. name: "入库管理",
  48. Com: React.lazy(() => import("../ObjectSon/Object3")),
  49. path: "/object/3",
  50. },
  51. {
  52. id: 4,
  53. done: false,
  54. name: "出库管理",
  55. Com: React.lazy(() => import("../ObjectSon/Object4")),
  56. path: "/object/4",
  57. },
  58. {
  59. id: 5,
  60. done: false,
  61. name: "藏品修改",
  62. Com: React.lazy(() => import("../ObjectSon/Object5")),
  63. path: "/object/5",
  64. },
  65. {
  66. id: 6,
  67. done: false,
  68. name: "藏品注销",
  69. Com: React.lazy(() => import("../ObjectSon/Object6")),
  70. path: "/object/6",
  71. },
  72. ];
  73. const dataInTemp = [
  74. {
  75. id: 1001,
  76. done: false,
  77. name: "藏品登记新增",
  78. Com: React.lazy(() => import("../ObjectSon/Object1/AddObject1")),
  79. path: "/object/1/add",
  80. },
  81. {
  82. id: 1002,
  83. done: false,
  84. name: "藏品登记审核",
  85. Com: React.lazy(() => import("../ObjectSon/Object1/AuditObject1")),
  86. path: "/object/1/audit",
  87. },
  88. {
  89. id: 3001,
  90. done: false,
  91. name: "入库管理新增",
  92. Com: React.lazy(() => import("../ObjectSon/Object3/AddObject3")),
  93. path: "/object/3/add",
  94. },
  95. {
  96. id: 3002,
  97. done: false,
  98. name: "入库管理审核",
  99. Com: React.lazy(() => import("../ObjectSon/Object3/AuditObject3")),
  100. path: "/object/3/audit",
  101. },
  102. {
  103. id: 4001,
  104. done: false,
  105. name: "出库管理新增",
  106. Com: React.lazy(() => import("../ObjectSon/Object4/AddObject4")),
  107. path: "/object/4/add",
  108. },
  109. {
  110. id: 4002,
  111. done: false,
  112. name: "出库管理审核",
  113. Com: React.lazy(() => import("../ObjectSon/Object4/AuditObject4")),
  114. path: "/object/4/audit",
  115. },
  116. {
  117. id: 5001,
  118. done: false,
  119. name: "出库管理审核",
  120. Com: React.lazy(() => import("../ObjectSon/Object5/AuditObject5")),
  121. path: "/object/5/audit",
  122. },
  123. {
  124. id: 6001,
  125. done: false,
  126. name: "藏品注销新增",
  127. Com: React.lazy(() => import("../ObjectSon/Object6/AddObject6")),
  128. path: "/object/6/add",
  129. },
  130. {
  131. id: 6002,
  132. done: false,
  133. name: "藏品注销审核",
  134. Com: React.lazy(() => import("../ObjectSon/Object6/AuditObject6")),
  135. path: "/object/6/audit",
  136. },
  137. ];
  138. export default function Object() {
  139. const powerInfo = useSelector(
  140. (state: RootState) => state.loginStore.authPageArr
  141. );
  142. const [data, setData] = useState(dataTemp);
  143. const [dataIn, setDadaIn] = useState(dataInTemp);
  144. useEffect(() => {
  145. powerInfo.forEach((v: any) => {
  146. if (v.id === 100) {
  147. dataTemp[0].done = true;
  148. v.children.forEach((v2: any) => {
  149. if (v2.id === 102 && v2.authority) dataInTemp[0].done = true;
  150. if (v2.id === 105 && v2.authority) dataInTemp[1].done = true;
  151. });
  152. }
  153. if (v.id === 200) dataTemp[1].done = true;
  154. if (v.id === 300) {
  155. dataTemp[2].done = true;
  156. v.children.forEach((v2: any) => {
  157. if (v2.id === 302 && v2.authority) dataInTemp[2].done = true;
  158. if (v2.id === 305 && v2.authority) dataInTemp[3].done = true;
  159. });
  160. }
  161. if (v.id === 400) {
  162. dataTemp[3].done = true;
  163. v.children.forEach((v2: any) => {
  164. if (v2.id === 402 && v2.authority) dataInTemp[4].done = true;
  165. if (v2.id === 405 && v2.authority) dataInTemp[5].done = true;
  166. });
  167. }
  168. if (v.id === 500) {
  169. v.children.forEach((v2: any) => {
  170. if (v2.id === 505 && v2.authority) dataInTemp[6].done = true;
  171. });
  172. dataTemp[4].done = true;
  173. }
  174. if (v.id === 600) {
  175. dataTemp[5].done = true;
  176. v.children.forEach((v2: any) => {
  177. if (v2.id === 602 && v2.authority) dataInTemp[7].done = true;
  178. if (v2.id === 605 && v2.authority) dataInTemp[8].done = true;
  179. });
  180. }
  181. });
  182. setData(dataTemp.filter((v) => v.done));
  183. setDadaIn(dataInTemp.filter((v) => v.done));
  184. }, [powerInfo]);
  185. useEffect(() => {
  186. // 没有藏品登记页面的权限 跳到有权限的页面
  187. if (data[0].id !== 1) {
  188. history.replace(data[0].path);
  189. }
  190. }, [data]);
  191. return (
  192. <div className={styles.Object}>
  193. <div className="leftBar">
  194. <LeftBar data={data} />
  195. </div>
  196. {/* 三级路由页面 */}
  197. <div className="rightMain">
  198. <React.Suspense fallback={<SpinLoding />}>
  199. <Switch>
  200. {data.map((v: any, i: number) => (
  201. <AuthRoute
  202. exact
  203. // exact={i === 0 ? true : false}
  204. key={v.id}
  205. path={v.path}
  206. component={v.Com}
  207. />
  208. ))}
  209. {/* 查看页面,无需权限 */}
  210. <AuthRoute path="/object/1/look" component={LookObject1} />
  211. <AuthRoute path="/object/2/look" component={LookObject2} />
  212. <AuthRoute path="/object/3/look" component={LookObject3} />
  213. <AuthRoute path="/object/4/look" component={LookObject4} />
  214. <AuthRoute path="/object/5/look" component={LookObject5} />
  215. <AuthRoute path="/object/6/look" component={LookObject6} />
  216. {/* 新增 */}
  217. {dataIn.map((v: any) => (
  218. <AuthRoute key={v.id} path={v.path} component={v.Com} />
  219. ))}
  220. <Route path="*" component={NotFound} />
  221. </Switch>
  222. </React.Suspense>
  223. </div>
  224. </div>
  225. );
  226. }