From eab76cd34bff799686f68e6b70f86c9001e4913f Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期五, 23 五月 2025 09:41:21 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/devlop' into devlop

---
 rsf-admin/src/App.jsx |  107 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 71 insertions(+), 36 deletions(-)

diff --git a/rsf-admin/src/App.jsx b/rsf-admin/src/App.jsx
index 6d3a10a..c8601b9 100644
--- a/rsf-admin/src/App.jsx
+++ b/rsf-admin/src/App.jsx
@@ -1,5 +1,5 @@
 import React, { useState, useRef, useEffect, useMemo } from "react";
-import { Route } from 'react-router-dom'
+import { Route } from "react-router-dom";
 import {
   Admin,
   Resource,
@@ -9,46 +9,82 @@
   StoreContextProvider,
   resolveBrowserLocale,
 } from "react-admin";
-import polyglotI18nProvider from 'ra-i18n-polyglot';
-import englishMessages from './i18n/en';
+import polyglotI18nProvider from "ra-i18n-polyglot";
+import englishMessages from "./i18n/en";
+import zhMessages from "./i18n/zh";
 import { Layout } from "./layout";
 import AuthProvider from "./config/authProvider";
 import DataProvider from "./config/dataProvider";
-import Dashboard from "./page/dashboard/Dashboard";
-import Settings from "./page/settings/Settings";
-import Login from "./page/login/index1";
-import * as Common from './utils/common'
-import { themes } from './themes/themes';
-import { SPA_NAME, SPA_VERSION, DEFAULT_THEME_NAME, DEFAULT_THEME_MODE, DATA_PROVIDER_SPRING } from "./config/setting";
+import Dashboard from "./page/dashboard";
+import Settings from "./page/settings";
+import Login from "./page/login";
+import * as Common from "./utils/common";
+import { themes } from "./themes/themes";
+import {
+  SPA_NAME,
+  SPA_VERSION,
+  DEFAULT_THEME_NAME,
+  DEFAULT_THEME_MODE,
+  DATA_PROVIDER_SPRING,
+} from "./config/setting";
 import ResourceContent from "./page/ResourceContent";
+import { getSystemInfo, getSystemDicts, tenants } from "@/api/auth";
+import chineseMessages from 'ra-language-chinese';
+import { createTheme, ThemeProvider } from '@mui/material/styles';
+import { zhCN, frFR, enUS } from '@mui/material/locale';
+
+
+const getMaterialUILocale = (locale) => {
+  switch (locale) {
+    case 'en':
+      return enUS;
+    case 'fr':
+      return frFR;
+    default:
+      return zhCN;
+  }
+};
 
 const i18nProvider = polyglotI18nProvider(
-  locale => {
-    if (locale === 'zh') {
-      return import('./i18n/zh').then(messages => messages.default);
+  (locale) => {
+    if (locale === "en") {
+      return import("./i18n/en").then((messages) => messages.default);
     }
-    // fallback
-    return englishMessages;
+    return { ...chineseMessages, ...zhMessages };
   },
-  // default
-  // 'en',
-  resolveBrowserLocale('en', { fullLocale: true }),
+  "zh",
   [
-    { locale: 'en', name: 'English' },
-    { locale: 'zh', name: '绠�浣撲腑鏂�' },
+    { locale: "en", name: "English" },
+    { locale: "zh", name: "绠�浣撲腑鏂�" },
+    { locale: "jp", name: "鏃ユ湰瑾�" },
+    { locale: "kr", name: "頃滉淡鞚�" },
+    { locale: "ru", name: "Russian" },
+    { locale: "lk", name: "袪褍褋褋泻懈泄" },
+    { locale: "es", name: "Espa帽ola" },
   ],
   {
     // msg in console
     allowMissing: true,
-  }
+  },
 );
+
 
 const store = localStorageStore(SPA_VERSION, SPA_NAME);
 
 const App = () => {
-  const [themeName] = useStore('themeName', DEFAULT_THEME_NAME);
-  const lightTheme = themes.find(theme => theme.name === themeName)?.light;
-  const darkTheme = themes.find(theme => theme.name === themeName)?.dark;
+  const [themeName] = useStore("themeName", DEFAULT_THEME_NAME);
+  const lightTheme = themes.find((theme) => theme.name === themeName)?.light;
+  const darkTheme = themes.find((theme) => theme.name === themeName)?.dark;
+  const [locale, setLocale] = useState('zh');
+  const theme = createTheme(
+    {
+      ...lightTheme
+    }, getMaterialUILocale(locale))
+  useEffect(() => {
+    getSystemInfo().then((data) => {
+      localStorage.setItem("system", JSON.stringify(data));
+    })
+  }, []);
 
   return (
     <>
@@ -60,24 +96,23 @@
         lightTheme={lightTheme}
         darkTheme={darkTheme}
         defaultTheme={DEFAULT_THEME_MODE}
+        theme={theme}
         i18nProvider={i18nProvider}
         dataProvider={DataProvider(DATA_PROVIDER_SPRING)}
         loginPage={Login}
         dashboard={Dashboard}
       >
-        {permissions => (
+        {(permissions) => (
           <>
-            {
-              Common.extractNavMenus(permissions)?.map(node => {
-                return (
-                  <Resource
-                    key={node.id}
-                    name={node.component}
-                    {...ResourceContent(node)}
-                  />
-                )
-              })
-            }
+            {Common.extractNavMenus(permissions)?.map((node) => {
+              return (
+                <Resource
+                  key={node.id}
+                  name={node.component}
+                  {...ResourceContent(node)}
+                />
+              );
+            })}
           </>
         )}
         {/* CustomRoutes don't trigger checkAuth */}
@@ -87,7 +122,7 @@
         </CustomRoutes>
       </Admin>
     </>
-  )
+  );
 };
 
 const AppWrapper = () => (

--
Gitblit v1.9.1