|
|
@@ -1,5 +1,4 @@
|
|
|
-import {FC} from 'react';
|
|
|
-import {RouteObject, useRoutes} from 'react-router-dom';
|
|
|
+import {RouteObject, createBrowserRouter} from 'react-router-dom';
|
|
|
import {
|
|
|
HOME_PATH,
|
|
|
MAIN_PATH,
|
|
|
@@ -83,6 +82,43 @@ import {
|
|
|
} from './routes';
|
|
|
import Main from '@pages/main';
|
|
|
import Home from '@pages/home';
|
|
|
+import {userStore} from '@stores';
|
|
|
+import {getSettings} from '@apis';
|
|
|
+import {SettingsData} from '@models';
|
|
|
+
|
|
|
+async function preloadSettings(url: string) {
|
|
|
+ try {
|
|
|
+ const {id} = userStore.getState();
|
|
|
+
|
|
|
+ const result = await getSettings({userId: String(id), track: url});
|
|
|
+
|
|
|
+ if (result.msg === '200') return new Map([[url, result.data]]);
|
|
|
+
|
|
|
+ return new Map([[url, null]]);
|
|
|
+ } catch (error) {
|
|
|
+ return new Map([[url, null]]);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function preloadSettingsList(keys: string[]) {
|
|
|
+ const data = await Promise.allSettled([
|
|
|
+ preloadSettings(keys[0]),
|
|
|
+ preloadSettings(keys[1]),
|
|
|
+ ]);
|
|
|
+ const map = new Map<string, SettingsData | null>();
|
|
|
+
|
|
|
+ data.forEach(function (val, idx) {
|
|
|
+ const key = keys[idx];
|
|
|
+
|
|
|
+ if (val.status === 'fulfilled') {
|
|
|
+ map.set(key, val.value.get(key) || null);
|
|
|
+ } else {
|
|
|
+ map.set(key, null);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return map;
|
|
|
+}
|
|
|
|
|
|
export const routes: RouteObject[] = [
|
|
|
{path: LOGIN_PATH, element: <Login />},
|
|
|
@@ -91,52 +127,256 @@ export const routes: RouteObject[] = [
|
|
|
element: <Home />,
|
|
|
},
|
|
|
{path: MAIN_PATH, element: <Main />},
|
|
|
- {path: MENU_PATH, element: <Menu />},
|
|
|
- {path: ROLE_PATH, element: <Role />},
|
|
|
- {path: USER_PATH, element: <User />},
|
|
|
- {path: STORAGE_PATH, element: <Storage />},
|
|
|
- {path: GOODS_PATH, element: <Goods />},
|
|
|
- {path: PDA_MENU_PATH, element: <Pda />},
|
|
|
- {path: CONTAINER_PATH, element: <Container />},
|
|
|
- {path: MATTER_PATH, element: <Matter />},
|
|
|
- {path: QUALITY_PATH, element: <Quality />},
|
|
|
- {path: RAW_IN_STREAM_PATH, element: <RawInStream />},
|
|
|
- {path: RAW_OUT_STREAM_PATH, element: <RawOutStream />},
|
|
|
- {path: SEMI_REPORT_PATH, element: <SemiReport />},
|
|
|
- {path: SEMI_DRAW_PATH, element: <SemiDraw />},
|
|
|
- {path: SEMI_IN_STREAM_PATH, element: <SemiInStream />},
|
|
|
- {path: SEMI_OUT_STREAM_PATH, element: <SemiOutStream />},
|
|
|
- {path: FINISH_PRODUCT_IN_STREAM_PATH, element: <ProductInStream />},
|
|
|
- {path: FINISH_PRODUCT_OUT_STREAM_PATH, element: <ProductOutStream />},
|
|
|
- {path: DEAD_PRODUCT_PATH, element: <DeadProduct />},
|
|
|
- {path: RESERVE_WARNING_PATH, element: <ReserveWarning />},
|
|
|
- {path: PURCHASE_PATH, element: <PurchaseOrder />},
|
|
|
- {path: MATERIAL_BIND_PATH, element: <MaterialBind />},
|
|
|
- {path: STOCK_PATH, element: <Stock />},
|
|
|
- {path: DICTIONARY_PATH, element: <Dictionary />},
|
|
|
- {path: GS_INTERFACE_LOG_PATH, element: <GSInterfaceLog />},
|
|
|
+ {
|
|
|
+ path: MENU_PATH,
|
|
|
+ element: <Menu />,
|
|
|
+ async loader() {
|
|
|
+ const keys = [MENU_PATH, '/menu_second_level'];
|
|
|
+
|
|
|
+ return preloadSettingsList(keys);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: ROLE_PATH,
|
|
|
+ element: <Role />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(ROLE_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: USER_PATH,
|
|
|
+ element: <User />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(USER_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: STORAGE_PATH,
|
|
|
+ element: <Storage />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(USER_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: GOODS_PATH,
|
|
|
+ element: <Goods />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(GOODS_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: PDA_MENU_PATH,
|
|
|
+ element: <Pda />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(PDA_MENU_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: CONTAINER_PATH,
|
|
|
+ element: <Container />,
|
|
|
+ async loader() {
|
|
|
+ const keys = [CONTAINER_PATH, '/container_scrap'];
|
|
|
+
|
|
|
+ return preloadSettingsList(keys);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: MATTER_PATH,
|
|
|
+ element: <Matter />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(MATTER_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: QUALITY_PATH,
|
|
|
+ element: <Quality />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(QUALITY_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: RAW_IN_STREAM_PATH,
|
|
|
+ element: <RawInStream />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(RAW_IN_STREAM_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: RAW_OUT_STREAM_PATH,
|
|
|
+ element: <RawOutStream />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(RAW_OUT_STREAM_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: SEMI_REPORT_PATH,
|
|
|
+ element: <SemiReport />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(SEMI_REPORT_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: SEMI_DRAW_PATH,
|
|
|
+ element: <SemiDraw />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(SEMI_DRAW_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: SEMI_IN_STREAM_PATH,
|
|
|
+ element: <SemiInStream />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(SEMI_IN_STREAM_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: SEMI_OUT_STREAM_PATH,
|
|
|
+ element: <SemiOutStream />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(SEMI_OUT_STREAM_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: FINISH_PRODUCT_IN_STREAM_PATH,
|
|
|
+ element: <ProductInStream />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(FINISH_PRODUCT_IN_STREAM_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: FINISH_PRODUCT_OUT_STREAM_PATH,
|
|
|
+ element: <ProductOutStream />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(FINISH_PRODUCT_OUT_STREAM_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: DEAD_PRODUCT_PATH,
|
|
|
+ element: <DeadProduct />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(DEAD_PRODUCT_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: RESERVE_WARNING_PATH,
|
|
|
+ element: <ReserveWarning />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(RESERVE_WARNING_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: PURCHASE_PATH,
|
|
|
+ element: <PurchaseOrder />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(PURCHASE_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: MATERIAL_BIND_PATH,
|
|
|
+ element: <MaterialBind />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(MATERIAL_BIND_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: STOCK_PATH,
|
|
|
+ element: <Stock />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(STOCK_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: DICTIONARY_PATH,
|
|
|
+ element: <Dictionary />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(DICTIONARY_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: GS_INTERFACE_LOG_PATH,
|
|
|
+ element: <GSInterfaceLog />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(GS_INTERFACE_LOG_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
{
|
|
|
path: PRODUCTION_REQUISITION_PATH,
|
|
|
element: <ProductionRequisitionOrder />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(PRODUCTION_REQUISITION_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: SELL_ORDER_PATH,
|
|
|
+ element: <SellOrder />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(SELL_ORDER_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: RELOCAT_ORDER_PATH,
|
|
|
+ element: <RelcationOrder />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(RELOCAT_ORDER_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: PRODUCT_REPORT_PATH,
|
|
|
+ element: <ProductReport />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(PRODUCT_REPORT_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: ORDER_LOG_PATH,
|
|
|
+ element: <OrderDeleteLog />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(ORDER_LOG_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: INVENTORY_PATH,
|
|
|
+ element: <Inventory />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(INVENTORY_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: GS_ERROR_LOG_PATH,
|
|
|
+ element: <GSErrorLog />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(GS_ERROR_LOG_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: OTHER_IN_PATH,
|
|
|
+ element: <OtherIn />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(OTHER_IN_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: OTHER_OUT_PATH,
|
|
|
+ element: <OtherOut />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(OTHER_OUT_PATH);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: SCREEN_PURCHASE_PATH,
|
|
|
+ element: <ScreenPurchase />,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: DELIVER_TRACE_PATH,
|
|
|
+ element: <DeliverTraces />,
|
|
|
+ async loader() {
|
|
|
+ return await preloadSettings(PRODUCTION_REQUISITION_PATH);
|
|
|
+ },
|
|
|
},
|
|
|
- {path: SELL_ORDER_PATH, element: <SellOrder />},
|
|
|
- {path: RELOCAT_ORDER_PATH, element: <RelcationOrder />},
|
|
|
- {path: PRODUCT_REPORT_PATH, element: <ProductReport />},
|
|
|
- {path: ORDER_LOG_PATH, element: <OrderDeleteLog />},
|
|
|
- {path: INVENTORY_PATH, element: <Inventory />},
|
|
|
- {path: GS_ERROR_LOG_PATH, element: <GSErrorLog />},
|
|
|
- {path: OTHER_IN_PATH, element: <OtherIn />},
|
|
|
- {path: OTHER_OUT_PATH, element: <OtherOut />},
|
|
|
{path: NO_PERMISSION_PATH, element: <NoPermision />},
|
|
|
- {path: SCREEN_PURCHASE_PATH, element: <ScreenPurchase />},
|
|
|
- {path: DELIVER_TRACE_PATH, element: <DeliverTraces />},
|
|
|
{path: '*', element: <NotFound />},
|
|
|
];
|
|
|
|
|
|
-export const RootRoutes: FC = function () {
|
|
|
- const Routes = useRoutes(routes);
|
|
|
-
|
|
|
- return Routes;
|
|
|
-};
|
|
|
+export const router = createBrowserRouter(routes);
|
|
|
|
|
|
export * from './name';
|