diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity
new file mode 100644
index 00000000..3113f6c5
--- /dev/null
+++ b/node_modules/.yarn-integrity
@@ -0,0 +1,16 @@
+{
+ "systemParams": "darwin-arm64-93",
+ "modulesFolders": [
+ "node_modules"
+ ],
+ "flags": [],
+ "linkedModules": [],
+ "topLevelPatterns": [
+ "js-cookie@^3.0.5"
+ ],
+ "lockfileEntries": {
+ "js-cookie@^3.0.5": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc"
+ },
+ "files": [],
+ "artifacts": {}
+}
\ No newline at end of file
diff --git a/node_modules/js-cookie/LICENSE b/node_modules/js-cookie/LICENSE
new file mode 100644
index 00000000..3c581cad
--- /dev/null
+++ b/node_modules/js-cookie/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Copyright 2018 Klaus Hartl, Fagner Brack, GitHub Contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/js-cookie/README.md b/node_modules/js-cookie/README.md
new file mode 100644
index 00000000..e397e514
--- /dev/null
+++ b/node_modules/js-cookie/README.md
@@ -0,0 +1,305 @@
+
+
+
+
+# JavaScript Cookie [](https://github.com/js-cookie/js-cookie/actions/workflows/ci.yml) [](https://github.com/js-cookie/js-cookie/actions/workflows/browserstack.yml) [](https://standardjs.com) [](https://codeclimate.com/github/js-cookie/js-cookie) [](https://www.npmjs.com/package/js-cookie) [](https://www.npmjs.com/package/js-cookie) [](https://www.jsdelivr.com/package/npm/js-cookie)
+
+A simple, lightweight JavaScript API for handling cookies
+
+- Works in [all](https://www.browserstack.com/automate/public-build/b3VDaHAxVDg0NDdCRmtUOWg0SlQzK2NsRVhWTjlDQS9qdGJoak1GMzJiVT0tLVhwZHNvdGRoY284YVRrRnI3eU1JTnc9PQ==--5e88ffb3ca116001d7ef2cfb97a4128ac31174c2) browsers
+- Accepts [any](#encoding) character
+- [Heavily](test) tested
+- No dependency
+- Supports ES modules
+- Supports AMD/CommonJS
+- [RFC 6265](https://tools.ietf.org/html/rfc6265) compliant
+- Useful [Wiki](https://github.com/js-cookie/js-cookie/wiki)
+- Enable [custom encoding/decoding](#converters)
+- **< 800 bytes** gzipped!
+
+**👉👉 If you're viewing this at https://github.com/js-cookie/js-cookie, you're reading the documentation for the main branch.
+[View documentation for the latest release.](https://github.com/js-cookie/js-cookie/tree/latest#readme) 👈👈**
+
+## Installation
+
+### NPM
+
+JavaScript Cookie supports [npm](https://www.npmjs.com/package/js-cookie) under the name `js-cookie`.
+
+```bash
+npm i js-cookie
+```
+
+The npm package has a `module` field pointing to an ES module variant of the library, mainly to provide support for ES module aware bundlers, whereas its `browser` field points to an UMD module for full backward compatibility.
+
+_Not all browsers support ES modules natively yet_. For this reason the npm package/release provides both the ES and UMD module variant and you may want to include the ES module along with the UMD fallback to account for this:
+
+### CDN
+
+Alternatively, include js-cookie via [jsDelivr CDN](https://www.jsdelivr.com/package/npm/js-cookie).
+
+## Basic Usage
+
+Create a cookie, valid across the entire site:
+
+```javascript
+Cookies.set('name', 'value')
+```
+
+Create a cookie that expires 7 days from now, valid across the entire site:
+
+```javascript
+Cookies.set('name', 'value', { expires: 7 })
+```
+
+Create an expiring cookie, valid to the path of the current page:
+
+```javascript
+Cookies.set('name', 'value', { expires: 7, path: '' })
+```
+
+Read cookie:
+
+```javascript
+Cookies.get('name') // => 'value'
+Cookies.get('nothing') // => undefined
+```
+
+Read all visible cookies:
+
+```javascript
+Cookies.get() // => { name: 'value' }
+```
+
+_Note: It is not possible to read a particular cookie by passing one of the cookie attributes (which may or may not
+have been used when writing the cookie in question):_
+
+```javascript
+Cookies.get('foo', { domain: 'sub.example.com' }) // `domain` won't have any effect...!
+```
+
+The cookie with the name `foo` will only be available on `.get()` if it's visible from where the
+code is called; the domain and/or path attribute will not have an effect when reading.
+
+Delete cookie:
+
+```javascript
+Cookies.remove('name')
+```
+
+Delete a cookie valid to the path of the current page:
+
+```javascript
+Cookies.set('name', 'value', { path: '' })
+Cookies.remove('name') // fail!
+Cookies.remove('name', { path: '' }) // removed!
+```
+
+_IMPORTANT! When deleting a cookie and you're not relying on the [default attributes](#cookie-attributes), you must pass the exact same path and domain attributes that were used to set the cookie:_
+
+```javascript
+Cookies.remove('name', { path: '', domain: '.yourdomain.com' })
+```
+
+_Note: Removing a nonexistent cookie neither raises any exception nor returns any value._
+
+## Namespace conflicts
+
+If there is any danger of a conflict with the namespace `Cookies`, the `noConflict` method will allow you to define a new namespace and preserve the original one. This is especially useful when running the script on third party sites e.g. as part of a widget or SDK.
+
+```javascript
+// Assign the js-cookie api to a different variable and restore the original "window.Cookies"
+var Cookies2 = Cookies.noConflict()
+Cookies2.set('name', 'value')
+```
+
+_Note: The `.noConflict` method is not necessary when using AMD or CommonJS, thus it is not exposed in those environments._
+
+## Encoding
+
+This project is [RFC 6265](http://tools.ietf.org/html/rfc6265#section-4.1.1) compliant. All special characters that are not allowed in the cookie-name or cookie-value are encoded with each one's UTF-8 Hex equivalent using [percent-encoding](http://en.wikipedia.org/wiki/Percent-encoding).
+The only character in cookie-name or cookie-value that is allowed and still encoded is the percent `%` character, it is escaped in order to interpret percent input as literal.
+Please note that the default encoding/decoding strategy is meant to be interoperable [only between cookies that are read/written by js-cookie](https://github.com/js-cookie/js-cookie/pull/200#discussion_r63270778). To override the default encoding/decoding strategy you need to use a [converter](#converters).
+
+_Note: According to [RFC 6265](https://tools.ietf.org/html/rfc6265#section-6.1), your cookies may get deleted if they are too big or there are too many cookies in the same domain, [more details here](https://github.com/js-cookie/js-cookie/wiki/Frequently-Asked-Questions#why-are-my-cookies-being-deleted)._
+
+## Cookie Attributes
+
+Cookie attribute defaults can be set globally by creating an instance of the api via `withAttributes()`, or individually for each call to `Cookies.set(...)` by passing a plain object as the last argument. Per-call attributes override the default attributes.
+
+### expires
+
+Define when the cookie will be removed. Value must be a [`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) which will be interpreted as days from time of creation or a [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) instance. If omitted, the cookie becomes a session cookie.
+
+To create a cookie that expires in less than a day, you can check the [FAQ on the Wiki](https://github.com/js-cookie/js-cookie/wiki/Frequently-Asked-Questions#expire-cookies-in-less-than-a-day).
+
+**Default:** Cookie is removed when the user closes the browser.
+
+**Examples:**
+
+```javascript
+Cookies.set('name', 'value', { expires: 365 })
+Cookies.get('name') // => 'value'
+Cookies.remove('name')
+```
+
+### path
+
+A [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) indicating the path where the cookie is visible.
+
+**Default:** `/`
+
+**Examples:**
+
+```javascript
+Cookies.set('name', 'value', { path: '' })
+Cookies.get('name') // => 'value'
+Cookies.remove('name', { path: '' })
+```
+
+**Note regarding Internet Explorer:**
+
+> Due to an obscure bug in the underlying WinINET InternetGetCookie implementation, IE’s document.cookie will not return a cookie if it was set with a path attribute containing a filename.
+
+(From [Internet Explorer Cookie Internals (FAQ)](http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx))
+
+This means one cannot set a path using `window.location.pathname` in case such pathname contains a filename like so: `/check.html` (or at least, such cookie cannot be read correctly).
+
+In fact, you should never allow untrusted input to set the cookie attributes or you might be exposed to a [XSS attack](https://github.com/js-cookie/js-cookie/issues/396).
+
+### domain
+
+A [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) indicating a valid domain where the cookie should be visible. The cookie will also be visible to all subdomains.
+
+**Default:** Cookie is visible only to the domain or subdomain of the page where the cookie was created, except for Internet Explorer (see below).
+
+**Examples:**
+
+Assuming a cookie that is being created on `site.com`:
+
+```javascript
+Cookies.set('name', 'value', { domain: 'subdomain.site.com' })
+Cookies.get('name') // => undefined (need to read at 'subdomain.site.com')
+```
+
+**Note regarding Internet Explorer default behavior:**
+
+> Q3: If I don’t specify a DOMAIN attribute (for) a cookie, IE sends it to all nested subdomains anyway?
+> A: Yes, a cookie set on example.com will be sent to sub2.sub1.example.com.
+> Internet Explorer differs from other browsers in this regard.
+
+(From [Internet Explorer Cookie Internals (FAQ)](http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx))
+
+This means that if you omit the `domain` attribute, it will be visible for a subdomain in IE.
+
+### secure
+
+Either `true` or `false`, indicating if the cookie transmission requires a secure protocol (https).
+
+**Default:** No secure protocol requirement.
+
+**Examples:**
+
+```javascript
+Cookies.set('name', 'value', { secure: true })
+Cookies.get('name') // => 'value'
+Cookies.remove('name')
+```
+
+### sameSite
+
+A [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String), allowing to control whether the browser is sending a cookie along with cross-site requests.
+
+Default: not set.
+
+**Note that more recent browsers are making "Lax" the default value even without specifiying anything here.**
+
+**Examples:**
+
+```javascript
+Cookies.set('name', 'value', { sameSite: 'strict' })
+Cookies.get('name') // => 'value'
+Cookies.remove('name')
+```
+
+### Setting up defaults
+
+```javascript
+const api = Cookies.withAttributes({ path: '/', domain: '.example.com' })
+```
+
+## Converters
+
+### Read
+
+Create a new instance of the api that overrides the default decoding implementation. All get methods that rely in a proper decoding to work, such as `Cookies.get()` and `Cookies.get('name')`, will run the given converter for each cookie. The returned value will be used as the cookie value.
+
+Example from reading one of the cookies that can only be decoded using the `escape` function:
+
+```javascript
+document.cookie = 'escaped=%u5317'
+document.cookie = 'default=%E5%8C%97'
+var cookies = Cookies.withConverter({
+ read: function (value, name) {
+ if (name === 'escaped') {
+ return unescape(value)
+ }
+ // Fall back to default for all other cookies
+ return Cookies.converter.read(value, name)
+ }
+})
+cookies.get('escaped') // 北
+cookies.get('default') // 北
+cookies.get() // { escaped: '北', default: '北' }
+```
+
+### Write
+
+Create a new instance of the api that overrides the default encoding implementation:
+
+```javascript
+Cookies.withConverter({
+ write: function (value, name) {
+ return value.toUpperCase()
+ }
+})
+```
+
+## TypeScript declarations
+
+```bash
+npm i @types/js-cookie
+```
+
+## Server-side integration
+
+Check out the [Servers Docs](SERVER_SIDE.md)
+
+## Contributing
+
+Check out the [Contributing Guidelines](CONTRIBUTING.md)
+
+## Security
+
+For vulnerability reports, send an e-mail to `js-cookie at googlegroups dot com`
+
+## Releasing
+
+Releasing should be done via the `Release` GitHub Actions workflow, so that published packages on npmjs.com have package provenance.
+
+GitHub releases are created as a draft and need to be published manually!
+(This is so we are able to craft suitable release notes before publishing.)
+
+## Supporters
+
+
+
+
+
+Many thanks to [BrowserStack](https://www.browserstack.com/) for providing unlimited browser testing free of cost.
+
+## Authors
+
+- [Klaus Hartl](https://github.com/carhartl)
+- [Fagner Brack](https://github.com/FagnerMartinsBrack)
+- And awesome [contributors](https://github.com/js-cookie/js-cookie/graphs/contributors)
diff --git a/node_modules/js-cookie/dist/js.cookie.js b/node_modules/js-cookie/dist/js.cookie.js
new file mode 100644
index 00000000..373bef76
--- /dev/null
+++ b/node_modules/js-cookie/dist/js.cookie.js
@@ -0,0 +1,147 @@
+/*! js-cookie v3.0.5 | MIT */
+;
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {
+ var current = global.Cookies;
+ var exports = global.Cookies = factory();
+ exports.noConflict = function () { global.Cookies = current; return exports; };
+ })());
+})(this, (function () { 'use strict';
+
+ /* eslint-disable no-var */
+ function assign (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ for (var key in source) {
+ target[key] = source[key];
+ }
+ }
+ return target
+ }
+ /* eslint-enable no-var */
+
+ /* eslint-disable no-var */
+ var defaultConverter = {
+ read: function (value) {
+ if (value[0] === '"') {
+ value = value.slice(1, -1);
+ }
+ return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent)
+ },
+ write: function (value) {
+ return encodeURIComponent(value).replace(
+ /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,
+ decodeURIComponent
+ )
+ }
+ };
+ /* eslint-enable no-var */
+
+ /* eslint-disable no-var */
+
+ function init (converter, defaultAttributes) {
+ function set (name, value, attributes) {
+ if (typeof document === 'undefined') {
+ return
+ }
+
+ attributes = assign({}, defaultAttributes, attributes);
+
+ if (typeof attributes.expires === 'number') {
+ attributes.expires = new Date(Date.now() + attributes.expires * 864e5);
+ }
+ if (attributes.expires) {
+ attributes.expires = attributes.expires.toUTCString();
+ }
+
+ name = encodeURIComponent(name)
+ .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)
+ .replace(/[()]/g, escape);
+
+ var stringifiedAttributes = '';
+ for (var attributeName in attributes) {
+ if (!attributes[attributeName]) {
+ continue
+ }
+
+ stringifiedAttributes += '; ' + attributeName;
+
+ if (attributes[attributeName] === true) {
+ continue
+ }
+
+ // Considers RFC 6265 section 5.2:
+ // ...
+ // 3. If the remaining unparsed-attributes contains a %x3B (";")
+ // character:
+ // Consume the characters of the unparsed-attributes up to,
+ // not including, the first %x3B (";") character.
+ // ...
+ stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
+ }
+
+ return (document.cookie =
+ name + '=' + converter.write(value, name) + stringifiedAttributes)
+ }
+
+ function get (name) {
+ if (typeof document === 'undefined' || (arguments.length && !name)) {
+ return
+ }
+
+ // To prevent the for loop in the first place assign an empty array
+ // in case there are no cookies at all.
+ var cookies = document.cookie ? document.cookie.split('; ') : [];
+ var jar = {};
+ for (var i = 0; i < cookies.length; i++) {
+ var parts = cookies[i].split('=');
+ var value = parts.slice(1).join('=');
+
+ try {
+ var found = decodeURIComponent(parts[0]);
+ jar[found] = converter.read(value, found);
+
+ if (name === found) {
+ break
+ }
+ } catch (e) {}
+ }
+
+ return name ? jar[name] : jar
+ }
+
+ return Object.create(
+ {
+ set,
+ get,
+ remove: function (name, attributes) {
+ set(
+ name,
+ '',
+ assign({}, attributes, {
+ expires: -1
+ })
+ );
+ },
+ withAttributes: function (attributes) {
+ return init(this.converter, assign({}, this.attributes, attributes))
+ },
+ withConverter: function (converter) {
+ return init(assign({}, this.converter, converter), this.attributes)
+ }
+ },
+ {
+ attributes: { value: Object.freeze(defaultAttributes) },
+ converter: { value: Object.freeze(converter) }
+ }
+ )
+ }
+
+ var api = init(defaultConverter, { path: '/' });
+ /* eslint-enable no-var */
+
+ return api;
+
+}));
diff --git a/node_modules/js-cookie/dist/js.cookie.min.js b/node_modules/js-cookie/dist/js.cookie.min.js
new file mode 100644
index 00000000..962d48d0
--- /dev/null
+++ b/node_modules/js-cookie/dist/js.cookie.min.js
@@ -0,0 +1,2 @@
+/*! js-cookie v3.0.5 | MIT */
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t=14"
+ }
+}
diff --git a/threadpool/console-new/.eslintrc.js b/threadpool/console-new/.eslintrc.js
index 38eb2edf..92c71e51 100644
--- a/threadpool/console-new/.eslintrc.js
+++ b/threadpool/console-new/.eslintrc.js
@@ -26,5 +26,7 @@ module.exports = {
'@typescript-eslint/no-explicit-any': 0,
'@typescript-eslint/no-non-null-assertion': 0,
'@typescript-eslint/no-var-requires': 0,
+ 'import/no-anonymous-default-export': 0,
+ 'jsx-a11y/anchor-is-valid': 0,
},
};
diff --git a/threadpool/console-new/.prettierignore b/threadpool/console-new/.prettierignore
index 353efa09..473d9c18 100644
--- a/threadpool/console-new/.prettierignore
+++ b/threadpool/console-new/.prettierignore
@@ -1,3 +1,4 @@
/.git
node_modules
-build
\ No newline at end of file
+build
+src/lib/*
\ No newline at end of file
diff --git a/threadpool/console-new/craco.config.js b/threadpool/console-new/craco.config.js
index 5ad94a67..f06ec6af 100644
--- a/threadpool/console-new/craco.config.js
+++ b/threadpool/console-new/craco.config.js
@@ -1,4 +1,3 @@
-// craco.config.js
const CracoLessPlugin = require('craco-less');
const lessModuleRegex = /\.module\.less$/;
const path = require('path');
@@ -33,20 +32,29 @@ module.exports = {
},
},
],
- // style: {
- // modules: {
- // localIdentName: '[local]_[hash:base64:5]', // 可以自定义你的类名生成规则
- // },
- // },
webpack: {
alias: {
'@': resolve('src'),
},
},
devServer: {
- port: 3001,
+ port: 3000,
headers: {
'Access-Control-Allow-Origin': '*',
},
+ proxy: {
+ '/hippo4j/v1/cs': {
+ target: 'http://console.hippo4j.cn:6691/hippo4j/v1/cs',
+ pathRewrite: { '^/hippo4j/v1/cs': '' },
+ changeOrigin: true,
+ secure: false,
+ onProxyReq: proxyReq => {
+ console.log(`Proxying request to: ${proxyReq.path}`);
+ },
+ onProxyRes: proxyRes => {
+ console.log(`Received response with status: ${proxyRes.statusCode}`);
+ },
+ },
+ },
},
};
diff --git a/threadpool/console-new/package.json b/threadpool/console-new/package.json
index 353e4cf1..a3668743 100644
--- a/threadpool/console-new/package.json
+++ b/threadpool/console-new/package.json
@@ -10,6 +10,7 @@
"@testing-library/user-event": "^13.5.0",
"ahooks": "^3.7.8",
"antd": "^5.4.7",
+ "classnames": "^2.3.2",
"dayjs": "^1.11.9",
"i18next": "^23.5.1",
"i18next-browser-languagedetector": "^7.1.0",
@@ -66,6 +67,7 @@
"eslint-plugin-jsx-a11y": "^6.7.1",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.32.2",
+ "http-proxy-middleware": "^2.0.6",
"husky": "^8.0.0",
"less-loader": "^11.1.0",
"lint-staged": "^13.2.2",
diff --git a/threadpool/console-new/src/App.tsx b/threadpool/console-new/src/App.tsx
index d03544f5..3dba11da 100644
--- a/threadpool/console-new/src/App.tsx
+++ b/threadpool/console-new/src/App.tsx
@@ -1,8 +1,6 @@
import LayoutCom from './components/layout-com';
import { Routes, Route, Link } from 'react-router-dom';
-
import routeList from './route';
-import Login from '@/page/login';
import { MenuProps } from 'antd';
import { useTran } from './hooks';
import { STR_MAP } from './config/i18n/locales/constants';
@@ -23,9 +21,8 @@ const App = () => {
];
return (
-
+
-
{routeList.map(item => (
))}
diff --git a/threadpool/console-new/src/components/header/index.module.less b/threadpool/console-new/src/components/header/index.module.less
index e4cf7f42..07c850e0 100644
--- a/threadpool/console-new/src/components/header/index.module.less
+++ b/threadpool/console-new/src/components/header/index.module.less
@@ -5,7 +5,7 @@
.logo {
display: flex;
flex-direction: column;
- width: 200px;
+ width: 50px;
img {
flex: 1;
object-fit: contain;
diff --git a/threadpool/console-new/src/components/header/index.tsx b/threadpool/console-new/src/components/header/index.tsx
index dddb3252..fdea38d5 100644
--- a/threadpool/console-new/src/components/header/index.tsx
+++ b/threadpool/console-new/src/components/header/index.tsx
@@ -2,13 +2,16 @@ import React, { useContext } from 'react';
import style from './index.module.less';
import { UserOutlined } from '@ant-design/icons';
import { Avatar, Button, Col, Dropdown, Row, Switch } from 'antd';
-import { useThemeMode } from '@/hooks';
import { MyContext } from '@/context';
import IconFont from '@/components/icon';
+import { LANG_NAME, MyStoreValues, THEME_NAME } from '@/typings';
+import { useNavigate } from 'react-router-dom';
const HeaderChild = () => {
- const { isDark, setIsDark } = useThemeMode();
- const { lang, setLang } = useContext(MyContext);
+ const { lang, themeName, setLang, setThemeName } = useContext(MyContext);
+ const navigate = useNavigate();
+ // console.log('setLang:::', setLang);
+ // setLang && setLang(LANG_NAME.EN);
const items = [
{
@@ -29,18 +32,14 @@ const HeaderChild = () => {
},
{
key: '3',
- label: (
-
- 登出
-
- ),
+ label: navigate('/login')}>登出,
},
];
return (