Browse Source

perf(menu): optimize layout menu

vben 4 years ago
parent
commit
96c10d6c0f

+ 10 - 0
CHANGELOG.zh_CN.md

@@ -1,3 +1,13 @@
+## Wip
+
+### ⚡ Performance Improvements
+
+- 菜单性能继续优化
+
+### 🎫 Chores
+
+- 删除菜单背景图
+
 ## 2.0.0-rc.8 (2020-11-2)
 
 ### ✨ Features

+ 1 - 1
package.json

@@ -22,7 +22,7 @@
   },
   "dependencies": {
     "@iconify/iconify": "^2.0.0-rc.1",
-    "ant-design-vue": "^2.0.0-beta.12",
+    "ant-design-vue": "^2.0.0-beta.13",
     "apexcharts": "^3.22.0",
     "axios": "^0.21.0",
     "echarts": "^4.9.0",

+ 0 - 856
report.20201101.112320.28808.0.001.json

@@ -1,856 +0,0 @@
-
-{
-  "header": {
-    "reportVersion": 1,
-    "event": "Allocation failed - JavaScript heap out of memory",
-    "trigger": "FatalError",
-    "filename": "report.20201101.112320.28808.0.001.json",
-    "dumpEventTime": "2020-11-01T11:23:20Z",
-    "dumpEventTimeStamp": "1604201000746",
-    "processId": 28808,
-    "cwd": "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0",
-    "commandLine": [
-      "/Users/annsion/.nvm/versions/node/v12.16.1/bin/node",
-      "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0/node_modules/.bin/vite"
-    ],
-    "nodejsVersion": "v12.16.1",
-    "wordSize": 64,
-    "arch": "x64",
-    "platform": "darwin",
-    "componentVersions": {
-      "node": "12.16.1",
-      "v8": "7.8.279.23-node.31",
-      "uv": "1.34.0",
-      "zlib": "1.2.11",
-      "brotli": "1.0.7",
-      "ares": "1.15.0",
-      "modules": "72",
-      "nghttp2": "1.40.0",
-      "napi": "5",
-      "llhttp": "2.0.4",
-      "http_parser": "2.9.3",
-      "openssl": "1.1.1d",
-      "cldr": "35.1",
-      "icu": "64.2",
-      "tz": "2019c",
-      "unicode": "12.1"
-    },
-    "release": {
-      "name": "node",
-      "lts": "Erbium",
-      "headersUrl": "https://nodejs.org/download/release/v12.16.1/node-v12.16.1-headers.tar.gz",
-      "sourceUrl": "https://nodejs.org/download/release/v12.16.1/node-v12.16.1.tar.gz"
-    },
-    "osName": "Darwin",
-    "osRelease": "19.4.0",
-    "osVersion": "Darwin Kernel Version 19.4.0: Wed Mar  4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64",
-    "osMachine": "x86_64",
-    "cpus": [
-      {
-        "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
-        "speed": 2700,
-        "user": 5704770,
-        "nice": 0,
-        "sys": 2626500,
-        "idle": 18122690,
-        "irq": 0
-      },
-      {
-        "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
-        "speed": 2700,
-        "user": 679970,
-        "nice": 0,
-        "sys": 396880,
-        "idle": 25355580,
-        "irq": 0
-      },
-      {
-        "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
-        "speed": 2700,
-        "user": 5384870,
-        "nice": 0,
-        "sys": 1845420,
-        "idle": 19202190,
-        "irq": 0
-      },
-      {
-        "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
-        "speed": 2700,
-        "user": 632210,
-        "nice": 0,
-        "sys": 341020,
-        "idle": 25459190,
-        "irq": 0
-      },
-      {
-        "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
-        "speed": 2700,
-        "user": 5005990,
-        "nice": 0,
-        "sys": 1559680,
-        "idle": 19866790,
-        "irq": 0
-      },
-      {
-        "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
-        "speed": 2700,
-        "user": 608570,
-        "nice": 0,
-        "sys": 303150,
-        "idle": 25520680,
-        "irq": 0
-      },
-      {
-        "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
-        "speed": 2700,
-        "user": 4671490,
-        "nice": 0,
-        "sys": 1357130,
-        "idle": 20403830,
-        "irq": 0
-      },
-      {
-        "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
-        "speed": 2700,
-        "user": 589160,
-        "nice": 0,
-        "sys": 275960,
-        "idle": 25567270,
-        "irq": 0
-      }
-    ],
-    "networkInterfaces": [
-      {
-        "name": "lo0",
-        "internal": true,
-        "mac": "00:00:00:00:00:00",
-        "address": "127.0.0.1",
-        "netmask": "255.0.0.0",
-        "family": "IPv4"
-      },
-      {
-        "name": "lo0",
-        "internal": true,
-        "mac": "00:00:00:00:00:00",
-        "address": "::1",
-        "netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
-        "family": "IPv6",
-        "scopeid": 0
-      },
-      {
-        "name": "lo0",
-        "internal": true,
-        "mac": "00:00:00:00:00:00",
-        "address": "fe80::1",
-        "netmask": "ffff:ffff:ffff:ffff::",
-        "family": "IPv6",
-        "scopeid": 1
-      },
-      {
-        "name": "en0",
-        "internal": false,
-        "mac": "78:4f:43:93:8c:de",
-        "address": "fe80::109b:445e:8bfe:6f75",
-        "netmask": "ffff:ffff:ffff:ffff::",
-        "family": "IPv6",
-        "scopeid": 5
-      },
-      {
-        "name": "en0",
-        "internal": false,
-        "mac": "78:4f:43:93:8c:de",
-        "address": "10.10.4.96",
-        "netmask": "255.255.0.0",
-        "family": "IPv4"
-      },
-      {
-        "name": "awdl0",
-        "internal": false,
-        "mac": "76:f7:aa:86:99:4a",
-        "address": "fe80::74f7:aaff:fe86:994a",
-        "netmask": "ffff:ffff:ffff:ffff::",
-        "family": "IPv6",
-        "scopeid": 13
-      },
-      {
-        "name": "llw0",
-        "internal": false,
-        "mac": "76:f7:aa:86:99:4a",
-        "address": "fe80::74f7:aaff:fe86:994a",
-        "netmask": "ffff:ffff:ffff:ffff::",
-        "family": "IPv6",
-        "scopeid": 14
-      },
-      {
-        "name": "vnic0",
-        "internal": false,
-        "mac": "00:1c:42:00:00:08",
-        "address": "10.211.55.2",
-        "netmask": "255.255.255.0",
-        "family": "IPv4"
-      },
-      {
-        "name": "vnic1",
-        "internal": false,
-        "mac": "00:1c:42:00:00:09",
-        "address": "10.37.129.2",
-        "netmask": "255.255.255.0",
-        "family": "IPv4"
-      },
-      {
-        "name": "vnic2",
-        "internal": false,
-        "mac": "00:1c:42:00:00:0a",
-        "address": "192.168.137.2",
-        "netmask": "255.255.255.0",
-        "family": "IPv4"
-      },
-      {
-        "name": "utun0",
-        "internal": false,
-        "mac": "00:00:00:00:00:00",
-        "address": "fe80::eac7:e3c5:2e23:577b",
-        "netmask": "ffff:ffff:ffff:ffff::",
-        "family": "IPv6",
-        "scopeid": 18
-      },
-      {
-        "name": "utun1",
-        "internal": false,
-        "mac": "00:00:00:00:00:00",
-        "address": "fe80::92ca:3b6c:3505:bb75",
-        "netmask": "ffff:ffff:ffff:ffff::",
-        "family": "IPv6",
-        "scopeid": 19
-      },
-      {
-        "name": "en5",
-        "internal": false,
-        "mac": "ac:de:48:00:11:22",
-        "address": "fe80::aede:48ff:fe00:1122",
-        "netmask": "ffff:ffff:ffff:ffff::",
-        "family": "IPv6",
-        "scopeid": 4
-      },
-      {
-        "name": "en7",
-        "internal": false,
-        "mac": "00:e0:4c:68:03:12",
-        "address": "fe80::1436:ff70:1fc:e9e8",
-        "netmask": "ffff:ffff:ffff:ffff::",
-        "family": "IPv6",
-        "scopeid": 10
-      },
-      {
-        "name": "en7",
-        "internal": false,
-        "mac": "00:e0:4c:68:03:12",
-        "address": "192.168.32.33",
-        "netmask": "255.255.255.0",
-        "family": "IPv4"
-      },
-      {
-        "name": "en8",
-        "internal": false,
-        "mac": "6a:fe:f7:b4:a1:38",
-        "address": "fe80::4bb:1d2e:db16:dc3a",
-        "netmask": "ffff:ffff:ffff:ffff::",
-        "family": "IPv6",
-        "scopeid": 20
-      },
-      {
-        "name": "en8",
-        "internal": false,
-        "mac": "6a:fe:f7:b4:a1:38",
-        "address": "172.20.10.5",
-        "netmask": "255.255.255.240",
-        "family": "IPv4"
-      }
-    ],
-    "host": "ann.local"
-  },
-  "javascriptStack": {
-    "message": "No stack.",
-    "stack": [
-      "Unavailable."
-    ]
-  },
-  "nativeStack": [
-    {
-      "pc": "0x000000010015c5c2",
-      "symbol": "report::TriggerNodeReport(v8::Isolate*, node::Environment*, char const*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, v8::Local<v8::String>) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x0000000100080dc8",
-      "symbol": "node::OnFatalError(char const*, char const*) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x0000000100185167",
-      "symbol": "v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x0000000100185103",
-      "symbol": "v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x000000010030b2f5",
-      "symbol": "v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x000000010030c9c4",
-      "symbol": "v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x0000000100309837",
-      "symbol": "v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x00000001003077fd",
-      "symbol": "v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x0000000100312fba",
-      "symbol": "v8::internal::Heap::AllocateRawWithLightRetry(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x0000000100313041",
-      "symbol": "v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x00000001002e035b",
-      "symbol": "v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x0000000100618718",
-      "symbol": "v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x0000000100950919",
-      "symbol": "Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    },
-    {
-      "pc": "0x00000001008fc271",
-      "symbol": "Builtins_ExtractFastJSArray [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"
-    }
-  ],
-  "javascriptHeap": {
-    "totalMemory": 2197811200,
-    "totalCommittedMemory": 2188539296,
-    "usedMemory": 2170225248,
-    "availableMemory": 20428384,
-    "memoryLimit": 2197815296,
-    "heapSpaces": {
-      "read_only_space": {
-        "memorySize": 262144,
-        "committedMemory": 33088,
-        "capacity": 32808,
-        "used": 32808,
-        "available": 0
-      },
-      "new_space": {
-        "memorySize": 33554432,
-        "committedMemory": 24617648,
-        "capacity": 16759296,
-        "used": 13246416,
-        "available": 3512880
-      },
-      "old_space": {
-        "memorySize": 2065317888,
-        "committedMemory": 2065256464,
-        "capacity": 2062879320,
-        "used": 2062727208,
-        "available": 152112
-      },
-      "code_space": {
-        "memorySize": 1740800,
-        "committedMemory": 1696768,
-        "capacity": 1591904,
-        "used": 1591904,
-        "available": 0
-      },
-      "map_space": {
-        "memorySize": 6033408,
-        "committedMemory": 6032800,
-        "capacity": 1877280,
-        "used": 1877280,
-        "available": 0
-      },
-      "large_object_space": {
-        "memorySize": 90853376,
-        "committedMemory": 90853376,
-        "capacity": 90746848,
-        "used": 90746848,
-        "available": 0
-      },
-      "code_large_object_space": {
-        "memorySize": 49152,
-        "committedMemory": 49152,
-        "capacity": 2784,
-        "used": 2784,
-        "available": 0
-      },
-      "new_large_object_space": {
-        "memorySize": 0,
-        "committedMemory": 0,
-        "capacity": 16759296,
-        "used": 0,
-        "available": 16759296
-      }
-    }
-  },
-  "resourceUsage": {
-    "userCpuSeconds": 80.3311,
-    "kernelCpuSeconds": 15.4548,
-    "cpuConsumptionPercent": 16.7458,
-    "maxRss": 2349800095744,
-    "pageFaults": {
-      "IORequired": 26,
-      "IONotRequired": 1556354
-    },
-    "fsActivity": {
-      "reads": 0,
-      "writes": 0
-    }
-  },
-  "libuv": [
-  ],
-  "environmentVariables": {
-    "npm_package_scripts_log": "esno ./build/script/changelog.ts",
-    "npm_package_devDependencies_lint_staged": "^10.5.0",
-    "npm_package_devDependencies__purge_icons_generated": "^0.4.1",
-    "npm_package_devDependencies_postcss_import": "^12.0.1",
-    "npm_package_devDependencies_prettier": "^2.1.2",
-    "npm_package_scripts_ls_lint": "npx ls-lint",
-    "TERM_PROGRAM": "vscode",
-    "npm_package_dependencies_zxcvbn": "^4.4.2",
-    "NODE": "/Users/annsion/.nvm/versions/node/v12.16.1/bin/node",
-    "npm_config_version_git_tag": "true",
-    "npm_package_dependencies_axios": "^0.21.0",
-    "npm_package_devDependencies_typescript": "^4.0.5",
-    "npm_package_devDependencies_vite_plugin_mock": "^1.0.6",
-    "npm_package_devDependencies_vite_plugin_pwa": "^0.1.3",
-    "npm_package_homepage": "https://github.com/anncwb/vue-vben-admin",
-    "NVM_CD_FLAGS": "-q",
-    "INIT_CWD": "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0",
-    "npm_package_devDependencies_conventional_changelog_custom_config": "^0.3.1",
-    "SHELL": "/bin/zsh",
-    "TERM": "xterm-256color",
-    "npm_package_dependencies_vditor": "^3.6.0",
-    "npm_package_devDependencies_rimraf": "^3.0.2",
-    "TMPDIR": "/var/folders/69/p74fhms10gq0tzw8gtqvqjfc0000gn/T/",
-    "npm_config_email": "@ylz123456",
-    "npm_config_init_license": "MIT",
-    "npm_package_devDependencies_fs_extra": "^9.0.1",
-    "npm_package_devDependencies_vue_eslint_parser": "^7.1.1",
-    "TERM_PROGRAM_VERSION": "1.50.1",
-    "npm_package_changelog_authorName": "false",
-    "ORIGINAL_XDG_CURRENT_DESKTOP": "undefined",
-    "npm_package_dependencies_vuex_module_decorators": "^1.0.1",
-    "npm_package_devDependencies_rollup_plugin_analyzer": "^3.3.0",
-    "npm_package_devDependencies_stylelint_order": "^4.1.0",
-    "npm_config_home": "https://www.npmjs.org",
-    "npm_config_registry": "https://registry.npmjs.org/",
-    "npm_package_devDependencies_conventional_changelog_cli": "^2.1.0",
-    "npm_package_devDependencies_yargs": "^16.1.0",
-    "npm_package_devDependencies_commitizen": "^4.2.2",
-    "npm_package_devDependencies_stylelint_config_standard": "^20.0.0",
-    "npm_package_repository_url": "git+https://github.com/anncwb/vue-vben-admin.git",
-    "ZSH": "/Users/annsion/.oh-my-zsh",
-    "npm_package_scripts_report": "cross-env REPORT=true npm run build ",
-    "npm_package_dependencies_xlsx": "^0.16.8",
-    "npm_package_changelog_bugsUrl": "https://github.com/anncwb/vue-vben-admin/issues",
-    "npm_package_readmeFilename": "README.en-US.md",
-    "npm_config_python": "/usr/bin/python",
-    "npm_package_description": "This branch is a 2.0 new branch which use vue3 to develop.",
-    "USER": "annsion",
-    "NVM_DIR": "/Users/annsion/.nvm",
-    "npm_package_devDependencies_dotenv": "^8.2.0",
-    "npm_package_license": "MIT",
-    "CLASS_PATH": "/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/lib",
-    "npm_package_scripts_build_no_cache": "yarn  clean:cache && npm run build",
-    "npm_package_dependencies_nprogress": "^0.2.0",
-    "npm_package_dependencies_path_to_regexp": "^6.2.0",
-    "npm_package_devDependencies__vuedx_typescript_plugin_vue": "^0.2.4-0",
-    "npm_package_devDependencies_vite_plugin_html": "^1.0.0-beta.2",
-    "npm_package_devDependencies__types_yargs": "^15.0.9",
-    "SSH_AUTH_SOCK": "/private/tmp/com.apple.launchd.8OyPR83dMT/Listeners",
-    "npm_package_devDependencies_eslint": "^7.12.0",
-    "npm_package_devDependencies_less": "^3.12.2",
-    "npm_package_changelog_authorEmail": "false",
-    "__CF_USER_TEXT_ENCODING": "0x1F5:0x19:0x34",
-    "npm_package_scripts_lint_stylelint": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
-    "npm_package_devDependencies__typescript_eslint_eslint_plugin": "^4.6.0",
-    "npm_package_husky_hooks_pre_commit": "ls-lint && lint-staged",
-    "npm_execpath": "/usr/local/Cellar/yarn/1.21.1/libexec/bin/yarn.js",
-    "npm_package_scripts_preview_dist": "esno ./build/script/preview.ts",
-    "PAGER": "less",
-    "npm_package_devDependencies_eslint_plugin_prettier": "^3.1.4",
-    "LSCOLORS": "Gxfxcxdxbxegedabagacad",
-    "npm_package_devDependencies__ls_lint_ls_lint": "^1.9.2",
-    "npm_package_devDependencies__typescript_eslint_parser": "^4.6.0",
-    "npm_package_devDependencies_koa_static": "^5.0.0",
-    "npm_package_devDependencies__types_echarts": "^4.9.0",
-    "npm_config_argv": "{\"remain\":[],\"cooked\":[\"run\",\"serve\"],\"original\":[\"serve\"]}",
-    "PATH": "/var/folders/69/p74fhms10gq0tzw8gtqvqjfc0000gn/T/yarn--1604200427727-0.5334803764404132:/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0/node_modules/.bin:/Users/annsion/.config/yarn/link/node_modules/.bin:/Users/annsion/.nvm/versions/node/v12.16.1/libexec/lib/node_modules/npm/bin/node-gyp-bin:/Users/annsion/.nvm/versions/node/v12.16.1/lib/node_modules/npm/bin/node-gyp-bin:/Users/annsion/.nvm/versions/node/v12.16.1/bin/node_modules/npm/bin/node-gyp-bin:/Users/annsion/.nvm/versions/node/v12.16.1/bin:./usr/local/mongodb/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/mysql/bin:/Users/annsion/maven/apache-maven-3.6.1/bin:/usr/local/sbin:/usr/local/sonar-scanner/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/bin",
-    "npm_config___registry_npm_taobao_org__always_auth": "",
-    "npm_package_scripts_typecheck": "typecheck .",
-    "npm_package_dependencies_vue": "^3.0.2",
-    "_": "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0/node_modules/.bin/cross-env",
-    "npm_package_dependencies_ant_design_vue": "^2.0.0-beta.11",
-    "npm_package_devDependencies__types_nprogress": "^0.2.0",
-    "SONAR_SCANNER_HOME": "/usr/local/sonar-scanner",
-    "PWD": "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0",
-    "npm_package_scripts_preview": "npm run build && esno ./build/script/preview.ts",
-    "npm_package_bugs_url": "https://github.com/anncwb/vue-vben-admin/issues",
-    "JAVA_HOME": "/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home",
-    "npm_lifecycle_event": "serve",
-    "npm_package_name": "vben-admin-2.0",
-    "npm_package_repository_type": "git",
-    "LANG": "zh_CN.UTF-8",
-    "npm_package_devDependencies_stylelint_config_prettier": "^8.0.2",
-    "npm_config_version_commit_hooks": "true",
-    "npm_package_scripts_build": " rimraf dist && cross-env NODE_ENV=production vite build && esno ./build/script/postBuild.ts",
-    "npm_config_username": "ylz",
-    "npm_package_scripts_lint_eslint": "eslint --fix --ext \"src/**/*.{vue,less,css,scss}\"",
-    "npm_package_devDependencies_rollup_plugin_visualizer": "^4.1.2",
-    "XPC_FLAGS": "0x0",
-    "NODE_ENV": "development",
-    "npm_config_bin_links": "true",
-    "npm_package_devDependencies_stylelint": "^13.7.2",
-    "npm_package_devDependencies_tasksfile": "^5.1.1",
-    "npm_package_devDependencies__types_lodash_es": "^4.17.3",
-    "npm_package_changelog_emojis": "true",
-    "npm_package_engines_node": ">=10.16.1",
-    "npm_package_dependencies_vue_i18n": "^9.0.0-beta.6",
-    "npm_package_devDependencies_eslint_config_prettier": "^6.15.0",
-    "npm_package_version": "2.0.0-rc.7",
-    "npm_package_devDependencies__iconify_json": "^1.1.249",
-    "XPC_SERVICE_NAME": "0",
-    "npm_package_devDependencies_autoprefixer": "^9.8.6",
-    "npm_package_devDependencies__types_koa_static": "^4.0.1",
-    "HOME": "/Users/annsion",
-    "SHLVL": "2",
-    "M2_HOME": "/Users/annsion/maven/apache-maven-3.6.1",
-    "npm_package_devDependencies__types_mockjs": "^1.0.3",
-    "npm_package_devDependencies_eslint_plugin_vue": "^7.1.0",
-    "VSCODE_GIT_ASKPASS_MAIN": "/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass-main.js",
-    "npm_config_scripts_prepend_node_path": "true",
-    "npm_config_strict_ssl": "true",
-    "npm_config_save_prefix": "^",
-    "npm_package_scripts_serve": "esno ./build/script/preserve.ts && cross-env NODE_ENV=development vite",
-    "npm_config_version_git_message": "v%s",
-    "npm_package_scripts_bootstrap": "yarn install",
-    "npm_package_devDependencies__commitlint_cli": "^11.0.0",
-    "npm_package_devDependencies_cross_env": "^7.0.2",
-    "npm_package_devDependencies_husky": "^4.3.0",
-    "npm_package_husky_hooks_commit_msg": "commitlint -E HUSKY_GIT_PARAMS",
-    "npm_package_scripts_lint_prettier": "prettier --write --loglevel warn \"src/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"",
-    "npm_package_dependencies_echarts": "^4.9.0",
-    "NPM_CONFIG_PYTHON": "/usr/bin/python",
-    "npm_config_disturl": "https://npm.taobao.org/dist",
-    "npm_package_devDependencies_ts_node": "^9.0.0",
-    "npm_package_dependencies_vite": "^1.0.0-rc.8",
-    "npm_package_devDependencies_vite_plugin_purge_icons": "^0.4.4",
-    "YARN_WRAP_OUTPUT": "false",
-    "LOGNAME": "annsion",
-    "LESS": "-R",
-    "npm_package_scripts_build_site": "cross-env SITE=true npm run build ",
-    "npm_lifecycle_script": "esno ./build/script/preserve.ts && cross-env NODE_ENV=development vite",
-    "PREFIX": "/usr/local",
-    "npm_package_dependencies__iconify_iconify": "^2.0.0-rc.1",
-    "npm_package_dependencies_lodash_es": "^4.17.15",
-    "npm_package_dependencies_vuex": "^4.0.0-rc.1",
-    "VSCODE_GIT_IPC_HANDLE": "/var/folders/69/p74fhms10gq0tzw8gtqvqjfc0000gn/T/vscode-git-8303872dd8.sock",
-    "LC_CTYPE": "zh_CN.UTF-8",
-    "npm_package_scripts_clean_cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite_opt_cache",
-    "npm_package_dependencies_apexcharts": "^3.22.0",
-    "npm_package_devDependencies__types_rollup_plugin_visualizer": "^2.6.0",
-    "npm_package_devDependencies__types_fs_extra": "^9.0.2",
-    "GITHUB_TOKEN": "f5003f41e66eff1e868635b2e5a78f412b1741ee",
-    "NVM_BIN": "/Users/annsion/.nvm/versions/node/v12.16.1/bin",
-    "npm_config_user_agent": "yarn/1.21.1 npm/? node/v12.16.1 darwin x64",
-    "npm_config_ignore_scripts": "",
-    "npm_config_version_git_sign": "",
-    "npm_package_devDependencies__types_zxcvbn": "^4.4.0",
-    "npm_package_devDependencies__vue_compiler_sfc": "^3.0.2",
-    "npm_package_devDependencies_portfinder": "^1.0.28",
-    "GIT_ASKPASS": "/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass.sh",
-    "VSCODE_GIT_ASKPASS_NODE": "/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Renderer).app/Contents/MacOS/Code Helper (Renderer)",
-    "npm_package_scripts_reinstall": "rimraf yarn.lock && rimraf package.lock.json && rimraf node_modules && npm run bootstrap",
-    "npm_package_dependencies_mockjs": "^1.1.0",
-    "OCI_INC_DIR": "/usr/local/oracle/instantclient/sdk/include",
-    "npm_package_devDependencies__types_qrcode": "^1.3.5",
-    "OCI_LIB_DIR": "/usr/local/oracle/instantclient",
-    "npm_config_ignore_optional": "",
-    "npm_config_init_version": "1.0.0",
-    "npm_package_devDependencies__vuedx_typecheck": "^0.2.4-0",
-    "npm_package_scripts_clean_lib": "npx rimraf node_modules",
-    "npm_package_dependencies_vue_router": "^4.0.0-rc.1",
-    "npm_package_devDependencies__commitlint_config_conventional": "^11.0.0",
-    "npm_package_devDependencies_esno": "^0.2.4",
-    "npm_config_version_tag_prefix": "v",
-    "npm_package_dependencies_qrcode": "^1.4.4",
-    "npm_node_execpath": "/Users/annsion/.nvm/versions/node/v12.16.1/bin/node",
-    "COLORTERM": "truecolor",
-    "VITE_USE_MOCK": "true",
-    "VITE_PUBLIC_PATH": "/",
-    "VITE_PROXY": "/api,http://localhost:3000",
-    "VITE_DROP_CONSOLE": "false",
-    "VITE_GLOB_API_URL": "/api",
-    "VITE_GLOB_API_URL_PREFIX": "",
-    "VITE_PORT": "3100",
-    "VITE_GLOB_APP_TITLE": "Vben Admin",
-    "VITE_GLOB_APP_SHORT_NAME": "vue_vben_admin_2x"
-  },
-  "userLimits": {
-    "core_file_size_blocks": {
-      "soft": 0,
-      "hard": "unlimited"
-    },
-    "data_seg_size_kbytes": {
-      "soft": "unlimited",
-      "hard": "unlimited"
-    },
-    "file_size_blocks": {
-      "soft": "unlimited",
-      "hard": "unlimited"
-    },
-    "max_locked_memory_bytes": {
-      "soft": "unlimited",
-      "hard": "unlimited"
-    },
-    "max_memory_size_kbytes": {
-      "soft": "unlimited",
-      "hard": "unlimited"
-    },
-    "open_files": {
-      "soft": 24576,
-      "hard": "unlimited"
-    },
-    "stack_size_bytes": {
-      "soft": 8388608,
-      "hard": 67104768
-    },
-    "cpu_time_seconds": {
-      "soft": "unlimited",
-      "hard": "unlimited"
-    },
-    "max_user_processes": {
-      "soft": 2784,
-      "hard": 4176
-    },
-    "virtual_memory_kbytes": {
-      "soft": "unlimited",
-      "hard": "unlimited"
-    }
-  },
-  "sharedObjects": [
-    "/Users/annsion/.nvm/versions/node/v12.16.1/bin/node",
-    "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation",
-    "/usr/lib/libSystem.B.dylib",
-    "/usr/lib/libc++.1.dylib",
-    "/usr/lib/libobjc.A.dylib",
-    "/usr/lib/libfakelink.dylib",
-    "/usr/lib/libDiagnosticMessagesClient.dylib",
-    "/usr/lib/libicucore.A.dylib",
-    "/usr/lib/libz.1.dylib",
-    "/usr/lib/libc++abi.dylib",
-    "/usr/lib/system/libcache.dylib",
-    "/usr/lib/system/libcommonCrypto.dylib",
-    "/usr/lib/system/libcompiler_rt.dylib",
-    "/usr/lib/system/libcopyfile.dylib",
-    "/usr/lib/system/libcorecrypto.dylib",
-    "/usr/lib/system/libdispatch.dylib",
-    "/usr/lib/system/libdyld.dylib",
-    "/usr/lib/system/libkeymgr.dylib",
-    "/usr/lib/system/liblaunch.dylib",
-    "/usr/lib/system/libmacho.dylib",
-    "/usr/lib/system/libquarantine.dylib",
-    "/usr/lib/system/libremovefile.dylib",
-    "/usr/lib/system/libsystem_asl.dylib",
-    "/usr/lib/system/libsystem_blocks.dylib",
-    "/usr/lib/system/libsystem_c.dylib",
-    "/usr/lib/system/libsystem_configuration.dylib",
-    "/usr/lib/system/libsystem_coreservices.dylib",
-    "/usr/lib/system/libsystem_darwin.dylib",
-    "/usr/lib/system/libsystem_dnssd.dylib",
-    "/usr/lib/system/libsystem_featureflags.dylib",
-    "/usr/lib/system/libsystem_info.dylib",
-    "/usr/lib/system/libsystem_m.dylib",
-    "/usr/lib/system/libsystem_malloc.dylib",
-    "/usr/lib/system/libsystem_networkextension.dylib",
-    "/usr/lib/system/libsystem_notify.dylib",
-    "/usr/lib/system/libsystem_sandbox.dylib",
-    "/usr/lib/system/libsystem_secinit.dylib",
-    "/usr/lib/system/libsystem_kernel.dylib",
-    "/usr/lib/system/libsystem_platform.dylib",
-    "/usr/lib/system/libsystem_pthread.dylib",
-    "/usr/lib/system/libsystem_symptoms.dylib",
-    "/usr/lib/system/libsystem_trace.dylib",
-    "/usr/lib/system/libunwind.dylib",
-    "/usr/lib/system/libxpc.dylib",
-    "/System/Library/CoreServices/Encodings/libSimplifiedChineseConverter.dylib",
-    "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices",
-    "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics",
-    "/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText",
-    "/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO",
-    "/System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync",
-    "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS",
-    "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy",
-    "/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices",
-    "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices",
-    "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis",
-    "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore",
-    "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD",
-    "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis",
-    "/System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight",
-    "/System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate",
-    "/System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface",
-    "/usr/lib/libxml2.2.dylib",
-    "/System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork",
-    "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation",
-    "/System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient",
-    "/usr/lib/libcompression.dylib",
-    "/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration",
-    "/System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay",
-    "/System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator",
-    "/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit",
-    "/System/Library/Frameworks/Metal.framework/Versions/A/Metal",
-    "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders",
-    "/System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport",
-    "/System/Library/Frameworks/Security.framework/Versions/A/Security",
-    "/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore",
-    "/usr/lib/libbsm.0.dylib",
-    "/usr/lib/liblzma.5.dylib",
-    "/usr/lib/libauto.dylib",
-    "/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration",
-    "/usr/lib/libarchive.2.dylib",
-    "/usr/lib/liblangid.dylib",
-    "/usr/lib/libCRFSuite.dylib",
-    "/usr/lib/libenergytrace.dylib",
-    "/usr/lib/system/libkxld.dylib",
-    "/System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression",
-    "/usr/lib/libcoretls.dylib",
-    "/usr/lib/libcoretls_cfhelpers.dylib",
-    "/usr/lib/libpam.2.dylib",
-    "/usr/lib/libsqlite3.dylib",
-    "/usr/lib/libxar.1.dylib",
-    "/usr/lib/libbz2.1.0.dylib",
-    "/usr/lib/libiconv.2.dylib",
-    "/usr/lib/libcharset.1.dylib",
-    "/usr/lib/libnetwork.dylib",
-    "/usr/lib/libpcap.A.dylib",
-    "/usr/lib/libapple_nghttp2.dylib",
-    "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents",
-    "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore",
-    "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata",
-    "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices",
-    "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit",
-    "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE",
-    "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices",
-    "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices",
-    "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList",
-    "/System/Library/Frameworks/NetFS.framework/Versions/A/NetFS",
-    "/System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth",
-    "/System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport",
-    "/System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC",
-    "/System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP",
-    "/System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities",
-    "/usr/lib/libmecabra.dylib",
-    "/usr/lib/libmecab.dylib",
-    "/usr/lib/libgermantok.dylib",
-    "/usr/lib/libThaiTokenizer.dylib",
-    "/usr/lib/libChineseTokenizer.dylib",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib",
-    "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib",
-    "/System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling",
-    "/System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji",
-    "/System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData",
-    "/System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon",
-    "/usr/lib/libcmph.dylib",
-    "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory",
-    "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory",
-    "/System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS",
-    "/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation",
-    "/usr/lib/libutil.dylib",
-    "/System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore",
-    "/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement",
-    "/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement",
-    "/usr/lib/libxslt.1.dylib",
-    "/System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler",
-    "/System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment",
-    "/System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay",
-    "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib",
-    "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSCore.framework/Versions/A/MPSCore",
-    "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSImage.framework/Versions/A/MPSImage",
-    "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork",
-    "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix",
-    "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector",
-    "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray",
-    "/System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools",
-    "/System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary",
-    "/System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics",
-    "/System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce",
-    "/usr/lib/libMobileGestalt.dylib",
-    "/System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo",
-    "/usr/lib/libIOReport.dylib",
-    "/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage",
-    "/System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo",
-    "/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL",
-    "/System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer",
-    "/System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore",
-    "/System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL",
-    "/usr/lib/libFosl_dynamic.dylib",
-    "/System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG",
-    "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib",
-    "/usr/lib/libate.dylib",
-    "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib",
-    "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib",
-    "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib",
-    "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib",
-    "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib",
-    "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib",
-    "/usr/lib/libexpat.1.dylib",
-    "/System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG",
-    "/System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib",
-    "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib",
-    "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib",
-    "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib",
-    "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib",
-    "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib",
-    "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib",
-    "/usr/lib/libncurses.5.4.dylib",
-    "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI",
-    "/usr/lib/libcups.2.dylib",
-    "/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos",
-    "/System/Library/Frameworks/GSS.framework/Versions/A/GSS",
-    "/usr/lib/libresolv.9.dylib",
-    "/System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal",
-    "/System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib",
-    "/usr/lib/libheimdal-asn1.dylib",
-    "/System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth",
-    "/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio",
-    "/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox",
-    "/System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices",
-    "/System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore",
-    "/System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk",
-    "/System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard",
-    "/System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices",
-    "/System/Library/PrivateFrameworks/PersistentConnection.framework/Versions/A/PersistentConnection",
-    "/System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer",
-    "/System/Library/PrivateFrameworks/CommonUtilities.framework/Versions/A/CommonUtilities",
-    "/System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom",
-    "/usr/lib/libAudioToolboxUtility.dylib",
-    "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0/node_modules/fsevents/fsevents.node"
-  ]
-}

BIN
src/assets/images/sidebar/dark-mini.png


BIN
src/assets/images/sidebar/light-mini.png


BIN
src/assets/images/sidebar/light.png


+ 3 - 1
src/components/Breadcrumb/Breadcrumb.vue

@@ -35,9 +35,11 @@
   @import (reference) '../../design/index.less';
 
   .breadcrumb {
+    .unselect();
+
     height: @header-height;
     padding-right: 20px;
-    font-size: 14px;
+    font-size: 13px;
     line-height: @header-height;
     // line-height: 1;
 

+ 1 - 1
src/components/Icon/index.tsx

@@ -72,7 +72,7 @@ export default defineComponent({
     onMounted(update);
 
     return () => (
-      <div ref={elRef} class={[attrs.class, 'app-iconify']} style={unref(wrapStyleRef)} />
+      <div ref={elRef} class={[attrs.class, 'app-iconify anticon']} style={unref(wrapStyleRef)} />
     );
   },
 });

+ 29 - 31
src/components/Menu/src/BasicMenu.tsx

@@ -2,21 +2,27 @@ import type { MenuState } from './types';
 import type { Menu as MenuType } from '/@/router/types';
 
 import { computed, defineComponent, unref, reactive, toRef, watch, onMounted, ref } from 'vue';
-import { basicProps } from './props';
 import { Menu } from 'ant-design-vue';
-import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum';
-import { menuStore } from '/@/store/modules/menu';
-import { getSlot } from '/@/utils/helper/tsxHelper';
-// import { ScrollContainer } from '/@/components/Container/index';
 import SearchInput from './SearchInput.vue';
-import './index.less';
-import { menuHasChildren } from './helper';
 import MenuContent from './MenuContent';
+
+import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum';
+
+import { menuStore } from '/@/store/modules/menu';
+import { appStore } from '/@/store/modules/app';
+
 import { useSearchInput } from './useSearchInput';
 import { useOpenKeys } from './useOpenKeys';
 import { useRouter } from 'vue-router';
+
 import { isFunction } from '/@/utils/is';
+import { getSlot } from '/@/utils/helper/tsxHelper';
+import { menuHasChildren } from './helper';
+
 import { getCurrentParentPath } from '/@/router/menus';
+
+import { basicProps } from './props';
+import './index.less';
 export default defineComponent({
   name: 'BasicMenu',
   props: basicProps,
@@ -69,7 +75,7 @@ export default defineComponent({
       return {
         height: `calc(100% - ${offset - 10}px)`,
         position: 'relative',
-        overflow: 'auto',
+        overflowY: 'auto',
       };
     });
 
@@ -77,26 +83,26 @@ export default defineComponent({
     const transparentMenuClass = computed(() => {
       const { type } = props;
       const { mode } = menuState;
-      if (
-        [MenuTypeEnum.MIX, MenuTypeEnum.SIDEBAR].includes(type) &&
-        mode !== MenuModeEnum.HORIZONTAL
-      ) {
-        return `basic-menu-bg__sidebar`;
-      }
+      const cls: string[] = [];
       if (
         (type === MenuTypeEnum.TOP_MENU && mode === MenuModeEnum.HORIZONTAL) ||
         props.appendClass
       ) {
-        return `basic-menu-bg__sidebar-hor`;
+        cls.push('basic-menu__sidebar-hor');
       }
-      return '';
+
+      if (!props.isTop && props.isAppMenu && appStore.getProjectConfig.menuSetting.split) {
+        cls.push('basic-menu__second');
+      }
+      return cls;
     });
 
     watch(
       () => currentRoute.value.name,
       (name: string) => {
-        name !== 'Redirect' && handleMenuChange();
-        getParentPath();
+        if (name === 'Redirect') return;
+        handleMenuChange();
+        props.isTop && appStore.getProjectConfig.menuSetting.split && getParentPath();
       }
     );
 
@@ -149,22 +155,14 @@ export default defineComponent({
     }
 
     const showTitle = computed(() => {
-      if (props.isTop) return true;
-      if (!props.isAppMenu) return true;
-      if (!props.collapsedShowTitle) {
-        return !menuStore.getCollapsedState;
-      }
-      return true;
+      return props.collapsedShowTitle && menuStore.getCollapsedState;
     });
 
     // render menu item
     function renderMenuItem(menuList?: MenuType[], index = 1) {
-      if (!menuList) {
-        return;
-      }
+      if (!menuList) return;
       const { appendClass } = props;
       const levelCls = `basic-menu-item__level${index} ${menuState.theme} `;
-
       return menuList.map((menu) => {
         if (!menu) {
           return null;
@@ -233,7 +231,7 @@ export default defineComponent({
           class={[
             'basic-menu',
             props.collapsedShowTitle && 'collapsed-show-title',
-            unref(transparentMenuClass),
+            ...unref(transparentMenuClass),
           ]}
           {...inlineCollapsedObj}
         >
@@ -247,6 +245,7 @@ export default defineComponent({
     onMounted(async () => {
       getParentPath();
     });
+
     return () => {
       const { getCollapsedState } = menuStore;
       const { mode } = props;
@@ -262,9 +261,8 @@ export default defineComponent({
             onClick={handleInputClick}
             collapsed={getCollapsedState}
           />
-          <section style={unref(getMenuWrapStyle)} class="basic-menu__wrap">
+          <section style={unref(getMenuWrapStyle)} class="basic-menu__content">
             {renderMenu()}
-            {/* <ScrollContainer>{() => renderMenu()}</ScrollContainer> */}
           </section>
         </section>
       );

+ 18 - 14
src/components/Menu/src/MenuContent.tsx

@@ -11,14 +11,17 @@ export default defineComponent({
       type: String as PropType<string>,
       default: '',
     },
+
     item: {
       type: Object as PropType<MenuType>,
       default: null,
     },
+
     showTitle: {
       type: Boolean as PropType<boolean>,
       default: true,
     },
+
     level: {
       type: Number as PropType<number>,
       default: 0,
@@ -36,26 +39,27 @@ export default defineComponent({
       if (!props.item) {
         return null;
       }
-      const { showTitle, level } = props;
+      const { showTitle } = props;
       const { name, icon } = props.item;
       const searchValue = props.searchValue || '';
       const index = name.indexOf(searchValue);
 
       const beforeStr = name.substr(0, index);
       const afterStr = name.substr(index + searchValue.length);
-      const show = level === 1 ? showTitle : true;
-      return [
-        renderIcon(icon!),
-        index > -1 && searchValue ? (
-          <span class={!show && 'hidden'}>
-            {beforeStr}
-            <span class={`basic-menu__keyword`}>{searchValue}</span>
-            {afterStr}
-          </span>
-        ) : (
-          <span class={!show && 'hidden'}>{name}</span>
-        ),
-      ];
+      return (
+        <>
+          {renderIcon(icon!)}
+          {index > -1 && searchValue ? (
+            <span class={showTitle ? 'show-title' : ''}>
+              {beforeStr}
+              <span class={`basic-menu__keyword`}>{searchValue}</span>
+              {afterStr}
+            </span>
+          ) : (
+            <span class={[showTitle ? 'show-title' : '']}>{name}</span>
+          )}
+        </>
+      );
     };
   },
 });

+ 20 - 30
src/components/Menu/src/SearchInput.vue

@@ -5,7 +5,6 @@
       class="menu-search-input__search"
       allowClear
       @change="handleChange"
-      :disabled="collapsed"
     />
   </section>
 </template>
@@ -20,7 +19,7 @@
   export default defineComponent({
     name: 'BasicMenuSearchInput',
     props: {
-      // 是否展开,用于左侧菜单
+      // Whether to expand, used in the left menu
       collapsed: {
         type: Boolean as PropType<boolean>,
         default: true,
@@ -30,28 +29,27 @@
       },
     },
     setup(props, { emit }) {
+      const [debounceEmitChange] = useDebounce(emitChange, 200);
+
       function emitChange(value?: string): void {
         emit('change', value);
       }
-      const [debounceEmitChange] = useDebounce(emitChange, 200);
-      /**
-       * @description: 搜索
-       */
+
       function handleChange(e: ChangeEvent): void {
         const { collapsed } = props;
-        if (collapsed) {
-          return;
-        }
+        if (collapsed) return;
         debounceEmitChange(e.target.value);
       }
-      /**
-       * @description: 点击时间
-       */
+
       function handleClick(): void {
         emit('click');
       }
+
       const searchClass = computed(() => {
-        return props.theme ? `menu-search-input__search--${props.theme}` : '';
+        const cls: string[] = [];
+        cls.push(props.theme ? `menu-search-input__search--${props.theme}` : '');
+        // cls.push(props.collapsed ? 'hide-search-icon' : '');
+        return cls;
       });
 
       return { handleClick, searchClass, handleChange };
@@ -66,26 +64,24 @@
   @icon-color: #c0c4cc;
 
   .menu-search-input {
-    margin: 12px 9px;
+    margin: 12px 8px;
+
+    // &.hide-search-icon {
+    //   .ant-input,
+    //   .ant-input-suffix {
+    //     opacity: 0;
+    //   }
+    // }
 
     &__search--dark {
       .ant-input-affix-wrapper,
       .ant-input {
         .set-bg();
-
-        &:hover,
-        &:focus {
-          .hide-outline();
-        }
       }
 
       .ant-input-search-icon,
       .ant-input-clear-icon {
-        color: rgba(255, 255, 255, 0.6) !important;
-      }
-
-      .ant-input-clear-icon {
-        color: rgba(255, 255, 255, 0.3) !important;
+        color: rgba(255, 255, 255, 0.4) !important;
       }
     }
 
@@ -94,13 +90,7 @@
       .ant-input {
         color: @text-color-base;
         background: #fff;
-        // border: 0;
         outline: none;
-
-        &:hover,
-        &:focus {
-          .hide-outline();
-        }
       }
 
       .ant-input-search-icon {

+ 114 - 108
src/components/Menu/src/index.less

@@ -2,14 +2,11 @@
 
 .active-style() {
   color: @white;
-  // background: @primary-color !important;
   background: linear-gradient(
     118deg,
     rgba(@primary-color, 0.8),
     rgba(@primary-color, 1)
   ) !important;
-  // border-radius: 2px;
-  box-shadow: 0 0 4px 1px rgba(@primary-color, 0.7);
 }
 
 .active-menu-style() {
@@ -22,50 +19,52 @@
 .basic-menu {
   width: 100%;
 
+  &-wrap {
+    height: 100%;
+  }
+
+  //  collapsed show title start
+  .show-title {
+    max-width: unset !important;
+    opacity: 1 !important;
+  }
+
   &.collapsed-show-title.ant-menu-inline-collapsed {
     .basic-menu-item__level1 {
       padding: 2px 0;
     }
 
+    & > li[role='menuitem']:not(.ant-menu-submenu),
     & > li > .ant-menu-submenu-title {
       display: flex;
-      margin-top: 12px;
+      margin-top: 10px;
       font-size: 12px;
       flex-direction: column;
-      line-height: 24px;
       align-items: center;
     }
 
-    & > li[role='menuitem']:not(.ant-menu-submenu) {
-      display: flex;
-      margin-top: 12px;
-      font-size: 12px;
-      line-height: 2;
-      align-items: center;
-      flex-direction: column;
-
-      span {
-        margin-top: 6px;
-      }
+    & > li > .ant-menu-submenu-title {
+      line-height: 24px;
     }
   }
 
-  &__wrap {
+  // collapsed show title end
+
+  // scrollbar -s tart
+  &__content {
     /* 滚动槽 */
     &::-webkit-scrollbar {
-      width: 6px;
-      height: 6px;
+      width: 4px;
+      height: 4px;
     }
 
-    // TODO 滚动条样式-待修改
     &::-webkit-scrollbar-track {
       background: rgba(0, 0, 0, 0);
     }
 
-    /* 滚动条滑块 */
     &::-webkit-scrollbar-thumb {
-      background: rgba(255, 255, 255, 0.3);
-      border-radius: 4px;
+      background: rgba(255, 255, 255, 0.2);
+      border-radius: 3px;
       box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1);
     }
 
@@ -73,29 +72,10 @@
       background: @border-color-dark;
     }
   }
+  // scrollbar  end
 
-  .ant-menu-submenu:first-of-type {
-    margin-top: 4px;
-  }
-
-  .ant-menu-submenu-title {
-    margin-top: 0;
-  }
-
-  &-wrap {
-    height: 100%;
-  }
-
-  .menu-item-icon {
-    vertical-align: text-top;
-  }
-  // 透明化背景
-  &-bg__sidebar {
-    background-color: transparent;
-  }
-
-  &-bg__sidebar-hor {
-    overflow: hidden;
+  &__sidebar-hor {
+    // overflow: hidden;
 
     &.ant-menu-horizontal {
       display: flex;
@@ -107,6 +87,13 @@
       }
 
       &.ant-menu-light {
+        .basic-menu-item__level1 {
+          &.top-active-menu {
+            color: @primary-color;
+            border-bottom: 3px solid @primary-color;
+          }
+        }
+
         .ant-menu-item {
           &.basic-menu-item__level1 {
             height: @header-height;
@@ -128,7 +115,6 @@
           border-bottom: 3px solid @primary-color;
         }
 
-        // 有子菜单
         .ant-menu-submenu {
           &:hover {
             border-bottom: 3px solid @primary-color;
@@ -144,30 +130,44 @@
       &.ant-menu-dark {
         background: transparent;
 
+        .ant-menu-submenu:hover,
+        .ant-menu-item-open,
+        .ant-menu-submenu-open,
+        .ant-menu-item-selected,
+        .ant-menu-submenu-selected,
+        .ant-menu-item:hover,
+        .ant-menu-item-active,
+        .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,
+        .ant-menu-submenu-active,
+        .ant-menu-submenu-title:hover {
+          color: #fff;
+          background: @top-menu-active-bg-color !important;
+        }
+
         .ant-menu-item:hover,
         .ant-menu-item-active,
         .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,
         .ant-menu-submenu-active,
         .ant-menu-submenu-title:hover {
           background: @top-menu-active-bg-color;
-          // border-radius: 6px 6px 0 0;
         }
 
         .basic-menu-item__level1 {
-          &.ant-menu-item-selected,
-          &.ant-menu-submenu-selected {
+          background: transparent;
+
+          &.top-active-menu {
+            color: @white;
             background: @top-menu-active-bg-color;
-            // border-radius: 6px 6px 0 0;
+            border-radius: 2px 2px 0 0;
           }
-        }
 
-        .ant-menu-item {
-          &.basic-menu-item__level1 {
-            height: @header-height;
-            line-height: @header-height;
+          &.ant-menu-item-selected,
+          &.ant-menu-submenu-selected {
+            background: @top-menu-active-bg-color !important;
           }
         }
-        // 有子菜单
+
+        .ant-menu-item,
         .ant-menu-submenu {
           &.basic-menu-item__level1,
           .ant-menu-submenu-title {
@@ -178,24 +178,27 @@
       }
     }
   }
-  // 重置菜单项行高
-  .ant-menu-item,
-  .ant-menu-sub.ant-menu-inline > .ant-menu-item,
-  .ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {
-    height: @app-menu-item-height;
-    margin: 0;
-    line-height: @app-menu-item-height;
+
+  .ant-menu-item {
+    transition: unset;
   }
 
-  &.ant-menu-dark:not(.basic-menu-bg__sidebar-hor) {
-    .active-menu-style();
+  &.ant-menu-dark:not(.basic-menu__sidebar-hor):not(.basic-menu__second) {
+    // Reset menu item row height
+    .ant-menu-item,
+    .ant-menu-sub.ant-menu-inline > .ant-menu-item,
+    .ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {
+      height: @app-menu-item-height;
+      margin: 0;
+      line-height: @app-menu-item-height;
+    }
   }
 
   // 层级样式
-  &.ant-menu-dark {
-    // .ant-menu-item {
-    //   transition: unset;
-    // }
+  &.ant-menu-dark:not(.basic-menu__sidebar-hor) {
+    overflow-x: hidden;
+    background: @first-menu-item-dark-bg-color;
+    .active-menu-style();
 
     .ant-menu-item.ant-menu-item-selected.basic-menu-menu-item__level1,
     .ant-menu-submenu-selected.basic-menu-menu-item__level1 {
@@ -203,76 +206,44 @@
     }
 
     .basic-menu-item__level1 {
-      margin-bottom: 0;
+      background-color: @first-menu-item-dark-bg-color;
 
       > .ant-menu-sub > li {
         background-color: @sub-menu-item-dark-bg-color;
       }
-
-      &.top-active-menu {
-        color: @white;
-        background: @top-menu-active-bg-color;
-        border-radius: 6px 6px 0 0;
-      }
     }
 
-    // 2级菜单
-
     .basic-menu-item__level2:not(.ant-menu-item-selected),
     .ant-menu-sub {
       background-color: @sub-menu-item-dark-bg-color;
     }
 
-    .basic-menu-item__level2 {
-      margin-bottom: 0;
-    }
-    // 3级菜单
-    .basic-menu-item__level3,
-    .basic-menu__popup {
-      margin-bottom: 0;
-    }
-
     .basic-menu-item__level3:not(.ant-menu-item-selected) {
       background-color: @children-menu-item-dark-bg-color;
     }
 
     .ant-menu-submenu-title {
-      // line-height: @app-menu-item-height;
       display: flex;
       height: @app-menu-item-height;
-      margin: 0;
+      // margin: 0;
       align-items: center;
     }
 
     &.ant-menu-inline-collapsed {
-      .ant-menu-item-selected {
-        background: unset !important;
-        box-shadow: none;
-      }
-
       .ant-menu-submenu-selected,
       .ant-menu-item-selected {
-        .active-style();
+        background: darken(@first-menu-item-dark-bg-color, 6%) !important;
       }
     }
   }
 
-  &.ant-menu-light {
+  &.ant-menu-light:not(.basic-menu__sidebar-hor) {
     overflow-x: hidden;
     border-right: none;
 
-    .basic-menu-item__level1 {
-      &.top-active-menu {
-        color: @primary-color;
-        border-bottom: 3px solid @primary-color;
-      }
-    }
-
-    &:not(.ant-menu-horizontal) {
-      .ant-menu-item-selected {
-        background: fade(@primary-color, 18%);
-      }
-    }
+    // .ant-menu-item-selected {
+    //   background: fade(@primary-color, 18%);
+    // }
 
     .ant-menu-item.ant-menu-item-selected.basic-menu-menu-item__level1,
     .ant-menu-submenu-selected.basic-menu-menu-item__level1 {
@@ -289,6 +260,20 @@
   .ant-menu-item.ant-menu-item-selected {
     position: relative;
   }
+
+  &.basic-menu__second.ant-menu-inline-collapsed:not(.basic-menu__sidebar-hor) {
+    // Reset menu item row height
+    .ant-menu-item,
+    .ant-menu-sub.ant-menu-inline > .ant-menu-item,
+    .ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {
+      display: flex;
+      height: @app-menu-item-height * 1.4;
+      padding: 6px 0 !important;
+      margin: 0;
+      line-height: @app-menu-item-height;
+      align-items: center;
+    }
+  }
 }
 
 // 触发器样式
@@ -322,3 +307,24 @@
     .active-menu-style();
   }
 }
+
+.hide-title {
+  .ant-menu-inline-collapsed > .ant-menu-item,
+  .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item,
+  .ant-menu-inline-collapsed
+    > .ant-menu-item-group
+    > .ant-menu-item-group-list
+    > .ant-menu-submenu
+    > .ant-menu-submenu-title,
+  .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {
+    padding-right: 20px !important;
+    padding-left: 20px !important;
+  }
+
+  .ant-menu-inline-collapsed {
+    .basic-menu-item__level1 {
+      display: flex;
+      justify-content: center;
+    }
+  }
+}

+ 6 - 6
src/design/ant/btn.less

@@ -1,11 +1,11 @@
 // button重置
 .ant-btn {
-  &.ant-btn-success:not(.ant-btn-link),
-  &.ant-btn-error:not(.ant-btn-link),
-  &.ant-btn-warning:not(.ant-btn-link),
-  &.ant-btn-primary:not(.ant-btn-link) {
-    box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.08) !important;
-  }
+  // &.ant-btn-success:not(.ant-btn-link),
+  // &.ant-btn-error:not(.ant-btn-link),
+  // &.ant-btn-warning:not(.ant-btn-link),
+  // &.ant-btn-primary:not(.ant-btn-link) {
+  //   box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.08) !important;
+  // }
 
   &-primary {
     color: @white;

+ 2 - 2
src/design/color.less

@@ -67,9 +67,9 @@
 @first-menu-item-dark-bg-color: #273352;
 
 // 2级菜单黑暗背景色
-@sub-menu-item-dark-bg-color: #4f6088;
+@sub-menu-item-dark-bg-color: #314268;
 // 3级菜单黑暗背景色
-@children-menu-item-dark-bg-color: #314268;
+@children-menu-item-dark-bg-color: #4f6088;
 
 // top-menu
 @top-menu-active-bg-color: #273352;

+ 6 - 8
src/design/public.less

@@ -1,19 +1,17 @@
 /* 滚动槽 */
 ::-webkit-scrollbar {
-  width: 8px;
-  height: 8px;
+  width: 6px;
+  height: 6px;
 }
 
 // TODO 滚动条样式-待修改
-// ::-webkit-scrollbar-track {
-//   // background: rgba(0, 0, 0, 0.06);
-//   // border-radius: 2px;
-//   // box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05);
-// }
+::-webkit-scrollbar-track {
+  background: rgba(0, 0, 0, 0.05);
+}
 
 /* 滚动条滑块 */
 ::-webkit-scrollbar-thumb {
-  background: @disabled-color;
+  background: rgba(0, 0, 0, 0.2);
   border-radius: 4px;
   box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1);
 }

+ 1 - 1
src/design/var/index.less

@@ -12,7 +12,7 @@
 @logo-width: 36px;
 
 //
-@sider-drag-z-index: 200;
+@side-drag-z-index: 200;
 @page-loading-z-index: 10000;
 
 // app menu

+ 1 - 1
src/layouts/default/LayoutBreadcrumb.tsx

@@ -75,7 +75,7 @@ export default defineComponent({
     }
 
     return () => (
-      <Breadcrumb class="layout-breadcrumb">
+      <Breadcrumb class={['layout-breadcrumb', unref(itemList).length === 0 ? 'hidden' : '']}>
         {() => (
           <TransitionGroup name="breadcrumb">
             {() => {

+ 15 - 1
src/layouts/default/LayoutMenu.tsx

@@ -109,8 +109,22 @@ export default defineComponent({
       // 菜单分割模式-left
       if (splitType === MenuSplitTyeEnum.LEFT) {
         const children = await getChildrenMenus(parentPath);
-        if (!children) return;
+        if (!children) {
+          appStore.commitProjectConfigState({
+            menuSetting: {
+              show: false,
+            },
+          });
+          flatMenusRef.value = [];
+          menusRef.value = [];
+          return;
+        }
         const flatChildren = await getFlatChildrenMenus(children);
+        appStore.commitProjectConfigState({
+          menuSetting: {
+            show: true,
+          },
+        });
         flatMenusRef.value = flatChildren;
         menusRef.value = children;
       }

+ 1 - 23
src/layouts/default/LayoutSideBar.tsx

@@ -6,10 +6,9 @@ import { menuStore } from '/@/store/modules/menu';
 
 // import darkMiniIMg from '/@/assets/images/sidebar/dark-mini.png';
 // import lightMiniImg from '/@/assets/images/sidebar/light-mini.png';
-import darkImg from '/@/assets/images/sidebar/dark.png';
 // import lightImg from '/@/assets/images/sidebar/light.png';
 import { appStore } from '/@/store/modules/app';
-import { MenuModeEnum, MenuSplitTyeEnum, MenuThemeEnum } from '/@/enums/menuEnum';
+import { MenuModeEnum, MenuSplitTyeEnum } from '/@/enums/menuEnum';
 import { SIDE_BAR_MINI_WIDTH, SIDE_BAR_SHOW_TIT_MINI_WIDTH } from '/@/enums/appEnum';
 import { useDebounce } from '/@/hooks/core/useDebounce';
 import LayoutMenu from './LayoutMenu';
@@ -34,26 +33,6 @@ export default defineComponent({
       return collapsedShowTitle ? SIDE_BAR_SHOW_TIT_MINI_WIDTH : SIDE_BAR_MINI_WIDTH;
     });
 
-    // 根据展开状态设置背景图片
-    const getStyle = computed((): any => {
-      // const collapse = unref(collapseRef);
-
-      const theme = unref(getProjectConfigRef).menuSetting.theme;
-      if (theme === MenuThemeEnum.LIGHT) {
-        // bg = lightImg;
-        return {};
-      }
-      let bg = '';
-      if (theme === MenuThemeEnum.DARK) {
-        // bg = collapse ? darkMiniIMg : darkImg;
-        bg = darkImg;
-      }
-
-      return {
-        'background-image': `url(${bg})`,
-      };
-    });
-
     function onCollapseChange(val: boolean) {
       if (initRef.value) {
         collapseRef.value = val;
@@ -182,7 +161,6 @@ export default defineComponent({
           class="layout-sidebar"
           ref={sideRef}
           onBreakpoint={handleBreakpoint}
-          style={unref(getStyle)}
         >
           {{
             trigger: () => <SideBarTrigger />,

+ 2 - 4
src/layouts/default/UserDropdown.tsx

@@ -26,14 +26,12 @@ export default defineComponent({
       return { realName, desc };
     });
 
-    /**
-     * @description: 退出登录
-     */
+    //  login out
     function handleLoginOut() {
       userStore.confirmLoginOut();
     }
 
-    // 打开文档
+    // open doc
     function openDoc() {
       window.open(DOC_URL, '__blank');
     }

+ 5 - 15
src/layouts/default/index.less

@@ -66,6 +66,10 @@
   .layout-sidebar {
     background-size: 100% 100%;
 
+    &.ant-layout-sider-dark {
+      background: @first-menu-item-dark-bg-color;
+    }
+
     &:not(.ant-layout-sider-dark) {
       border-right: 1px solid @border-color-light;
     }
@@ -79,7 +83,7 @@
       position: absolute;
       top: 0;
       right: -2px;
-      z-index: @sider-drag-z-index;
+      z-index: @side-drag-z-index;
       width: 2px;
       height: 100%;
       cursor: col-resize;
@@ -378,17 +382,3 @@
   height: 36px;
   line-height: 36px;
 }
-
-.hide-title {
-  .ant-menu-inline-collapsed > .ant-menu-item,
-  .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item,
-  .ant-menu-inline-collapsed
-    > .ant-menu-item-group
-    > .ant-menu-item-group-list
-    > .ant-menu-submenu
-    > .ant-menu-submenu-title,
-  .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {
-    padding-right: 20px !important;
-    padding-left: 20px !important;
-  }
-}

+ 6 - 3
src/layouts/default/index.tsx

@@ -51,9 +51,9 @@ export default defineComponent({
 
     const showSideBarRef = computed(() => {
       const {
-        menuSetting: { show, mode },
+        menuSetting: { show, mode, split },
       } = unref(getProjectConfigRef);
-      return show && mode !== MenuModeEnum.HORIZONTAL && !unref(getFullContent);
+      return split || (show && mode !== MenuModeEnum.HORIZONTAL && !unref(getFullContent));
     });
 
     // Get project configuration
@@ -73,6 +73,7 @@ export default defineComponent({
         showSettingButton,
         multiTabsSetting: { show: showTabs },
         headerSetting: { fixed },
+        menuSetting: { split, show },
       } = unref(getProjectConfigRef);
 
       const fixedHeaderCls = fixed
@@ -80,6 +81,8 @@ export default defineComponent({
         : '';
 
       const { isLock } = getLockInfo;
+
+      const showSideBar = split ? show : true;
       return (
         <Layout class="default-layout relative">
           {() => (
@@ -95,7 +98,7 @@ export default defineComponent({
               <Layout>
                 {() => (
                   <>
-                    {unref(showSideBarRef) && <LayoutSideBar />}
+                    {unref(showSideBarRef) && <LayoutSideBar class={showSideBar ? '' : 'hidden'} />}
                     <Layout class={[`default-layout__content`, fixedHeaderCls]}>
                       {() => (
                         <>

+ 5 - 3
src/layouts/page/index.tsx

@@ -38,14 +38,16 @@ export default defineComponent({
           <RouterView>
             {{
               default: ({ Component, route }: { Component: any; route: RouteLocation }) => {
-                // 已经位于tab内的不再显示动画
+                // No longer show animations that are already in the tab
                 const name = route.meta.inTab ? 'fade' : null;
+
+                // TODO add key?
                 const Content = openCache ? (
                   <KeepAlive max={max} include={cacheTabs}>
-                    <Component {...route.params} />
+                    <Component />
                   </KeepAlive>
                 ) : (
-                  <Component {...route.params} />
+                  <Component />
                 );
                 return openRouterTransition ? (
                   <Transition

+ 4 - 3
src/layouts/page/useTransition.ts

@@ -1,17 +1,18 @@
-import { onUnmounted } from 'vue';
 import { appStore } from '/@/store/modules/app';
+import { tryOnUnmounted } from '/@/utils/helper/vueHelper';
 export function useTransition() {
   function handleAfterEnter() {
     const { openRouterTransition, openPageLoading } = appStore.getProjectConfig;
     if (!openRouterTransition || !openPageLoading) return;
-    // 路由切换动画结束之后关闭loading
+    // Close loading after the route switching animation ends
     appStore.setPageLoadingAction(false);
   }
 
-  onUnmounted(() => {
+  tryOnUnmounted(() => {
     handleAfterEnter();
     stop();
   });
+
   return {
     handleAfterEnter,
     on: {

+ 1 - 1
src/settings/projectSetting.ts

@@ -49,7 +49,7 @@ const setting: ProjectConfig = {
     // 折叠菜单时候是否显示菜单名
     collapsedShowTitle: false,
     // 是否可拖拽
-    hasDrag: true,
+    hasDrag: false,
     // 是否显示
     show: true,
     // 是否显示搜索框

+ 1 - 1
src/setup/ant-design-vue/index.ts

@@ -3,7 +3,7 @@
 import type { App } from 'vue';
 
 import { Form, Input, Row, Col } from 'ant-design-vue';
-import 'ant-design-vue/dist/antd.less';
+import 'ant-design-vue/dist/antd.css';
 
 import './spin';