Commit 96c10d6c0fb46b56b0e74e09a8e20bcfc9f54cde

Authored by vben
1 parent d3780690

perf(menu): optimize layout menu

CHANGELOG.zh_CN.md
  1 +## Wip
  2 +
  3 +### ⚡ Performance Improvements
  4 +
  5 +- 菜单性能继续优化
  6 +
  7 +### 🎫 Chores
  8 +
  9 +- 删除菜单背景图
  10 +
1 ## 2.0.0-rc.8 (2020-11-2) 11 ## 2.0.0-rc.8 (2020-11-2)
2 12
3 ### ✨ Features 13 ### ✨ Features
package.json
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 }, 22 },
23 "dependencies": { 23 "dependencies": {
24 "@iconify/iconify": "^2.0.0-rc.1", 24 "@iconify/iconify": "^2.0.0-rc.1",
25 - "ant-design-vue": "^2.0.0-beta.12", 25 + "ant-design-vue": "^2.0.0-beta.13",
26 "apexcharts": "^3.22.0", 26 "apexcharts": "^3.22.0",
27 "axios": "^0.21.0", 27 "axios": "^0.21.0",
28 "echarts": "^4.9.0", 28 "echarts": "^4.9.0",
report.20201101.112320.28808.0.001.json deleted 100644 → 0
1 -  
2 -{  
3 - "header": {  
4 - "reportVersion": 1,  
5 - "event": "Allocation failed - JavaScript heap out of memory",  
6 - "trigger": "FatalError",  
7 - "filename": "report.20201101.112320.28808.0.001.json",  
8 - "dumpEventTime": "2020-11-01T11:23:20Z",  
9 - "dumpEventTimeStamp": "1604201000746",  
10 - "processId": 28808,  
11 - "cwd": "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0",  
12 - "commandLine": [  
13 - "/Users/annsion/.nvm/versions/node/v12.16.1/bin/node",  
14 - "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0/node_modules/.bin/vite"  
15 - ],  
16 - "nodejsVersion": "v12.16.1",  
17 - "wordSize": 64,  
18 - "arch": "x64",  
19 - "platform": "darwin",  
20 - "componentVersions": {  
21 - "node": "12.16.1",  
22 - "v8": "7.8.279.23-node.31",  
23 - "uv": "1.34.0",  
24 - "zlib": "1.2.11",  
25 - "brotli": "1.0.7",  
26 - "ares": "1.15.0",  
27 - "modules": "72",  
28 - "nghttp2": "1.40.0",  
29 - "napi": "5",  
30 - "llhttp": "2.0.4",  
31 - "http_parser": "2.9.3",  
32 - "openssl": "1.1.1d",  
33 - "cldr": "35.1",  
34 - "icu": "64.2",  
35 - "tz": "2019c",  
36 - "unicode": "12.1"  
37 - },  
38 - "release": {  
39 - "name": "node",  
40 - "lts": "Erbium",  
41 - "headersUrl": "https://nodejs.org/download/release/v12.16.1/node-v12.16.1-headers.tar.gz",  
42 - "sourceUrl": "https://nodejs.org/download/release/v12.16.1/node-v12.16.1.tar.gz"  
43 - },  
44 - "osName": "Darwin",  
45 - "osRelease": "19.4.0",  
46 - "osVersion": "Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64",  
47 - "osMachine": "x86_64",  
48 - "cpus": [  
49 - {  
50 - "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",  
51 - "speed": 2700,  
52 - "user": 5704770,  
53 - "nice": 0,  
54 - "sys": 2626500,  
55 - "idle": 18122690,  
56 - "irq": 0  
57 - },  
58 - {  
59 - "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",  
60 - "speed": 2700,  
61 - "user": 679970,  
62 - "nice": 0,  
63 - "sys": 396880,  
64 - "idle": 25355580,  
65 - "irq": 0  
66 - },  
67 - {  
68 - "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",  
69 - "speed": 2700,  
70 - "user": 5384870,  
71 - "nice": 0,  
72 - "sys": 1845420,  
73 - "idle": 19202190,  
74 - "irq": 0  
75 - },  
76 - {  
77 - "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",  
78 - "speed": 2700,  
79 - "user": 632210,  
80 - "nice": 0,  
81 - "sys": 341020,  
82 - "idle": 25459190,  
83 - "irq": 0  
84 - },  
85 - {  
86 - "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",  
87 - "speed": 2700,  
88 - "user": 5005990,  
89 - "nice": 0,  
90 - "sys": 1559680,  
91 - "idle": 19866790,  
92 - "irq": 0  
93 - },  
94 - {  
95 - "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",  
96 - "speed": 2700,  
97 - "user": 608570,  
98 - "nice": 0,  
99 - "sys": 303150,  
100 - "idle": 25520680,  
101 - "irq": 0  
102 - },  
103 - {  
104 - "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",  
105 - "speed": 2700,  
106 - "user": 4671490,  
107 - "nice": 0,  
108 - "sys": 1357130,  
109 - "idle": 20403830,  
110 - "irq": 0  
111 - },  
112 - {  
113 - "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",  
114 - "speed": 2700,  
115 - "user": 589160,  
116 - "nice": 0,  
117 - "sys": 275960,  
118 - "idle": 25567270,  
119 - "irq": 0  
120 - }  
121 - ],  
122 - "networkInterfaces": [  
123 - {  
124 - "name": "lo0",  
125 - "internal": true,  
126 - "mac": "00:00:00:00:00:00",  
127 - "address": "127.0.0.1",  
128 - "netmask": "255.0.0.0",  
129 - "family": "IPv4"  
130 - },  
131 - {  
132 - "name": "lo0",  
133 - "internal": true,  
134 - "mac": "00:00:00:00:00:00",  
135 - "address": "::1",  
136 - "netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",  
137 - "family": "IPv6",  
138 - "scopeid": 0  
139 - },  
140 - {  
141 - "name": "lo0",  
142 - "internal": true,  
143 - "mac": "00:00:00:00:00:00",  
144 - "address": "fe80::1",  
145 - "netmask": "ffff:ffff:ffff:ffff::",  
146 - "family": "IPv6",  
147 - "scopeid": 1  
148 - },  
149 - {  
150 - "name": "en0",  
151 - "internal": false,  
152 - "mac": "78:4f:43:93:8c:de",  
153 - "address": "fe80::109b:445e:8bfe:6f75",  
154 - "netmask": "ffff:ffff:ffff:ffff::",  
155 - "family": "IPv6",  
156 - "scopeid": 5  
157 - },  
158 - {  
159 - "name": "en0",  
160 - "internal": false,  
161 - "mac": "78:4f:43:93:8c:de",  
162 - "address": "10.10.4.96",  
163 - "netmask": "255.255.0.0",  
164 - "family": "IPv4"  
165 - },  
166 - {  
167 - "name": "awdl0",  
168 - "internal": false,  
169 - "mac": "76:f7:aa:86:99:4a",  
170 - "address": "fe80::74f7:aaff:fe86:994a",  
171 - "netmask": "ffff:ffff:ffff:ffff::",  
172 - "family": "IPv6",  
173 - "scopeid": 13  
174 - },  
175 - {  
176 - "name": "llw0",  
177 - "internal": false,  
178 - "mac": "76:f7:aa:86:99:4a",  
179 - "address": "fe80::74f7:aaff:fe86:994a",  
180 - "netmask": "ffff:ffff:ffff:ffff::",  
181 - "family": "IPv6",  
182 - "scopeid": 14  
183 - },  
184 - {  
185 - "name": "vnic0",  
186 - "internal": false,  
187 - "mac": "00:1c:42:00:00:08",  
188 - "address": "10.211.55.2",  
189 - "netmask": "255.255.255.0",  
190 - "family": "IPv4"  
191 - },  
192 - {  
193 - "name": "vnic1",  
194 - "internal": false,  
195 - "mac": "00:1c:42:00:00:09",  
196 - "address": "10.37.129.2",  
197 - "netmask": "255.255.255.0",  
198 - "family": "IPv4"  
199 - },  
200 - {  
201 - "name": "vnic2",  
202 - "internal": false,  
203 - "mac": "00:1c:42:00:00:0a",  
204 - "address": "192.168.137.2",  
205 - "netmask": "255.255.255.0",  
206 - "family": "IPv4"  
207 - },  
208 - {  
209 - "name": "utun0",  
210 - "internal": false,  
211 - "mac": "00:00:00:00:00:00",  
212 - "address": "fe80::eac7:e3c5:2e23:577b",  
213 - "netmask": "ffff:ffff:ffff:ffff::",  
214 - "family": "IPv6",  
215 - "scopeid": 18  
216 - },  
217 - {  
218 - "name": "utun1",  
219 - "internal": false,  
220 - "mac": "00:00:00:00:00:00",  
221 - "address": "fe80::92ca:3b6c:3505:bb75",  
222 - "netmask": "ffff:ffff:ffff:ffff::",  
223 - "family": "IPv6",  
224 - "scopeid": 19  
225 - },  
226 - {  
227 - "name": "en5",  
228 - "internal": false,  
229 - "mac": "ac:de:48:00:11:22",  
230 - "address": "fe80::aede:48ff:fe00:1122",  
231 - "netmask": "ffff:ffff:ffff:ffff::",  
232 - "family": "IPv6",  
233 - "scopeid": 4  
234 - },  
235 - {  
236 - "name": "en7",  
237 - "internal": false,  
238 - "mac": "00:e0:4c:68:03:12",  
239 - "address": "fe80::1436:ff70:1fc:e9e8",  
240 - "netmask": "ffff:ffff:ffff:ffff::",  
241 - "family": "IPv6",  
242 - "scopeid": 10  
243 - },  
244 - {  
245 - "name": "en7",  
246 - "internal": false,  
247 - "mac": "00:e0:4c:68:03:12",  
248 - "address": "192.168.32.33",  
249 - "netmask": "255.255.255.0",  
250 - "family": "IPv4"  
251 - },  
252 - {  
253 - "name": "en8",  
254 - "internal": false,  
255 - "mac": "6a:fe:f7:b4:a1:38",  
256 - "address": "fe80::4bb:1d2e:db16:dc3a",  
257 - "netmask": "ffff:ffff:ffff:ffff::",  
258 - "family": "IPv6",  
259 - "scopeid": 20  
260 - },  
261 - {  
262 - "name": "en8",  
263 - "internal": false,  
264 - "mac": "6a:fe:f7:b4:a1:38",  
265 - "address": "172.20.10.5",  
266 - "netmask": "255.255.255.240",  
267 - "family": "IPv4"  
268 - }  
269 - ],  
270 - "host": "ann.local"  
271 - },  
272 - "javascriptStack": {  
273 - "message": "No stack.",  
274 - "stack": [  
275 - "Unavailable."  
276 - ]  
277 - },  
278 - "nativeStack": [  
279 - {  
280 - "pc": "0x000000010015c5c2",  
281 - "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]"  
282 - },  
283 - {  
284 - "pc": "0x0000000100080dc8",  
285 - "symbol": "node::OnFatalError(char const*, char const*) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"  
286 - },  
287 - {  
288 - "pc": "0x0000000100185167",  
289 - "symbol": "v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"  
290 - },  
291 - {  
292 - "pc": "0x0000000100185103",  
293 - "symbol": "v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"  
294 - },  
295 - {  
296 - "pc": "0x000000010030b2f5",  
297 - "symbol": "v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"  
298 - },  
299 - {  
300 - "pc": "0x000000010030c9c4",  
301 - "symbol": "v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"  
302 - },  
303 - {  
304 - "pc": "0x0000000100309837",  
305 - "symbol": "v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"  
306 - },  
307 - {  
308 - "pc": "0x00000001003077fd",  
309 - "symbol": "v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"  
310 - },  
311 - {  
312 - "pc": "0x0000000100312fba",  
313 - "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]"  
314 - },  
315 - {  
316 - "pc": "0x0000000100313041",  
317 - "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]"  
318 - },  
319 - {  
320 - "pc": "0x00000001002e035b",  
321 - "symbol": "v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"  
322 - },  
323 - {  
324 - "pc": "0x0000000100618718",  
325 - "symbol": "v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"  
326 - },  
327 - {  
328 - "pc": "0x0000000100950919",  
329 - "symbol": "Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"  
330 - },  
331 - {  
332 - "pc": "0x00000001008fc271",  
333 - "symbol": "Builtins_ExtractFastJSArray [/Users/annsion/.nvm/versions/node/v12.16.1/bin/node]"  
334 - }  
335 - ],  
336 - "javascriptHeap": {  
337 - "totalMemory": 2197811200,  
338 - "totalCommittedMemory": 2188539296,  
339 - "usedMemory": 2170225248,  
340 - "availableMemory": 20428384,  
341 - "memoryLimit": 2197815296,  
342 - "heapSpaces": {  
343 - "read_only_space": {  
344 - "memorySize": 262144,  
345 - "committedMemory": 33088,  
346 - "capacity": 32808,  
347 - "used": 32808,  
348 - "available": 0  
349 - },  
350 - "new_space": {  
351 - "memorySize": 33554432,  
352 - "committedMemory": 24617648,  
353 - "capacity": 16759296,  
354 - "used": 13246416,  
355 - "available": 3512880  
356 - },  
357 - "old_space": {  
358 - "memorySize": 2065317888,  
359 - "committedMemory": 2065256464,  
360 - "capacity": 2062879320,  
361 - "used": 2062727208,  
362 - "available": 152112  
363 - },  
364 - "code_space": {  
365 - "memorySize": 1740800,  
366 - "committedMemory": 1696768,  
367 - "capacity": 1591904,  
368 - "used": 1591904,  
369 - "available": 0  
370 - },  
371 - "map_space": {  
372 - "memorySize": 6033408,  
373 - "committedMemory": 6032800,  
374 - "capacity": 1877280,  
375 - "used": 1877280,  
376 - "available": 0  
377 - },  
378 - "large_object_space": {  
379 - "memorySize": 90853376,  
380 - "committedMemory": 90853376,  
381 - "capacity": 90746848,  
382 - "used": 90746848,  
383 - "available": 0  
384 - },  
385 - "code_large_object_space": {  
386 - "memorySize": 49152,  
387 - "committedMemory": 49152,  
388 - "capacity": 2784,  
389 - "used": 2784,  
390 - "available": 0  
391 - },  
392 - "new_large_object_space": {  
393 - "memorySize": 0,  
394 - "committedMemory": 0,  
395 - "capacity": 16759296,  
396 - "used": 0,  
397 - "available": 16759296  
398 - }  
399 - }  
400 - },  
401 - "resourceUsage": {  
402 - "userCpuSeconds": 80.3311,  
403 - "kernelCpuSeconds": 15.4548,  
404 - "cpuConsumptionPercent": 16.7458,  
405 - "maxRss": 2349800095744,  
406 - "pageFaults": {  
407 - "IORequired": 26,  
408 - "IONotRequired": 1556354  
409 - },  
410 - "fsActivity": {  
411 - "reads": 0,  
412 - "writes": 0  
413 - }  
414 - },  
415 - "libuv": [  
416 - ],  
417 - "environmentVariables": {  
418 - "npm_package_scripts_log": "esno ./build/script/changelog.ts",  
419 - "npm_package_devDependencies_lint_staged": "^10.5.0",  
420 - "npm_package_devDependencies__purge_icons_generated": "^0.4.1",  
421 - "npm_package_devDependencies_postcss_import": "^12.0.1",  
422 - "npm_package_devDependencies_prettier": "^2.1.2",  
423 - "npm_package_scripts_ls_lint": "npx ls-lint",  
424 - "TERM_PROGRAM": "vscode",  
425 - "npm_package_dependencies_zxcvbn": "^4.4.2",  
426 - "NODE": "/Users/annsion/.nvm/versions/node/v12.16.1/bin/node",  
427 - "npm_config_version_git_tag": "true",  
428 - "npm_package_dependencies_axios": "^0.21.0",  
429 - "npm_package_devDependencies_typescript": "^4.0.5",  
430 - "npm_package_devDependencies_vite_plugin_mock": "^1.0.6",  
431 - "npm_package_devDependencies_vite_plugin_pwa": "^0.1.3",  
432 - "npm_package_homepage": "https://github.com/anncwb/vue-vben-admin",  
433 - "NVM_CD_FLAGS": "-q",  
434 - "INIT_CWD": "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0",  
435 - "npm_package_devDependencies_conventional_changelog_custom_config": "^0.3.1",  
436 - "SHELL": "/bin/zsh",  
437 - "TERM": "xterm-256color",  
438 - "npm_package_dependencies_vditor": "^3.6.0",  
439 - "npm_package_devDependencies_rimraf": "^3.0.2",  
440 - "TMPDIR": "/var/folders/69/p74fhms10gq0tzw8gtqvqjfc0000gn/T/",  
441 - "npm_config_email": "@ylz123456",  
442 - "npm_config_init_license": "MIT",  
443 - "npm_package_devDependencies_fs_extra": "^9.0.1",  
444 - "npm_package_devDependencies_vue_eslint_parser": "^7.1.1",  
445 - "TERM_PROGRAM_VERSION": "1.50.1",  
446 - "npm_package_changelog_authorName": "false",  
447 - "ORIGINAL_XDG_CURRENT_DESKTOP": "undefined",  
448 - "npm_package_dependencies_vuex_module_decorators": "^1.0.1",  
449 - "npm_package_devDependencies_rollup_plugin_analyzer": "^3.3.0",  
450 - "npm_package_devDependencies_stylelint_order": "^4.1.0",  
451 - "npm_config_home": "https://www.npmjs.org",  
452 - "npm_config_registry": "https://registry.npmjs.org/",  
453 - "npm_package_devDependencies_conventional_changelog_cli": "^2.1.0",  
454 - "npm_package_devDependencies_yargs": "^16.1.0",  
455 - "npm_package_devDependencies_commitizen": "^4.2.2",  
456 - "npm_package_devDependencies_stylelint_config_standard": "^20.0.0",  
457 - "npm_package_repository_url": "git+https://github.com/anncwb/vue-vben-admin.git",  
458 - "ZSH": "/Users/annsion/.oh-my-zsh",  
459 - "npm_package_scripts_report": "cross-env REPORT=true npm run build ",  
460 - "npm_package_dependencies_xlsx": "^0.16.8",  
461 - "npm_package_changelog_bugsUrl": "https://github.com/anncwb/vue-vben-admin/issues",  
462 - "npm_package_readmeFilename": "README.en-US.md",  
463 - "npm_config_python": "/usr/bin/python",  
464 - "npm_package_description": "This branch is a 2.0 new branch which use vue3 to develop.",  
465 - "USER": "annsion",  
466 - "NVM_DIR": "/Users/annsion/.nvm",  
467 - "npm_package_devDependencies_dotenv": "^8.2.0",  
468 - "npm_package_license": "MIT",  
469 - "CLASS_PATH": "/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/lib",  
470 - "npm_package_scripts_build_no_cache": "yarn clean:cache && npm run build",  
471 - "npm_package_dependencies_nprogress": "^0.2.0",  
472 - "npm_package_dependencies_path_to_regexp": "^6.2.0",  
473 - "npm_package_devDependencies__vuedx_typescript_plugin_vue": "^0.2.4-0",  
474 - "npm_package_devDependencies_vite_plugin_html": "^1.0.0-beta.2",  
475 - "npm_package_devDependencies__types_yargs": "^15.0.9",  
476 - "SSH_AUTH_SOCK": "/private/tmp/com.apple.launchd.8OyPR83dMT/Listeners",  
477 - "npm_package_devDependencies_eslint": "^7.12.0",  
478 - "npm_package_devDependencies_less": "^3.12.2",  
479 - "npm_package_changelog_authorEmail": "false",  
480 - "__CF_USER_TEXT_ENCODING": "0x1F5:0x19:0x34",  
481 - "npm_package_scripts_lint_stylelint": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",  
482 - "npm_package_devDependencies__typescript_eslint_eslint_plugin": "^4.6.0",  
483 - "npm_package_husky_hooks_pre_commit": "ls-lint && lint-staged",  
484 - "npm_execpath": "/usr/local/Cellar/yarn/1.21.1/libexec/bin/yarn.js",  
485 - "npm_package_scripts_preview_dist": "esno ./build/script/preview.ts",  
486 - "PAGER": "less",  
487 - "npm_package_devDependencies_eslint_plugin_prettier": "^3.1.4",  
488 - "LSCOLORS": "Gxfxcxdxbxegedabagacad",  
489 - "npm_package_devDependencies__ls_lint_ls_lint": "^1.9.2",  
490 - "npm_package_devDependencies__typescript_eslint_parser": "^4.6.0",  
491 - "npm_package_devDependencies_koa_static": "^5.0.0",  
492 - "npm_package_devDependencies__types_echarts": "^4.9.0",  
493 - "npm_config_argv": "{\"remain\":[],\"cooked\":[\"run\",\"serve\"],\"original\":[\"serve\"]}",  
494 - "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",  
495 - "npm_config___registry_npm_taobao_org__always_auth": "",  
496 - "npm_package_scripts_typecheck": "typecheck .",  
497 - "npm_package_dependencies_vue": "^3.0.2",  
498 - "_": "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0/node_modules/.bin/cross-env",  
499 - "npm_package_dependencies_ant_design_vue": "^2.0.0-beta.11",  
500 - "npm_package_devDependencies__types_nprogress": "^0.2.0",  
501 - "SONAR_SCANNER_HOME": "/usr/local/sonar-scanner",  
502 - "PWD": "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0",  
503 - "npm_package_scripts_preview": "npm run build && esno ./build/script/preview.ts",  
504 - "npm_package_bugs_url": "https://github.com/anncwb/vue-vben-admin/issues",  
505 - "JAVA_HOME": "/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home",  
506 - "npm_lifecycle_event": "serve",  
507 - "npm_package_name": "vben-admin-2.0",  
508 - "npm_package_repository_type": "git",  
509 - "LANG": "zh_CN.UTF-8",  
510 - "npm_package_devDependencies_stylelint_config_prettier": "^8.0.2",  
511 - "npm_config_version_commit_hooks": "true",  
512 - "npm_package_scripts_build": " rimraf dist && cross-env NODE_ENV=production vite build && esno ./build/script/postBuild.ts",  
513 - "npm_config_username": "ylz",  
514 - "npm_package_scripts_lint_eslint": "eslint --fix --ext \"src/**/*.{vue,less,css,scss}\"",  
515 - "npm_package_devDependencies_rollup_plugin_visualizer": "^4.1.2",  
516 - "XPC_FLAGS": "0x0",  
517 - "NODE_ENV": "development",  
518 - "npm_config_bin_links": "true",  
519 - "npm_package_devDependencies_stylelint": "^13.7.2",  
520 - "npm_package_devDependencies_tasksfile": "^5.1.1",  
521 - "npm_package_devDependencies__types_lodash_es": "^4.17.3",  
522 - "npm_package_changelog_emojis": "true",  
523 - "npm_package_engines_node": ">=10.16.1",  
524 - "npm_package_dependencies_vue_i18n": "^9.0.0-beta.6",  
525 - "npm_package_devDependencies_eslint_config_prettier": "^6.15.0",  
526 - "npm_package_version": "2.0.0-rc.7",  
527 - "npm_package_devDependencies__iconify_json": "^1.1.249",  
528 - "XPC_SERVICE_NAME": "0",  
529 - "npm_package_devDependencies_autoprefixer": "^9.8.6",  
530 - "npm_package_devDependencies__types_koa_static": "^4.0.1",  
531 - "HOME": "/Users/annsion",  
532 - "SHLVL": "2",  
533 - "M2_HOME": "/Users/annsion/maven/apache-maven-3.6.1",  
534 - "npm_package_devDependencies__types_mockjs": "^1.0.3",  
535 - "npm_package_devDependencies_eslint_plugin_vue": "^7.1.0",  
536 - "VSCODE_GIT_ASKPASS_MAIN": "/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass-main.js",  
537 - "npm_config_scripts_prepend_node_path": "true",  
538 - "npm_config_strict_ssl": "true",  
539 - "npm_config_save_prefix": "^",  
540 - "npm_package_scripts_serve": "esno ./build/script/preserve.ts && cross-env NODE_ENV=development vite",  
541 - "npm_config_version_git_message": "v%s",  
542 - "npm_package_scripts_bootstrap": "yarn install",  
543 - "npm_package_devDependencies__commitlint_cli": "^11.0.0",  
544 - "npm_package_devDependencies_cross_env": "^7.0.2",  
545 - "npm_package_devDependencies_husky": "^4.3.0",  
546 - "npm_package_husky_hooks_commit_msg": "commitlint -E HUSKY_GIT_PARAMS",  
547 - "npm_package_scripts_lint_prettier": "prettier --write --loglevel warn \"src/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"",  
548 - "npm_package_dependencies_echarts": "^4.9.0",  
549 - "NPM_CONFIG_PYTHON": "/usr/bin/python",  
550 - "npm_config_disturl": "https://npm.taobao.org/dist",  
551 - "npm_package_devDependencies_ts_node": "^9.0.0",  
552 - "npm_package_dependencies_vite": "^1.0.0-rc.8",  
553 - "npm_package_devDependencies_vite_plugin_purge_icons": "^0.4.4",  
554 - "YARN_WRAP_OUTPUT": "false",  
555 - "LOGNAME": "annsion",  
556 - "LESS": "-R",  
557 - "npm_package_scripts_build_site": "cross-env SITE=true npm run build ",  
558 - "npm_lifecycle_script": "esno ./build/script/preserve.ts && cross-env NODE_ENV=development vite",  
559 - "PREFIX": "/usr/local",  
560 - "npm_package_dependencies__iconify_iconify": "^2.0.0-rc.1",  
561 - "npm_package_dependencies_lodash_es": "^4.17.15",  
562 - "npm_package_dependencies_vuex": "^4.0.0-rc.1",  
563 - "VSCODE_GIT_IPC_HANDLE": "/var/folders/69/p74fhms10gq0tzw8gtqvqjfc0000gn/T/vscode-git-8303872dd8.sock",  
564 - "LC_CTYPE": "zh_CN.UTF-8",  
565 - "npm_package_scripts_clean_cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite_opt_cache",  
566 - "npm_package_dependencies_apexcharts": "^3.22.0",  
567 - "npm_package_devDependencies__types_rollup_plugin_visualizer": "^2.6.0",  
568 - "npm_package_devDependencies__types_fs_extra": "^9.0.2",  
569 - "GITHUB_TOKEN": "f5003f41e66eff1e868635b2e5a78f412b1741ee",  
570 - "NVM_BIN": "/Users/annsion/.nvm/versions/node/v12.16.1/bin",  
571 - "npm_config_user_agent": "yarn/1.21.1 npm/? node/v12.16.1 darwin x64",  
572 - "npm_config_ignore_scripts": "",  
573 - "npm_config_version_git_sign": "",  
574 - "npm_package_devDependencies__types_zxcvbn": "^4.4.0",  
575 - "npm_package_devDependencies__vue_compiler_sfc": "^3.0.2",  
576 - "npm_package_devDependencies_portfinder": "^1.0.28",  
577 - "GIT_ASKPASS": "/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass.sh",  
578 - "VSCODE_GIT_ASKPASS_NODE": "/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Renderer).app/Contents/MacOS/Code Helper (Renderer)",  
579 - "npm_package_scripts_reinstall": "rimraf yarn.lock && rimraf package.lock.json && rimraf node_modules && npm run bootstrap",  
580 - "npm_package_dependencies_mockjs": "^1.1.0",  
581 - "OCI_INC_DIR": "/usr/local/oracle/instantclient/sdk/include",  
582 - "npm_package_devDependencies__types_qrcode": "^1.3.5",  
583 - "OCI_LIB_DIR": "/usr/local/oracle/instantclient",  
584 - "npm_config_ignore_optional": "",  
585 - "npm_config_init_version": "1.0.0",  
586 - "npm_package_devDependencies__vuedx_typecheck": "^0.2.4-0",  
587 - "npm_package_scripts_clean_lib": "npx rimraf node_modules",  
588 - "npm_package_dependencies_vue_router": "^4.0.0-rc.1",  
589 - "npm_package_devDependencies__commitlint_config_conventional": "^11.0.0",  
590 - "npm_package_devDependencies_esno": "^0.2.4",  
591 - "npm_config_version_tag_prefix": "v",  
592 - "npm_package_dependencies_qrcode": "^1.4.4",  
593 - "npm_node_execpath": "/Users/annsion/.nvm/versions/node/v12.16.1/bin/node",  
594 - "COLORTERM": "truecolor",  
595 - "VITE_USE_MOCK": "true",  
596 - "VITE_PUBLIC_PATH": "/",  
597 - "VITE_PROXY": "/api,http://localhost:3000",  
598 - "VITE_DROP_CONSOLE": "false",  
599 - "VITE_GLOB_API_URL": "/api",  
600 - "VITE_GLOB_API_URL_PREFIX": "",  
601 - "VITE_PORT": "3100",  
602 - "VITE_GLOB_APP_TITLE": "Vben Admin",  
603 - "VITE_GLOB_APP_SHORT_NAME": "vue_vben_admin_2x"  
604 - },  
605 - "userLimits": {  
606 - "core_file_size_blocks": {  
607 - "soft": 0,  
608 - "hard": "unlimited"  
609 - },  
610 - "data_seg_size_kbytes": {  
611 - "soft": "unlimited",  
612 - "hard": "unlimited"  
613 - },  
614 - "file_size_blocks": {  
615 - "soft": "unlimited",  
616 - "hard": "unlimited"  
617 - },  
618 - "max_locked_memory_bytes": {  
619 - "soft": "unlimited",  
620 - "hard": "unlimited"  
621 - },  
622 - "max_memory_size_kbytes": {  
623 - "soft": "unlimited",  
624 - "hard": "unlimited"  
625 - },  
626 - "open_files": {  
627 - "soft": 24576,  
628 - "hard": "unlimited"  
629 - },  
630 - "stack_size_bytes": {  
631 - "soft": 8388608,  
632 - "hard": 67104768  
633 - },  
634 - "cpu_time_seconds": {  
635 - "soft": "unlimited",  
636 - "hard": "unlimited"  
637 - },  
638 - "max_user_processes": {  
639 - "soft": 2784,  
640 - "hard": 4176  
641 - },  
642 - "virtual_memory_kbytes": {  
643 - "soft": "unlimited",  
644 - "hard": "unlimited"  
645 - }  
646 - },  
647 - "sharedObjects": [  
648 - "/Users/annsion/.nvm/versions/node/v12.16.1/bin/node",  
649 - "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation",  
650 - "/usr/lib/libSystem.B.dylib",  
651 - "/usr/lib/libc++.1.dylib",  
652 - "/usr/lib/libobjc.A.dylib",  
653 - "/usr/lib/libfakelink.dylib",  
654 - "/usr/lib/libDiagnosticMessagesClient.dylib",  
655 - "/usr/lib/libicucore.A.dylib",  
656 - "/usr/lib/libz.1.dylib",  
657 - "/usr/lib/libc++abi.dylib",  
658 - "/usr/lib/system/libcache.dylib",  
659 - "/usr/lib/system/libcommonCrypto.dylib",  
660 - "/usr/lib/system/libcompiler_rt.dylib",  
661 - "/usr/lib/system/libcopyfile.dylib",  
662 - "/usr/lib/system/libcorecrypto.dylib",  
663 - "/usr/lib/system/libdispatch.dylib",  
664 - "/usr/lib/system/libdyld.dylib",  
665 - "/usr/lib/system/libkeymgr.dylib",  
666 - "/usr/lib/system/liblaunch.dylib",  
667 - "/usr/lib/system/libmacho.dylib",  
668 - "/usr/lib/system/libquarantine.dylib",  
669 - "/usr/lib/system/libremovefile.dylib",  
670 - "/usr/lib/system/libsystem_asl.dylib",  
671 - "/usr/lib/system/libsystem_blocks.dylib",  
672 - "/usr/lib/system/libsystem_c.dylib",  
673 - "/usr/lib/system/libsystem_configuration.dylib",  
674 - "/usr/lib/system/libsystem_coreservices.dylib",  
675 - "/usr/lib/system/libsystem_darwin.dylib",  
676 - "/usr/lib/system/libsystem_dnssd.dylib",  
677 - "/usr/lib/system/libsystem_featureflags.dylib",  
678 - "/usr/lib/system/libsystem_info.dylib",  
679 - "/usr/lib/system/libsystem_m.dylib",  
680 - "/usr/lib/system/libsystem_malloc.dylib",  
681 - "/usr/lib/system/libsystem_networkextension.dylib",  
682 - "/usr/lib/system/libsystem_notify.dylib",  
683 - "/usr/lib/system/libsystem_sandbox.dylib",  
684 - "/usr/lib/system/libsystem_secinit.dylib",  
685 - "/usr/lib/system/libsystem_kernel.dylib",  
686 - "/usr/lib/system/libsystem_platform.dylib",  
687 - "/usr/lib/system/libsystem_pthread.dylib",  
688 - "/usr/lib/system/libsystem_symptoms.dylib",  
689 - "/usr/lib/system/libsystem_trace.dylib",  
690 - "/usr/lib/system/libunwind.dylib",  
691 - "/usr/lib/system/libxpc.dylib",  
692 - "/System/Library/CoreServices/Encodings/libSimplifiedChineseConverter.dylib",  
693 - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices",  
694 - "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics",  
695 - "/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText",  
696 - "/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO",  
697 - "/System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync",  
698 - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS",  
699 - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy",  
700 - "/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices",  
701 - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices",  
702 - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis",  
703 - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore",  
704 - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD",  
705 - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis",  
706 - "/System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight",  
707 - "/System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib",  
708 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate",  
709 - "/System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface",  
710 - "/usr/lib/libxml2.2.dylib",  
711 - "/System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork",  
712 - "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation",  
713 - "/System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient",  
714 - "/usr/lib/libcompression.dylib",  
715 - "/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration",  
716 - "/System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay",  
717 - "/System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator",  
718 - "/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit",  
719 - "/System/Library/Frameworks/Metal.framework/Versions/A/Metal",  
720 - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders",  
721 - "/System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport",  
722 - "/System/Library/Frameworks/Security.framework/Versions/A/Security",  
723 - "/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore",  
724 - "/usr/lib/libbsm.0.dylib",  
725 - "/usr/lib/liblzma.5.dylib",  
726 - "/usr/lib/libauto.dylib",  
727 - "/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration",  
728 - "/usr/lib/libarchive.2.dylib",  
729 - "/usr/lib/liblangid.dylib",  
730 - "/usr/lib/libCRFSuite.dylib",  
731 - "/usr/lib/libenergytrace.dylib",  
732 - "/usr/lib/system/libkxld.dylib",  
733 - "/System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression",  
734 - "/usr/lib/libcoretls.dylib",  
735 - "/usr/lib/libcoretls_cfhelpers.dylib",  
736 - "/usr/lib/libpam.2.dylib",  
737 - "/usr/lib/libsqlite3.dylib",  
738 - "/usr/lib/libxar.1.dylib",  
739 - "/usr/lib/libbz2.1.0.dylib",  
740 - "/usr/lib/libiconv.2.dylib",  
741 - "/usr/lib/libcharset.1.dylib",  
742 - "/usr/lib/libnetwork.dylib",  
743 - "/usr/lib/libpcap.A.dylib",  
744 - "/usr/lib/libapple_nghttp2.dylib",  
745 - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents",  
746 - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore",  
747 - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata",  
748 - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices",  
749 - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit",  
750 - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE",  
751 - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices",  
752 - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices",  
753 - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList",  
754 - "/System/Library/Frameworks/NetFS.framework/Versions/A/NetFS",  
755 - "/System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth",  
756 - "/System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport",  
757 - "/System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC",  
758 - "/System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP",  
759 - "/System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities",  
760 - "/usr/lib/libmecabra.dylib",  
761 - "/usr/lib/libmecab.dylib",  
762 - "/usr/lib/libgermantok.dylib",  
763 - "/usr/lib/libThaiTokenizer.dylib",  
764 - "/usr/lib/libChineseTokenizer.dylib",  
765 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage",  
766 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib",  
767 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib",  
768 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib",  
769 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib",  
770 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib",  
771 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib",  
772 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib",  
773 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib",  
774 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib",  
775 - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib",  
776 - "/System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling",  
777 - "/System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji",  
778 - "/System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData",  
779 - "/System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon",  
780 - "/usr/lib/libcmph.dylib",  
781 - "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory",  
782 - "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory",  
783 - "/System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS",  
784 - "/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation",  
785 - "/usr/lib/libutil.dylib",  
786 - "/System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore",  
787 - "/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement",  
788 - "/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement",  
789 - "/usr/lib/libxslt.1.dylib",  
790 - "/System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler",  
791 - "/System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment",  
792 - "/System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay",  
793 - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib",  
794 - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSCore.framework/Versions/A/MPSCore",  
795 - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSImage.framework/Versions/A/MPSImage",  
796 - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork",  
797 - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix",  
798 - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector",  
799 - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray",  
800 - "/System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools",  
801 - "/System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary",  
802 - "/System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics",  
803 - "/System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce",  
804 - "/usr/lib/libMobileGestalt.dylib",  
805 - "/System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo",  
806 - "/usr/lib/libIOReport.dylib",  
807 - "/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage",  
808 - "/System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo",  
809 - "/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL",  
810 - "/System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer",  
811 - "/System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore",  
812 - "/System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL",  
813 - "/usr/lib/libFosl_dynamic.dylib",  
814 - "/System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG",  
815 - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib",  
816 - "/usr/lib/libate.dylib",  
817 - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib",  
818 - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib",  
819 - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib",  
820 - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib",  
821 - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib",  
822 - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib",  
823 - "/usr/lib/libexpat.1.dylib",  
824 - "/System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG",  
825 - "/System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib",  
826 - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib",  
827 - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib",  
828 - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib",  
829 - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib",  
830 - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib",  
831 - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib",  
832 - "/usr/lib/libncurses.5.4.dylib",  
833 - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI",  
834 - "/usr/lib/libcups.2.dylib",  
835 - "/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos",  
836 - "/System/Library/Frameworks/GSS.framework/Versions/A/GSS",  
837 - "/usr/lib/libresolv.9.dylib",  
838 - "/System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal",  
839 - "/System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib",  
840 - "/usr/lib/libheimdal-asn1.dylib",  
841 - "/System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth",  
842 - "/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio",  
843 - "/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox",  
844 - "/System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices",  
845 - "/System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore",  
846 - "/System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk",  
847 - "/System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard",  
848 - "/System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices",  
849 - "/System/Library/PrivateFrameworks/PersistentConnection.framework/Versions/A/PersistentConnection",  
850 - "/System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer",  
851 - "/System/Library/PrivateFrameworks/CommonUtilities.framework/Versions/A/CommonUtilities",  
852 - "/System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom",  
853 - "/usr/lib/libAudioToolboxUtility.dylib",  
854 - "/Users/annsion/Documents/workspace_dev/vue-vben-admin-2.0/node_modules/fsevents/fsevents.node"  
855 - ]  
856 -}  
857 \ No newline at end of file 0 \ No newline at end of file
src/assets/images/sidebar/dark-mini.png deleted 100644 → 0

8.35 KB

src/assets/images/sidebar/light-mini.png deleted 100644 → 0

8.72 KB

src/assets/images/sidebar/light.png deleted 100644 → 0

23.7 KB

src/components/Breadcrumb/Breadcrumb.vue
@@ -35,9 +35,11 @@ @@ -35,9 +35,11 @@
35 @import (reference) '../../design/index.less'; 35 @import (reference) '../../design/index.less';
36 36
37 .breadcrumb { 37 .breadcrumb {
  38 + .unselect();
  39 +
38 height: @header-height; 40 height: @header-height;
39 padding-right: 20px; 41 padding-right: 20px;
40 - font-size: 14px; 42 + font-size: 13px;
41 line-height: @header-height; 43 line-height: @header-height;
42 // line-height: 1; 44 // line-height: 1;
43 45
src/components/Icon/index.tsx
@@ -72,7 +72,7 @@ export default defineComponent({ @@ -72,7 +72,7 @@ export default defineComponent({
72 onMounted(update); 72 onMounted(update);
73 73
74 return () => ( 74 return () => (
75 - <div ref={elRef} class={[attrs.class, 'app-iconify']} style={unref(wrapStyleRef)} /> 75 + <div ref={elRef} class={[attrs.class, 'app-iconify anticon']} style={unref(wrapStyleRef)} />
76 ); 76 );
77 }, 77 },
78 }); 78 });
src/components/Menu/src/BasicMenu.tsx
@@ -2,21 +2,27 @@ import type { MenuState } from &#39;./types&#39;; @@ -2,21 +2,27 @@ import type { MenuState } from &#39;./types&#39;;
2 import type { Menu as MenuType } from '/@/router/types'; 2 import type { Menu as MenuType } from '/@/router/types';
3 3
4 import { computed, defineComponent, unref, reactive, toRef, watch, onMounted, ref } from 'vue'; 4 import { computed, defineComponent, unref, reactive, toRef, watch, onMounted, ref } from 'vue';
5 -import { basicProps } from './props';  
6 import { Menu } from 'ant-design-vue'; 5 import { Menu } from 'ant-design-vue';
7 -import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum';  
8 -import { menuStore } from '/@/store/modules/menu';  
9 -import { getSlot } from '/@/utils/helper/tsxHelper';  
10 -// import { ScrollContainer } from '/@/components/Container/index';  
11 import SearchInput from './SearchInput.vue'; 6 import SearchInput from './SearchInput.vue';
12 -import './index.less';  
13 -import { menuHasChildren } from './helper';  
14 import MenuContent from './MenuContent'; 7 import MenuContent from './MenuContent';
  8 +
  9 +import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum';
  10 +
  11 +import { menuStore } from '/@/store/modules/menu';
  12 +import { appStore } from '/@/store/modules/app';
  13 +
15 import { useSearchInput } from './useSearchInput'; 14 import { useSearchInput } from './useSearchInput';
16 import { useOpenKeys } from './useOpenKeys'; 15 import { useOpenKeys } from './useOpenKeys';
17 import { useRouter } from 'vue-router'; 16 import { useRouter } from 'vue-router';
  17 +
18 import { isFunction } from '/@/utils/is'; 18 import { isFunction } from '/@/utils/is';
  19 +import { getSlot } from '/@/utils/helper/tsxHelper';
  20 +import { menuHasChildren } from './helper';
  21 +
19 import { getCurrentParentPath } from '/@/router/menus'; 22 import { getCurrentParentPath } from '/@/router/menus';
  23 +
  24 +import { basicProps } from './props';
  25 +import './index.less';
20 export default defineComponent({ 26 export default defineComponent({
21 name: 'BasicMenu', 27 name: 'BasicMenu',
22 props: basicProps, 28 props: basicProps,
@@ -69,7 +75,7 @@ export default defineComponent({ @@ -69,7 +75,7 @@ export default defineComponent({
69 return { 75 return {
70 height: `calc(100% - ${offset - 10}px)`, 76 height: `calc(100% - ${offset - 10}px)`,
71 position: 'relative', 77 position: 'relative',
72 - overflow: 'auto', 78 + overflowY: 'auto',
73 }; 79 };
74 }); 80 });
75 81
@@ -77,26 +83,26 @@ export default defineComponent({ @@ -77,26 +83,26 @@ export default defineComponent({
77 const transparentMenuClass = computed(() => { 83 const transparentMenuClass = computed(() => {
78 const { type } = props; 84 const { type } = props;
79 const { mode } = menuState; 85 const { mode } = menuState;
80 - if (  
81 - [MenuTypeEnum.MIX, MenuTypeEnum.SIDEBAR].includes(type) &&  
82 - mode !== MenuModeEnum.HORIZONTAL  
83 - ) {  
84 - return `basic-menu-bg__sidebar`;  
85 - } 86 + const cls: string[] = [];
86 if ( 87 if (
87 (type === MenuTypeEnum.TOP_MENU && mode === MenuModeEnum.HORIZONTAL) || 88 (type === MenuTypeEnum.TOP_MENU && mode === MenuModeEnum.HORIZONTAL) ||
88 props.appendClass 89 props.appendClass
89 ) { 90 ) {
90 - return `basic-menu-bg__sidebar-hor`; 91 + cls.push('basic-menu__sidebar-hor');
91 } 92 }
92 - return ''; 93 +
  94 + if (!props.isTop && props.isAppMenu && appStore.getProjectConfig.menuSetting.split) {
  95 + cls.push('basic-menu__second');
  96 + }
  97 + return cls;
93 }); 98 });
94 99
95 watch( 100 watch(
96 () => currentRoute.value.name, 101 () => currentRoute.value.name,
97 (name: string) => { 102 (name: string) => {
98 - name !== 'Redirect' && handleMenuChange();  
99 - getParentPath(); 103 + if (name === 'Redirect') return;
  104 + handleMenuChange();
  105 + props.isTop && appStore.getProjectConfig.menuSetting.split && getParentPath();
100 } 106 }
101 ); 107 );
102 108
@@ -149,22 +155,14 @@ export default defineComponent({ @@ -149,22 +155,14 @@ export default defineComponent({
149 } 155 }
150 156
151 const showTitle = computed(() => { 157 const showTitle = computed(() => {
152 - if (props.isTop) return true;  
153 - if (!props.isAppMenu) return true;  
154 - if (!props.collapsedShowTitle) {  
155 - return !menuStore.getCollapsedState;  
156 - }  
157 - return true; 158 + return props.collapsedShowTitle && menuStore.getCollapsedState;
158 }); 159 });
159 160
160 // render menu item 161 // render menu item
161 function renderMenuItem(menuList?: MenuType[], index = 1) { 162 function renderMenuItem(menuList?: MenuType[], index = 1) {
162 - if (!menuList) {  
163 - return;  
164 - } 163 + if (!menuList) return;
165 const { appendClass } = props; 164 const { appendClass } = props;
166 const levelCls = `basic-menu-item__level${index} ${menuState.theme} `; 165 const levelCls = `basic-menu-item__level${index} ${menuState.theme} `;
167 -  
168 return menuList.map((menu) => { 166 return menuList.map((menu) => {
169 if (!menu) { 167 if (!menu) {
170 return null; 168 return null;
@@ -233,7 +231,7 @@ export default defineComponent({ @@ -233,7 +231,7 @@ export default defineComponent({
233 class={[ 231 class={[
234 'basic-menu', 232 'basic-menu',
235 props.collapsedShowTitle && 'collapsed-show-title', 233 props.collapsedShowTitle && 'collapsed-show-title',
236 - unref(transparentMenuClass), 234 + ...unref(transparentMenuClass),
237 ]} 235 ]}
238 {...inlineCollapsedObj} 236 {...inlineCollapsedObj}
239 > 237 >
@@ -247,6 +245,7 @@ export default defineComponent({ @@ -247,6 +245,7 @@ export default defineComponent({
247 onMounted(async () => { 245 onMounted(async () => {
248 getParentPath(); 246 getParentPath();
249 }); 247 });
  248 +
250 return () => { 249 return () => {
251 const { getCollapsedState } = menuStore; 250 const { getCollapsedState } = menuStore;
252 const { mode } = props; 251 const { mode } = props;
@@ -262,9 +261,8 @@ export default defineComponent({ @@ -262,9 +261,8 @@ export default defineComponent({
262 onClick={handleInputClick} 261 onClick={handleInputClick}
263 collapsed={getCollapsedState} 262 collapsed={getCollapsedState}
264 /> 263 />
265 - <section style={unref(getMenuWrapStyle)} class="basic-menu__wrap"> 264 + <section style={unref(getMenuWrapStyle)} class="basic-menu__content">
266 {renderMenu()} 265 {renderMenu()}
267 - {/* <ScrollContainer>{() => renderMenu()}</ScrollContainer> */}  
268 </section> 266 </section>
269 </section> 267 </section>
270 ); 268 );
src/components/Menu/src/MenuContent.tsx
@@ -11,14 +11,17 @@ export default defineComponent({ @@ -11,14 +11,17 @@ export default defineComponent({
11 type: String as PropType<string>, 11 type: String as PropType<string>,
12 default: '', 12 default: '',
13 }, 13 },
  14 +
14 item: { 15 item: {
15 type: Object as PropType<MenuType>, 16 type: Object as PropType<MenuType>,
16 default: null, 17 default: null,
17 }, 18 },
  19 +
18 showTitle: { 20 showTitle: {
19 type: Boolean as PropType<boolean>, 21 type: Boolean as PropType<boolean>,
20 default: true, 22 default: true,
21 }, 23 },
  24 +
22 level: { 25 level: {
23 type: Number as PropType<number>, 26 type: Number as PropType<number>,
24 default: 0, 27 default: 0,
@@ -36,26 +39,27 @@ export default defineComponent({ @@ -36,26 +39,27 @@ export default defineComponent({
36 if (!props.item) { 39 if (!props.item) {
37 return null; 40 return null;
38 } 41 }
39 - const { showTitle, level } = props; 42 + const { showTitle } = props;
40 const { name, icon } = props.item; 43 const { name, icon } = props.item;
41 const searchValue = props.searchValue || ''; 44 const searchValue = props.searchValue || '';
42 const index = name.indexOf(searchValue); 45 const index = name.indexOf(searchValue);
43 46
44 const beforeStr = name.substr(0, index); 47 const beforeStr = name.substr(0, index);
45 const afterStr = name.substr(index + searchValue.length); 48 const afterStr = name.substr(index + searchValue.length);
46 - const show = level === 1 ? showTitle : true;  
47 - return [  
48 - renderIcon(icon!),  
49 - index > -1 && searchValue ? (  
50 - <span class={!show && 'hidden'}>  
51 - {beforeStr}  
52 - <span class={`basic-menu__keyword`}>{searchValue}</span>  
53 - {afterStr}  
54 - </span>  
55 - ) : (  
56 - <span class={!show && 'hidden'}>{name}</span>  
57 - ),  
58 - ]; 49 + return (
  50 + <>
  51 + {renderIcon(icon!)}
  52 + {index > -1 && searchValue ? (
  53 + <span class={showTitle ? 'show-title' : ''}>
  54 + {beforeStr}
  55 + <span class={`basic-menu__keyword`}>{searchValue}</span>
  56 + {afterStr}
  57 + </span>
  58 + ) : (
  59 + <span class={[showTitle ? 'show-title' : '']}>{name}</span>
  60 + )}
  61 + </>
  62 + );
59 }; 63 };
60 }, 64 },
61 }); 65 });
src/components/Menu/src/SearchInput.vue
@@ -5,7 +5,6 @@ @@ -5,7 +5,6 @@
5 class="menu-search-input__search" 5 class="menu-search-input__search"
6 allowClear 6 allowClear
7 @change="handleChange" 7 @change="handleChange"
8 - :disabled="collapsed"  
9 /> 8 />
10 </section> 9 </section>
11 </template> 10 </template>
@@ -20,7 +19,7 @@ @@ -20,7 +19,7 @@
20 export default defineComponent({ 19 export default defineComponent({
21 name: 'BasicMenuSearchInput', 20 name: 'BasicMenuSearchInput',
22 props: { 21 props: {
23 - // 是否展开,用于左侧菜单 22 + // Whether to expand, used in the left menu
24 collapsed: { 23 collapsed: {
25 type: Boolean as PropType<boolean>, 24 type: Boolean as PropType<boolean>,
26 default: true, 25 default: true,
@@ -30,28 +29,27 @@ @@ -30,28 +29,27 @@
30 }, 29 },
31 }, 30 },
32 setup(props, { emit }) { 31 setup(props, { emit }) {
  32 + const [debounceEmitChange] = useDebounce(emitChange, 200);
  33 +
33 function emitChange(value?: string): void { 34 function emitChange(value?: string): void {
34 emit('change', value); 35 emit('change', value);
35 } 36 }
36 - const [debounceEmitChange] = useDebounce(emitChange, 200);  
37 - /**  
38 - * @description: 搜索  
39 - */ 37 +
40 function handleChange(e: ChangeEvent): void { 38 function handleChange(e: ChangeEvent): void {
41 const { collapsed } = props; 39 const { collapsed } = props;
42 - if (collapsed) {  
43 - return;  
44 - } 40 + if (collapsed) return;
45 debounceEmitChange(e.target.value); 41 debounceEmitChange(e.target.value);
46 } 42 }
47 - /**  
48 - * @description: 点击时间  
49 - */ 43 +
50 function handleClick(): void { 44 function handleClick(): void {
51 emit('click'); 45 emit('click');
52 } 46 }
  47 +
53 const searchClass = computed(() => { 48 const searchClass = computed(() => {
54 - return props.theme ? `menu-search-input__search--${props.theme}` : ''; 49 + const cls: string[] = [];
  50 + cls.push(props.theme ? `menu-search-input__search--${props.theme}` : '');
  51 + // cls.push(props.collapsed ? 'hide-search-icon' : '');
  52 + return cls;
55 }); 53 });
56 54
57 return { handleClick, searchClass, handleChange }; 55 return { handleClick, searchClass, handleChange };
@@ -66,26 +64,24 @@ @@ -66,26 +64,24 @@
66 @icon-color: #c0c4cc; 64 @icon-color: #c0c4cc;
67 65
68 .menu-search-input { 66 .menu-search-input {
69 - margin: 12px 9px; 67 + margin: 12px 8px;
  68 +
  69 + // &.hide-search-icon {
  70 + // .ant-input,
  71 + // .ant-input-suffix {
  72 + // opacity: 0;
  73 + // }
  74 + // }
70 75
71 &__search--dark { 76 &__search--dark {
72 .ant-input-affix-wrapper, 77 .ant-input-affix-wrapper,
73 .ant-input { 78 .ant-input {
74 .set-bg(); 79 .set-bg();
75 -  
76 - &:hover,  
77 - &:focus {  
78 - .hide-outline();  
79 - }  
80 } 80 }
81 81
82 .ant-input-search-icon, 82 .ant-input-search-icon,
83 .ant-input-clear-icon { 83 .ant-input-clear-icon {
84 - color: rgba(255, 255, 255, 0.6) !important;  
85 - }  
86 -  
87 - .ant-input-clear-icon {  
88 - color: rgba(255, 255, 255, 0.3) !important; 84 + color: rgba(255, 255, 255, 0.4) !important;
89 } 85 }
90 } 86 }
91 87
@@ -94,13 +90,7 @@ @@ -94,13 +90,7 @@
94 .ant-input { 90 .ant-input {
95 color: @text-color-base; 91 color: @text-color-base;
96 background: #fff; 92 background: #fff;
97 - // border: 0;  
98 outline: none; 93 outline: none;
99 -  
100 - &:hover,  
101 - &:focus {  
102 - .hide-outline();  
103 - }  
104 } 94 }
105 95
106 .ant-input-search-icon { 96 .ant-input-search-icon {
src/components/Menu/src/index.less
@@ -2,14 +2,11 @@ @@ -2,14 +2,11 @@
2 2
3 .active-style() { 3 .active-style() {
4 color: @white; 4 color: @white;
5 - // background: @primary-color !important;  
6 background: linear-gradient( 5 background: linear-gradient(
7 118deg, 6 118deg,
8 rgba(@primary-color, 0.8), 7 rgba(@primary-color, 0.8),
9 rgba(@primary-color, 1) 8 rgba(@primary-color, 1)
10 ) !important; 9 ) !important;
11 - // border-radius: 2px;  
12 - box-shadow: 0 0 4px 1px rgba(@primary-color, 0.7);  
13 } 10 }
14 11
15 .active-menu-style() { 12 .active-menu-style() {
@@ -22,50 +19,52 @@ @@ -22,50 +19,52 @@
22 .basic-menu { 19 .basic-menu {
23 width: 100%; 20 width: 100%;
24 21
  22 + &-wrap {
  23 + height: 100%;
  24 + }
  25 +
  26 + // collapsed show title start
  27 + .show-title {
  28 + max-width: unset !important;
  29 + opacity: 1 !important;
  30 + }
  31 +
25 &.collapsed-show-title.ant-menu-inline-collapsed { 32 &.collapsed-show-title.ant-menu-inline-collapsed {
26 .basic-menu-item__level1 { 33 .basic-menu-item__level1 {
27 padding: 2px 0; 34 padding: 2px 0;
28 } 35 }
29 36
  37 + & > li[role='menuitem']:not(.ant-menu-submenu),
30 & > li > .ant-menu-submenu-title { 38 & > li > .ant-menu-submenu-title {
31 display: flex; 39 display: flex;
32 - margin-top: 12px; 40 + margin-top: 10px;
33 font-size: 12px; 41 font-size: 12px;
34 flex-direction: column; 42 flex-direction: column;
35 - line-height: 24px;  
36 align-items: center; 43 align-items: center;
37 } 44 }
38 45
39 - & > li[role='menuitem']:not(.ant-menu-submenu) {  
40 - display: flex;  
41 - margin-top: 12px;  
42 - font-size: 12px;  
43 - line-height: 2;  
44 - align-items: center;  
45 - flex-direction: column;  
46 -  
47 - span {  
48 - margin-top: 6px;  
49 - } 46 + & > li > .ant-menu-submenu-title {
  47 + line-height: 24px;
50 } 48 }
51 } 49 }
52 50
53 - &__wrap { 51 + // collapsed show title end
  52 +
  53 + // scrollbar -s tart
  54 + &__content {
54 /* 滚动槽 */ 55 /* 滚动槽 */
55 &::-webkit-scrollbar { 56 &::-webkit-scrollbar {
56 - width: 6px;  
57 - height: 6px; 57 + width: 4px;
  58 + height: 4px;
58 } 59 }
59 60
60 - // TODO 滚动条样式-待修改  
61 &::-webkit-scrollbar-track { 61 &::-webkit-scrollbar-track {
62 background: rgba(0, 0, 0, 0); 62 background: rgba(0, 0, 0, 0);
63 } 63 }
64 64
65 - /* 滚动条滑块 */  
66 &::-webkit-scrollbar-thumb { 65 &::-webkit-scrollbar-thumb {
67 - background: rgba(255, 255, 255, 0.3);  
68 - border-radius: 4px; 66 + background: rgba(255, 255, 255, 0.2);
  67 + border-radius: 3px;
69 box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1); 68 box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1);
70 } 69 }
71 70
@@ -73,29 +72,10 @@ @@ -73,29 +72,10 @@
73 background: @border-color-dark; 72 background: @border-color-dark;
74 } 73 }
75 } 74 }
  75 + // scrollbar end
76 76
77 - .ant-menu-submenu:first-of-type {  
78 - margin-top: 4px;  
79 - }  
80 -  
81 - .ant-menu-submenu-title {  
82 - margin-top: 0;  
83 - }  
84 -  
85 - &-wrap {  
86 - height: 100%;  
87 - }  
88 -  
89 - .menu-item-icon {  
90 - vertical-align: text-top;  
91 - }  
92 - // 透明化背景  
93 - &-bg__sidebar {  
94 - background-color: transparent;  
95 - }  
96 -  
97 - &-bg__sidebar-hor {  
98 - overflow: hidden; 77 + &__sidebar-hor {
  78 + // overflow: hidden;
99 79
100 &.ant-menu-horizontal { 80 &.ant-menu-horizontal {
101 display: flex; 81 display: flex;
@@ -107,6 +87,13 @@ @@ -107,6 +87,13 @@
107 } 87 }
108 88
109 &.ant-menu-light { 89 &.ant-menu-light {
  90 + .basic-menu-item__level1 {
  91 + &.top-active-menu {
  92 + color: @primary-color;
  93 + border-bottom: 3px solid @primary-color;
  94 + }
  95 + }
  96 +
110 .ant-menu-item { 97 .ant-menu-item {
111 &.basic-menu-item__level1 { 98 &.basic-menu-item__level1 {
112 height: @header-height; 99 height: @header-height;
@@ -128,7 +115,6 @@ @@ -128,7 +115,6 @@
128 border-bottom: 3px solid @primary-color; 115 border-bottom: 3px solid @primary-color;
129 } 116 }
130 117
131 - // 有子菜单  
132 .ant-menu-submenu { 118 .ant-menu-submenu {
133 &:hover { 119 &:hover {
134 border-bottom: 3px solid @primary-color; 120 border-bottom: 3px solid @primary-color;
@@ -144,30 +130,44 @@ @@ -144,30 +130,44 @@
144 &.ant-menu-dark { 130 &.ant-menu-dark {
145 background: transparent; 131 background: transparent;
146 132
  133 + .ant-menu-submenu:hover,
  134 + .ant-menu-item-open,
  135 + .ant-menu-submenu-open,
  136 + .ant-menu-item-selected,
  137 + .ant-menu-submenu-selected,
  138 + .ant-menu-item:hover,
  139 + .ant-menu-item-active,
  140 + .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,
  141 + .ant-menu-submenu-active,
  142 + .ant-menu-submenu-title:hover {
  143 + color: #fff;
  144 + background: @top-menu-active-bg-color !important;
  145 + }
  146 +
147 .ant-menu-item:hover, 147 .ant-menu-item:hover,
148 .ant-menu-item-active, 148 .ant-menu-item-active,
149 .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open, 149 .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,
150 .ant-menu-submenu-active, 150 .ant-menu-submenu-active,
151 .ant-menu-submenu-title:hover { 151 .ant-menu-submenu-title:hover {
152 background: @top-menu-active-bg-color; 152 background: @top-menu-active-bg-color;
153 - // border-radius: 6px 6px 0 0;  
154 } 153 }
155 154
156 .basic-menu-item__level1 { 155 .basic-menu-item__level1 {
157 - &.ant-menu-item-selected,  
158 - &.ant-menu-submenu-selected { 156 + background: transparent;
  157 +
  158 + &.top-active-menu {
  159 + color: @white;
159 background: @top-menu-active-bg-color; 160 background: @top-menu-active-bg-color;
160 - // border-radius: 6px 6px 0 0; 161 + border-radius: 2px 2px 0 0;
161 } 162 }
162 - }  
163 163
164 - .ant-menu-item {  
165 - &.basic-menu-item__level1 {  
166 - height: @header-height;  
167 - line-height: @header-height; 164 + &.ant-menu-item-selected,
  165 + &.ant-menu-submenu-selected {
  166 + background: @top-menu-active-bg-color !important;
168 } 167 }
169 } 168 }
170 - // 有子菜单 169 +
  170 + .ant-menu-item,
171 .ant-menu-submenu { 171 .ant-menu-submenu {
172 &.basic-menu-item__level1, 172 &.basic-menu-item__level1,
173 .ant-menu-submenu-title { 173 .ant-menu-submenu-title {
@@ -178,24 +178,27 @@ @@ -178,24 +178,27 @@
178 } 178 }
179 } 179 }
180 } 180 }
181 - // 重置菜单项行高  
182 - .ant-menu-item,  
183 - .ant-menu-sub.ant-menu-inline > .ant-menu-item,  
184 - .ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {  
185 - height: @app-menu-item-height;  
186 - margin: 0;  
187 - line-height: @app-menu-item-height; 181 +
  182 + .ant-menu-item {
  183 + transition: unset;
188 } 184 }
189 185
190 - &.ant-menu-dark:not(.basic-menu-bg__sidebar-hor) {  
191 - .active-menu-style(); 186 + &.ant-menu-dark:not(.basic-menu__sidebar-hor):not(.basic-menu__second) {
  187 + // Reset menu item row height
  188 + .ant-menu-item,
  189 + .ant-menu-sub.ant-menu-inline > .ant-menu-item,
  190 + .ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {
  191 + height: @app-menu-item-height;
  192 + margin: 0;
  193 + line-height: @app-menu-item-height;
  194 + }
192 } 195 }
193 196
194 // 层级样式 197 // 层级样式
195 - &.ant-menu-dark {  
196 - // .ant-menu-item {  
197 - // transition: unset;  
198 - // } 198 + &.ant-menu-dark:not(.basic-menu__sidebar-hor) {
  199 + overflow-x: hidden;
  200 + background: @first-menu-item-dark-bg-color;
  201 + .active-menu-style();
199 202
200 .ant-menu-item.ant-menu-item-selected.basic-menu-menu-item__level1, 203 .ant-menu-item.ant-menu-item-selected.basic-menu-menu-item__level1,
201 .ant-menu-submenu-selected.basic-menu-menu-item__level1 { 204 .ant-menu-submenu-selected.basic-menu-menu-item__level1 {
@@ -203,76 +206,44 @@ @@ -203,76 +206,44 @@
203 } 206 }
204 207
205 .basic-menu-item__level1 { 208 .basic-menu-item__level1 {
206 - margin-bottom: 0; 209 + background-color: @first-menu-item-dark-bg-color;
207 210
208 > .ant-menu-sub > li { 211 > .ant-menu-sub > li {
209 background-color: @sub-menu-item-dark-bg-color; 212 background-color: @sub-menu-item-dark-bg-color;
210 } 213 }
211 -  
212 - &.top-active-menu {  
213 - color: @white;  
214 - background: @top-menu-active-bg-color;  
215 - border-radius: 6px 6px 0 0;  
216 - }  
217 } 214 }
218 215
219 - // 2级菜单  
220 -  
221 .basic-menu-item__level2:not(.ant-menu-item-selected), 216 .basic-menu-item__level2:not(.ant-menu-item-selected),
222 .ant-menu-sub { 217 .ant-menu-sub {
223 background-color: @sub-menu-item-dark-bg-color; 218 background-color: @sub-menu-item-dark-bg-color;
224 } 219 }
225 220
226 - .basic-menu-item__level2 {  
227 - margin-bottom: 0;  
228 - }  
229 - // 3级菜单  
230 - .basic-menu-item__level3,  
231 - .basic-menu__popup {  
232 - margin-bottom: 0;  
233 - }  
234 -  
235 .basic-menu-item__level3:not(.ant-menu-item-selected) { 221 .basic-menu-item__level3:not(.ant-menu-item-selected) {
236 background-color: @children-menu-item-dark-bg-color; 222 background-color: @children-menu-item-dark-bg-color;
237 } 223 }
238 224
239 .ant-menu-submenu-title { 225 .ant-menu-submenu-title {
240 - // line-height: @app-menu-item-height;  
241 display: flex; 226 display: flex;
242 height: @app-menu-item-height; 227 height: @app-menu-item-height;
243 - margin: 0; 228 + // margin: 0;
244 align-items: center; 229 align-items: center;
245 } 230 }
246 231
247 &.ant-menu-inline-collapsed { 232 &.ant-menu-inline-collapsed {
248 - .ant-menu-item-selected {  
249 - background: unset !important;  
250 - box-shadow: none;  
251 - }  
252 -  
253 .ant-menu-submenu-selected, 233 .ant-menu-submenu-selected,
254 .ant-menu-item-selected { 234 .ant-menu-item-selected {
255 - .active-style(); 235 + background: darken(@first-menu-item-dark-bg-color, 6%) !important;
256 } 236 }
257 } 237 }
258 } 238 }
259 239
260 - &.ant-menu-light { 240 + &.ant-menu-light:not(.basic-menu__sidebar-hor) {
261 overflow-x: hidden; 241 overflow-x: hidden;
262 border-right: none; 242 border-right: none;
263 243
264 - .basic-menu-item__level1 {  
265 - &.top-active-menu {  
266 - color: @primary-color;  
267 - border-bottom: 3px solid @primary-color;  
268 - }  
269 - }  
270 -  
271 - &:not(.ant-menu-horizontal) {  
272 - .ant-menu-item-selected {  
273 - background: fade(@primary-color, 18%);  
274 - }  
275 - } 244 + // .ant-menu-item-selected {
  245 + // background: fade(@primary-color, 18%);
  246 + // }
276 247
277 .ant-menu-item.ant-menu-item-selected.basic-menu-menu-item__level1, 248 .ant-menu-item.ant-menu-item-selected.basic-menu-menu-item__level1,
278 .ant-menu-submenu-selected.basic-menu-menu-item__level1 { 249 .ant-menu-submenu-selected.basic-menu-menu-item__level1 {
@@ -289,6 +260,20 @@ @@ -289,6 +260,20 @@
289 .ant-menu-item.ant-menu-item-selected { 260 .ant-menu-item.ant-menu-item-selected {
290 position: relative; 261 position: relative;
291 } 262 }
  263 +
  264 + &.basic-menu__second.ant-menu-inline-collapsed:not(.basic-menu__sidebar-hor) {
  265 + // Reset menu item row height
  266 + .ant-menu-item,
  267 + .ant-menu-sub.ant-menu-inline > .ant-menu-item,
  268 + .ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {
  269 + display: flex;
  270 + height: @app-menu-item-height * 1.4;
  271 + padding: 6px 0 !important;
  272 + margin: 0;
  273 + line-height: @app-menu-item-height;
  274 + align-items: center;
  275 + }
  276 + }
292 } 277 }
293 278
294 // 触发器样式 279 // 触发器样式
@@ -322,3 +307,24 @@ @@ -322,3 +307,24 @@
322 .active-menu-style(); 307 .active-menu-style();
323 } 308 }
324 } 309 }
  310 +
  311 +.hide-title {
  312 + .ant-menu-inline-collapsed > .ant-menu-item,
  313 + .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item,
  314 + .ant-menu-inline-collapsed
  315 + > .ant-menu-item-group
  316 + > .ant-menu-item-group-list
  317 + > .ant-menu-submenu
  318 + > .ant-menu-submenu-title,
  319 + .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {
  320 + padding-right: 20px !important;
  321 + padding-left: 20px !important;
  322 + }
  323 +
  324 + .ant-menu-inline-collapsed {
  325 + .basic-menu-item__level1 {
  326 + display: flex;
  327 + justify-content: center;
  328 + }
  329 + }
  330 +}
src/design/ant/btn.less
1 // button重置 1 // button重置
2 .ant-btn { 2 .ant-btn {
3 - &.ant-btn-success:not(.ant-btn-link),  
4 - &.ant-btn-error:not(.ant-btn-link),  
5 - &.ant-btn-warning:not(.ant-btn-link),  
6 - &.ant-btn-primary:not(.ant-btn-link) {  
7 - box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.08) !important;  
8 - } 3 + // &.ant-btn-success:not(.ant-btn-link),
  4 + // &.ant-btn-error:not(.ant-btn-link),
  5 + // &.ant-btn-warning:not(.ant-btn-link),
  6 + // &.ant-btn-primary:not(.ant-btn-link) {
  7 + // box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.08) !important;
  8 + // }
9 9
10 &-primary { 10 &-primary {
11 color: @white; 11 color: @white;
src/design/color.less
@@ -67,9 +67,9 @@ @@ -67,9 +67,9 @@
67 @first-menu-item-dark-bg-color: #273352; 67 @first-menu-item-dark-bg-color: #273352;
68 68
69 // 2级菜单黑暗背景色 69 // 2级菜单黑暗背景色
70 -@sub-menu-item-dark-bg-color: #4f6088; 70 +@sub-menu-item-dark-bg-color: #314268;
71 // 3级菜单黑暗背景色 71 // 3级菜单黑暗背景色
72 -@children-menu-item-dark-bg-color: #314268; 72 +@children-menu-item-dark-bg-color: #4f6088;
73 73
74 // top-menu 74 // top-menu
75 @top-menu-active-bg-color: #273352; 75 @top-menu-active-bg-color: #273352;
src/design/public.less
1 /* 滚动槽 */ 1 /* 滚动槽 */
2 ::-webkit-scrollbar { 2 ::-webkit-scrollbar {
3 - width: 8px;  
4 - height: 8px; 3 + width: 6px;
  4 + height: 6px;
5 } 5 }
6 6
7 // TODO 滚动条样式-待修改 7 // TODO 滚动条样式-待修改
8 -// ::-webkit-scrollbar-track {  
9 -// // background: rgba(0, 0, 0, 0.06);  
10 -// // border-radius: 2px;  
11 -// // box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05);  
12 -// } 8 +::-webkit-scrollbar-track {
  9 + background: rgba(0, 0, 0, 0.05);
  10 +}
13 11
14 /* 滚动条滑块 */ 12 /* 滚动条滑块 */
15 ::-webkit-scrollbar-thumb { 13 ::-webkit-scrollbar-thumb {
16 - background: @disabled-color; 14 + background: rgba(0, 0, 0, 0.2);
17 border-radius: 4px; 15 border-radius: 4px;
18 box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1); 16 box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1);
19 } 17 }
src/design/var/index.less
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 @logo-width: 36px; 12 @logo-width: 36px;
13 13
14 // 14 //
15 -@sider-drag-z-index: 200; 15 +@side-drag-z-index: 200;
16 @page-loading-z-index: 10000; 16 @page-loading-z-index: 10000;
17 17
18 // app menu 18 // app menu
src/layouts/default/LayoutBreadcrumb.tsx
@@ -75,7 +75,7 @@ export default defineComponent({ @@ -75,7 +75,7 @@ export default defineComponent({
75 } 75 }
76 76
77 return () => ( 77 return () => (
78 - <Breadcrumb class="layout-breadcrumb"> 78 + <Breadcrumb class={['layout-breadcrumb', unref(itemList).length === 0 ? 'hidden' : '']}>
79 {() => ( 79 {() => (
80 <TransitionGroup name="breadcrumb"> 80 <TransitionGroup name="breadcrumb">
81 {() => { 81 {() => {
src/layouts/default/LayoutMenu.tsx
@@ -109,8 +109,22 @@ export default defineComponent({ @@ -109,8 +109,22 @@ export default defineComponent({
109 // 菜单分割模式-left 109 // 菜单分割模式-left
110 if (splitType === MenuSplitTyeEnum.LEFT) { 110 if (splitType === MenuSplitTyeEnum.LEFT) {
111 const children = await getChildrenMenus(parentPath); 111 const children = await getChildrenMenus(parentPath);
112 - if (!children) return; 112 + if (!children) {
  113 + appStore.commitProjectConfigState({
  114 + menuSetting: {
  115 + show: false,
  116 + },
  117 + });
  118 + flatMenusRef.value = [];
  119 + menusRef.value = [];
  120 + return;
  121 + }
113 const flatChildren = await getFlatChildrenMenus(children); 122 const flatChildren = await getFlatChildrenMenus(children);
  123 + appStore.commitProjectConfigState({
  124 + menuSetting: {
  125 + show: true,
  126 + },
  127 + });
114 flatMenusRef.value = flatChildren; 128 flatMenusRef.value = flatChildren;
115 menusRef.value = children; 129 menusRef.value = children;
116 } 130 }
src/layouts/default/LayoutSideBar.tsx
@@ -6,10 +6,9 @@ import { menuStore } from &#39;/@/store/modules/menu&#39;; @@ -6,10 +6,9 @@ import { menuStore } from &#39;/@/store/modules/menu&#39;;
6 6
7 // import darkMiniIMg from '/@/assets/images/sidebar/dark-mini.png'; 7 // import darkMiniIMg from '/@/assets/images/sidebar/dark-mini.png';
8 // import lightMiniImg from '/@/assets/images/sidebar/light-mini.png'; 8 // import lightMiniImg from '/@/assets/images/sidebar/light-mini.png';
9 -import darkImg from '/@/assets/images/sidebar/dark.png';  
10 // import lightImg from '/@/assets/images/sidebar/light.png'; 9 // import lightImg from '/@/assets/images/sidebar/light.png';
11 import { appStore } from '/@/store/modules/app'; 10 import { appStore } from '/@/store/modules/app';
12 -import { MenuModeEnum, MenuSplitTyeEnum, MenuThemeEnum } from '/@/enums/menuEnum'; 11 +import { MenuModeEnum, MenuSplitTyeEnum } from '/@/enums/menuEnum';
13 import { SIDE_BAR_MINI_WIDTH, SIDE_BAR_SHOW_TIT_MINI_WIDTH } from '/@/enums/appEnum'; 12 import { SIDE_BAR_MINI_WIDTH, SIDE_BAR_SHOW_TIT_MINI_WIDTH } from '/@/enums/appEnum';
14 import { useDebounce } from '/@/hooks/core/useDebounce'; 13 import { useDebounce } from '/@/hooks/core/useDebounce';
15 import LayoutMenu from './LayoutMenu'; 14 import LayoutMenu from './LayoutMenu';
@@ -34,26 +33,6 @@ export default defineComponent({ @@ -34,26 +33,6 @@ export default defineComponent({
34 return collapsedShowTitle ? SIDE_BAR_SHOW_TIT_MINI_WIDTH : SIDE_BAR_MINI_WIDTH; 33 return collapsedShowTitle ? SIDE_BAR_SHOW_TIT_MINI_WIDTH : SIDE_BAR_MINI_WIDTH;
35 }); 34 });
36 35
37 - // 根据展开状态设置背景图片  
38 - const getStyle = computed((): any => {  
39 - // const collapse = unref(collapseRef);  
40 -  
41 - const theme = unref(getProjectConfigRef).menuSetting.theme;  
42 - if (theme === MenuThemeEnum.LIGHT) {  
43 - // bg = lightImg;  
44 - return {};  
45 - }  
46 - let bg = '';  
47 - if (theme === MenuThemeEnum.DARK) {  
48 - // bg = collapse ? darkMiniIMg : darkImg;  
49 - bg = darkImg;  
50 - }  
51 -  
52 - return {  
53 - 'background-image': `url(${bg})`,  
54 - };  
55 - });  
56 -  
57 function onCollapseChange(val: boolean) { 36 function onCollapseChange(val: boolean) {
58 if (initRef.value) { 37 if (initRef.value) {
59 collapseRef.value = val; 38 collapseRef.value = val;
@@ -182,7 +161,6 @@ export default defineComponent({ @@ -182,7 +161,6 @@ export default defineComponent({
182 class="layout-sidebar" 161 class="layout-sidebar"
183 ref={sideRef} 162 ref={sideRef}
184 onBreakpoint={handleBreakpoint} 163 onBreakpoint={handleBreakpoint}
185 - style={unref(getStyle)}  
186 > 164 >
187 {{ 165 {{
188 trigger: () => <SideBarTrigger />, 166 trigger: () => <SideBarTrigger />,
src/layouts/default/UserDropdown.tsx
@@ -26,14 +26,12 @@ export default defineComponent({ @@ -26,14 +26,12 @@ export default defineComponent({
26 return { realName, desc }; 26 return { realName, desc };
27 }); 27 });
28 28
29 - /**  
30 - * @description: 退出登录  
31 - */ 29 + // login out
32 function handleLoginOut() { 30 function handleLoginOut() {
33 userStore.confirmLoginOut(); 31 userStore.confirmLoginOut();
34 } 32 }
35 33
36 - // 打开文档 34 + // open doc
37 function openDoc() { 35 function openDoc() {
38 window.open(DOC_URL, '__blank'); 36 window.open(DOC_URL, '__blank');
39 } 37 }
src/layouts/default/index.less
@@ -66,6 +66,10 @@ @@ -66,6 +66,10 @@
66 .layout-sidebar { 66 .layout-sidebar {
67 background-size: 100% 100%; 67 background-size: 100% 100%;
68 68
  69 + &.ant-layout-sider-dark {
  70 + background: @first-menu-item-dark-bg-color;
  71 + }
  72 +
69 &:not(.ant-layout-sider-dark) { 73 &:not(.ant-layout-sider-dark) {
70 border-right: 1px solid @border-color-light; 74 border-right: 1px solid @border-color-light;
71 } 75 }
@@ -79,7 +83,7 @@ @@ -79,7 +83,7 @@
79 position: absolute; 83 position: absolute;
80 top: 0; 84 top: 0;
81 right: -2px; 85 right: -2px;
82 - z-index: @sider-drag-z-index; 86 + z-index: @side-drag-z-index;
83 width: 2px; 87 width: 2px;
84 height: 100%; 88 height: 100%;
85 cursor: col-resize; 89 cursor: col-resize;
@@ -378,17 +382,3 @@ @@ -378,17 +382,3 @@
378 height: 36px; 382 height: 36px;
379 line-height: 36px; 383 line-height: 36px;
380 } 384 }
381 -  
382 -.hide-title {  
383 - .ant-menu-inline-collapsed > .ant-menu-item,  
384 - .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item,  
385 - .ant-menu-inline-collapsed  
386 - > .ant-menu-item-group  
387 - > .ant-menu-item-group-list  
388 - > .ant-menu-submenu  
389 - > .ant-menu-submenu-title,  
390 - .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {  
391 - padding-right: 20px !important;  
392 - padding-left: 20px !important;  
393 - }  
394 -}  
src/layouts/default/index.tsx
@@ -51,9 +51,9 @@ export default defineComponent({ @@ -51,9 +51,9 @@ export default defineComponent({
51 51
52 const showSideBarRef = computed(() => { 52 const showSideBarRef = computed(() => {
53 const { 53 const {
54 - menuSetting: { show, mode }, 54 + menuSetting: { show, mode, split },
55 } = unref(getProjectConfigRef); 55 } = unref(getProjectConfigRef);
56 - return show && mode !== MenuModeEnum.HORIZONTAL && !unref(getFullContent); 56 + return split || (show && mode !== MenuModeEnum.HORIZONTAL && !unref(getFullContent));
57 }); 57 });
58 58
59 // Get project configuration 59 // Get project configuration
@@ -73,6 +73,7 @@ export default defineComponent({ @@ -73,6 +73,7 @@ export default defineComponent({
73 showSettingButton, 73 showSettingButton,
74 multiTabsSetting: { show: showTabs }, 74 multiTabsSetting: { show: showTabs },
75 headerSetting: { fixed }, 75 headerSetting: { fixed },
  76 + menuSetting: { split, show },
76 } = unref(getProjectConfigRef); 77 } = unref(getProjectConfigRef);
77 78
78 const fixedHeaderCls = fixed 79 const fixedHeaderCls = fixed
@@ -80,6 +81,8 @@ export default defineComponent({ @@ -80,6 +81,8 @@ export default defineComponent({
80 : ''; 81 : '';
81 82
82 const { isLock } = getLockInfo; 83 const { isLock } = getLockInfo;
  84 +
  85 + const showSideBar = split ? show : true;
83 return ( 86 return (
84 <Layout class="default-layout relative"> 87 <Layout class="default-layout relative">
85 {() => ( 88 {() => (
@@ -95,7 +98,7 @@ export default defineComponent({ @@ -95,7 +98,7 @@ export default defineComponent({
95 <Layout> 98 <Layout>
96 {() => ( 99 {() => (
97 <> 100 <>
98 - {unref(showSideBarRef) && <LayoutSideBar />} 101 + {unref(showSideBarRef) && <LayoutSideBar class={showSideBar ? '' : 'hidden'} />}
99 <Layout class={[`default-layout__content`, fixedHeaderCls]}> 102 <Layout class={[`default-layout__content`, fixedHeaderCls]}>
100 {() => ( 103 {() => (
101 <> 104 <>
src/layouts/page/index.tsx
@@ -38,14 +38,16 @@ export default defineComponent({ @@ -38,14 +38,16 @@ export default defineComponent({
38 <RouterView> 38 <RouterView>
39 {{ 39 {{
40 default: ({ Component, route }: { Component: any; route: RouteLocation }) => { 40 default: ({ Component, route }: { Component: any; route: RouteLocation }) => {
41 - // 已经位于tab内的不再显示动画 41 + // No longer show animations that are already in the tab
42 const name = route.meta.inTab ? 'fade' : null; 42 const name = route.meta.inTab ? 'fade' : null;
  43 +
  44 + // TODO add key?
43 const Content = openCache ? ( 45 const Content = openCache ? (
44 <KeepAlive max={max} include={cacheTabs}> 46 <KeepAlive max={max} include={cacheTabs}>
45 - <Component {...route.params} /> 47 + <Component />
46 </KeepAlive> 48 </KeepAlive>
47 ) : ( 49 ) : (
48 - <Component {...route.params} /> 50 + <Component />
49 ); 51 );
50 return openRouterTransition ? ( 52 return openRouterTransition ? (
51 <Transition 53 <Transition
src/layouts/page/useTransition.ts
1 -import { onUnmounted } from 'vue';  
2 import { appStore } from '/@/store/modules/app'; 1 import { appStore } from '/@/store/modules/app';
  2 +import { tryOnUnmounted } from '/@/utils/helper/vueHelper';
3 export function useTransition() { 3 export function useTransition() {
4 function handleAfterEnter() { 4 function handleAfterEnter() {
5 const { openRouterTransition, openPageLoading } = appStore.getProjectConfig; 5 const { openRouterTransition, openPageLoading } = appStore.getProjectConfig;
6 if (!openRouterTransition || !openPageLoading) return; 6 if (!openRouterTransition || !openPageLoading) return;
7 - // 路由切换动画结束之后关闭loading 7 + // Close loading after the route switching animation ends
8 appStore.setPageLoadingAction(false); 8 appStore.setPageLoadingAction(false);
9 } 9 }
10 10
11 - onUnmounted(() => { 11 + tryOnUnmounted(() => {
12 handleAfterEnter(); 12 handleAfterEnter();
13 stop(); 13 stop();
14 }); 14 });
  15 +
15 return { 16 return {
16 handleAfterEnter, 17 handleAfterEnter,
17 on: { 18 on: {
src/settings/projectSetting.ts
@@ -49,7 +49,7 @@ const setting: ProjectConfig = { @@ -49,7 +49,7 @@ const setting: ProjectConfig = {
49 // 折叠菜单时候是否显示菜单名 49 // 折叠菜单时候是否显示菜单名
50 collapsedShowTitle: false, 50 collapsedShowTitle: false,
51 // 是否可拖拽 51 // 是否可拖拽
52 - hasDrag: true, 52 + hasDrag: false,
53 // 是否显示 53 // 是否显示
54 show: true, 54 show: true,
55 // 是否显示搜索框 55 // 是否显示搜索框
src/setup/ant-design-vue/index.ts
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 import type { App } from 'vue'; 3 import type { App } from 'vue';
4 4
5 import { Form, Input, Row, Col } from 'ant-design-vue'; 5 import { Form, Input, Row, Col } from 'ant-design-vue';
6 -import 'ant-design-vue/dist/antd.less'; 6 +import 'ant-design-vue/dist/antd.css';
7 7
8 import './spin'; 8 import './spin';
9 9