Compare commits
532 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6d141bfd2f | ||
|
|
86ec72f3c0 | ||
|
|
43ddf7aba8 | ||
|
|
a71bf0befb | ||
|
|
47f951312e | ||
|
|
b2d06d2b3b | ||
|
|
7957dc2c18 | ||
|
|
fd9c19dd00 | ||
|
|
b77586da07 | ||
|
|
09cbc7ddc3 | ||
|
|
f5617d5eb2 | ||
|
|
d4de5fc6f6 | ||
|
|
4bc888b273 | ||
|
|
723cb46eaf | ||
|
|
42f5a36145 | ||
|
|
fa4b951027 | ||
|
|
3705a0c11b | ||
|
|
4ae0d9bc04 | ||
|
|
2024c4e5fe | ||
|
|
dc0ad8523c | ||
|
|
9d0c3f305d | ||
|
|
d49b23e8f9 | ||
|
|
6176d9508b | ||
|
|
afc15ea8df | ||
|
|
7713e7fb9e | ||
|
|
c47a281758 | ||
|
|
b5750dcba1 | ||
|
|
bccd27ad30 | ||
|
|
b1e0968a9b | ||
|
|
ca97465e9e | ||
|
|
89a20c6e46 | ||
|
|
d305e6fb1f | ||
|
|
12f0f096ca | ||
|
|
2ddfcf16e4 | ||
|
|
6bb921acbd | ||
|
|
b953149e5a | ||
|
|
8f528028b1 | ||
|
|
4be2f04b4d | ||
|
|
638a95a4af | ||
|
|
40b7e12eaa | ||
|
|
6ebcb0a259 | ||
|
|
1c7af560fc | ||
|
|
02608a410a | ||
|
|
bff68c3e7b | ||
|
|
990caef48d | ||
|
|
30eddc1373 | ||
|
|
fe8e84ec9f | ||
|
|
f47fe9f19d | ||
|
|
b4456dc71a | ||
|
|
8fc9a4eca6 | ||
|
|
49d88b367d | ||
|
|
3ee8c51f90 | ||
|
|
fad1db8c57 | ||
|
|
2d0cc4cfa2 | ||
|
|
a3a4d2db08 | ||
|
|
f43673379b | ||
|
|
094599496b | ||
|
|
c73f9acbac | ||
|
|
7892c9c600 | ||
|
|
c7f1ae9fb7 | ||
|
|
b455b2da89 | ||
|
|
e323411d1c | ||
|
|
5efba00330 | ||
|
|
d6ab5ad598 | ||
|
|
3e93618015 | ||
|
|
151592c660 | ||
|
|
eeea7bf718 | ||
|
|
4a032426a8 | ||
|
|
bfa07107c9 | ||
|
|
1f9fe0ef29 | ||
|
|
d0ed3be827 | ||
|
|
30209f62a9 | ||
|
|
1081506d10 | ||
|
|
590d6bf607 | ||
|
|
3365b99d3d | ||
|
|
31707cebf7 | ||
|
|
dac3ea3c21 | ||
|
|
01a32988c1 | ||
|
|
2e2c306097 | ||
|
|
d36d5b09c5 | ||
|
|
923f09db5b | ||
|
|
66fdfebb5e | ||
|
|
e032f9a6a7 | ||
|
|
4d68d6a220 | ||
|
|
2338dcab1f | ||
|
|
60e33f3782 | ||
|
|
3933f34883 | ||
|
|
49dabd6b36 | ||
|
|
6d697ee19c | ||
|
|
2206b9a9ae | ||
|
|
1419df10d2 | ||
|
|
7987a18c70 | ||
|
|
152a2f8f56 | ||
|
|
3629a66535 | ||
|
|
95940312a9 | ||
|
|
f13faf0788 | ||
|
|
8e2b174e09 | ||
|
|
b5839d6398 | ||
|
|
b14f41c8d7 | ||
|
|
9ab3fd19ef | ||
|
|
fa5c97ffa4 | ||
|
|
b4a566b2bf | ||
|
|
c84c447f3e | ||
|
|
53c715873c | ||
|
|
c80818d792 | ||
|
|
17936d476c | ||
|
|
1ef6ce70db | ||
|
|
d5d7dd8e57 | ||
|
|
1a39d0962e | ||
|
|
86b77c2877 | ||
|
|
cf8e5897fb | ||
|
|
f1e6ddff18 | ||
|
|
059a704f53 | ||
|
|
4c29bcc49a | ||
|
|
47960bbaf9 | ||
|
|
b2ec77275d | ||
|
|
6fc12a2498 | ||
|
|
a72557f4e2 | ||
|
|
71d0ec8ba8 | ||
|
|
ee5d82c021 | ||
|
|
c7ab236e10 | ||
|
|
d2b1bd5b44 | ||
|
|
a22bc8622e | ||
|
|
fe9f6e5493 | ||
|
|
7f0354cd63 | ||
|
|
c437371db6 | ||
|
|
5734d0391f | ||
|
|
e81fb5bb10 | ||
|
|
0c5ecd0a4e | ||
|
|
1d76946968 | ||
|
|
297319f668 | ||
|
|
e23971b680 | ||
|
|
18927d4750 | ||
|
|
33bd64d9ff | ||
|
|
667ef918fc | ||
|
|
cc55de03ee | ||
|
|
4f786d6262 | ||
|
|
63f2540745 | ||
|
|
fde7f927df | ||
|
|
b4d1cff464 | ||
|
|
aedc10a6dc | ||
|
|
78820f1049 | ||
|
|
301356ebd7 | ||
|
|
ecba3c2e7f | ||
|
|
a4e4045abd | ||
|
|
0d0d33ca29 | ||
|
|
10fdb30e07 | ||
|
|
d7364d59a9 | ||
|
|
7d40e36574 | ||
|
|
3aad64746d | ||
|
|
b5215b33bf | ||
|
|
ab44405b52 | ||
|
|
c16ee6cf68 | ||
|
|
7472c25c0a | ||
|
|
27d9339a4c | ||
|
|
23c23bf02f | ||
|
|
5649f6216f | ||
|
|
4ed2bb9e57 | ||
|
|
46567cb15c | ||
|
|
90a61a1000 | ||
|
|
ad34c7b891 | ||
|
|
c5b107eab9 | ||
|
|
a8c59c5c36 | ||
|
|
0d4d3a301b | ||
|
|
b10c3eb1bb | ||
|
|
9b62d6ef1e | ||
|
|
8ff242ea45 | ||
|
|
867ef87a34 | ||
|
|
2235d9d7a8 | ||
|
|
5c82fdcd0f | ||
|
|
641355083c | ||
|
|
cadd611559 | ||
|
|
fb734f3394 | ||
|
|
e4a87e2138 | ||
|
|
12db42892d | ||
|
|
13a0db0180 | ||
|
|
facb09d779 | ||
|
|
617f8e936c | ||
|
|
6e48ad79a7 | ||
|
|
3984ab19c9 | ||
|
|
49a9259f2e | ||
|
|
867bbad1be | ||
|
|
ead4318163 | ||
|
|
bfa9203883 | ||
|
|
4f5f18f61c | ||
|
|
df71c7f75c | ||
|
|
c4839aa5f4 | ||
|
|
c19fbb1473 | ||
|
|
3cdebf4ee9 | ||
|
|
2bb433c3cd | ||
|
|
731e9b2f57 | ||
|
|
b606fa454d | ||
|
|
c6bd3f11b6 | ||
|
|
d11398274a | ||
|
|
b2081b3481 | ||
|
|
f5b7ee5a81 | ||
|
|
20a1293a55 | ||
|
|
504b45783f | ||
|
|
27bc135bd2 | ||
|
|
4d91d2017c | ||
|
|
523c979488 | ||
|
|
d2bba801d9 | ||
|
|
ceb1ec6e6d | ||
|
|
aa83ea83fa | ||
|
|
4a7d5d6573 | ||
|
|
b69db2ff2c | ||
|
|
c288d438dc | ||
|
|
94f72cd6d9 | ||
|
|
307944cdb5 | ||
|
|
f5a75356df | ||
|
|
54ebd19875 | ||
|
|
303fc25af3 | ||
|
|
a455072d7a | ||
|
|
2bbf04b191 | ||
|
|
e4c33a7d22 | ||
|
|
6765ce8644 | ||
|
|
2d639c8f48 | ||
|
|
6ef4cf9fb6 | ||
|
|
cedc84d31a | ||
|
|
f0af6bf830 | ||
|
|
a209f49be5 | ||
|
|
8b44336779 | ||
|
|
7bd7ea34ad | ||
|
|
5dbba0f3ff | ||
|
|
f9cf804627 | ||
|
|
b871d8528e | ||
|
|
fc33e7e3f2 | ||
|
|
47e296c861 | ||
|
|
5bce4dfa6a | ||
|
|
e50d13a84a | ||
|
|
b1bce9f4ce | ||
|
|
aae35ff5d9 | ||
|
|
2cc1d8d736 | ||
|
|
b6f0e7736c | ||
|
|
89bf050f70 | ||
|
|
6f0b44d959 | ||
|
|
0e87633c8b | ||
|
|
e349c469fa | ||
|
|
0af0f8c447 | ||
|
|
c119328176 | ||
|
|
4d1a9ea8e7 | ||
|
|
af25f6ca6e | ||
|
|
2231b88f6d | ||
|
|
685d7beb11 | ||
|
|
f14889ef56 | ||
|
|
fafbdc7c69 | ||
|
|
ad6ced45cc | ||
|
|
3d96b9acd4 | ||
|
|
594f9b98ab | ||
|
|
392105e820 | ||
|
|
f629663641 | ||
|
|
3683bd46a4 | ||
|
|
4dfde1bea6 | ||
|
|
4e506555ad | ||
|
|
45f912c2f5 | ||
|
|
d44b35937b | ||
|
|
594abd7372 | ||
|
|
869964ea7e | ||
|
|
4c26318126 | ||
|
|
ab3468b758 | ||
|
|
1dbd29735e | ||
|
|
2def54c775 | ||
|
|
67e8532d37 | ||
|
|
fb2c016ebe | ||
|
|
3056527701 | ||
|
|
cef79dfca0 | ||
|
|
769410efdf | ||
|
|
c7dbb07858 | ||
|
|
cc92b3e51e | ||
|
|
88bba7555b | ||
|
|
30c682bd24 | ||
|
|
3baffa11e4 | ||
|
|
1ed598c5f2 | ||
|
|
185d779c8d | ||
|
|
241fc618b8 | ||
|
|
3a0b2e04d4 | ||
|
|
cec867297d | ||
|
|
cbe539c727 | ||
|
|
7c84d9eb70 | ||
|
|
5a7187d22f | ||
|
|
a7e8249ae6 | ||
|
|
d81ab81fb0 | ||
|
|
846e7350fb | ||
|
|
102f27fe30 | ||
|
|
0e76bd4aac | ||
|
|
a74a9e2489 | ||
|
|
28e58e4b4e | ||
|
|
a8e830f51c | ||
|
|
0493c402a7 | ||
|
|
ca10d104c0 | ||
|
|
035ac47b39 | ||
|
|
a983575b6d | ||
|
|
d6a329a63c | ||
|
|
5ac646444f | ||
|
|
b36eab2141 | ||
|
|
3c44909f47 | ||
|
|
b827301d0a | ||
|
|
e0c8781bcc | ||
|
|
8314df9faf | ||
|
|
dffe8834a1 | ||
|
|
8d5be25093 | ||
|
|
7878c108e1 | ||
|
|
f27787d560 | ||
|
|
acaeb0cb42 | ||
|
|
9e8907ce21 | ||
|
|
3879b99176 | ||
|
|
bcbc110883 | ||
|
|
243c8f71a7 | ||
|
|
5f1466b574 | ||
|
|
26b85b5c92 | ||
|
|
76f6a9df89 | ||
|
|
0d4fe313b4 | ||
|
|
c7955bcc19 | ||
|
|
fe0f0c4d9e | ||
|
|
114d5427cc | ||
|
|
d824c99489 | ||
|
|
708ce43e00 | ||
|
|
271b953081 | ||
|
|
af71024f42 | ||
|
|
a73610672f | ||
|
|
4c6acc91ab | ||
|
|
b2dd962161 | ||
|
|
b52ab8cb0a | ||
|
|
d87f7e1948 | ||
|
|
60e3519f93 | ||
|
|
ef80912137 | ||
|
|
2e0b574733 | ||
|
|
e1eb658697 | ||
|
|
5a23bd02a4 | ||
|
|
af04611d6c | ||
|
|
384d5e9598 | ||
|
|
1848c43f0c | ||
|
|
d2cd29a838 | ||
|
|
91576bd7dd | ||
|
|
1b2eb2481e | ||
|
|
e3c240f139 | ||
|
|
d0cfc6614e | ||
|
|
007bb0124f | ||
|
|
9fa1d9d2ea | ||
|
|
1dfc67802a | ||
|
|
bae84cd1ba | ||
|
|
3f3301a4c2 | ||
|
|
4af50acf88 | ||
|
|
61880bc07b | ||
|
|
804f1aea9b | ||
|
|
636201df80 | ||
|
|
4157c7bccc | ||
|
|
0d05a2a6e3 | ||
|
|
a53cbc2b87 | ||
|
|
870f064598 | ||
|
|
2a15298cf8 | ||
|
|
bf8a7d98ac | ||
|
|
e9602d23cb | ||
|
|
747e2b9c1c | ||
|
|
dca722cb29 | ||
|
|
1f8e50f482 | ||
|
|
b6ed8b40d1 | ||
|
|
348916e567 | ||
|
|
6ea020c8d2 | ||
|
|
8f5981a313 | ||
|
|
378feceb5f | ||
|
|
c65940f5ef | ||
|
|
6627d4724e | ||
|
|
9ca764b2a6 | ||
|
|
f4c419d44a | ||
|
|
4f165b9391 | ||
|
|
25f70fd51b | ||
|
|
58f6be4d02 | ||
|
|
64326c4fb5 | ||
|
|
16cce26b67 | ||
|
|
6587e6eec0 | ||
|
|
1cf82eb7a4 | ||
|
|
2214ce7911 | ||
|
|
7f10ac7679 | ||
|
|
c8080c58f5 | ||
|
|
9067d88c3b | ||
|
|
f35dea840e | ||
|
|
8cbf1dd568 | ||
|
|
685c955ecf | ||
|
|
bedbf8077b | ||
|
|
3d304457f5 | ||
|
|
016c75c0d4 | ||
|
|
6c6d520dcb | ||
|
|
506bfc8087 | ||
|
|
e0d6002aa8 | ||
|
|
d14b0358ee | ||
|
|
0b8e402375 | ||
|
|
d192d842ed | ||
|
|
afe056649b | ||
|
|
0d4499c187 | ||
|
|
7397c315a7 | ||
|
|
d2104be91a | ||
|
|
c5d9275630 | ||
|
|
bbedcbc96b | ||
|
|
acebbd8958 | ||
|
|
482b41966e | ||
|
|
0d694e9870 | ||
|
|
294e4f6601 | ||
|
|
93a09bef4b | ||
|
|
14619588d4 | ||
|
|
63640a0950 | ||
|
|
db09d1c442 | ||
|
|
a80c6f034a | ||
|
|
db1f26e9da | ||
|
|
42b7e36e0d | ||
|
|
9271997a30 | ||
|
|
b23066c52b | ||
|
|
56f9dc85e7 | ||
|
|
1a565095e9 | ||
|
|
c89620159a | ||
|
|
160db34fa0 | ||
|
|
c4ebacedfe | ||
|
|
f3f9c12edf | ||
|
|
91df7349f4 | ||
|
|
dc219ed11a | ||
|
|
51d08045e8 | ||
|
|
f348a5982b | ||
|
|
7b614716af | ||
|
|
5828ad55a1 | ||
|
|
0becf0b4bc | ||
|
|
bafd9522e0 | ||
|
|
9797534458 | ||
|
|
5efeb28eb3 | ||
|
|
5e8723a031 | ||
|
|
de76497e8a | ||
|
|
9cdfe80143 | ||
|
|
87da024a29 | ||
|
|
a06de54113 | ||
|
|
5b94930463 | ||
|
|
5885706988 | ||
|
|
997711b264 | ||
|
|
7beb3e63fe | ||
|
|
ae57e42612 | ||
|
|
99140bbd1e | ||
|
|
89f4817cfe | ||
|
|
9802a0c51b | ||
|
|
d2d324e3f0 | ||
|
|
bee2315566 | ||
|
|
6d38b7a6aa | ||
|
|
0f6e4ab4e0 | ||
|
|
ee1a6ffeb6 | ||
|
|
b36850f79f | ||
|
|
bef0d9234e | ||
|
|
0bba4b7d64 | ||
|
|
a7576f6971 | ||
|
|
51d08e4b82 | ||
|
|
494ce8f41b | ||
|
|
8b3f642cf2 | ||
|
|
2e5667f652 | ||
|
|
8d539d4c21 | ||
|
|
c9026a45cc | ||
|
|
81c4184cc4 | ||
|
|
244f657be2 | ||
|
|
74a6b3ffdc | ||
|
|
8e7a79cf94 | ||
|
|
849b46533d | ||
|
|
7f5aeed4d1 | ||
|
|
c749149c2f | ||
|
|
0a7d22248f | ||
|
|
a35dc9d7b6 | ||
|
|
a6e819e169 | ||
|
|
3701161022 | ||
|
|
e3898df731 | ||
|
|
32172220f7 | ||
|
|
fcdfe6d0c0 | ||
|
|
67bc933d5c | ||
|
|
feb1532549 | ||
|
|
1722ee7a9b | ||
|
|
710e119397 | ||
|
|
f21d9f38e5 | ||
|
|
727c0fe3c0 | ||
|
|
e3fda52801 | ||
|
|
37762e45fd | ||
|
|
d43316f7c9 | ||
|
|
6971ba6c53 | ||
|
|
a175cf9fe0 | ||
|
|
9927e6f217 | ||
|
|
bc300eab18 | ||
|
|
3ca4729421 | ||
|
|
dfaa76cc29 | ||
|
|
7103b04283 | ||
|
|
d2ddb49314 | ||
|
|
a4a042bfd7 | ||
|
|
a9a8115d46 | ||
|
|
3676014eb6 | ||
|
|
52910602ff | ||
|
|
a2d1cf0e5f | ||
|
|
8e886e83e7 | ||
|
|
3e8dfb2bcb | ||
|
|
6fb0f7ef4d | ||
|
|
08983fdbc1 | ||
|
|
ef05b2b614 | ||
|
|
a2dde02994 | ||
|
|
7544cf058e | ||
|
|
43193fd2b6 | ||
|
|
25c55c5d1d | ||
|
|
217258b972 | ||
|
|
dbe0815ac4 | ||
|
|
fd4cad8d4c | ||
|
|
e33bdb52f3 | ||
|
|
46a48a5650 | ||
|
|
8fa3448af2 | ||
|
|
f236829b0f | ||
|
|
47dea87275 | ||
|
|
5e9198c2e0 | ||
|
|
c9c8f20cc5 | ||
|
|
a19c97f152 | ||
|
|
5e1e9d3c5f | ||
|
|
96153f8a14 | ||
|
|
14adf692ab | ||
|
|
aa845fc3f5 | ||
|
|
079a455181 | ||
|
|
07794d000c | ||
|
|
e787f46414 | ||
|
|
e61d6109d7 | ||
|
|
34eda14473 | ||
|
|
0eb0b7395e | ||
|
|
73705eb0e4 | ||
|
|
d94fb0ef06 | ||
|
|
17470ecce2 | ||
|
|
12db6966fb | ||
|
|
5070568b89 | ||
|
|
ef91f113ee | ||
|
|
c875d20e83 | ||
|
|
c86aae7b8b | ||
|
|
ee30cba471 | ||
|
|
7bcd8a800a | ||
|
|
903e298951 | ||
|
|
955b76f30a | ||
|
|
1b052023b6 | ||
|
|
3af52cf6c4 | ||
|
|
660b6f4be8 |
5
.env
@@ -1,2 +1,5 @@
|
||||
# 项目本地运行端口号
|
||||
# 平台本地运行端口号
|
||||
VITE_PORT = 8848
|
||||
|
||||
# 是否隐藏首页 隐藏 true 不隐藏 false (勿删除,VITE_HIDE_HOME只需在.env文件配置)
|
||||
VITE_HIDE_HOME = false
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
# 项目本地运行端口号
|
||||
# 平台本地运行端口号
|
||||
VITE_PORT = 8848
|
||||
|
||||
# 开发环境读取配置文件路径
|
||||
VITE_PUBLIC_PATH = /
|
||||
|
||||
# 开发环境代理
|
||||
VITE_PROXY_DOMAIN = /api
|
||||
|
||||
# 开发环境路由历史模式
|
||||
# 开发环境路由历史模式(Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数")
|
||||
VITE_ROUTER_HISTORY = "hash"
|
||||
|
||||
# 开发环境后端地址
|
||||
VITE_PROXY_DOMAIN_REAL = "http://127.0.0.1:3000"
|
||||
@@ -1,11 +1,13 @@
|
||||
# 线上环境项目打包路径
|
||||
# 线上环境平台打包路径
|
||||
VITE_PUBLIC_PATH = /
|
||||
|
||||
# 线上环境路由历史模式
|
||||
# 线上环境路由历史模式(Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数")
|
||||
VITE_ROUTER_HISTORY = "hash"
|
||||
|
||||
# 线上环境后端地址
|
||||
VITE_PROXY_DOMAIN_REAL = ""
|
||||
# 是否在打包时使用cdn替换本地库 替换 true 不替换 false
|
||||
VITE_CDN = false
|
||||
|
||||
# 是否为打包后的文件提供传统浏览器兼容性支持 支持 true 不支持 false
|
||||
VITE_LEGACY = false
|
||||
# 是否启用gzip压缩或brotli压缩(分两种情况,删除原始文件和不删除原始文件)
|
||||
# 压缩时不删除原始文件的配置:gzip、brotli、both(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认)
|
||||
# 压缩时删除原始文件的配置:gzip-clear、brotli-clear、both-clear(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认)
|
||||
VITE_COMPRESSION = "none"
|
||||
16
.env.staging
Normal file
@@ -0,0 +1,16 @@
|
||||
# 预发布也需要生产环境的行为
|
||||
# https://cn.vitejs.dev/guide/env-and-mode.html#modes
|
||||
NODE_ENV=production
|
||||
|
||||
VITE_PUBLIC_PATH = /
|
||||
|
||||
# 预发布环境路由历史模式(Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数")
|
||||
VITE_ROUTER_HISTORY = "hash"
|
||||
|
||||
# 是否在打包时使用cdn替换本地库 替换 true 不替换 false
|
||||
VITE_CDN = true
|
||||
|
||||
# 是否启用gzip压缩或brotli压缩(分两种情况,删除原始文件和不删除原始文件)
|
||||
# 压缩时不删除原始文件的配置:gzip、brotli、both(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认)
|
||||
# 压缩时删除原始文件的配置:gzip-clear、brotli-clear、both-clear(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认)
|
||||
VITE_COMPRESSION = "none"
|
||||
@@ -1,4 +1,13 @@
|
||||
public
|
||||
dist
|
||||
*.d.ts
|
||||
package.json
|
||||
/src/assets
|
||||
package.json
|
||||
.eslintrc.js
|
||||
.prettierrc.js
|
||||
commitlint.config.js
|
||||
postcss.config.js
|
||||
tailwind.config.js
|
||||
stylelint.config.js
|
||||
src/components/ReSplitPane/iconfont
|
||||
src/components/ReFlowChart/src/assets/iconfont
|
||||
43
.eslintrc.js
@@ -37,7 +37,7 @@ module.exports = {
|
||||
"eslint:recommended",
|
||||
"@vue/typescript/recommended",
|
||||
"@vue/prettier",
|
||||
"@vue/prettier/@typescript-eslint"
|
||||
"@vue/eslint-config-typescript"
|
||||
],
|
||||
parser: "vue-eslint-parser",
|
||||
parserOptions: {
|
||||
@@ -49,7 +49,34 @@ module.exports = {
|
||||
jsx: true
|
||||
}
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
files: ["*.ts", "*.vue"],
|
||||
rules: {
|
||||
"no-undef": "off"
|
||||
}
|
||||
},
|
||||
{
|
||||
files: ["*.vue"],
|
||||
parser: "vue-eslint-parser",
|
||||
parserOptions: {
|
||||
parser: "@typescript-eslint/parser",
|
||||
extraFileExtensions: [".vue"],
|
||||
ecmaVersion: "latest",
|
||||
ecmaFeatures: {
|
||||
jsx: true
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
"no-undef": "off"
|
||||
}
|
||||
}
|
||||
],
|
||||
rules: {
|
||||
"vue/no-v-html": "off",
|
||||
"vue/require-default-prop": "off",
|
||||
"vue/require-explicit-emits": "off",
|
||||
"vue/multi-word-component-names": "off",
|
||||
"@typescript-eslint/no-explicit-any": "off", // any
|
||||
"no-debugger": "off",
|
||||
"@typescript-eslint/explicit-module-boundary-types": "off", // setup()
|
||||
@@ -57,6 +84,18 @@ module.exports = {
|
||||
"@typescript-eslint/ban-ts-comment": "off",
|
||||
"@typescript-eslint/no-empty-function": "off",
|
||||
"@typescript-eslint/no-non-null-assertion": "off",
|
||||
"vue/html-self-closing": [
|
||||
"error",
|
||||
{
|
||||
html: {
|
||||
void: "always",
|
||||
normal: "always",
|
||||
component: "always"
|
||||
},
|
||||
svg: "always",
|
||||
math: "always"
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
@@ -78,4 +117,4 @@ module.exports = {
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
39
.github/workflows/gitee.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
name: Build and Deploy
|
||||
permissions:
|
||||
contents: write
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
jobs:
|
||||
deploy:
|
||||
concurrency: ci-${{ github.ref }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: "16"
|
||||
registry-url: https://registry.npmjs.com/
|
||||
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: latest
|
||||
|
||||
- name: Deploy 🔧
|
||||
run: |
|
||||
pnpm install --no-frozen-lockfile
|
||||
sed -i "s#VITE_PUBLIC_PATH = /#VITE_PUBLIC_PATH = /vue-pure-admin/#g" $(pwd)/.env.production
|
||||
pnpm build
|
||||
cd dist
|
||||
touch README.md .nojekyll
|
||||
|
||||
- name: Deploy 🚀
|
||||
uses: JamesIves/github-pages-deploy-action@v4
|
||||
with:
|
||||
folder: dist
|
||||
clean: true
|
||||
3
.github/workflows/linter.yml
vendored
@@ -58,8 +58,9 @@ jobs:
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
pnpm install
|
||||
pnpm install --no-frozen-lockfile
|
||||
pnpm lint
|
||||
pnpm typecheck
|
||||
env:
|
||||
VALIDATE_ALL_CODEBASE: false
|
||||
DEFAULT_BRANCH: main
|
||||
|
||||
2
.gitignore
vendored
@@ -4,6 +4,7 @@ dist
|
||||
dist-ssr
|
||||
*.local
|
||||
.eslintcache
|
||||
report.html
|
||||
|
||||
yarn.lock
|
||||
npm-debug.log*
|
||||
@@ -17,3 +18,4 @@ tests/**/coverage/
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
tsconfig.tsbuildinfo
|
||||
@@ -2,4 +2,4 @@ ports:
|
||||
- port: 3344
|
||||
onOpen: open-preview
|
||||
tasks:
|
||||
- init: npm install && npm run serve
|
||||
- init: pnpm install && pnpm serve
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
module.exports = {
|
||||
"*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"],
|
||||
"{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": [
|
||||
"prettier --write--parser json"
|
||||
],
|
||||
"{!(package)*.json}": ["prettier --write--parser json"],
|
||||
"package.json": ["prettier --write"],
|
||||
"*.vue": ["eslint --fix", "prettier --write", "stylelint --fix"],
|
||||
"*.{vue,css,scss,postcss,less}": ["stylelint --fix", "prettier --write"],
|
||||
|
||||
3
.npmrc
Normal file
@@ -0,0 +1,3 @@
|
||||
shamefully-hoist=true
|
||||
strict-peer-dependencies=false
|
||||
shell-emulator=true
|
||||
@@ -1,7 +1,6 @@
|
||||
module.exports = {
|
||||
bracketSpacing: true,
|
||||
jsxBracketSameLine: true,
|
||||
singleQuote: false,
|
||||
arrowParens: 'avoid',
|
||||
trailingComma: 'none'
|
||||
arrowParens: "avoid",
|
||||
trailingComma: "none"
|
||||
};
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
/dist/*
|
||||
/public/*
|
||||
public/*
|
||||
public/*
|
||||
src/style/reset.scss
|
||||
18
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"christian-kohler.path-intellisense",
|
||||
"vscode-icons-team.vscode-icons",
|
||||
"davidanson.vscode-markdownlint",
|
||||
"stylelint.vscode-stylelint",
|
||||
"bradlc.vscode-tailwindcss",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"esbenp.prettier-vscode",
|
||||
"lokalise.i18n-ally",
|
||||
"redhat.vscode-yaml",
|
||||
"csstools.postcss",
|
||||
"mikestead.dotenv",
|
||||
"eamodio.gitlens",
|
||||
"antfu.iconify",
|
||||
"Vue.volar"
|
||||
]
|
||||
}
|
||||
30
.vscode/settings.json
vendored
@@ -1,49 +1,39 @@
|
||||
{
|
||||
// You should install these plugins:
|
||||
// ESLint
|
||||
// Prettier - Code formatter
|
||||
// stylelint
|
||||
// vscode-icons
|
||||
// TypeScript Vue Plugin (Volar)
|
||||
// Vue Language Features (Volar)
|
||||
"terminal.integrated.rendererType": "dom",
|
||||
"editor.formatOnType": true,
|
||||
"editor.formatOnSave": true,
|
||||
"javascript.updateImportsOnFileMove.enabled": "always",
|
||||
"[vue]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[javascript]": {
|
||||
"editor.defaultFormatter": "vscode.typescript-language-features"
|
||||
},
|
||||
"editor.tabSize": 2,
|
||||
"editor.formatOnPaste": true,
|
||||
"editor.guides.bracketPairs": "active",
|
||||
"files.autoSave": "afterDelay",
|
||||
"git.confirmSync": false,
|
||||
"workbench.startupEditor": "newUntitledFile",
|
||||
"editor.suggestSelection": "first",
|
||||
"editor.acceptSuggestionOnCommitCharacter": false,
|
||||
"css.lint.propertyIgnoredDueToDisplay": "ignore",
|
||||
// Prevent inline styles from being automatically formatted to all lowercase
|
||||
"editor.quickSuggestions": {
|
||||
"other": true,
|
||||
"comments": true,
|
||||
"strings": true
|
||||
},
|
||||
// Automatically fix some syntax errors of ts
|
||||
"tslint.autoFixOnSave": true,
|
||||
"files.associations": {
|
||||
// Specifies the location of snippets in the suggestion widget
|
||||
"editor.snippetSuggestions": "top"
|
||||
},
|
||||
"[css]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"cSpell.userWords": ["sourcemap", "vite"],
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": true
|
||||
},
|
||||
"volar.tsPlugin": true,
|
||||
"typescript.tsdk": "node_modules/typescript/lib",
|
||||
"i18n-ally.localesPaths": ["src/plugins/i18n"]
|
||||
"i18n-ally.localesPaths": "locales",
|
||||
"i18n-ally.keystyle": "nested",
|
||||
"i18n-ally.sortKeys": true,
|
||||
"i18n-ally.namespace": true,
|
||||
"i18n-ally.enabledParsers": ["yaml", "js"],
|
||||
"i18n-ally.sourceLanguage": "en",
|
||||
"i18n-ally.displayLanguage": "zh-CN",
|
||||
"i18n-ally.enabledFrameworks": ["vue"],
|
||||
"iconify.excludes": ["el"]
|
||||
}
|
||||
|
||||
17
.vscode/vue3.2.code-snippets
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"Vue3.2+快速生成模板": {
|
||||
"prefix": "Vue3.2+",
|
||||
"body": [
|
||||
"<script setup lang='ts'>",
|
||||
"</script>\n",
|
||||
"<template>",
|
||||
"\t<div>\n",
|
||||
"\t</div>",
|
||||
"</template>\n",
|
||||
"<style scoped>\n",
|
||||
"</style>",
|
||||
"$2"
|
||||
],
|
||||
"description": "Vue3.2+"
|
||||
}
|
||||
}
|
||||
20
.vscode/vue3.2.setup-snippets
vendored
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"Vue3.2快速生成模板": {
|
||||
"prefix": "Vue3.2",
|
||||
"body": [
|
||||
"<!-- $1 -->",
|
||||
"<script setup lang='ts'>",
|
||||
"\t$2",
|
||||
"</script>\n",
|
||||
"<template>",
|
||||
"\t<div>",
|
||||
"\t\t$3",
|
||||
"\t</div>",
|
||||
"</template>\n",
|
||||
"<style scoped>",
|
||||
"\t$4",
|
||||
"</style>"
|
||||
],
|
||||
"description": "Vue3.2"
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,515 @@
|
||||
# 4.1.0 (2023-05-12)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add a `demo` example combined with `Form` for the functional pop-up box component
|
||||
- wrapper `el-col` component of `element-plus`
|
||||
- Add `beforeCancel` and `beforeSure` callbacks to the functional popup component, which can suspend the closing of the popup
|
||||
- Improve `System Management-Department Management` page
|
||||
- Optimize `PureTableBar` component, add drag and drop function for column display
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix the problem that the page cache still exists when you click the tab to reload after turning on `keepAlive`
|
||||
- Fix the problem that the left menu will flicker after refreshing the tab in the mixed mode menu
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimize home page layout
|
||||
- Dependency update to `vue3.3+` and remove `unplugin-vue-define-options` plugin
|
||||
|
||||
# 4.0.0 (2023-05-09)
|
||||
|
||||
[View 4.0.0 version optimization details](https://github.com/pure-admin/vue-pure-admin/issues/428#issuecomment-1422191158)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Use `css` pseudo-class `before` to refactor the activation background of the menu, similar to [ant.design-menu](https://ant.design/components/menu-cn#components-menu-demo-inline-collapsed)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Optimize the extra icon on the right side of the menu name to support more icon rendering modes
|
||||
- Configurable home menu display and hide
|
||||
- Promote the namespace of the local reactive store into the global configuration
|
||||
- Added functional popup components and `demo` examples, making it easier to use
|
||||
- `PureTableBar` component adds column display function
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the `echarts` chart on the home page not adapting to the container when the menu is collapsed or expanded
|
||||
- Fixed the problem that when there is only one submenu, the search function cannot find the submenu
|
||||
- Fix the problem that the global configuration `Theme` is empty cache for `light` and re-login theme configuration does not take effect
|
||||
- Fixed the problem that the search boxes were not automatically gathered after the menu search function pop-up box was opened
|
||||
- Fixed the problem of toolbar button text display after pressing `ESC` to exit full screen
|
||||
- Fix the problem of `tooltip` click penetration in the notification bar of the mobile terminal
|
||||
- Fixed the problem that the text is not displayed when switching to `horizontal` navigation mode after the left menu is collapsed
|
||||
- Fixed the problem that the status cannot be reset when closing other tabs when navigating `tab`
|
||||
- Fix the page hot update error caused by uninitialized environment variables in the `getHistoryMode` function
|
||||
- Fixed too many `tabs` in the navigation, which caused the tabs on the left to be closed and could not be displayed normally
|
||||
- Fixed the problem of full-screen error reporting when clicking on the content area
|
||||
- Fixed the problem that the left navigation bar is always loading after opening `showLink:false` page under hybrid navigation and refreshing
|
||||
- Fixed the left navigation memory overflow problem caused by calling `initRouter` function in mixed mode navigation
|
||||
- Fixed the problem that the cached page was not destroyed when closing the left, right, other, and all tab operations
|
||||
- Fix the problem that the route passes parameters through `query` or `params`, and the cache invalidation problem occurs when the tab page is closed after the cache is enabled
|
||||
- Fixed the problem that the breadcrumbs could not find the parent path in the `params` route parameter passing mode
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimize `buttons` named slot of `RePureTableBar` component
|
||||
- Optimize navigation style and menu collapse animation
|
||||
- Optimize the extra icon on the right side of the menu name to support more icon rendering modes
|
||||
- Optimize `logo` image and text layout and unified configuration
|
||||
- After the routing information `showLink` is set to `false`, the current routing information will not be added to the tab
|
||||
- Export `addPathMatch` function
|
||||
- All `getters` in `pinia` are changed to the official recommended way of writing, and `this` is changed to `state` to automatically deduce the type
|
||||
- Adapt to the `api` of the latest version of `pure-table`
|
||||
- Ignore `deprecation` warnings for `sourcemap-codec` and `stable` dependencies
|
||||
- Remove `"incremental": true` from `tsconfig.json` file
|
||||
- Update `stylelint` and related configurations to the latest, strengthen style validation
|
||||
- Breadcrumbs are removed from the homepage, and are displayed according to the selected menu. The homepage is no longer fixed in the breadcrumbs, and the routing monitoring of the breadcrumbs page is optimized
|
||||
|
||||
# 3.9.7 (2022-12-26)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Use `path.posix.resolve` instead of `path.resolve` to avoid drive letter problems when using `electron` in `windows` environment
|
||||
- By default, the `CachingAsyncRoutes` dynamic routing cache is turned off locally, making it easier to debug in the development environment. It is not necessary to clear the local cached dynamic routing every time you modify the dynamic routing. It is recommended to enable it in the production environment
|
||||
|
||||
# 3.9.6 (2022-12-19)
|
||||
|
||||
### 🎫 Chores
|
||||
|
||||
- Upgrade `vite4` version
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix the problem that `hmr` of `vite` is slow due to the wrong way of importing `tailwind.css`
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Update [@pureadmin/theme](https://github.com/pure-admin/pure-admin-theme) to the latest version, bringing more friendly type hints
|
||||
- Optimize [PureTableBar](https://github.com/pure-admin/vue-pure-admin/tree/main/src/components/RePureTableBar) component
|
||||
- Optimize the business code of the system management page to bring better code reference
|
||||
|
||||
# 3.9.5 (2022-12-13)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- completely removed `lodash` and its related libraries
|
||||
[Click here to see Why Removed? How to integrate it yourself? ](https://yiming_chang.gitee.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-5-%E7 %89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-lodash-%E5%92%8C% E5%85%B6%E7%9B%B8%E5%85%B3%E5%BA%93-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9 %99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `@pureadmin/table` table dynamic column example
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix dynamic route `rank` issue
|
||||
- Fix dark theme styling issues
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- optimize the route `rank`, when `rank` does not exist, it will be created automatically according to the order, the home page route will always be the first
|
||||
|
||||
# 3.9.4 (2022-12-05)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Completely removed `vxe-table`, after removal, the overall package size of the full version is reduced by `1.82MB`, and the initial startup time is basically the same as the lite version 🐮
|
||||
[Click here to see Why Removed? How to integrate it yourself?](https://pure-admin.github.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-4-%E7%89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-vxe-table-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9%99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `@pureadmin/table` table selector (single select, multiple select) example
|
||||
|
||||
# 3.9.3 (2022-12-04)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `@pureadmin/table` pagination and loading animation example
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the problem that the refresh page would be blank due to changes in dynamic routes stored in local storage after enabling `CachingAsyncRoutes`
|
||||
- Fixed `Tooltip` displayed abnormally after the menu is collapsed
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Expand the use of local icons, the first launch of the full version reduces `13` requests again
|
||||
- When the menu loading is slow, add `loading` animation to optimize user experience
|
||||
- Theme initialization is placed in `onBeforeMount` to avoid flashing of the initialization page
|
||||
|
||||
# 3.9.2 (2022-12-03)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Global coverage of `el-dialog`, `el-drawer`, `el-message-box`, `el-notification` components of `element-plus`The style of the close icon in the upper right corner makes it more vivid [specific modification Code record](https://github.com/pure-admin/vue-pure-admin/commit/c80818d792276666aaea4b18413a0f08777f2ed1)
|
||||
- The packaging output information is compatible with different packaging output paths
|
||||
- Optimize some animations
|
||||
|
||||
# 3.9.1 (2022-12-02)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `CachingAsyncRoutes` whether to enable dynamic route cache local global configuration, default `true`
|
||||
- Add `TooltipEffect` global configuration, you can configure the `effect` attribute of all `el-tooltip` on the platform body, the default `light`, does not affect the business code
|
||||
- Add directory, menu text exceeds display `Tooltip` text prompt demo
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimize `initRouter` method, compatible with `sso` scenario
|
||||
- Breadcrumb animation style optimization
|
||||
|
||||
# 3.9.0 (2022-11-30)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the jitter problem caused by the scroll bar on the page when the text is too long when exiting the full screen
|
||||
- Fix some type errors
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- perf: Great optimization of the first screen loading. Compared with the version before `3.9.0`, the first screen requests are reduced by `71`, and the first screen loading resources are reduced by `4.1 MB`
|
||||
|
||||
# 3.8.7 (2022-11-28)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- perf: Great package optimization, please be sure to upgrade! Use `unplugin-vue-define-options` to replace `unplugin-vue-macros`, the packaging speed is increased several times, use `unplugin-vue-macros` to take `mac` with moderate performance as an example, the packaging time of the full version is` 6` minutes😭, after replacing it with `unplugin-vue-define-options`, the packaging time on the same computer is `50` seconds☺️
|
||||
|
||||
# 3.8.6 (2022-11-27)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `message` message prompt function, compatible with `Element Plus` and `Ant Design` two `Message` style styles, use and package size are extremely low cost and adapt to dark mode, really fragrant 😂
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- perf: No need to install `@vue/runtime-core`, compatible with `volar` hints of all `element-plus` components
|
||||
|
||||
# 3.8.5 (2022-11-26)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Great optimization, remove `@pureadmin/components` and use compatible writing, the package size of the platform is reduced by `0.4` MB before compression is not enabled, and the resource of `2.3` MB is reduced for the first screen request, which is for the [lite version ](https://github.com/pure-admin/pure-admin-thin) is a very big optimization, the streamlined version has synchronized code
|
||||
|
||||
# 3.8.0 (2022-11-26)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `@pureadmin/table` multiple data format (deep structure) examples
|
||||
- Add `@pureadmin/table` image preview example
|
||||
- Add `@pureadmin/table` row and column drag example
|
||||
- Add `@pureadmin/table` context menu example
|
||||
- Add `@pureadmin/table` export `Excel` example
|
||||
- Add `@pureadmin/table` edit cell example
|
||||
- Add `@pureadmin/table` watermark example
|
||||
- Add `@pureadmin/table` print example
|
||||
- Add `@pureadmin/table` embedded `echarts` chart example
|
||||
- Add `svgo` to compress all `svg` files on the platform to reduce the size
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- The static routing platform automatically imports without manual import
|
||||
- Improved global type hints
|
||||
- Optimize `vite` to rely on pre-built configurations in the platform, and the loading speed of page switching is significantly accelerated
|
||||
|
||||
# 3.7.1 (2022-11-22)
|
||||
|
||||
### 🔥 hotfix
|
||||
|
||||
- Fixed the problem that the tab page may not be reset when logging out when the tab page cache is not turned on
|
||||
|
||||
# 3.7.0 (2022-11-21)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Replace `driver.js` with `intro.js`
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add front-end single sign-on, test address https://yiming_chang.gitee.io/vue-pure-admin/#/pure-table/index?username=sso&roles=admin&accessToken=eyJhbGciOiJIUzUxMiJ9.admin
|
||||
- Add more examples for [@pureadmin/table](https://github.com/pure-admin/pure-admin-table) and `element-plus` [table](https://element-plus.org /zh-CN/component/table.html) example remains the same
|
||||
- Rich watermark function page (supports customizing various colors, shadows, text, additional attributes, setting undeletable watermarks and setting watermarks for specified elements)
|
||||
- Optimize the menu, add `MenuArrowIconNoTransition` global configuration, configure it in `public/serverConfig.json`, for the left menu mode, the menu expansion can be set `MenuArrowIconNoTransition: true` to solve
|
||||
- Replacement form designer component demo
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Repair the in-page menu with parameters to jump to each other, the label is not selected and highlighted
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Removed deprecated `$baseUrl`
|
||||
- Compatible importing a certain library leads to `global is not defined` error, importing `src/utils/globalPolyfills.ts` file into `src/main.ts` can solve the problem
|
||||
- Remove `@vitejs/plugin-legacy`, `vue3` cannot make it support `ie` through any tool
|
||||
|
||||
# 3.6.4 (2022-11-10)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Menu icon `icon` supports using online icons
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed `vxe-button` font color issue after mouse overlay and some other style issues
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimize the routing guard, if you have logged in and there is login information, you cannot jump to the routing whitelist, but continue to stay on the current page
|
||||
- Removed `baseURL` and global environment proxy, and can be written directly in `vite.config.ts`, which is convenient and supports multiple proxy addresses
|
||||
|
||||
# 3.6.3 (2022-11-01)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Static resource classification and packaging
|
||||
- Add danmaku component `demo`
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix the `collapse` property added in the latest version of `tailwindcss` conflicts with the platform `class` class name
|
||||
- Fix that when the `token` expires, if the page has multiple requests, the `token` will be refreshed repeatedly
|
||||
|
||||
# 3.6.2 (2022-10-27)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Replace `/@/` alias with `@/` alias
|
||||
|
||||
# 3.6.1 (2022-10-27)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add whether to start `cdn` for packaging to replace the local library configuration, the default `false` does not start
|
||||
- Added optional `gzip` and `brotli` compression modes for packaging builds
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix `title` too long display style problem
|
||||
- Fix the parent `name` in the route should not be repeated with the child `name`, which will cause redirection to jump `404` problem
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Upgrade `axios` to the latest version
|
||||
|
||||
# 3.6.0 (2022-10-25)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add file download `demo`
|
||||
- Add typewriter component `demo`
|
||||
- Added `json` editor `demo`
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Refactor the permission module, adopt the most commonly used `RBAC` (Role-Based Access List): role-based permission control (User -> Role -> Permission), and update the page permission and button permission `demo` example, button Permissions support three operation modes (judging permissions in component mode, judging permissions in function mode, and judging permissions in instruction mode)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the theme not being emptied when clearing the cache and returning to the login page
|
||||
- Fix `menu` display problem in production environment in `horizontal` mode
|
||||
- Fixed the problem that the `mix` mixed mode navigation might not be displayed in the left menu of the production environment
|
||||
- After the `token` expires, calling the refresh `token` interface will cause an infinite loop
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Removed uncommon `@apply` from `tailwind.css`
|
||||
- Replace `//` comments with `/** */`, which is more friendly to the editor's intellisense
|
||||
- Optimize the login enter event
|
||||
- Simplified some functions, eliminated useless functions, and optimized page loading speed
|
||||
|
||||
# 3.5.0 (2022-9-10)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `cssnano` to compress the size of `css` when packaging
|
||||
- Add `element-plus` seamless scrolling `Table` page demo
|
||||
- Open `vscode` bracket pair guide
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Replace `unocss` with `tailwindcss`, add `tailwindcss` [documentation](https://pure-admin.github.io/pure-admin-doc/pages/39156f/)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- `token` expires, refresh the infinite loop
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- When resetting the route, clear the cached page
|
||||
|
||||
# 3.4.6 (2022-8-23)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- `process` is not defined in path
|
||||
- Fixed an error when dynamic routing `children` is an empty array
|
||||
- Fixed `iframe` loading failure
|
||||
|
||||
# 3.4.5 (2022-8-22)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix local responsive storage object setting issue
|
||||
|
||||
# 3.4.0 (2022-8-22)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimized routing
|
||||
- Optimized for mobile compatibility
|
||||
- Optimized routing parameters (`query`, `params` way to refresh the page does not need to open the tab page cache, the parameters can be retained on the `url` and `tab page`)
|
||||
|
||||
# 3.3.5 (2022-8-19)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Secondary encapsulation of `Table` of `element-plus` into [@pureadmin/table](https://github.com/pure-admin/pure-admin-table), providing flexible configuration items and integrating into the platform
|
||||
- Secondary encapsulation of `Descriptions` of `element-plus` into [@pureadmin/descriptions](https://github.com/pure-admin/pure-admin-descriptions), providing flexible configuration items and integrating into the platform
|
||||
- Centralize most of the tools and hooks of the platform to [@pureadmin/utils](https://pure-admin-utils.netlify.app), and delete the code concentrated in this library to reduce the size of the platform
|
||||
- Add [unplugin-vue-define-options](https://www.npmjs.com/package/unplugin-vue-define-options) plugin, the page can directly write `defineOptions({name: custom name})`
|
||||
- Add project files, language analysis tool [cloc](https://www.npmjs.com/package/cloc)
|
||||
- Added landing page internationalization
|
||||
- Add full routing configuration table type declaration
|
||||
- Add virtual listing page demo
|
||||
- Add `PDF` preview page demo
|
||||
- Added export `execl` page demo
|
||||
- Added blank page demo without `Layout`
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Refactored the theme color to adapt to `element-plus` dark mode (also solved the problem that the same element `css` in `3.3.0` and earlier versions was overwritten many times, resulting in poor style debugging)
|
||||
- Refactored route reset function
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- The compatible project storage directory is named in Chinese, but we really do not recommend Chinese naming, because a library may not escape the Chinese path, causing the project to crash
|
||||
- Optimized interface type
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed async routes with `showlink` set to `false`, not showing after refresh
|
||||
- Fixed vertical navigation menu text being hidden after collapse when there is no `icon`
|
||||
|
||||
# 3.3.0 (2022-5-11)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add user management page demo
|
||||
- Add role management page demo
|
||||
- Add department management page demo
|
||||
- Add card list page demo
|
||||
- Integrated form designer
|
||||
- Added `PPT` demo
|
||||
- Added anti-shake interception demo in the function menu
|
||||
- Upgrade `wangeditorV5` (and support internationalization and custom themes)
|
||||
- Integrate `tauri` version
|
||||
- Added barcode function
|
||||
- Added QR code function
|
||||
- Use the `Cascader` cascade selector in `element-plus` to write a three-level and two-level linkage demo of Chinese provinces and cities
|
||||
- Integrate `Swiper` plugin
|
||||
- Routing supports passing `component`, representing the component path
|
||||
- Added pre-release packaging mode
|
||||
- Add [hooks] to close a tag (https://github.com/pure-admin/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Refactored the landing page to be more inclined to the actual business scenario
|
||||
- Use `unocss` instead of `windicss`, `unocss` has better performance in development environment, no memory leaks, and `api` is compatible with `windicss`
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimized the style of the `split-pane` component for the platform
|
||||
- Optimize internationalization, no longer pass the `i18n` field in the route, the platform automatically reads the files in the `locales` folder of the root directory for internationalization matching
|
||||
- Optimized icon selector
|
||||
- Optimize `layout` to display user information [commit](https://github.com/pure-admin/vue-pure-admin/commit/56f9dc85e7fbe0637605c43577c794de9f8968aa)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix route initialization problem (Cannot access 'constantRoutes' before initialization)
|
||||
|
||||
# 3.2.0 (2022-3-22)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Icon selection component
|
||||
- Menu search function
|
||||
- Added results page
|
||||
- Extended `element-plus` timeline component
|
||||
- Extended `element-plus` tree component to support connecting lines
|
||||
- Add tree selector, support single and multiple selection
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimized the error page UI
|
||||
- Optimize the internationalization function
|
||||
- Optimized routing `rank` sorting, compatible with the case where the value of the `rank` field in the routing `meta` is `null`
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the situation where the menu expands and folds will freeze on some computers
|
||||
|
||||
# 3.1.0 (2022-3-3)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- iframe supports dynamic loading
|
||||
- Watermark example
|
||||
- Print examples (pictures, tables, echarts)
|
||||
- Add running and packaging information, use `lodash-unified` to replace `lodash-es`, `lodash-unified` supports `ESM` and is compatible with `CJS`
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed jumping to another menu page alone in one menu page, the routing page jumped but the tab page was not displayed
|
||||
- Fixed the route that returns dynamic level 3 and above in the background, and the menu does not correspond to the page
|
||||
|
||||
# 3.0 (2022-2-14)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Added mix navigation
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix tab page bug
|
||||
|
||||
# 2.9.0 (2022-2-5)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Added package size analysis, command `pnpm report`
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Use `iconify` to introduce icons on demand, optimize icon size, and reduce network requests
|
||||
- Optimize the route, the route can not pass `showLink: true`, it is displayed by default
|
||||
|
||||
# 2.8.5 (2022-1-21)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Added `WindiCSS` support
|
||||
- Add online environment remove console plugin `vite-plugin-remove-console`
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Replace `@element-plus/icons-vue` with `@iconify-icons/ep`
|
||||
|
||||
# 2.8.0(2022-1-4)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
-Added dark theme
|
||||
-Add element-plus custom theme
|
||||
-Add guide page
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
-Optimize internationalization, compatible with the vscode plug-in i18n Ally smart reminder
|
||||
-Optimize the back-end return routing structure
|
||||
-Optimize local storage, with four built-in buttons `responsive-configure`, `responsive-locale`, `responsive-layout`, `responsive-tags`, which are basic configuration, international configuration, layout configuration, and tab persistent configuration
|
||||
|
||||
# 2.7.0(2021-12-18)
|
||||
|
||||
### 🎫 Feat
|
||||
@@ -16,7 +528,6 @@
|
||||
- Optimize the tab page to bring a better interactive experience
|
||||
- Routing title supports direct writing in Chinese, which can be separated from internationalization
|
||||
- Route history mode is read from env and supports base parameter
|
||||
- Packaged files provide traditional browser compatibility support, configure VITE_LEGACY to true
|
||||
|
||||
# 2.6.0(2021-11-10)
|
||||
|
||||
|
||||
513
CHANGELOG.md
@@ -1,3 +1,515 @@
|
||||
# 4.1.0 (2023-05-12)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add a `demo` example combined with `Form` for the functional pop-up box component
|
||||
- wrapper `el-col` component of `element-plus`
|
||||
- Add `beforeCancel` and `beforeSure` callbacks to the functional popup component, which can suspend the closing of the popup
|
||||
- Improve `System Management-Department Management` page
|
||||
- Optimize `PureTableBar` component, add drag and drop function for column display
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix the problem that the page cache still exists when you click the tab to reload after turning on `keepAlive`
|
||||
- Fix the problem that the left menu will flicker after refreshing the tab in the mixed mode menu
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimize home page layout
|
||||
- Dependency update to `vue3.3+` and remove `unplugin-vue-define-options` plugin
|
||||
|
||||
# 4.0.0 (2023-05-09)
|
||||
|
||||
[View 4.0.0 version optimization details](https://github.com/pure-admin/vue-pure-admin/issues/428#issuecomment-1422191158)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Use `css` pseudo-class `before` to refactor the activation background of the menu, similar to [ant.design-menu](https://ant.design/components/menu-cn#components-menu-demo-inline-collapsed)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Optimize the extra icon on the right side of the menu name to support more icon rendering modes
|
||||
- Configurable home menu display and hide
|
||||
- Promote the namespace of the local reactive store into the global configuration
|
||||
- Added functional popup components and `demo` examples, making it easier to use
|
||||
- `PureTableBar` component adds column display function
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the `echarts` chart on the home page not adapting to the container when the menu is collapsed or expanded
|
||||
- Fixed the problem that when there is only one submenu, the search function cannot find the submenu
|
||||
- Fix the problem that the global configuration `Theme` is empty cache for `light` and re-login theme configuration does not take effect
|
||||
- Fixed the problem that the search boxes were not automatically gathered after the menu search function pop-up box was opened
|
||||
- Fixed the problem of toolbar button text display after pressing `ESC` to exit full screen
|
||||
- Fix the problem of `tooltip` click penetration in the notification bar of the mobile terminal
|
||||
- Fixed the problem that the text is not displayed when switching to `horizontal` navigation mode after the left menu is collapsed
|
||||
- Fixed the problem that the status cannot be reset when closing other tabs when navigating `tab`
|
||||
- Fix the page hot update error caused by uninitialized environment variables in the `getHistoryMode` function
|
||||
- Fixed too many `tabs` in the navigation, which caused the tabs on the left to be closed and could not be displayed normally
|
||||
- Fixed the problem of full-screen error reporting when clicking on the content area
|
||||
- Fixed the problem that the left navigation bar is always loading after opening `showLink:false` page under hybrid navigation and refreshing
|
||||
- Fixed the left navigation memory overflow problem caused by calling `initRouter` function in mixed mode navigation
|
||||
- Fixed the problem that the cached page was not destroyed when closing the left, right, other, and all tab operations
|
||||
- Fix the problem that the route passes parameters through `query` or `params`, and the cache invalidation problem occurs when the tab page is closed after the cache is enabled
|
||||
- Fixed the problem that the breadcrumbs could not find the parent path in the `params` route parameter passing mode
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimize `buttons` named slot of `RePureTableBar` component
|
||||
- Optimize navigation style and menu collapse animation
|
||||
- Optimize the extra icon on the right side of the menu name to support more icon rendering modes
|
||||
- Optimize `logo` image and text layout and unified configuration
|
||||
- After the routing information `showLink` is set to `false`, the current routing information will not be added to the tab
|
||||
- Export `addPathMatch` function
|
||||
- All `getters` in `pinia` are changed to the official recommended way of writing, and `this` is changed to `state` to automatically deduce the type
|
||||
- Adapt to the `api` of the latest version of `pure-table`
|
||||
- Ignore `deprecation` warnings for `sourcemap-codec` and `stable` dependencies
|
||||
- Remove `"incremental": true` from `tsconfig.json` file
|
||||
- Update `stylelint` and related configurations to the latest, strengthen style validation
|
||||
- Breadcrumbs are removed from the homepage, and are displayed according to the selected menu. The homepage is no longer fixed in the breadcrumbs, and the routing monitoring of the breadcrumbs page is optimized
|
||||
|
||||
# 3.9.7 (2022-12-26)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Use `path.posix.resolve` instead of `path.resolve` to avoid drive letter problems when using `electron` in `windows` environment
|
||||
- By default, the `CachingAsyncRoutes` dynamic routing cache is turned off locally, making it easier to debug in the development environment. It is not necessary to clear the local cached dynamic routing every time you modify the dynamic routing. It is recommended to enable it in the production environment
|
||||
|
||||
# 3.9.6 (2022-12-19)
|
||||
|
||||
### 🎫 Chores
|
||||
|
||||
- Upgrade `vite4` version
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix the problem that `hmr` of `vite` is slow due to the wrong way of importing `tailwind.css`
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Update [@pureadmin/theme](https://github.com/pure-admin/pure-admin-theme) to the latest version, bringing more friendly type hints
|
||||
- Optimize [PureTableBar](https://github.com/pure-admin/vue-pure-admin/tree/main/src/components/RePureTableBar) component
|
||||
- Optimize the business code of the system management page to bring better code reference
|
||||
|
||||
# 3.9.5 (2022-12-13)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- completely removed `lodash` and its related libraries
|
||||
[Click here to see Why Removed? How to integrate it yourself? ](https://yiming_chang.gitee.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-5-%E7 %89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-lodash-%E5%92%8C% E5%85%B6%E7%9B%B8%E5%85%B3%E5%BA%93-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9 %99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `@pureadmin/table` table dynamic column example
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix dynamic route `rank` issue
|
||||
- Fix dark theme styling issues
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- optimize the route `rank`, when `rank` does not exist, it will be created automatically according to the order, the home page route will always be the first
|
||||
|
||||
# 3.9.4 (2022-12-05)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Completely removed `vxe-table`, after removal, the overall package size of the full version is reduced by `1.82MB`, and the initial startup time is basically the same as the lite version 🐮
|
||||
[Click here to see Why Removed? How to integrate it yourself?](https://pure-admin.github.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-4-%E7%89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-vxe-table-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9%99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `@pureadmin/table` table selector (single select, multiple select) example
|
||||
|
||||
# 3.9.3 (2022-12-04)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `@pureadmin/table` pagination and loading animation example
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the problem that the refresh page would be blank due to changes in dynamic routes stored in local storage after enabling `CachingAsyncRoutes`
|
||||
- Fixed `Tooltip` displayed abnormally after the menu is collapsed
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Expand the use of local icons, the first launch of the full version reduces `13` requests again
|
||||
- When the menu loading is slow, add `loading` animation to optimize user experience
|
||||
- Theme initialization is placed in `onBeforeMount` to avoid flashing of the initialization page
|
||||
|
||||
# 3.9.2 (2022-12-03)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Global coverage of `el-dialog`, `el-drawer`, `el-message-box`, `el-notification` components of `element-plus`The style of the close icon in the upper right corner makes it more vivid [specific modification Code record](https://github.com/pure-admin/vue-pure-admin/commit/c80818d792276666aaea4b18413a0f08777f2ed1)
|
||||
- The packaging output information is compatible with different packaging output paths
|
||||
- Optimize some animations
|
||||
|
||||
# 3.9.1 (2022-12-02)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `CachingAsyncRoutes` whether to enable dynamic route cache local global configuration, default `true`
|
||||
- Add `TooltipEffect` global configuration, you can configure the `effect` attribute of all `el-tooltip` on the platform body, the default `light`, does not affect the business code
|
||||
- Add directory, menu text exceeds display `Tooltip` text prompt demo
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimize `initRouter` method, compatible with `sso` scenario
|
||||
- Breadcrumb animation style optimization
|
||||
|
||||
# 3.9.0 (2022-11-30)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the jitter problem caused by the scroll bar on the page when the text is too long when exiting the full screen
|
||||
- Fix some type errors
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- perf: Great optimization of the first screen loading. Compared with the version before `3.9.0`, the first screen requests are reduced by `71`, and the first screen loading resources are reduced by `4.1 MB`
|
||||
|
||||
# 3.8.7 (2022-11-28)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- perf: Great package optimization, please be sure to upgrade! Use `unplugin-vue-define-options` to replace `unplugin-vue-macros`, the packaging speed is increased several times, use `unplugin-vue-macros` to take `mac` with moderate performance as an example, the packaging time of the full version is` 6` minutes😭, after replacing it with `unplugin-vue-define-options`, the packaging time on the same computer is `50` seconds☺️
|
||||
|
||||
# 3.8.6 (2022-11-27)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `message` message prompt function, compatible with `Element Plus` and `Ant Design` two `Message` style styles, use and package size are extremely low cost and adapt to dark mode, really fragrant 😂
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- perf: No need to install `@vue/runtime-core`, compatible with `volar` hints of all `element-plus` components
|
||||
|
||||
# 3.8.5 (2022-11-26)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Great optimization, remove `@pureadmin/components` and use compatible writing, the package size of the platform is reduced by `0.4` MB before compression is not enabled, and the resource of `2.3` MB is reduced for the first screen request, which is for the [lite version ](https://github.com/pure-admin/pure-admin-thin) is a very big optimization, the streamlined version has synchronized code
|
||||
|
||||
# 3.8.0 (2022-11-26)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `@pureadmin/table` multiple data format (deep structure) examples
|
||||
- Add `@pureadmin/table` image preview example
|
||||
- Add `@pureadmin/table` row and column drag example
|
||||
- Add `@pureadmin/table` context menu example
|
||||
- Add `@pureadmin/table` export `Excel` example
|
||||
- Add `@pureadmin/table` edit cell example
|
||||
- Add `@pureadmin/table` watermark example
|
||||
- Add `@pureadmin/table` print example
|
||||
- Add `@pureadmin/table` embedded `echarts` chart example
|
||||
- Add `svgo` to compress all `svg` files on the platform to reduce the size
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- The static routing platform automatically imports without manual import
|
||||
- Improved global type hints
|
||||
- Optimize `vite` to rely on pre-built configurations in the platform, and the loading speed of page switching is significantly accelerated
|
||||
|
||||
# 3.7.1 (2022-11-22)
|
||||
|
||||
### 🔥 hotfix
|
||||
|
||||
- Fixed the problem that the tab page may not be reset when logging out when the tab page cache is not turned on
|
||||
|
||||
# 3.7.0 (2022-11-21)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Replace `driver.js` with `intro.js`
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add front-end single sign-on, test address https://yiming_chang.gitee.io/vue-pure-admin/#/pure-table/index?username=sso&roles=admin&accessToken=eyJhbGciOiJIUzUxMiJ9.admin
|
||||
- Add more examples for [@pureadmin/table](https://github.com/pure-admin/pure-admin-table) and `element-plus` [table](https://element-plus.org /zh-CN/component/table.html) example remains the same
|
||||
- Rich watermark function page (supports customizing various colors, shadows, text, additional attributes, setting undeletable watermarks and setting watermarks for specified elements)
|
||||
- Optimize the menu, add `MenuArrowIconNoTransition` global configuration, configure it in `public/serverConfig.json`, for the left menu mode, the menu expansion can be set `MenuArrowIconNoTransition: true` to solve
|
||||
- Replacement form designer component demo
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Repair the in-page menu with parameters to jump to each other, the label is not selected and highlighted
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Removed deprecated `$baseUrl`
|
||||
- Compatible importing a certain library leads to `global is not defined` error, importing `src/utils/globalPolyfills.ts` file into `src/main.ts` can solve the problem
|
||||
- Remove `@vitejs/plugin-legacy`, `vue3` cannot make it support `ie` through any tool
|
||||
|
||||
# 3.6.4 (2022-11-10)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Menu icon `icon` supports using online icons
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed `vxe-button` font color issue after mouse overlay and some other style issues
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimize the routing guard, if you have logged in and there is login information, you cannot jump to the routing whitelist, but continue to stay on the current page
|
||||
- Removed `baseURL` and global environment proxy, and can be written directly in `vite.config.ts`, which is convenient and supports multiple proxy addresses
|
||||
|
||||
# 3.6.3 (2022-11-01)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Static resource classification and packaging
|
||||
- Add danmaku component `demo`
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix the `collapse` property added in the latest version of `tailwindcss` conflicts with the platform `class` class name
|
||||
- Fix that when the `token` expires, if the page has multiple requests, the `token` will be refreshed repeatedly
|
||||
|
||||
# 3.6.2 (2022-10-27)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Replace `/@/` alias with `@/` alias
|
||||
|
||||
# 3.6.1 (2022-10-27)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add whether to start `cdn` for packaging to replace the local library configuration, the default `false` does not start
|
||||
- Added optional `gzip` and `brotli` compression modes for packaging builds
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix `title` too long display style problem
|
||||
- Fix the parent `name` in the route should not be repeated with the child `name`, which will cause redirection to jump `404` problem
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Upgrade `axios` to the latest version
|
||||
|
||||
# 3.6.0 (2022-10-25)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add file download `demo`
|
||||
- Add typewriter component `demo`
|
||||
- Added `json` editor `demo`
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Refactor the permission module, adopt the most commonly used `RBAC` (Role-Based Access List): role-based permission control (User -> Role -> Permission), and update the page permission and button permission `demo` example, button Permissions support three operation modes (judging permissions in component mode, judging permissions in function mode, and judging permissions in instruction mode)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the theme not being emptied when clearing the cache and returning to the login page
|
||||
- Fix `menu` display problem in production environment in `horizontal` mode
|
||||
- Fixed the problem that the `mix` mixed mode navigation might not be displayed in the left menu of the production environment
|
||||
- After the `token` expires, calling the refresh `token` interface will cause an infinite loop
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Removed uncommon `@apply` from `tailwind.css`
|
||||
- Replace `//` comments with `/** */`, which is more friendly to the editor's intellisense
|
||||
- Optimize the login enter event
|
||||
- Simplified some functions, eliminated useless functions, and optimized page loading speed
|
||||
|
||||
# 3.5.0 (2022-9-10)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add `cssnano` to compress the size of `css` when packaging
|
||||
- Add `element-plus` seamless scrolling `Table` page demo
|
||||
- Open `vscode` bracket pair guide
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Replace `unocss` with `tailwindcss`, add `tailwindcss` [documentation](https://pure-admin.github.io/pure-admin-doc/pages/39156f/)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- `token` expires, refresh the infinite loop
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- When resetting the route, clear the cached page
|
||||
|
||||
# 3.4.6 (2022-8-23)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- `process` is not defined in path
|
||||
- Fixed an error when dynamic routing `children` is an empty array
|
||||
- Fixed `iframe` loading failure
|
||||
|
||||
# 3.4.5 (2022-8-22)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix local responsive storage object setting issue
|
||||
|
||||
# 3.4.0 (2022-8-22)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimized routing
|
||||
- Optimized for mobile compatibility
|
||||
- Optimized routing parameters (`query`, `params` way to refresh the page does not need to open the tab page cache, the parameters can be retained on the `url` and `tab page`)
|
||||
|
||||
# 3.3.5 (2022-8-19)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Secondary encapsulation of `Table` of `element-plus` into [@pureadmin/table](https://github.com/pure-admin/pure-admin-table), providing flexible configuration items and integrating into the platform
|
||||
- Secondary encapsulation of `Descriptions` of `element-plus` into [@pureadmin/descriptions](https://github.com/pure-admin/pure-admin-descriptions), providing flexible configuration items and integrating into the platform
|
||||
- Centralize most of the tools and hooks of the platform to [@pureadmin/utils](https://pure-admin-utils.netlify.app), and delete the code concentrated in this library to reduce the size of the platform
|
||||
- Add [unplugin-vue-define-options](https://www.npmjs.com/package/unplugin-vue-define-options) plugin, the page can directly write `defineOptions({name: custom name})`
|
||||
- Add project files, language analysis tool [cloc](https://www.npmjs.com/package/cloc)
|
||||
- Added landing page internationalization
|
||||
- Add full routing configuration table type declaration
|
||||
- Add virtual listing page demo
|
||||
- Add `PDF` preview page demo
|
||||
- Added export `execl` page demo
|
||||
- Added blank page demo without `Layout`
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Refactored the theme color to adapt to `element-plus` dark mode (also solved the problem that the same element `css` in `3.3.0` and earlier versions was overwritten many times, resulting in poor style debugging)
|
||||
- Refactored route reset function
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- The compatible project storage directory is named in Chinese, but we really do not recommend Chinese naming, because a library may not escape the Chinese path, causing the project to crash
|
||||
- Optimized interface type
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed async routes with `showlink` set to `false`, not showing after refresh
|
||||
- Fixed vertical navigation menu text being hidden after collapse when there is no `icon`
|
||||
|
||||
# 3.3.0 (2022-5-11)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add user management page demo
|
||||
- Add role management page demo
|
||||
- Add department management page demo
|
||||
- Add card list page demo
|
||||
- Integrated form designer
|
||||
- Added `PPT` demo
|
||||
- Added anti-shake interception demo in the function menu
|
||||
- Upgrade `wangeditorV5` (and support internationalization and custom themes)
|
||||
- Integrate `tauri` version
|
||||
- Added barcode function
|
||||
- Added QR code function
|
||||
- Use the `Cascader` cascade selector in `element-plus` to write a three-level and two-level linkage demo of Chinese provinces and cities
|
||||
- Integrate `Swiper` plugin
|
||||
- Routing supports passing `component`, representing the component path
|
||||
- Added pre-release packaging mode
|
||||
- Add [hooks] to close a tag (https://github.com/pure-admin/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Refactored the landing page to be more inclined to the actual business scenario
|
||||
- Use `unocss` instead of `windicss`, `unocss` has better performance in development environment, no memory leaks, and `api` is compatible with `windicss`
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimized the style of the `split-pane` component for the platform
|
||||
- Optimize internationalization, no longer pass the `i18n` field in the route, the platform automatically reads the files in the `locales` folder of the root directory for internationalization matching
|
||||
- Optimized icon selector
|
||||
- Optimize `layout` to display user information [commit](https://github.com/pure-admin/vue-pure-admin/commit/56f9dc85e7fbe0637605c43577c794de9f8968aa)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix route initialization problem (Cannot access 'constantRoutes' before initialization)
|
||||
|
||||
# 3.2.0 (2022-3-22)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Icon selection component
|
||||
- Menu search function
|
||||
- Added results page
|
||||
- Extended `element-plus` timeline component
|
||||
- Extended `element-plus` tree component to support connecting lines
|
||||
- Add tree selector, support single and multiple selection
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimized the error page UI
|
||||
- Optimize the internationalization function
|
||||
- Optimized routing `rank` sorting, compatible with the case where the value of the `rank` field in the routing `meta` is `null`
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the situation where the menu expands and folds will freeze on some computers
|
||||
|
||||
# 3.1.0 (2022-3-3)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- iframe supports dynamic loading
|
||||
- Watermark example
|
||||
- Print examples (pictures, tables, echarts)
|
||||
- Add running and packaging information, use `lodash-unified` to replace `lodash-es`, `lodash-unified` supports `ESM` and is compatible with `CJS`
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed jumping to another menu page alone in one menu page, the routing page jumped but the tab page was not displayed
|
||||
- Fixed the route that returns dynamic level 3 and above in the background, and the menu does not correspond to the page
|
||||
|
||||
# 3.0 (2022-2-14)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Added mix navigation
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fix tab page bug
|
||||
|
||||
# 2.9.0 (2022-2-5)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Added package size analysis, command `pnpm report`
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Use `iconify` to introduce icons on demand, optimize icon size, and reduce network requests
|
||||
- Optimize the route, the route can not pass `showLink: true`, it is displayed by default
|
||||
|
||||
# 2.8.5 (2022-1-21)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Added `WindiCSS` support
|
||||
- Add online environment remove console plugin `vite-plugin-remove-console`
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- Replace `@element-plus/icons-vue` with `@iconify-icons/ep`
|
||||
|
||||
# 2.8.0(2022-1-4)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
-Added dark theme
|
||||
-Add element-plus custom theme
|
||||
-Add guide page
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
-Optimize internationalization, compatible with the vscode plug-in i18n Ally smart reminder
|
||||
-Optimize the back-end return routing structure
|
||||
-Optimize local storage, with four built-in buttons `responsive-configure`, `responsive-locale`, `responsive-layout`, `responsive-tags`, which are basic configuration, international configuration, layout configuration, and tab persistent configuration
|
||||
|
||||
# 2.7.0(2021-12-18)
|
||||
|
||||
### 🎫 Feat
|
||||
@@ -16,7 +528,6 @@
|
||||
- Optimize the tab page to bring a better interactive experience
|
||||
- Routing title supports direct writing in Chinese, which can be separated from internationalization
|
||||
- Route history mode is read from env and supports base parameter
|
||||
- Packaged files provide traditional browser compatibility support, configure VITE_LEGACY to true
|
||||
|
||||
# 2.6.0(2021-11-10)
|
||||
|
||||
|
||||
@@ -1,3 +1,515 @@
|
||||
# 4.1.0 (2023-05-12)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 函数式弹框组件添加结合 `Form` 的 `demo` 示例
|
||||
- 封装 `element-plus` 的 `el-col` 组件
|
||||
- 函数式弹框组件添加 `beforeCancel` 和 `beforeSure` 回调,可暂停弹框的关闭
|
||||
- 完善 `系统管理-部门管理` 页面
|
||||
- 优化 `PureTableBar` 组件,列展示添加拖拽功能
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复开启 `keepAlive` 后点击标签页的重新加载,页面缓存还存在的问题
|
||||
- 修复混合模式菜单下刷新页签后左侧菜单会闪烁一下的问题
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 优化首页布局
|
||||
- 依赖更新到 `vue3.3+` 以及删除 `unplugin-vue-define-options` 插件
|
||||
|
||||
# 4.0.0 (2023-05-09)
|
||||
|
||||
[查看 4.0.0 版本优化细节](https://github.com/pure-admin/vue-pure-admin/issues/428#issuecomment-1422191158)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- 采用 `css` 伪类 `before` 写法重构菜单的激活背景,类似于 [ant.design-menu](https://ant.design/components/menu-cn#components-menu-demo-inline-collapsed)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 优化菜单名称右侧的额外图标,使其支持更多图标渲染模式
|
||||
- 可配置首页菜单显示与隐藏
|
||||
- 将本地响应式存储的命名空间提升到全局配置中
|
||||
- 新增函数式弹框组件以及 `demo` 示例,使用更便捷
|
||||
- `PureTableBar` 组件添加列展示功能
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复当菜单折叠或展开时首页 `echarts` 图表未自适应容器
|
||||
- 修复当只有一个子菜单时,搜索功能搜索不到该子菜单问题
|
||||
- 修复全局配置 `Theme` 为 `light` 清空缓存重新登录主题配置不生效的问题
|
||||
- 修复菜单搜索功能弹框打开后搜索框未自动聚集的问题
|
||||
- 修复按 `ESC` 退出全屏后,工具栏按钮文案展示问题
|
||||
- 修复移动端通知栏 `tooltip` 点击穿透问题
|
||||
- 修复当左侧菜单收起后,切换到 `horizontal` 导航模式时文字不展示的问题
|
||||
- 修复导航 `tab` 关闭其他标签页无法重置状态问题
|
||||
- 修复 `getHistoryMode` 函数中环境变量未初始化带来的页面热更新报错
|
||||
- 修复导航 `tab` 过多导致关闭左侧标签页无法正常显示
|
||||
- 修复点击内容区全屏报错问题
|
||||
- 修复混合导航下打开 `showLink:false` 页面并刷新后,左侧导航栏一直处于加载状态的问题
|
||||
- 修复混合模式导航下调用 `initRouter` 函数导致左侧导航内存溢出问题
|
||||
- 修复关闭左侧、右侧、其他、全部标签页操作时缓存页面并没有销毁问题
|
||||
- 修复路由通过 `query` 或 `params` 传参,开启缓存后关闭标签页缓存失效问题
|
||||
- 修复 `params` 路由传参模式下,面包屑无法找到父级路径问题
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 优化 `RePureTableBar` 组件的 `buttons` 具名插槽
|
||||
- 优化导航样式以及菜单折叠动画
|
||||
- 优化菜单名称右侧的额外图标,使其支持更多图标渲染模式
|
||||
- 优化 `logo` 图和文字布局以及统一配置
|
||||
- 路由信息 `showLink` 设置成 `false` 后,当前路由信息不添加到标签页
|
||||
- 导出 `addPathMatch` 函数
|
||||
- `pinia` 中所有 `getters` 改为官方推荐写法,`this` 改成 `state` 可自动推导类型
|
||||
- 适配最新版 `pure-table` 的 `api`
|
||||
- 忽略 `sourcemap-codec` 和 `stable` 依赖包的 `deprecation` 警告
|
||||
- 从 `tsconfig.json` 文件中移除 `"incremental": true`
|
||||
- 更新 `stylelint` 以及相关配置至最新,强化样式校验
|
||||
- 面包屑去首页化,根据选择的菜单对应显示,首页不在固定到面包屑里,并优化面包屑页面的路由监听
|
||||
|
||||
# 3.9.7 (2022-12-26)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 使用 `path.posix.resolve` 替代 `path.resolve` 避免 `windows` 环境下使用 `electron` 出现盘符问题
|
||||
- 默认关闭 `CachingAsyncRoutes` 动态路由缓存本地,使其在开发环境下调试更方便,不用每次修改动态路由都要先清空本地缓存的动态路由,更推荐在生产环境开启
|
||||
|
||||
# 3.9.6 (2022-12-19)
|
||||
|
||||
### 🎫 Chores
|
||||
|
||||
- 升级 `vite4` 版本
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复 `tailwind.css` 错误的引入方式导致 `vite` 的 `hmr` 慢的问题
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 更新 [@pureadmin/theme](https://github.com/pure-admin/pure-admin-theme) 至最新版,带来更友好的类型提示
|
||||
- 优化 [PureTableBar](https://github.com/pure-admin/vue-pure-admin/tree/main/src/components/RePureTableBar) 组件
|
||||
- 优化系统管理页面业务代码,带来更好的代码参考
|
||||
|
||||
# 3.9.5 (2022-12-13)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- 完全移除了 `lodash` 和其相关库
|
||||
[点击此处查看为什么移除?如何自行集成?](https://yiming_chang.gitee.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-5-%E7%89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-lodash-%E5%92%8C%E5%85%B6%E7%9B%B8%E5%85%B3%E5%BA%93-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9%99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加 `@pureadmin/table` 表格动态列示例
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复动态路由 `rank` 问题
|
||||
- 修复暗黑主题样式问题
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 优化路由 `rank` ,当 `rank` 不存在时,根据顺序自动创建,首页路由永远在第一位
|
||||
|
||||
# 3.9.4 (2022-12-05)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- 完全移除了 `vxe-table`,移除后,完整版整体打包大小减少 `1.82MB`,首启动时长基本和精简版持平 🐮
|
||||
[点击此处查看为什么移除?如何自行集成?](https://yiming_chang.gitee.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-4-%E7%89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-vxe-table-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9%99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加 `@pureadmin/table` 表格选择器(单选、多选)示例
|
||||
|
||||
# 3.9.3 (2022-12-04)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加 `@pureadmin/table` 分页和加载动画示例
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复开启 `CachingAsyncRoutes` 后,存入本地存储的动态路由改变造成刷新页面空白的问题
|
||||
- 修复菜单折叠后 `Tooltip` 显示异常
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 扩展本地图标使用方式,完整版首启动再次减少 `13` 个请求
|
||||
- 当菜单加载慢时,添加 `loading` 动画,优化用户体验
|
||||
- 主题初始化放在 `onBeforeMount` 里,避免初始化页面闪烁
|
||||
|
||||
# 3.9.2 (2022-12-03)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 全局覆盖 `element-plus` 的 `el-dialog`、`el-drawer`、`el-message-box`、`el-notification` 组件右上角关闭图标的样式,使其表现更鲜明 [具体代码修改记录](https://github.com/pure-admin/vue-pure-admin/commit/c80818d792276666aaea4b18413a0f08777f2ed1)
|
||||
- 打包输出信息兼容不同打包输出路径
|
||||
- 优化一些动画
|
||||
|
||||
# 3.9.1 (2022-12-02)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加 `CachingAsyncRoutes` 是否开启动态路由缓存本地的全局配置,默认 `true`
|
||||
- 添加 `TooltipEffect` 全局配置,可配置平台主体所有 `el-tooltip` 的 `effect` 属性,默认 `light`,不影响业务代码
|
||||
- 添加目录、菜单文字超出显示 `Tooltip` 文字提示演示
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 优化 `initRouter` 方法,兼容 `sso` 场景
|
||||
- 面包屑动画样式优化
|
||||
|
||||
# 3.9.0 (2022-11-30)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复退出全屏时文字过长导致页面出现滚动条后带来的抖动问题
|
||||
- 修复一些类型错误
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- perf: 首屏加载大优化,对比 `3.9.0` 之前版本,首屏请求减少 `71` 个,首屏加载资源减少 `4.1 MB`
|
||||
|
||||
# 3.8.7 (2022-11-28)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- perf: 打包大优化,请务必升级!使用 `unplugin-vue-define-options` 替换 `unplugin-vue-macros` ,打包速度提升数倍,使用 `unplugin-vue-macros` 以性能中等偏上的 `mac` 为例完整版打包时长为 `6` 分钟 😭,使用 `unplugin-vue-define-options` 替换后,相同电脑下打包时长为 `50` 秒 ☺️
|
||||
|
||||
# 3.8.6 (2022-11-27)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加 `message` 消息提示函数,兼容 `Element Plus` 和 `Ant Design` 两种 `Message` 样式风格,使用和打包大小成本极低并适配暗黑模式,真香 😂
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- perf: 无需安装 `@vue/runtime-core` ,兼容所有 `element-plus` 组件的 `volar` 提示
|
||||
|
||||
# 3.8.5 (2022-11-26)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 大优化,移除 `@pureadmin/components` 并采用兼容写法,平台打包大小在未启用压缩前对比优化前减少 `0.4` MB , 首屏请求减少 `2.3` MB 的资源,这对于 [精简版](https://github.com/pure-admin/pure-admin-thin) 来说是非常大的优化,精简版已经同步代码
|
||||
|
||||
# 3.8.0 (2022-11-26)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加 `@pureadmin/table` 多种数据格式(深层结构)示例
|
||||
- 添加 `@pureadmin/table` 图像预览示例
|
||||
- 添加 `@pureadmin/table` 行、列拖拽示例
|
||||
- 添加 `@pureadmin/table` 右键菜单示例
|
||||
- 添加 `@pureadmin/table` 导出 `Excel` 示例
|
||||
- 添加 `@pureadmin/table` 编辑单元格示例
|
||||
- 添加 `@pureadmin/table` 水印示例
|
||||
- 添加 `@pureadmin/table` 打印示例
|
||||
- 添加 `@pureadmin/table` 内嵌 `echarts` 图表示例
|
||||
- 添加 `svgo` 压缩平台所有 `svg` 文件,减少体积
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 静态路由平台自动导入,无需手动引入
|
||||
- 更完善的全局类型提示
|
||||
- 优化 `vite` 依赖预构建在平台里的配置,页面切换加载速度显著加快
|
||||
|
||||
# 3.7.1 (2022-11-22)
|
||||
|
||||
### 🔥 hotfix
|
||||
|
||||
- 修复在未开启标签页缓存时退出登录,可能存在标签页未重置的问题
|
||||
|
||||
# 3.7.0 (2022-11-21)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- 使用 `intro.js` 替换 `driver.js`
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加前端单点登录,测试地址 https://yiming_chang.gitee.io/vue-pure-admin/#/pure-table/index?username=sso&roles=admin&accessToken=eyJhbGciOiJIUzUxMiJ9.admin
|
||||
- 为 [@pureadmin/table](https://github.com/pure-admin/pure-admin-table) 添加更多的示例和 `element-plus` 的 [table](https://element-plus.org/zh-CN/component/table.html) 示例保持一致
|
||||
- 丰富水印功能页面(支持自定义各种颜色、阴影、文字、额外属性、设置不可删除水印以及给指定元素设置水印)
|
||||
- 优化菜单,添加 `MenuArrowIconNoTransition` 全局配置,在 `public/serverConfig.json` 中配置即可,对于出现左侧菜单模式,菜单展开卡顿的可设置 `MenuArrowIconNoTransition: true` 即可解决
|
||||
- 更换表单设计器组件演示
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复页内菜单带参互相跳转,标签没有选中高亮
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 删除已废弃的 `$baseUrl`
|
||||
- 兼容引入某个库导致 `global is not defined` 报错,将 `src/utils/globalPolyfills.ts` 文件引入 `src/main.ts` 即可解决
|
||||
- 删除 `@vitejs/plugin-legacy`,`vue3` 无法通过任何工具使其支持 `ie`
|
||||
|
||||
# 3.6.4 (2022-11-10)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 菜单图标 `icon` 支持使用在线图标
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复 `vxe-button` 鼠标覆盖后字体颜色问题以及一些别的样式问题
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 优化路由守卫,如果已经登录并存在登录信息后不能跳转到路由白名单,而是继续保持在当前页面
|
||||
- 将 `baseURL` 和全局环境代理删除,可直接在 `vite.config.ts` 编写,即方便又支持多个代理地址
|
||||
|
||||
# 3.6.3 (2022-11-01)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 静态资源分类打包
|
||||
- 添加弹幕组件 `demo`
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复 `tailwindcss` 最新版新增的 `collapse` 属性与平台 `class` 类名冲突
|
||||
- 修复当 `token` 过期后,如果页面有多个请求会重复刷新 `token`
|
||||
|
||||
# 3.6.2 (2022-10-27)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- 使用`@/`别名替换`/@/`别名
|
||||
|
||||
# 3.6.1 (2022-10-27)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加打包是否启动`cdn`替换本地库配置,默认`false`不启动
|
||||
- 添加打包构建可选`gzip`与`brotli`压缩模式
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复`title`过长显示样式问题
|
||||
- 修复路由中父级`name`不应和子级`name`重复,会造成重定向跳转`404`问题
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 升级`axios`至最新版
|
||||
|
||||
# 3.6.0 (2022-10-25)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加文件下载`demo`
|
||||
- 添加打字机组件`demo`
|
||||
- 添加`json`编辑器`demo`
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- 重构权限模块,采用目前最常用的`RBAC`(Role-Based Access List): 基于角色的权限控制( 用户 -> 角色 -> 权限 ),并更新页面权限和按钮权限`demo`示例,按钮权限支持三种操作模式(组件方式判断权限、函数方式判断权限、指令方式判断权限)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复清空缓存并返回登录页时未清空主题
|
||||
- 修复`horizontal`模式下`menu`在生产环境显示问题
|
||||
- 修复`mix`混合模式导航在生产环境左侧菜单一定机率不显示的问题
|
||||
- `token`过期后调用刷新`token`接口会无限循环的问题
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 从`tailwind.css`中移除不常用的`@apply`
|
||||
- 使用`/** */`替换`//`注释,对编辑器的智能提示更友好
|
||||
- 优化登录回车事件
|
||||
- 简化了一些函数,剔除了无用函数,优化了页面加载速度
|
||||
|
||||
# 3.5.0 (2022-9-10)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加 `cssnano` ,打包时压缩 `css` 体积
|
||||
- 添加 `element-plus` 无缝滚动 `Table` 页面 demo
|
||||
- 开启 `vscode` 括号对指南
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- 使用 `tailwindcss` 替换 `unocss`,新增 `tailwindcss` [使用文档](https://yiming_chang.gitee.io/pure-admin-doc/pages/tailwindcss/)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- `token` 过期,刷新死循环
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 重置路由时,清空缓存页面
|
||||
|
||||
# 3.4.6 (2022-8-23)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- `process` is not defined in path
|
||||
- 修复动态路由`children`为空数组时报错
|
||||
- 修复`iframe`加载失败
|
||||
|
||||
# 3.4.5 (2022-8-22)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复本地响应式存储对象设置问题
|
||||
|
||||
# 3.4.0 (2022-8-22)
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 优化路由
|
||||
- 优化移动端兼容性
|
||||
- 优化路由传参(`query`、`params` 方式刷新页面不需要再开启标签页缓存也能保留参数在`url`和`标签页`上)
|
||||
|
||||
# 3.3.5 (2022-8-19)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 将 `element-plus` 的 `Table` 二次封装到[@pureadmin/table](https://github.com/pure-admin/pure-admin-table),提供灵活的配置项并集成到平台里
|
||||
- 将 `element-plus` 的 `Descriptions` 二次封装到[@pureadmin/descriptions](https://github.com/pure-admin/pure-admin-descriptions),提供灵活的配置项并集成到平台里
|
||||
- 将平台的大部分工具以及 `hooks` 都集中到[@pureadmin/utils](https://pure-admin-utils.netlify.app),并删除集中到这个库里的代码,减少平台体积
|
||||
- 添加[unplugin-vue-define-options](https://www.npmjs.com/package/unplugin-vue-define-options)插件,页面可直接写 `defineOptions({name: 自定义名称})`
|
||||
- 添加项目文件、语言分析工具 [cloc](https://www.npmjs.com/package/cloc)
|
||||
- 添加登录页国际化
|
||||
- 添加完整路由配置表类型声明
|
||||
- 添加虚拟列表页面 demo
|
||||
- 添加 `PDF` 预览页面 demo
|
||||
- 添加导出 `execl` 页面 demo
|
||||
- 添加无 `Layout` 的空白页面 demo
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- 重构主题色,适配 `element-plus` 暗黑模式(同时也解决了 `3.3.0` 及更低版本中同样的元素 `css` 被多次覆盖,导致样式不好调试的问题)
|
||||
- 重构路由重置功能
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 兼容项目存放目录以中文命名,但我们真心不推荐中文命名,因为可能某个库没有对中文路径做转义处理,导致项目奔溃
|
||||
- 优化接口类型
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复路由 `showlink` 为 `false` 的异步路由,刷新后不显示
|
||||
- 修复当没有 `icon` 时,垂直导航菜单折叠后文字被隐藏
|
||||
|
||||
# 3.3.0 (2022-5-11)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加用户管理页面 demo
|
||||
- 添加角色管理页面 demo
|
||||
- 添加部门管理页面 demo
|
||||
- 添加卡片列表页面 demo
|
||||
- 集成表单设计器
|
||||
- 新增`PPT`demo
|
||||
- 在功能菜单中新增防抖截流 demo
|
||||
- 升级`wangeditorV5`(并支持国际化和自定义主题)
|
||||
- 集成`tauri`版本
|
||||
- 新增条形码功能
|
||||
- 新增二维码功能
|
||||
- 使用`element-plus`中的`Cascader`级联选择器编写中国省市区三级、二级联动 demo
|
||||
- 集成`Swiper`插件
|
||||
- 路由支持传`component`,代表组件路径
|
||||
- 添加预发布打包模式
|
||||
- 添加关闭某个标签的[hooks](https://github.com/pure-admin/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523)
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- 重构登录页,更偏向实际业务场景
|
||||
- 使用`unocss`替换`windicss`,`unocss`开发环境下性能更好,没有内存泄露,而且`api`使用上兼容`windicss`
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 优化平台的`split-pane`组件样式
|
||||
- 优化国际化,路由不再传`i18n`字段,平台自动读取根目录`locales`文件夹下文件进行国际化匹配
|
||||
- 优化图标选择器
|
||||
- 优化`layout`显示用户信息[commit](https://github.com/pure-admin/vue-pure-admin/commit/56f9dc85e7fbe0637605c43577c794de9f8968aa)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复路由初始化问题(Cannot access 'constantRoutes' before initialization)
|
||||
|
||||
# 3.2.0 (2022-3-22)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 图标选择组件
|
||||
- 菜单搜索功能
|
||||
- 添加结果页面
|
||||
- 扩展`element-plus`时间线组件
|
||||
- 扩展`element-plus`树组件,支持连接线
|
||||
- 添加树形选择器,支持单选和多选
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 优化错误页面 UI
|
||||
- 优化国际化功能
|
||||
- 优化路由`rank`排序,兼容路由`meta`中`rank`字段值为`null`的情况
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复菜单展开折叠在部分电脑出现卡顿的情况
|
||||
|
||||
# 3.1.0 (2022-3-3)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- iframe 支持动态加载
|
||||
- 水印示例
|
||||
- 打印示例(图片、表格、echarts)
|
||||
- 添加运行、打包信息, 使用`lodash-unified`替换`lodash-es`,`lodash-unified`支持`ESM`同时兼容`CJS`
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复在一个菜单页面内单独跳转到另一个菜单页面,路由页面跳转了但是标签页不显示的情况
|
||||
- 修复后台返回动态三级及以上的路由,出现菜单与页面不对应的情况
|
||||
|
||||
# 3.0 (2022-2-14)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加混合导航
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复标签页 bug
|
||||
|
||||
# 2.9.0(2022-2-5)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加打包大小分析,命令`pnpm report`
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 采用`iconify`按需引入图标,优化图标大小,减少网络请求
|
||||
- 优化路由,路由可不传`showLink: true`,默认显示
|
||||
|
||||
# 2.8.5(2022-1-21)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加 `WindiCSS` 支持
|
||||
- 添加线上环境删 console 插件`vite-plugin-remove-console`
|
||||
|
||||
### ✔️ refactor
|
||||
|
||||
- 使用`@iconify-icons/ep`替换`@element-plus/icons-vue`
|
||||
|
||||
# 2.8.0(2022-1-4)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 添加暗黑主题
|
||||
- 添加 element-plus 自定义主题
|
||||
- 添加引导页
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 优化国际化,兼容 vscode 插件 i18n Ally 智能提醒
|
||||
- 优化后端返回路由结构
|
||||
- 优化本地存储,内置四个键`responsive-configure`、`responsive-locale`、`responsive-layout`、`responsive-tags`,分别为基本配置、国际化配置、布局配置、标签页持久化配置
|
||||
|
||||
# 2.7.0(2021-12-18)
|
||||
|
||||
### 🎫 Feat
|
||||
@@ -16,7 +528,6 @@
|
||||
- 优化标签页,带来更好的交互体验
|
||||
- 路由 title 支持直接写中文,可脱离国际化
|
||||
- 路由历史模式从 env 读取并支持 base 参数
|
||||
- 打包后的文件提供传统浏览器兼容性支持,配置 VITE_LEGACY 为 true
|
||||
|
||||
# 2.6.0(2021-11-10)
|
||||
|
||||
|
||||
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 啝裳
|
||||
Copyright (c) 2020-present, pure-admin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,49 +1,74 @@
|
||||
<h1>vue-pure-admin</h1>
|
||||
|
||||
[](LICENSE)
|
||||

|
||||

|
||||

|
||||
|
||||
**English** | [中文](./README.md)
|
||||
|
||||
## Introduction
|
||||
|
||||
vue-pure-admin is a free and open source middle and back-end template. Using the latest `vue3` `vite2` `Element-Plus` `TypeScript` and other mainstream technology development, the out-of-the-box middle and back-end front-end solutions can also be used for learning reference.
|
||||
`vue-pure-admin` is an open source free and out-of-the-box middle and background management system template. Developed using the latest mainstream technologies such as `Vue3`, `Vite`, `Element-Plus`, `TypeScript`, `Pinia`, `Tailwindcss`
|
||||
|
||||
## Thin version (offering non-internationalized and internationalized versions)
|
||||
|
||||
The simplified version is based on the shelf extracted from [vue-pure-admin](https://github.com/pure-admin/vue-pure-admin), which contains main functions and is more suitable for actual project development. The packaged size is introduced globally [element-plus](https://element-plus.org) is still below `2.3MB`, and the full version of the code will be permanently synchronized. After enabling `brotli` compression and `cdn` to replace the local library mode, the package size is less than `350kb`
|
||||
|
||||
- [Click me to view the non-internationalized version](https://github.com/pure-admin/pure-admin-thin)
|
||||
- [Click me to view Internationalization version](https://github.com/pure-admin/pure-admin-thin/tree/i18n)
|
||||
|
||||
## Supporting Video
|
||||
|
||||
Tutorial: <https://www.bilibili.com/video/BV1534y1S7HV/>
|
||||
UI Design: <https://www.bilibili.com/video/BV17g411T7rq/>
|
||||
- [Click Watch Tutorial](https://www.bilibili.com/video/BV1kg411v7QT)
|
||||
- [Click Watch UI Design](https://www.bilibili.com/video/BV17g411T7rq)
|
||||
|
||||
## Docs
|
||||
## Docs (support `PWA` fast, offline access)
|
||||
|
||||
<https://pure-admin-doc.vercel.app/>
|
||||
- [Click me to view the domestic documentation site](https://yiming_chang.gitee.io/pure-admin-doc)
|
||||
- [Click me to view foreign document site](https://pure-admin.github.io/pure-admin-doc)
|
||||
|
||||
## Thin
|
||||
## Tauri
|
||||
|
||||
Github Address: <https://github.com/xiaoxian521/pure-admin-thin>
|
||||
- [Click Watch Tauri](https://github.com/pure-admin/tauri-pure-admin)
|
||||
|
||||
## Electron
|
||||
|
||||
- [Click Watch Electron](https://github.com/pure-admin/electron-pure-admin)
|
||||
|
||||
## Preview
|
||||
|
||||
- [vue-pure-admin](http://yiming_chang.gitee.io/manages)
|
||||
- [Click me to view the domestic preview station](https://yiming_chang.gitee.io/vue-pure-admin)
|
||||
- [Click me to view foreign preview site](https://pure-admin.github.io/vue-pure-admin)
|
||||
|
||||
- PC
|
||||
<p align="center">
|
||||
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b4857fc7eb7d4c0f8deeefc644c1f7dd~tplv-k3u1fbpfcp-watermark.awebp?">
|
||||
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/549c3184697f4d268a78c9833e5ec2ea~tplv-k3u1fbpfcp-watermark.awebp?">
|
||||
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d45c15ccbe674fe291a4faa528d11eda~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?">
|
||||
</p>
|
||||
|
||||
- DarkMode
|
||||
<p align="center">
|
||||
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/10a351f0d9c94b90ba3b408a786b9ede~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?">
|
||||
</p>
|
||||
|
||||
- Mobile
|
||||
<p align="center">
|
||||
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3061c7b92f6d4cb4bcdf227d966ac696~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?">
|
||||
</p>
|
||||
|
||||
### Use Gitpod
|
||||
|
||||
Open the project in Gitpod (free online dev environment for GitHub) and start coding immediately.
|
||||
|
||||
[](https://gitpod.io/#https://github.com/xiaoxian521/vue-pure-admin)
|
||||
[](https://gitpod.io/#https://github.com/pure-admin/vue-pure-admin)
|
||||
|
||||
## Install and use
|
||||
|
||||
- Get the project code
|
||||
|
||||
```bash
|
||||
git clone https://github.com/xiaoxian521/vue-pure-admin.git
|
||||
git clone https://github.com/pure-admin/vue-pure-admin.git
|
||||
or
|
||||
git clone https://github.com.cnpmjs.org/xiaoxian521/vue-pure-admin.git
|
||||
git clone https://gitee.com/yiming_chang/vue-pure-admin.git
|
||||
```
|
||||
|
||||
- Installation dependencies
|
||||
@@ -73,7 +98,7 @@ pnpm build
|
||||
|
||||
## How to contribute
|
||||
|
||||
You are very welcome to join Or submit a Pull Request
|
||||
You are very welcome to join Or submit a Pull Request
|
||||
|
||||
**Pull Request:**
|
||||
|
||||
@@ -113,30 +138,44 @@ Support modern browsers, not IE
|
||||
|
||||
## Maintainer
|
||||
|
||||
[xiaoxian521](https://github.com/xiaoxian521)
|
||||
[xiaoxian521](https://github.com/xiaoxian521)、[Ten-K](https://github.com/Ten-K)
|
||||
|
||||
## Donate
|
||||
|
||||
If you think this project is helpful to you, you can help the author buy a cup of coffee to show your support!
|
||||
If you think this project is helpful to you, you can help the author buy a glass of juice 🍹 Show your support
|
||||
|
||||
<img src="http://yiming_chang.gitee.io/manages/pay.png" width="360px" height="480px" />
|
||||
<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f69bf13c5b854ed5b699807cafa0e3ce~tplv-k3u1fbpfcp-zoom-in-crop-mark:1304:0:0:0.awebp?" width="150px" height="150px" />
|
||||
|
||||
## License
|
||||
|
||||
In principle, no fees and copyrights are charged, so you can use it with confidence
|
||||
In principle, no fees and copyrights are charged, and you can use it with confidence, but if you need secondary open source, please contact the author for permission!
|
||||
|
||||
[MIT © xiaoxian521-2020](./LICENSE)
|
||||
[MIT © 2020-present, pure-admin](./LICENSE)
|
||||
|
||||
## Backers
|
||||
|
||||
Thank you very much for your support, I believe the project will get better and better! ! ! :heart:
|
||||
Thank you very much for your support, I believe the project will get better and better :heart:
|
||||
|
||||
| xueyuheng | taolei1990 | hang-kim | madwolfcrazy | limuen |
|
||||
| :--------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |
|
||||
| <a href="https://github.com/xueyuheng"><img src="https://avatars.githubusercontent.com/u/48202935?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/taolei1990"><img src="https://avatars.githubusercontent.com/u/23173640?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/hang-kim"><img src="https://avatars.githubusercontent.com/u/52914259?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/madwolfcrazy"><img src="https://avatars.githubusercontent.com/u/223671?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/limuen"><img src="https://avatars.githubusercontent.com/u/31790606?v=4" width="60px" height="60px" /></a> |
|
||||
| xueyuheng | taolei1990 | hang-kim | madwolfcrazy | limuen | BenLakes |
|
||||
| :--------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: |
|
||||
| <a href="https://github.com/xueyuheng"><img src="https://avatars.githubusercontent.com/u/48202935?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/taolei1990"><img src="https://avatars.githubusercontent.com/u/23173640?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/hang-kim"><img src="https://avatars.githubusercontent.com/u/52914259?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/madwolfcrazy"><img src="https://avatars.githubusercontent.com/u/223671?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/limuen"><img src="https://avatars.githubusercontent.com/u/31790606?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/BenLakes"><img src="https://avatars.githubusercontent.com/u/15206046?v=4" width="60px" height="60px" /></a> |
|
||||
| mollerzhu | TLovers | cnyyk | | | |
|
||||
| <a href="https://github.com/mollerzhu"><img src="https://avatars.githubusercontent.com/u/49627902?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/TLovers"><img src="https://avatars.githubusercontent.com/u/26561694?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/cnyyk"><img src="https://avatars.githubusercontent.com/u/275233?v=4" width="60px" height="60px" /></a> | | | |
|
||||
|
||||
## Contributors
|
||||
|
||||
This project exists thanks to all the people who contribute!!! :heart:
|
||||
Thanks to all the people who contribute :heart:
|
||||
|
||||
<a href="https://github.com/xiaoxian521/vue-pure-admin/graphs/contributors"><img src="https://contrib.rocks/image?repo=xiaoxian521/vue-pure-admin" /></a>
|
||||
<a href="https://github.com/pure-admin/vue-pure-admin/graphs/contributors"><img src="https://contrib.rocks/image?repo=pure-admin/vue-pure-admin" /></a>
|
||||
|
||||
## `Star`
|
||||
|
||||
Many thanks to the kind individuals who leave a star. Your support is much appreciated :heart:
|
||||
|
||||
[](https://github.com/pure-admin/vue-pure-admin/stargazers)
|
||||
|
||||
## `Fork`
|
||||
|
||||
It's so cool that you study hard :heart:
|
||||
|
||||
[](https://github.com/pure-admin/vue-pure-admin/network/members)
|
||||
|
||||
111
README.md
@@ -1,49 +1,74 @@
|
||||
<h1>vue-pure-admin</h1>
|
||||
|
||||
[](LICENSE)
|
||||

|
||||

|
||||

|
||||
|
||||
**中文** | [English](./README.en-US.md)
|
||||
|
||||
## 简介
|
||||
|
||||
vue-pure-admin 是一个免费开源的中后台模版。使用了最新的`vue3` `vite2` `Element-Plus` `TypeScript`等主流技术开发,开箱即用的中后台前端解决方案,也可用于学习参考。
|
||||
`vue-pure-admin` 是一款开源免费且开箱即用的中后台管理系统模版。使用了最新的 `Vue3`、`Vite`、`Element-Plus`、`TypeScript`、`Pinia`、`Tailwindcss` 等主流技术开发
|
||||
|
||||
## 精简版(实际项目开发请用精简版,提供 `非国际化` 、`国际化` 两个版本选择)
|
||||
|
||||
精简版是基于 [vue-pure-admin](https://github.com/pure-admin/vue-pure-admin) 提炼出的架子,包含主体功能,更适合实际项目开发,打包后的大小在全局引入 [element-plus](https://element-plus.org) 的情况下仍然低于 `2.3MB`,并且会永久同步完整版的代码。开启 `brotli` 压缩和 `cdn` 替换本地库模式后,打包大小低于 `350kb`
|
||||
|
||||
- [点我查看非国际化精简版](https://github.com/pure-admin/pure-admin-thin)
|
||||
- [点我查看国际化精简版](https://github.com/pure-admin/pure-admin-thin/tree/i18n)
|
||||
|
||||
## 配套视频
|
||||
|
||||
教程:<https://www.bilibili.com/video/BV1534y1S7HV/>
|
||||
UI 设计:<https://www.bilibili.com/video/BV17g411T7rq/>
|
||||
- [点我查看快速开发教程](https://www.bilibili.com/video/BV1kg411v7QT)
|
||||
- [点我查看 UI 设计](https://www.bilibili.com/video/BV17g411T7rq)
|
||||
|
||||
## 配套文档
|
||||
## 配套保姆级文档(支持 `PWA` 快速、离线访问)
|
||||
|
||||
<https://pure-admin-doc.vercel.app/>
|
||||
- [点我查看国内文档站](https://yiming_chang.gitee.io/pure-admin-doc)
|
||||
- [点我查看国外文档站](https://pure-admin.github.io/pure-admin-doc)
|
||||
|
||||
## 精简版
|
||||
## `Tauri` 版
|
||||
|
||||
仓库地址:<https://github.com/xiaoxian521/pure-admin-thin>
|
||||
- [点我查看 Tauri 版](https://github.com/pure-admin/tauri-pure-admin)
|
||||
|
||||
## `Electron` 版
|
||||
|
||||
- [点我查看 Electron 版](https://github.com/pure-admin/electron-pure-admin)
|
||||
|
||||
## 预览
|
||||
|
||||
- [vue-pure-admin](http://yiming_chang.gitee.io/manages)
|
||||
- [点我查看国内预览站](https://yiming_chang.gitee.io/vue-pure-admin)
|
||||
- [点我查看国外预览站](https://pure-admin.github.io/vue-pure-admin)
|
||||
|
||||
- PC 端
|
||||
<p align="center">
|
||||
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b4857fc7eb7d4c0f8deeefc644c1f7dd~tplv-k3u1fbpfcp-watermark.awebp?">
|
||||
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/549c3184697f4d268a78c9833e5ec2ea~tplv-k3u1fbpfcp-watermark.awebp?">
|
||||
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d45c15ccbe674fe291a4faa528d11eda~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?">
|
||||
</p>
|
||||
|
||||
### 使用 Gitpod
|
||||
- 暗黑模式
|
||||
<p align="center">
|
||||
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/10a351f0d9c94b90ba3b408a786b9ede~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?">
|
||||
</p>
|
||||
|
||||
- 移动端
|
||||
<p align="center">
|
||||
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3061c7b92f6d4cb4bcdf227d966ac696~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?">
|
||||
</p>
|
||||
|
||||
### 使用 `Gitpod`
|
||||
|
||||
在 Gitpod(适用于 GitHub 的免费在线开发环境)中打开项目,并立即开始编码.
|
||||
|
||||
[](https://gitpod.io/#https://github.com/xiaoxian521/vue-pure-admin)
|
||||
[](https://gitpod.io/#https://github.com/pure-admin/vue-pure-admin)
|
||||
|
||||
## 安装使用
|
||||
|
||||
- 获取项目代码
|
||||
|
||||
```bash
|
||||
git clone https://github.com/xiaoxian521/vue-pure-admin.git
|
||||
git clone https://github.com/pure-admin/vue-pure-admin.git
|
||||
or
|
||||
git clone https://github.com.cnpmjs.org/xiaoxian521/vue-pure-admin.git
|
||||
git clone https://gitee.com/yiming_chang/vue-pure-admin.git
|
||||
```
|
||||
|
||||
- 安装依赖
|
||||
@@ -73,17 +98,17 @@ pnpm build
|
||||
|
||||
## 如何贡献
|
||||
|
||||
非常欢迎你的加入 或者提交一个 Pull Request
|
||||
非常欢迎您的加入 或者提交一个 `Pull Request`
|
||||
|
||||
**Pull Request:**
|
||||
|
||||
1. Fork 代码!
|
||||
2. 创建自己的分支: `git checkout -b feat/xxxx`
|
||||
3. 提交你的修改: `git commit -am 'feat(function): add xxxxx'`
|
||||
3. 提交您的修改: `git commit -am 'feat(function): add xxxxx'`
|
||||
4. 推送您的分支: `git push origin feat/xxxx`
|
||||
5. 提交`pull request`
|
||||
|
||||
## Git 贡献提交规范
|
||||
## `Git` 贡献提交规范
|
||||
|
||||
- 参考 [vue](https://github.com/vuejs/vue/blob/dev/.github/COMMIT_CONVENTION.md) 规范 ([Angular](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular))
|
||||
|
||||
@@ -103,9 +128,9 @@ pnpm build
|
||||
|
||||
## 浏览器支持
|
||||
|
||||
本地开发推荐使用`Chrome 80+` 浏览器
|
||||
本地开发推荐使用 `Chrome 80+` 浏览器
|
||||
|
||||
支持现代浏览器, 不支持 IE
|
||||
支持现代浏览器, 不支持 `IE`
|
||||
|
||||
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt=" Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt=" Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari |
|
||||
| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
||||
@@ -113,36 +138,48 @@ pnpm build
|
||||
|
||||
## 维护者
|
||||
|
||||
[xiaoxian521](https://github.com/xiaoxian521)
|
||||
[xiaoxian521](https://github.com/xiaoxian521)、[Ten-K](https://github.com/Ten-K)
|
||||
|
||||
## 捐赠
|
||||
## 支持
|
||||
|
||||
如果你觉得这个项目对你有帮助,你可以帮作者买一杯咖啡表示支持
|
||||
如果您觉得这个项目对您有帮助,可以帮作者买一杯果汁 🍹 表示支持
|
||||
|
||||
<img src="http://yiming_chang.gitee.io/manages/pay.jpg" width="150px" height="150px" />
|
||||
<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f69bf13c5b854ed5b699807cafa0e3ce~tplv-k3u1fbpfcp-zoom-in-crop-mark:1304:0:0:0.awebp?" width="150px" height="150px" />
|
||||
|
||||
## 付费咨询、需求定制
|
||||
## `QQ` 交流群
|
||||
|
||||
作者精力有限,需要提供技术服务的可扫下面的二维码加微信,添加请备注来意
|
||||
|
||||
<img src="http://yiming_chang.gitee.io/manages/wechat.jpg" width="150px" height="150px" />
|
||||
[点击去加入](https://yiming_chang.gitee.io/pure-admin-doc/pages/support/#qq-%E4%BA%A4%E6%B5%81%E7%BE%A4)
|
||||
|
||||
## 许可证
|
||||
|
||||
原则上不收取任何费用及版权,可以放心使用
|
||||
原则上不收取任何费用及版权,可以放心使用,不过如需二次开源(比如用此平台二次开发并开源)请联系作者获取许可!
|
||||
|
||||
[MIT © xiaoxian521-2020](./LICENSE)
|
||||
[MIT © 2020-present, pure-admin](./LICENSE)
|
||||
|
||||
## 捐赠者
|
||||
## 支持者
|
||||
|
||||
非常感谢你们的支持,相信项目会越来越好!!!:heart:
|
||||
非常感谢您们的支持,相信项目会越来越好 :heart:
|
||||
|
||||
| xueyuheng | taolei1990 | hang-kim | madwolfcrazy | limuen |
|
||||
| :--------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |
|
||||
| <a href="https://github.com/xueyuheng"><img src="https://avatars.githubusercontent.com/u/48202935?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/taolei1990"><img src="https://avatars.githubusercontent.com/u/23173640?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/hang-kim"><img src="https://avatars.githubusercontent.com/u/52914259?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/madwolfcrazy"><img src="https://avatars.githubusercontent.com/u/223671?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/limuen"><img src="https://avatars.githubusercontent.com/u/31790606?v=4" width="60px" height="60px" /></a> |
|
||||
| xueyuheng | taolei1990 | hang-kim | madwolfcrazy | limuen | BenLakes |
|
||||
| :--------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: |
|
||||
| <a href="https://github.com/xueyuheng"><img src="https://avatars.githubusercontent.com/u/48202935?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/taolei1990"><img src="https://avatars.githubusercontent.com/u/23173640?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/hang-kim"><img src="https://avatars.githubusercontent.com/u/52914259?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/madwolfcrazy"><img src="https://avatars.githubusercontent.com/u/223671?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/limuen"><img src="https://avatars.githubusercontent.com/u/31790606?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/BenLakes"><img src="https://avatars.githubusercontent.com/u/15206046?v=4" width="60px" height="60px" /></a> |
|
||||
| mollerzhu | TLovers | cnyyk | | | |
|
||||
| <a href="https://github.com/mollerzhu"><img src="https://avatars.githubusercontent.com/u/49627902?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/TLovers"><img src="https://avatars.githubusercontent.com/u/26561694?v=4" width="60px" height="60px" /></a> | <a href="https://github.com/cnyyk"><img src="https://avatars.githubusercontent.com/u/275233?v=4" width="60px" height="60px" /></a> | | | |
|
||||
|
||||
## 贡献者
|
||||
|
||||
这个项目的存在感谢所有做出贡献的人!!!:heart:
|
||||
感谢所有做出贡献的人 :heart:
|
||||
|
||||
<a href="https://github.com/xiaoxian521/vue-pure-admin/graphs/contributors"><img src="https://contrib.rocks/image?repo=xiaoxian521/vue-pure-admin" /></a>
|
||||
<a href="https://github.com/pure-admin/vue-pure-admin/graphs/contributors"><img src="https://contrib.rocks/image?repo=pure-admin/vue-pure-admin" /></a>
|
||||
|
||||
## `Star`
|
||||
|
||||
非常感谢留下星星的好心人,感谢您的支持 :heart:
|
||||
|
||||
[](https://github.com/pure-admin/vue-pure-admin/stargazers)
|
||||
|
||||
## `Fork`
|
||||
|
||||
瞧,那些 `小哥哥` 、`小姐姐` 认真 `学习` 的样子真滴是 `哎呦不错哦` :heart:
|
||||
|
||||
[](https://github.com/pure-admin/vue-pure-admin/network/members)
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
const productPlugins = [];
|
||||
process.env.NODE_ENV === "production" &&
|
||||
productPlugins.push("transform-remove-console");
|
||||
module.exports = {
|
||||
plugins: [...productPlugins]
|
||||
};
|
||||
61
build/cdn.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import { Plugin as importToCDN } from "vite-plugin-cdn-import";
|
||||
|
||||
/**
|
||||
* @description 打包时采用`cdn`模式,仅限外网使用(默认不采用,如果需要采用cdn模式,请在 .env.production 文件,将 VITE_CDN 设置成true)
|
||||
* 平台采用国内cdn:https://www.bootcdn.cn,当然你也可以选择 https://unpkg.com 或者 https://www.jsdelivr.com
|
||||
* 提醒:mockjs不能用cdn模式引入,会报错。正确的方式是,生产环境删除mockjs,使用真实的后端请求
|
||||
* 注意:上面提到的仅限外网使用也不是完全肯定的,如果你们公司内网部署的有相关js、css文件,也可以将下面配置对应改一下,整一套内网版cdn
|
||||
*/
|
||||
export const cdn = importToCDN({
|
||||
//(prodUrl解释: name: 对应下面modules的name,version: 自动读取本地package.json中dependencies依赖中对应包的版本号,path: 对应下面modules的path,当然也可写完整路径,会替换prodUrl)
|
||||
prodUrl: "https://cdn.bootcdn.net/ajax/libs/{name}/{version}/{path}",
|
||||
modules: [
|
||||
{
|
||||
name: "vue",
|
||||
var: "Vue",
|
||||
path: "vue.global.prod.min.js"
|
||||
},
|
||||
{
|
||||
name: "vue-router",
|
||||
var: "VueRouter",
|
||||
path: "vue-router.global.min.js"
|
||||
},
|
||||
{
|
||||
name: "vue-i18n",
|
||||
var: "VueI18n",
|
||||
path: "vue-i18n.runtime.global.prod.min.js"
|
||||
},
|
||||
// 项目中没有直接安装vue-demi,但是pinia用到了,所以需要在引入pinia前引入vue-demi(https://github.com/vuejs/pinia/blob/v2/packages/pinia/package.json#L77)
|
||||
{
|
||||
name: "vue-demi",
|
||||
var: "VueDemi",
|
||||
path: "index.iife.min.js"
|
||||
},
|
||||
{
|
||||
name: "pinia",
|
||||
var: "Pinia",
|
||||
path: "pinia.iife.min.js"
|
||||
},
|
||||
{
|
||||
name: "element-plus",
|
||||
var: "ElementPlus",
|
||||
path: "index.full.min.js",
|
||||
css: "index.min.css"
|
||||
},
|
||||
{
|
||||
name: "axios",
|
||||
var: "axios",
|
||||
path: "axios.min.js"
|
||||
},
|
||||
{
|
||||
name: "dayjs",
|
||||
var: "dayjs",
|
||||
path: "dayjs.min.js"
|
||||
},
|
||||
{
|
||||
name: "echarts",
|
||||
var: "echarts",
|
||||
path: "echarts.min.js"
|
||||
}
|
||||
]
|
||||
});
|
||||
63
build/compress.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import type { Plugin } from "vite";
|
||||
import { isArray } from "@pureadmin/utils";
|
||||
import compressPlugin from "vite-plugin-compression";
|
||||
|
||||
export const configCompressPlugin = (
|
||||
compress: ViteCompression
|
||||
): Plugin | Plugin[] => {
|
||||
if (compress === "none") return null;
|
||||
|
||||
const gz = {
|
||||
// 生成的压缩包后缀
|
||||
ext: ".gz",
|
||||
// 体积大于threshold才会被压缩
|
||||
threshold: 0,
|
||||
// 默认压缩.js|mjs|json|css|html后缀文件,设置成true,压缩全部文件
|
||||
filter: () => true,
|
||||
// 压缩后是否删除原始文件
|
||||
deleteOriginFile: false
|
||||
};
|
||||
const br = {
|
||||
ext: ".br",
|
||||
algorithm: "brotliCompress",
|
||||
threshold: 0,
|
||||
filter: () => true,
|
||||
deleteOriginFile: false
|
||||
};
|
||||
|
||||
const codeList = [
|
||||
{ k: "gzip", v: gz },
|
||||
{ k: "brotli", v: br },
|
||||
{ k: "both", v: [gz, br] }
|
||||
];
|
||||
|
||||
const plugins: Plugin[] = [];
|
||||
|
||||
codeList.forEach(item => {
|
||||
if (compress.includes(item.k)) {
|
||||
if (compress.includes("clear")) {
|
||||
if (isArray(item.v)) {
|
||||
item.v.forEach(vItem => {
|
||||
plugins.push(
|
||||
compressPlugin(Object.assign(vItem, { deleteOriginFile: true }))
|
||||
);
|
||||
});
|
||||
} else {
|
||||
plugins.push(
|
||||
compressPlugin(Object.assign(item.v, { deleteOriginFile: true }))
|
||||
);
|
||||
}
|
||||
} else {
|
||||
if (isArray(item.v)) {
|
||||
item.v.forEach(vItem => {
|
||||
plugins.push(compressPlugin(vItem));
|
||||
});
|
||||
} else {
|
||||
plugins.push(compressPlugin(item.v));
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return plugins;
|
||||
};
|
||||
@@ -1,13 +1,13 @@
|
||||
// 处理环境变量
|
||||
/** 处理环境变量 */
|
||||
const warpperEnv = (envConf: Recordable): ViteEnv => {
|
||||
// 此处为默认值,无需修改
|
||||
/** 此处为默认值 */
|
||||
const ret: ViteEnv = {
|
||||
VITE_PORT: 8848,
|
||||
VITE_PUBLIC_PATH: "",
|
||||
VITE_PROXY_DOMAIN: "",
|
||||
VITE_PROXY_DOMAIN_REAL: "",
|
||||
VITE_ROUTER_HISTORY: "",
|
||||
VITE_LEGACY: false
|
||||
VITE_CDN: false,
|
||||
VITE_HIDE_HOME: "false",
|
||||
VITE_COMPRESSION: "none"
|
||||
};
|
||||
|
||||
for (const envName of Object.keys(envConf)) {
|
||||
@@ -28,14 +28,4 @@ const warpperEnv = (envConf: Recordable): ViteEnv => {
|
||||
return ret;
|
||||
};
|
||||
|
||||
// 跨域代理重写
|
||||
const regExps = (value: string, reg: string): string => {
|
||||
return value.replace(new RegExp(reg, "g"), "");
|
||||
};
|
||||
|
||||
// 环境变量
|
||||
const loadEnv = (): ViteEnv => {
|
||||
return import.meta.env;
|
||||
};
|
||||
|
||||
export { warpperEnv, regExps, loadEnv };
|
||||
export { warpperEnv };
|
||||
|
||||
53
build/info.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
import type { Plugin } from "vite";
|
||||
import dayjs, { Dayjs } from "dayjs";
|
||||
import utils from "@pureadmin/utils";
|
||||
import duration from "dayjs/plugin/duration";
|
||||
import { green, blue, bold } from "picocolors";
|
||||
dayjs.extend(duration);
|
||||
|
||||
export function viteBuildInfo(): Plugin {
|
||||
let config: { command: string };
|
||||
let startTime: Dayjs;
|
||||
let endTime: Dayjs;
|
||||
let outDir: string;
|
||||
return {
|
||||
name: "vite:buildInfo",
|
||||
configResolved(resolvedConfig) {
|
||||
config = resolvedConfig;
|
||||
outDir = resolvedConfig.build?.outDir ?? "dist";
|
||||
},
|
||||
buildStart() {
|
||||
console.log(
|
||||
bold(
|
||||
green(
|
||||
`👏欢迎使用${blue(
|
||||
"[vue-pure-admin]"
|
||||
)},如果您感觉不错,记得点击后面链接给个star哦💖 https://github.com/pure-admin/vue-pure-admin`
|
||||
)
|
||||
)
|
||||
);
|
||||
if (config.command === "build") {
|
||||
startTime = dayjs(new Date());
|
||||
}
|
||||
},
|
||||
closeBundle() {
|
||||
if (config.command === "build") {
|
||||
endTime = dayjs(new Date());
|
||||
utils.getPackageSize({
|
||||
folder: outDir,
|
||||
callback: (size: string) => {
|
||||
console.log(
|
||||
bold(
|
||||
green(
|
||||
`🎉恭喜打包完成(总用时${dayjs
|
||||
.duration(endTime.diff(startTime))
|
||||
.format("mm分ss秒")},打包后的大小为${size})`
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
53
build/optimize.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* 此文件作用于 `vite.config.ts` 的 `optimizeDeps.include` 依赖预构建配置项
|
||||
* 依赖预构建,`vite` 启动时会将下面 include 里的模块,编译成 esm 格式并缓存到 node_modules/.vite 文件夹,页面加载到对应模块时如果浏览器有缓存就读取浏览器缓存,如果没有会读取本地缓存并按需加载
|
||||
* 尤其当您禁用浏览器缓存时(这种情况只应该发生在调试阶段)必须将对应模块加入到 include里,否则会遇到开发环境切换页面卡顿的问题(vite 会认为它是一个新的依赖包会重新加载并强制刷新页面),因为它既无法使用浏览器缓存,又没有在本地 node_modules/.vite 里缓存
|
||||
* 温馨提示:如果您使用的第三方库是全局引入,也就是引入到 src/main.ts 文件里,就不需要再添加到 include 里了,因为 vite 会自动将它们缓存到 node_modules/.vite
|
||||
*/
|
||||
const include = [
|
||||
"qs",
|
||||
"mitt",
|
||||
"xlsx",
|
||||
"dayjs",
|
||||
"axios",
|
||||
"pinia",
|
||||
"swiper",
|
||||
"intro.js",
|
||||
"vue-i18n",
|
||||
"js-cookie",
|
||||
"cropperjs",
|
||||
"jsbarcode",
|
||||
"sortablejs",
|
||||
"swiper/vue",
|
||||
"md-editor-v3",
|
||||
"@vueuse/core",
|
||||
"vue3-danmaku",
|
||||
"v-contextmenu",
|
||||
"vue-pdf-embed",
|
||||
"china-area-data",
|
||||
"vue-json-pretty",
|
||||
"@logicflow/core",
|
||||
"@pureadmin/utils",
|
||||
"@wangeditor/editor",
|
||||
"responsive-storage",
|
||||
"@howdyjs/mouse-menu",
|
||||
"@logicflow/extension",
|
||||
"vue-virtual-scroller",
|
||||
"element-resize-detector",
|
||||
"@amap/amap-jsapi-loader",
|
||||
"el-table-infinite-scroll",
|
||||
"@wangeditor/editor-for-vue",
|
||||
"vuedraggable/src/vuedraggable"
|
||||
];
|
||||
|
||||
/**
|
||||
* 在预构建中强制排除的依赖项
|
||||
* 温馨提示:所有以 `@iconify-icons/` 开头引入的的本地图标模块,都应该加入到下面的 `exclude` 里,因为平台推荐的使用方式是哪里需要哪里引入而且都是单个的引入,不需要预构建,直接让浏览器加载就好
|
||||
*/
|
||||
const exclude = [
|
||||
"@iconify-icons/ep",
|
||||
"@iconify-icons/ri",
|
||||
"@pureadmin/theme/dist/browser-utils"
|
||||
];
|
||||
|
||||
export { include, exclude };
|
||||
61
build/plugins.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import { cdn } from "./cdn";
|
||||
import { resolve } from "path";
|
||||
import vue from "@vitejs/plugin-vue";
|
||||
import { viteBuildInfo } from "./info";
|
||||
import svgLoader from "vite-svg-loader";
|
||||
import vueJsx from "@vitejs/plugin-vue-jsx";
|
||||
import { viteMockServe } from "vite-plugin-mock";
|
||||
import { configCompressPlugin } from "./compress";
|
||||
import { visualizer } from "rollup-plugin-visualizer";
|
||||
import removeConsole from "vite-plugin-remove-console";
|
||||
import themePreprocessorPlugin from "@pureadmin/theme";
|
||||
import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite";
|
||||
import { genScssMultipleScopeVars } from "../src/layout/theme";
|
||||
|
||||
export function getPluginsList(
|
||||
command: string,
|
||||
VITE_CDN: boolean,
|
||||
VITE_COMPRESSION: ViteCompression
|
||||
) {
|
||||
const prodMock = true;
|
||||
const lifecycle = process.env.npm_lifecycle_event;
|
||||
return [
|
||||
vue(),
|
||||
VueI18nPlugin({
|
||||
runtimeOnly: true,
|
||||
compositionOnly: true,
|
||||
include: [resolve("locales/**")]
|
||||
}),
|
||||
// jsx、tsx语法支持
|
||||
vueJsx(),
|
||||
VITE_CDN ? cdn : null,
|
||||
configCompressPlugin(VITE_COMPRESSION),
|
||||
// 线上环境删除console
|
||||
removeConsole({ external: ["src/assets/iconfont/iconfont.js"] }),
|
||||
viteBuildInfo(),
|
||||
// 自定义主题
|
||||
themePreprocessorPlugin({
|
||||
scss: {
|
||||
multipleScopeVars: genScssMultipleScopeVars(),
|
||||
extract: true
|
||||
}
|
||||
}),
|
||||
// svg组件化支持
|
||||
svgLoader(),
|
||||
// mock支持
|
||||
viteMockServe({
|
||||
mockPath: "mock",
|
||||
localEnabled: command === "serve",
|
||||
prodEnabled: command !== "serve" && prodMock,
|
||||
injectCode: `
|
||||
import { setupProdMockServer } from './mockProdServer';
|
||||
setupProdMockServer();
|
||||
`,
|
||||
logger: false
|
||||
}),
|
||||
// 打包分析
|
||||
lifecycle === "report"
|
||||
? visualizer({ open: true, brotliSize: true, filename: "report.html" })
|
||||
: null
|
||||
];
|
||||
}
|
||||
145
index.html
@@ -2,11 +2,14 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<link rel="stylesheet" href="/iconfont.css" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="renderer" content="webkit" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
|
||||
/>
|
||||
<title>vue-pure-admin</title>
|
||||
<script src="/sortable.min.js"></script>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<script>
|
||||
window.process = {};
|
||||
</script>
|
||||
@@ -15,106 +18,70 @@
|
||||
<body>
|
||||
<div id="app">
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
body,
|
||||
#app {
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: #000;
|
||||
overflow: hidden;
|
||||
font-family: "Reggae One", cursive;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 8vw;
|
||||
overflow: hidden;
|
||||
-webkit-text-stroke: 3px #7272a5;
|
||||
}
|
||||
|
||||
span {
|
||||
display: block;
|
||||
font-size: 20px;
|
||||
overflow: hidden;
|
||||
color: green;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
p::before {
|
||||
content: " ";
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.loader,
|
||||
.loader::before,
|
||||
.loader::after {
|
||||
width: 2.5em;
|
||||
height: 2.5em;
|
||||
border-radius: 50%;
|
||||
animation: load-animation 1.8s infinite ease-in-out;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
|
||||
.loader {
|
||||
position: relative;
|
||||
top: 0;
|
||||
background-image: linear-gradient(45deg, #ff269b, #2ab5f5, #ffbf00);
|
||||
mix-blend-mode: multiply;
|
||||
margin: 80px auto;
|
||||
font-size: 10px;
|
||||
color: #406eeb;
|
||||
text-indent: -9999em;
|
||||
transform: translateZ(0);
|
||||
transform: translate(-50%, 0);
|
||||
animation-delay: -0.16s;
|
||||
}
|
||||
|
||||
p::after {
|
||||
content: "";
|
||||
background: radial-gradient(circle, #fff, #000 50%);
|
||||
background-size: 25% 25%;
|
||||
.loader::before,
|
||||
.loader::after {
|
||||
position: absolute;
|
||||
top: -100%;
|
||||
left: -100%;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
mix-blend-mode: color-dodge;
|
||||
animation: mix 2s linear infinite;
|
||||
top: 0;
|
||||
content: "";
|
||||
}
|
||||
|
||||
@keyframes mix {
|
||||
to {
|
||||
transform: translate(50%, 50%);
|
||||
.loader::before {
|
||||
left: -3.5em;
|
||||
animation-delay: -0.32s;
|
||||
}
|
||||
|
||||
.loader::after {
|
||||
left: 3.5em;
|
||||
}
|
||||
|
||||
@keyframes load-animation {
|
||||
0%,
|
||||
80%,
|
||||
100% {
|
||||
box-shadow: 0 2.5em 0 -1.3em;
|
||||
}
|
||||
|
||||
40% {
|
||||
box-shadow: 0 2.5em 0 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="g-container">
|
||||
<p>Pure-Admin</p>
|
||||
<span class="_develop"></span>
|
||||
</div>
|
||||
<div class="loader"></div>
|
||||
</div>
|
||||
<script>
|
||||
// 此代码仅用于开发环境的友好提示,项目打包前请去掉这段js代码 This code is only used as a friendly reminder of the development environment, please remove this js code before packaging the project
|
||||
window.onload = function () {
|
||||
(function () {
|
||||
const ua = navigator.userAgent.toLowerCase();
|
||||
const re = /(msie|firefox|chrome|opera|version).*?([\d.]+)/;
|
||||
const m = ua.match(re);
|
||||
const Sys = {
|
||||
browser: m[1].replace(/version/, "'safari"),
|
||||
version: m[2]
|
||||
};
|
||||
|
||||
const browser = Array.of("chrome", "firefox").includes(Sys.browser);
|
||||
const version = parseFloat(Sys.version);
|
||||
|
||||
const el = document.querySelector("._develop");
|
||||
|
||||
if (el) {
|
||||
if (browser && version >= 90) {
|
||||
let success =
|
||||
document.createTextNode("当前浏览器版本很适合开发!!! 😃");
|
||||
el.appendChild(success);
|
||||
} else {
|
||||
let warn = document.createTextNode(
|
||||
"当前浏览器版本不适合开发,建议使用最新版本的谷歌或者火狐浏览器!!!😯"
|
||||
);
|
||||
el.appendChild(warn);
|
||||
el.style.color = "red";
|
||||
}
|
||||
}
|
||||
return Sys;
|
||||
})();
|
||||
};
|
||||
</script>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
147
locales/en.yaml
Normal file
@@ -0,0 +1,147 @@
|
||||
buttons:
|
||||
hsLoginOut: LoginOut
|
||||
hsfullscreen: FullScreen
|
||||
hsexitfullscreen: ExitFullscreen
|
||||
hsrefreshRoute: RefreshRoute
|
||||
hslogin: Login
|
||||
hsadd: Add
|
||||
hsmark: Mark/Cancel
|
||||
hssave: Save
|
||||
hssearch: Search
|
||||
hsexpendAll: Expand All
|
||||
hscollapseAll: Collapse All
|
||||
hssystemSet: Open ProjectConfig
|
||||
hsdelete: Delete
|
||||
hsreload: Reload
|
||||
hscloseCurrentTab: Close CurrentTab
|
||||
hscloseLeftTabs: Close LeftTabs
|
||||
hscloseRightTabs: Close RightTabs
|
||||
hscloseOtherTabs: Close OtherTabs
|
||||
hscloseAllTabs: Close AllTabs
|
||||
hswholeFullScreen: FullScreen
|
||||
hswholeExitFullScreen: ExitFull
|
||||
hscontentFullScreen: Content FullScreen
|
||||
hscontentExitFullScreen: Content ExitFullScreen
|
||||
menus:
|
||||
hshome: Home
|
||||
hslogin: Login
|
||||
hsempty: Empty Page
|
||||
hssysManagement: System Manage
|
||||
hsUser: User Manage
|
||||
hsRole: Role Manage
|
||||
hsDept: Dept Manage
|
||||
hseditor: Editor
|
||||
hsabnormal: Abnormal Page
|
||||
hsfourZeroFour: "404"
|
||||
hsfourZeroOne: "403"
|
||||
hsFive: "500"
|
||||
hscomponents: Components
|
||||
hsdialog: Dialog Components
|
||||
hsmessage: Message Tips Components
|
||||
hsvideo: Video Components
|
||||
hsmap: Map Components
|
||||
hsdraggable: Draggable Components
|
||||
hssplitPane: Split Pane
|
||||
hsbutton: Button Components
|
||||
hscropping: Picture Cropping
|
||||
hscountTo: Digital Animation
|
||||
hsselector: Selector Components
|
||||
hsflowChart: Flow Chart
|
||||
hsseamless: Seamless Scroll
|
||||
hscontextmenu: Context Menu
|
||||
hstypeit: Typeit Components
|
||||
hsjsoneditor: JSON Editor
|
||||
hsmenus: MultiLevel Menu
|
||||
hsmenu1: Menu1
|
||||
hsmenu1-1: Menu1-1
|
||||
hsmenu1-2: Menu1-2
|
||||
hsmenu1-2-1: Menu1-2-1
|
||||
hsmenu1-2-2: Menu1-2-2
|
||||
hsmenu1-3: Menu1-3
|
||||
hsmenu2: Menu2
|
||||
permission: Permission Manage
|
||||
permissionPage: Page Permission
|
||||
permissionButton: Button Permission
|
||||
hstabs: Tabs Operate
|
||||
hsguide: Guide
|
||||
hsAble: Able
|
||||
hsMenuTree: Menu Tree
|
||||
hsWatermark: Water Mark
|
||||
hsPrint: Print
|
||||
hsDownload: Download
|
||||
hsExternalPage: External Page
|
||||
hsPureDocument: Pure Doc(Embedded)
|
||||
externalLink: Pure Doc(External)
|
||||
hsEpDocument: Element Plus Doc(Embedded)
|
||||
hsVueDocument: Vue3 Doc(Embedded)
|
||||
hsViteDocument: Vite Doc(Embedded)
|
||||
hsPiniaDocument: Pinia Doc(Embedded)
|
||||
hsRouterDocument: Vue Router Doc(Embedded)
|
||||
hsTailwindcssDocument: Tailwindcss Doc(Embedded)
|
||||
hsAbout: About
|
||||
hsResult: Result Page
|
||||
hsSuccess: Success Page
|
||||
hsFail: Fail Page
|
||||
hsIconSelect: Icon Select
|
||||
hsTimeline: Time Line
|
||||
hsLineTree: LineTree
|
||||
hsList: List Page
|
||||
hsListCard: Card List Page
|
||||
hsDebounce: Debounce & Throttle
|
||||
hsFormDesign: Form Design
|
||||
hsBarcode: Barcode
|
||||
hsQrcode: Qrcode
|
||||
hsCascader: Area Cascader
|
||||
hsSwiper: Swiper Plugin
|
||||
hsVirtualList: Virtual List
|
||||
hsPdf: PDF Preview
|
||||
hsExecl: Export Excel
|
||||
hsInfiniteScroll: Table Infinite Scroll
|
||||
hsdanmaku: Danmaku Components
|
||||
hsPureTableBase: Base Usage
|
||||
hsPureTableHigh: High Usage
|
||||
hsTree: Big Data Tree
|
||||
hsMenuoverflow: Menu Overflow Show Tooltip Text
|
||||
hsChildMenuoverflow: Child Menu Overflow Show Tooltip Text
|
||||
status:
|
||||
hsLoad: Loading...
|
||||
login:
|
||||
username: Username
|
||||
password: Password
|
||||
verifyCode: VerifyCode
|
||||
remember: Remember Password
|
||||
sure: Sure Password
|
||||
forget: Forget Password?
|
||||
login: Login
|
||||
thirdLogin: Third Login
|
||||
phoneLogin: Phone Login
|
||||
qRCodeLogin: QRCode Login
|
||||
register: Register
|
||||
weChatLogin: WeChat Login
|
||||
alipayLogin: Alipay Login
|
||||
qqLogin: QQ Login
|
||||
weiboLogin: Weibo Login
|
||||
phone: Phone
|
||||
smsVerifyCode: SMS VerifyCode
|
||||
back: Back
|
||||
test: Mock Test
|
||||
tip: After scanning the code, click "Confirm" to complete the login
|
||||
definite: Definite
|
||||
loginSuccess: Login Success
|
||||
registerSuccess: Regist Success
|
||||
tickPrivacy: Please tick Privacy Policy
|
||||
readAccept: I have read it carefully and accept
|
||||
privacyPolicy: Privacy Policy
|
||||
getVerifyCode: Get VerifyCode
|
||||
info: Seconds
|
||||
usernameReg: Please enter username
|
||||
passwordReg: Please enter password
|
||||
verifyCodeReg: Please enter verify code
|
||||
verifyCodeCorrectReg: Please enter correct verify code
|
||||
verifyCodeSixReg: Please enter a 6-digit verify code
|
||||
phoneReg: Please enter the phone
|
||||
phoneCorrectReg: Please enter the correct phone number format
|
||||
passwordRuleReg: The password format should be any combination of 8-18 digits
|
||||
passwordSureReg: Please enter confirm password
|
||||
passwordDifferentReg: The two passwords do not match!
|
||||
passwordUpdateReg: Password has been updated
|
||||
147
locales/zh-CN.yaml
Normal file
@@ -0,0 +1,147 @@
|
||||
buttons:
|
||||
hsLoginOut: 退出系统
|
||||
hsfullscreen: 全屏
|
||||
hsexitfullscreen: 退出全屏
|
||||
hsrefreshRoute: 刷新路由
|
||||
hslogin: 登录
|
||||
hsadd: 新增
|
||||
hsmark: 标记/取消
|
||||
hssave: 保存
|
||||
hssearch: 搜索
|
||||
hsexpendAll: 全部展开
|
||||
hscollapseAll: 全部折叠
|
||||
hssystemSet: 打开项目配置
|
||||
hsdelete: 删除
|
||||
hsreload: 重新加载
|
||||
hscloseCurrentTab: 关闭当前标签页
|
||||
hscloseLeftTabs: 关闭左侧标签页
|
||||
hscloseRightTabs: 关闭右侧标签页
|
||||
hscloseOtherTabs: 关闭其他标签页
|
||||
hscloseAllTabs: 关闭全部标签页
|
||||
hswholeFullScreen: 全屏
|
||||
hswholeExitFullScreen: 退出全屏
|
||||
hscontentFullScreen: 内容区全屏
|
||||
hscontentExitFullScreen: 内容区退出全屏
|
||||
menus:
|
||||
hshome: 首页
|
||||
hslogin: 登录
|
||||
hsempty: 无Layout页
|
||||
hssysManagement: 系统管理
|
||||
hsUser: 用户管理
|
||||
hsRole: 角色管理
|
||||
hsDept: 部门管理
|
||||
hseditor: 编辑器
|
||||
hsabnormal: 异常页面
|
||||
hsfourZeroFour: "404"
|
||||
hsfourZeroOne: "403"
|
||||
hsFive: "500"
|
||||
hscomponents: 组件
|
||||
hsdialog: 函数式弹框组件
|
||||
hsmessage: 消息提示组件
|
||||
hsvideo: 视频组件
|
||||
hsmap: 地图组件
|
||||
hsdraggable: 拖拽组件
|
||||
hssplitPane: 切割面板
|
||||
hsbutton: 按钮组件
|
||||
hscropping: 图片裁剪
|
||||
hscountTo: 数字动画
|
||||
hsselector: 选择器组件
|
||||
hsflowChart: 流程图
|
||||
hsseamless: 无缝滚动
|
||||
hscontextmenu: 右键菜单
|
||||
hstypeit: 打字机组件
|
||||
hsjsoneditor: JSON编辑器
|
||||
hsmenus: 多级菜单
|
||||
hsmenu1: 菜单1
|
||||
hsmenu1-1: 菜单1-1
|
||||
hsmenu1-2: 菜单1-2
|
||||
hsmenu1-2-1: 菜单1-2-1
|
||||
hsmenu1-2-2: 菜单1-2-2
|
||||
hsmenu1-3: 菜单1-3
|
||||
hsmenu2: 菜单2
|
||||
permission: 权限管理
|
||||
permissionPage: 页面权限
|
||||
permissionButton: 按钮权限
|
||||
hstabs: 标签页操作
|
||||
hsguide: 引导页
|
||||
hsAble: 功能
|
||||
hsMenuTree: 菜单树结构
|
||||
hsWatermark: 水印
|
||||
hsPrint: 打印
|
||||
hsDownload: 下载
|
||||
hsExternalPage: 外部页面
|
||||
hsPureDocument: 平台文档(内嵌)
|
||||
externalLink: 平台文档(外链)
|
||||
hsEpDocument: Element Plus 文档(内嵌)
|
||||
hsVueDocument: Vue3 文档(内嵌)
|
||||
hsViteDocument: Vite 文档(内嵌)
|
||||
hsPiniaDocument: Pinia 文档(内嵌)
|
||||
hsRouterDocument: Vue Router 文档(内嵌)
|
||||
hsTailwindcssDocument: Tailwindcss 文档(内嵌)
|
||||
hsAbout: 关于
|
||||
hsResult: 结果页面
|
||||
hsSuccess: 成功页面
|
||||
hsFail: 失败页面
|
||||
hsIconSelect: 图标选择器
|
||||
hsTimeline: 时间线
|
||||
hsLineTree: 树形连接线
|
||||
hsList: 列表页
|
||||
hsListCard: 卡片列表页
|
||||
hsDebounce: 防抖节流
|
||||
hsFormDesign: 表单设计器
|
||||
hsBarcode: 条形码
|
||||
hsQrcode: 二维码
|
||||
hsCascader: 区域级联选择器
|
||||
hsSwiper: Swiper插件
|
||||
hsVirtualList: 虚拟列表
|
||||
hsPdf: PDF预览
|
||||
hsExecl: 导出Excel
|
||||
hsInfiniteScroll: 表格无限滚动
|
||||
hsdanmaku: 弹幕组件
|
||||
hsPureTableBase: 基础用法(23个示例)
|
||||
hsPureTableHigh: 高级用法(10个示例)
|
||||
hsTree: 大数据树业务组件
|
||||
hsMenuoverflow: 目录超出显示 Tooltip 文字提示
|
||||
hsChildMenuoverflow: 菜单超出显示 Tooltip 文字提示
|
||||
status:
|
||||
hsLoad: 加载中...
|
||||
login:
|
||||
username: 账号
|
||||
password: 密码
|
||||
verifyCode: 验证码
|
||||
remember: 记住密码
|
||||
sure: 确认密码
|
||||
forget: 忘记密码?
|
||||
login: 登录
|
||||
thirdLogin: 第三方登录
|
||||
phoneLogin: 手机登录
|
||||
qRCodeLogin: 二维码登录
|
||||
register: 注册
|
||||
weChatLogin: 微信登录
|
||||
alipayLogin: 支付宝登录
|
||||
qqLogin: QQ登录
|
||||
weiboLogin: 微博登录
|
||||
phone: 手机号码
|
||||
smsVerifyCode: 短信验证码
|
||||
back: 返回
|
||||
test: 模拟测试
|
||||
tip: 扫码后点击"确认",即可完成登录
|
||||
definite: 确定
|
||||
loginSuccess: 登录成功
|
||||
registerSuccess: 注册成功
|
||||
tickPrivacy: 请勾选隐私政策
|
||||
readAccept: 我已仔细阅读并接受
|
||||
privacyPolicy: 《隐私政策》
|
||||
getVerifyCode: 获取验证码
|
||||
info: 秒后重新获取
|
||||
usernameReg: 请输入账号
|
||||
passwordReg: 请输入密码
|
||||
verifyCodeReg: 请输入验证码
|
||||
verifyCodeCorrectReg: 请输入正确的验证码
|
||||
verifyCodeSixReg: 请输入6位数字验证码
|
||||
phoneReg: 请输入手机号码
|
||||
phoneCorrectReg: 请输入正确的手机号码格式
|
||||
passwordRuleReg: 密码格式应为8-18位数字、字母、符号的任意两种组合
|
||||
passwordSureReg: 请输入确认密码
|
||||
passwordDifferentReg: 两次密码不一致!
|
||||
passwordUpdateReg: 修改密码成功
|
||||
@@ -1,36 +1,46 @@
|
||||
// 根据角色动态生成路由
|
||||
// 模拟后端动态生成路由
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
import { system, permission, frame, tabs } from "@/router/enums";
|
||||
|
||||
/**
|
||||
* roles:页面级别权限,这里模拟二种 "admin"、"common"
|
||||
* admin:管理员角色
|
||||
* common:普通角色
|
||||
*/
|
||||
|
||||
// http://mockjs.com/examples.html#Object
|
||||
const systemRouter = {
|
||||
path: "/system",
|
||||
name: "system",
|
||||
redirect: "/system/user",
|
||||
meta: {
|
||||
icon: "Setting",
|
||||
title: "message.hssysManagement",
|
||||
i18n: true,
|
||||
showLink: true,
|
||||
rank: 6
|
||||
icon: "setting",
|
||||
title: "menus.hssysManagement",
|
||||
rank: system
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "/system/user",
|
||||
name: "user",
|
||||
path: "/system/user/index",
|
||||
name: "User",
|
||||
meta: {
|
||||
title: "message.hsBaseinfo",
|
||||
i18n: true,
|
||||
showLink: true
|
||||
icon: "flUser",
|
||||
title: "menus.hsUser",
|
||||
roles: ["admin"]
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/system/dict",
|
||||
name: "dict",
|
||||
path: "/system/role/index",
|
||||
name: "Role",
|
||||
meta: {
|
||||
title: "message.hsDict",
|
||||
i18n: true,
|
||||
showLink: true,
|
||||
keepAlive: true
|
||||
icon: "role",
|
||||
title: "menus.hsRole",
|
||||
roles: ["admin"]
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/system/dept/index",
|
||||
name: "Dept",
|
||||
meta: {
|
||||
icon: "dept",
|
||||
title: "menus.hsDept",
|
||||
roles: ["admin"]
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -38,33 +48,109 @@ const systemRouter = {
|
||||
|
||||
const permissionRouter = {
|
||||
path: "/permission",
|
||||
name: "permission",
|
||||
redirect: "/permission/page",
|
||||
meta: {
|
||||
title: "message.permission",
|
||||
icon: "Lollipop",
|
||||
i18n: true,
|
||||
showLink: true,
|
||||
rank: 3
|
||||
title: "menus.permission",
|
||||
icon: "lollipop",
|
||||
rank: permission
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "/permission/page",
|
||||
name: "permissionPage",
|
||||
path: "/permission/page/index",
|
||||
name: "PermissionPage",
|
||||
meta: {
|
||||
title: "message.permissionPage",
|
||||
i18n: true,
|
||||
showLink: true
|
||||
title: "menus.permissionPage",
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/permission/button",
|
||||
name: "permissionButton",
|
||||
path: "/permission/button/index",
|
||||
name: "PermissionButton",
|
||||
meta: {
|
||||
title: "message.permissionButton",
|
||||
i18n: true,
|
||||
showLink: true,
|
||||
authority: []
|
||||
title: "menus.permissionButton",
|
||||
roles: ["admin", "common"],
|
||||
auths: ["btn_add", "btn_edit", "btn_delete"]
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
const frameRouter = {
|
||||
path: "/iframe",
|
||||
meta: {
|
||||
icon: "monitor",
|
||||
title: "menus.hsExternalPage",
|
||||
rank: frame
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "/external",
|
||||
name: "https://yiming_chang.gitee.io/pure-admin-doc",
|
||||
meta: {
|
||||
title: "menus.externalLink",
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/iframe/pure",
|
||||
name: "FramePure",
|
||||
meta: {
|
||||
title: "menus.hsPureDocument",
|
||||
frameSrc: "https://yiming_chang.gitee.io/pure-admin-doc",
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/iframe/ep",
|
||||
name: "FrameEp",
|
||||
meta: {
|
||||
title: "menus.hsEpDocument",
|
||||
frameSrc: "https://element-plus.org/zh-CN/",
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/iframe/vue3",
|
||||
name: "FrameVue",
|
||||
meta: {
|
||||
title: "menus.hsVueDocument",
|
||||
frameSrc: "https://cn.vuejs.org/",
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/iframe/vite",
|
||||
name: "FrameVite",
|
||||
meta: {
|
||||
title: "menus.hsViteDocument",
|
||||
frameSrc: "https://cn.vitejs.dev/",
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/iframe/pinia",
|
||||
name: "FramePinia",
|
||||
meta: {
|
||||
title: "menus.hsPiniaDocument",
|
||||
frameSrc: "https://pinia.vuejs.org/zh/index.html",
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/iframe/vue-router",
|
||||
name: "FrameRouter",
|
||||
meta: {
|
||||
title: "menus.hsRouterDocument",
|
||||
frameSrc: "https://router.vuejs.org/zh/",
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/iframe/tailwindcss",
|
||||
name: "FrameTailwindcss",
|
||||
meta: {
|
||||
title: "menus.hsTailwindcssDocument",
|
||||
frameSrc: "https://tailwindcss.com/docs/installation",
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -72,66 +158,53 @@ const permissionRouter = {
|
||||
|
||||
const tabsRouter = {
|
||||
path: "/tabs",
|
||||
name: "reTabs",
|
||||
redirect: "/tabs/index",
|
||||
meta: {
|
||||
icon: "IF-team-icontabs",
|
||||
title: "message.hstabs",
|
||||
i18n: true,
|
||||
showLink: true,
|
||||
rank: 8
|
||||
icon: "IF-pure-iconfont-tabs",
|
||||
title: "menus.hstabs",
|
||||
rank: tabs
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "/tabs/index",
|
||||
name: "reTabs",
|
||||
name: "Tabs",
|
||||
meta: {
|
||||
title: "message.hstabs",
|
||||
showLink: true,
|
||||
i18n: true
|
||||
title: "menus.hstabs",
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
},
|
||||
// query 传参模式
|
||||
{
|
||||
path: "/tabs/detail",
|
||||
name: "tabDetail",
|
||||
path: "/tabs/query-detail",
|
||||
name: "TabQueryDetail",
|
||||
meta: {
|
||||
title: "",
|
||||
// 不在menu菜单中显示
|
||||
showLink: false,
|
||||
i18n: false,
|
||||
dynamicLevel: 3,
|
||||
realPath: "/tabs/detail",
|
||||
refreshRedirect: "/tabs/index"
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
},
|
||||
// params 传参模式
|
||||
{
|
||||
path: "/tabs/params-detail/:id",
|
||||
component: "params-detail",
|
||||
name: "TabParamsDetail",
|
||||
meta: {
|
||||
// 不在menu菜单中显示
|
||||
showLink: false,
|
||||
roles: ["admin", "common"]
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
// 添加不同按钮权限到/permission/button页面中
|
||||
function setDifAuthority(authority, routes) {
|
||||
routes.children[1].meta.authority = [authority];
|
||||
return routes;
|
||||
}
|
||||
|
||||
export default [
|
||||
{
|
||||
url: "/getAsyncRoutes",
|
||||
method: "get",
|
||||
response: ({ query }) => {
|
||||
if (query.name === "admin") {
|
||||
return {
|
||||
code: 0,
|
||||
info: [
|
||||
tabsRouter,
|
||||
systemRouter,
|
||||
setDifAuthority("v-admin", permissionRouter)
|
||||
]
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
code: 0,
|
||||
info: [tabsRouter, setDifAuthority("v-test", permissionRouter)]
|
||||
};
|
||||
}
|
||||
response: () => {
|
||||
return {
|
||||
success: true,
|
||||
data: [systemRouter, permissionRouter, frameRouter, tabsRouter]
|
||||
};
|
||||
}
|
||||
}
|
||||
] as MockMethod[];
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
|
||||
// http://mockjs.com/examples.html#Object
|
||||
const echartsList = () => {
|
||||
const result = [];
|
||||
for (let index = 0; index < 200; index++) {
|
||||
result.push(["@date", Math.floor(Math.random() * 300)]);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
export default [
|
||||
{
|
||||
url: "/getEchartsInfo",
|
||||
method: "get",
|
||||
response: () => {
|
||||
return {
|
||||
code: 0,
|
||||
info: echartsList()
|
||||
};
|
||||
}
|
||||
}
|
||||
] as MockMethod[];
|
||||
455
mock/list.ts
Normal file
@@ -0,0 +1,455 @@
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
|
||||
export default [
|
||||
{
|
||||
url: "/getCardList",
|
||||
method: "post",
|
||||
response: () => {
|
||||
return {
|
||||
success: true,
|
||||
data: {
|
||||
list: [
|
||||
{
|
||||
index: 1,
|
||||
isSetup: true,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-server.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 2,
|
||||
isSetup: false,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/t-sec.jpg",
|
||||
name: "人脸识别",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 3,
|
||||
isSetup: false,
|
||||
type: 5,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 4,
|
||||
isSetup: false,
|
||||
type: 2,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"云数据库MySQL为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。"
|
||||
},
|
||||
{
|
||||
index: 5,
|
||||
isSetup: true,
|
||||
type: 3,
|
||||
banner:
|
||||
"https://tdesign.gtimg.com/tdesign-pro/face-recognition.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"云数据库MySQL为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。"
|
||||
},
|
||||
{
|
||||
index: 6,
|
||||
isSetup: true,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "T-Sec 云防火墙",
|
||||
description:
|
||||
"腾讯安全云防火墙产品,是腾讯云安全团队结合云原生的优势,自主研发的SaaS化防火墙产品,无需客无需客无需客无需客无需客无需客无需客"
|
||||
},
|
||||
{
|
||||
index: 7,
|
||||
isSetup: false,
|
||||
type: 1,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/t-sec.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"腾讯安全云防火墙产品,是腾讯云安全团队结合云原生的优势,自主研发的SaaS化防火墙产品,无需客无需客无需客无需客无需客无需客无需客"
|
||||
},
|
||||
{
|
||||
index: 8,
|
||||
isSetup: true,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/t-sec.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 9,
|
||||
isSetup: false,
|
||||
type: 1,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-server.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"腾讯安全云防火墙产品,是腾讯云安全团队结合云原生的优势,自主研发的SaaS化防火墙产品,无需客无需客无需客无需客无需客无需客无需客"
|
||||
},
|
||||
{
|
||||
index: 10,
|
||||
isSetup: true,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"云数据库MySQL为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。"
|
||||
},
|
||||
{
|
||||
index: 11,
|
||||
isSetup: true,
|
||||
type: 5,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/t-sec.jpg",
|
||||
name: "云数据库",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 12,
|
||||
isSetup: true,
|
||||
type: 2,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/t-sec.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 13,
|
||||
isSetup: true,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-db.jpg",
|
||||
name: "云数据库",
|
||||
description:
|
||||
"腾讯安全云防火墙产品,是腾讯云安全团队结合云原生的优势,自主研发的SaaS化防火墙产品,无需客无需客无需客无需客无需客无需客无需客"
|
||||
},
|
||||
{
|
||||
index: 14,
|
||||
isSetup: false,
|
||||
type: 5,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/t-sec.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、五官定位、人脸搜索、人脸比对、人脸"
|
||||
},
|
||||
{
|
||||
index: 15,
|
||||
isSetup: true,
|
||||
type: 2,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/t-sec.jpg",
|
||||
name: "云数据库",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 16,
|
||||
isSetup: false,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-server.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、五官定位、人脸搜索、人脸比对、人脸"
|
||||
},
|
||||
{
|
||||
index: 17,
|
||||
isSetup: false,
|
||||
type: 5,
|
||||
banner:
|
||||
"https://tdesign.gtimg.com/tdesign-pro/face-recognition.jpg",
|
||||
name: "云数据库",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 18,
|
||||
isSetup: false,
|
||||
type: 4,
|
||||
banner:
|
||||
"https://tdesign.gtimg.com/tdesign-pro/face-recognition.jpg",
|
||||
name: "云数据库",
|
||||
description:
|
||||
"腾讯安全云防火墙产品,是腾讯云安全团队结合云原生的优势,自主研发的SaaS化防火墙产品,无需客无需客无需客无需客无需客无需客无需客"
|
||||
},
|
||||
{
|
||||
index: 19,
|
||||
isSetup: true,
|
||||
type: 2,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 20,
|
||||
isSetup: true,
|
||||
type: 4,
|
||||
banner:
|
||||
"https://tdesign.gtimg.com/tdesign-pro/face-recognition.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 21,
|
||||
isSetup: false,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/t-sec.jpg",
|
||||
name: "云数据库",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 22,
|
||||
isSetup: false,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-db.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 23,
|
||||
isSetup: true,
|
||||
type: 1,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "人脸识别",
|
||||
description:
|
||||
"基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、五官定位、人脸搜索、人脸比对、人脸"
|
||||
},
|
||||
{
|
||||
index: 24,
|
||||
isSetup: true,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "人脸识别",
|
||||
description:
|
||||
"基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、五官定位、人脸搜索、人脸比对、人脸"
|
||||
},
|
||||
{
|
||||
index: 25,
|
||||
isSetup: false,
|
||||
type: 5,
|
||||
banner:
|
||||
"https://tdesign.gtimg.com/tdesign-pro/face-recognition.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 26,
|
||||
isSetup: true,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-server.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 27,
|
||||
isSetup: true,
|
||||
type: 5,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 28,
|
||||
isSetup: false,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "云数据库",
|
||||
description:
|
||||
"基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、五官定位、人脸搜索、人脸比对、人脸"
|
||||
},
|
||||
{
|
||||
index: 29,
|
||||
isSetup: false,
|
||||
type: 5,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-db.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 30,
|
||||
isSetup: true,
|
||||
type: 1,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 31,
|
||||
isSetup: true,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-server.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、五官定位、人脸搜索、人脸比对、人脸"
|
||||
},
|
||||
{
|
||||
index: 32,
|
||||
isSetup: false,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-server.jpg",
|
||||
name: "T-Sec 云防火墙",
|
||||
description:
|
||||
"腾讯安全云防火墙产品,是腾讯云安全团队结合云原生的优势,自主研发的SaaS化防火墙产品,无需客无需客无需客无需客无需客无需客无需客"
|
||||
},
|
||||
{
|
||||
index: 33,
|
||||
isSetup: true,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/t-sec.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"云数据库MySQL为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。"
|
||||
},
|
||||
{
|
||||
index: 34,
|
||||
isSetup: false,
|
||||
type: 2,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"腾讯安全云防火墙产品,是腾讯云安全团队结合云原生的优势,自主研发的SaaS化防火墙产品,无需客无需客无需客无需客无需客无需客无需客"
|
||||
},
|
||||
{
|
||||
index: 35,
|
||||
isSetup: false,
|
||||
type: 1,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-server.jpg",
|
||||
name: "云数据库",
|
||||
description:
|
||||
"基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、五官定位、人脸搜索、人脸比对、人脸"
|
||||
},
|
||||
{
|
||||
index: 36,
|
||||
isSetup: false,
|
||||
type: 4,
|
||||
banner:
|
||||
"https://tdesign.gtimg.com/tdesign-pro/face-recognition.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"腾讯安全云防火墙产品,是腾讯云安全团队结合云原生的优势,自主研发的SaaS化防火墙产品,无需客无需客无需客无需客无需客无需客无需客"
|
||||
},
|
||||
{
|
||||
index: 37,
|
||||
isSetup: true,
|
||||
type: 5,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-server.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"云数据库MySQL为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。"
|
||||
},
|
||||
{
|
||||
index: 38,
|
||||
isSetup: false,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "云数据库",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 39,
|
||||
isSetup: false,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/t-sec.jpg",
|
||||
name: "人脸识别",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 40,
|
||||
isSetup: true,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "CVM",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 41,
|
||||
isSetup: true,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "T-Sec 云防火墙",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 42,
|
||||
isSetup: true,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-server.jpg",
|
||||
name: "T-Sec 云防火墙",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 43,
|
||||
isSetup: false,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-db.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 44,
|
||||
isSetup: true,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/t-sec.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"云硬盘为您提供用于CVM的持久性数据块级存储服务。云硬盘中的数据自动地可用区内以多副本冗"
|
||||
},
|
||||
{
|
||||
index: 45,
|
||||
isSetup: false,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "T-Sec 云防火墙",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 46,
|
||||
isSetup: true,
|
||||
type: 2,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-server.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
},
|
||||
{
|
||||
index: 47,
|
||||
isSetup: false,
|
||||
type: 4,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/cloud-server.jpg",
|
||||
name: "SSL证书",
|
||||
description:
|
||||
"腾讯安全云防火墙产品,是腾讯云安全团队结合云原生的优势,自主研发的SaaS化防火墙产品,无需客无需客无需客无需客无需客无需客无需客"
|
||||
},
|
||||
{
|
||||
index: 48,
|
||||
isSetup: false,
|
||||
type: 3,
|
||||
banner: "https://tdesign.gtimg.com/tdesign-pro/ssl.jpg",
|
||||
name: "T-Sec 云防火墙",
|
||||
description:
|
||||
"SSL证书又叫服务器证书,腾讯云为您提供证书的一站式服务,包括免费、付费证书的申请、管理及部"
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
] as MockMethod[];
|
||||
36
mock/login.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
// 根据角色动态生成路由
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
|
||||
export default [
|
||||
{
|
||||
url: "/login",
|
||||
method: "post",
|
||||
response: ({ body }) => {
|
||||
if (body.username === "admin") {
|
||||
return {
|
||||
success: true,
|
||||
data: {
|
||||
username: "admin",
|
||||
// 一个用户可能有多个角色
|
||||
roles: ["admin"],
|
||||
accessToken: "eyJhbGciOiJIUzUxMiJ9.admin",
|
||||
refreshToken: "eyJhbGciOiJIUzUxMiJ9.adminRefresh",
|
||||
expires: "2023/10/30 00:00:00"
|
||||
}
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: true,
|
||||
data: {
|
||||
username: "common",
|
||||
// 一个用户可能有多个角色
|
||||
roles: ["common"],
|
||||
accessToken: "eyJhbGciOiJIUzUxMiJ9.common",
|
||||
refreshToken: "eyJhbGciOiJIUzUxMiJ9.commonRefresh",
|
||||
expires: "2023/10/30 00:00:00"
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
] as MockMethod[];
|
||||
@@ -29,8 +29,8 @@ export default [
|
||||
method: "get",
|
||||
response: () => {
|
||||
return {
|
||||
code: 0,
|
||||
info: mapList()
|
||||
success: true,
|
||||
data: mapList()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
27
mock/refreshToken.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
|
||||
// 模拟刷新token接口
|
||||
export default [
|
||||
{
|
||||
url: "/refreshToken",
|
||||
method: "post",
|
||||
response: ({ body }) => {
|
||||
if (body.refreshToken) {
|
||||
return {
|
||||
success: true,
|
||||
data: {
|
||||
accessToken: "eyJhbGciOiJIUzUxMiJ9.newAdmin",
|
||||
refreshToken: "eyJhbGciOiJIUzUxMiJ9.newAdminRefresh",
|
||||
// `expires`选择这种日期格式是为了方便调试,后端直接设置时间戳或许更方便(每次都应该递增)。如果后端返回的是时间戳格式,前端开发请来到这个目录`src/utils/auth.ts`,把第`38`行的代码换成expires = data.expires即可。
|
||||
expires: "2023/10/30 23:59:59"
|
||||
}
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
data: {}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
] as MockMethod[];
|
||||
291
mock/system.ts
Normal file
@@ -0,0 +1,291 @@
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
|
||||
export default [
|
||||
// 角色
|
||||
{
|
||||
url: "/role",
|
||||
method: "post",
|
||||
response: () => {
|
||||
return {
|
||||
success: true,
|
||||
data: {
|
||||
list: [
|
||||
{
|
||||
createTime: 1605456000000,
|
||||
updateTime: 1645477701000,
|
||||
creator: "admin",
|
||||
updater: "",
|
||||
deleted: false,
|
||||
tenantId: 1,
|
||||
id: 1,
|
||||
name: "超级管理员",
|
||||
code: "super_admin",
|
||||
sort: 1,
|
||||
status: 0,
|
||||
type: 1,
|
||||
remark: "超级管理员",
|
||||
dataScope: 1,
|
||||
dataScopeDeptIds: null
|
||||
},
|
||||
{
|
||||
createTime: 1605456000000,
|
||||
updateTime: 1645477700000,
|
||||
creator: "admin",
|
||||
updater: "",
|
||||
deleted: false,
|
||||
tenantId: 1,
|
||||
id: 2,
|
||||
name: "普通角色",
|
||||
code: "common",
|
||||
sort: 2,
|
||||
status: 0,
|
||||
type: 1,
|
||||
remark: "普通角色",
|
||||
dataScope: 2,
|
||||
dataScopeDeptIds: null
|
||||
},
|
||||
{
|
||||
createTime: 1605456000000,
|
||||
updateTime: 1647698441000,
|
||||
creator: "",
|
||||
updater: "1",
|
||||
deleted: false,
|
||||
tenantId: 1,
|
||||
id: 101,
|
||||
name: "测试账号",
|
||||
code: "test",
|
||||
sort: 0,
|
||||
status: 0,
|
||||
type: 2,
|
||||
remark: "132",
|
||||
dataScope: 1,
|
||||
dataScopeDeptIds: []
|
||||
}
|
||||
],
|
||||
total: 3
|
||||
}
|
||||
};
|
||||
}
|
||||
},
|
||||
// 部门
|
||||
{
|
||||
url: "/dept",
|
||||
method: "post",
|
||||
response: () => {
|
||||
return {
|
||||
success: true,
|
||||
data: [
|
||||
{
|
||||
name: "杭州总公司",
|
||||
parentId: 0,
|
||||
id: 100,
|
||||
sort: 0,
|
||||
phone: "15888888888",
|
||||
principal: "@cname()",
|
||||
email: "@email",
|
||||
status: 1,
|
||||
type: 1, // 1 公司 2 分公司 3 部门
|
||||
createTime: 1605456000000,
|
||||
remark: "@cparagraph(1, 3)"
|
||||
},
|
||||
{
|
||||
name: "郑州分公司",
|
||||
parentId: 100,
|
||||
id: 101,
|
||||
sort: 1,
|
||||
phone: "15888888888",
|
||||
principal: "@cname()",
|
||||
email: "@email",
|
||||
status: 1,
|
||||
type: 2,
|
||||
createTime: 1605456000000,
|
||||
remark: "@cparagraph(1, 3)"
|
||||
},
|
||||
{
|
||||
name: "研发部门",
|
||||
parentId: 101,
|
||||
id: 103,
|
||||
sort: 1,
|
||||
phone: "15888888888",
|
||||
principal: "@cname()",
|
||||
email: "@email",
|
||||
status: 1,
|
||||
type: 3,
|
||||
createTime: 1605456000000,
|
||||
remark: "@cparagraph(1, 3)"
|
||||
},
|
||||
{
|
||||
name: "市场部门",
|
||||
parentId: 102,
|
||||
id: 108,
|
||||
sort: 1,
|
||||
phone: "15888888888",
|
||||
principal: "@cname()",
|
||||
email: "@email",
|
||||
status: 1,
|
||||
type: 3,
|
||||
createTime: 1605456000000,
|
||||
remark: "@cparagraph(1, 3)"
|
||||
},
|
||||
{
|
||||
name: "深圳分公司",
|
||||
parentId: 100,
|
||||
id: 102,
|
||||
sort: 2,
|
||||
phone: "15888888888",
|
||||
principal: "@cname()",
|
||||
email: "@email",
|
||||
status: 1,
|
||||
type: 2,
|
||||
createTime: 1605456000000,
|
||||
remark: "@cparagraph(1, 3)"
|
||||
},
|
||||
{
|
||||
name: "市场部门",
|
||||
parentId: 101,
|
||||
id: 104,
|
||||
sort: 2,
|
||||
phone: "15888888888",
|
||||
principal: "@cname()",
|
||||
email: "@email",
|
||||
status: 1,
|
||||
type: 3,
|
||||
createTime: 1605456000000,
|
||||
remark: "@cparagraph(1, 3)"
|
||||
},
|
||||
{
|
||||
name: "财务部门",
|
||||
parentId: 102,
|
||||
id: 109,
|
||||
sort: 2,
|
||||
phone: "15888888888",
|
||||
principal: "@cname()",
|
||||
email: "@email",
|
||||
status: 1,
|
||||
type: 3,
|
||||
createTime: 1605456000000,
|
||||
remark: "@cparagraph(1, 3)"
|
||||
},
|
||||
{
|
||||
name: "测试部门",
|
||||
parentId: 101,
|
||||
id: 105,
|
||||
sort: 3,
|
||||
phone: "15888888888",
|
||||
principal: "@cname()",
|
||||
email: "@email",
|
||||
status: 0,
|
||||
type: 3,
|
||||
createTime: 1605456000000,
|
||||
remark: "@cparagraph(1, 3)"
|
||||
},
|
||||
{
|
||||
name: "财务部门",
|
||||
parentId: 101,
|
||||
id: 106,
|
||||
sort: 4,
|
||||
phone: "15888888888",
|
||||
principal: "@cname()",
|
||||
email: "@email",
|
||||
status: 1,
|
||||
type: 3,
|
||||
createTime: 1605456000000,
|
||||
remark: "@cparagraph(1, 3)"
|
||||
},
|
||||
{
|
||||
name: "运维部门",
|
||||
parentId: 101,
|
||||
id: 107,
|
||||
sort: 5,
|
||||
phone: "15888888888",
|
||||
principal: "@cname()",
|
||||
email: "@email",
|
||||
status: 0,
|
||||
type: 3,
|
||||
createTime: 1605456000000,
|
||||
remark: "@cparagraph(1, 3)"
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
},
|
||||
// 用户
|
||||
{
|
||||
url: "/user",
|
||||
method: "post",
|
||||
response: () => {
|
||||
return {
|
||||
success: true,
|
||||
data: {
|
||||
list: [
|
||||
{
|
||||
username: "admin",
|
||||
nickname: "admin",
|
||||
remark: "管理员",
|
||||
deptId: 103,
|
||||
postIds: [1],
|
||||
mobile: "15888888888",
|
||||
sex: 0,
|
||||
id: 1,
|
||||
status: 0,
|
||||
createTime: 1605456000000,
|
||||
dept: {
|
||||
id: 103,
|
||||
name: "研发部门"
|
||||
}
|
||||
},
|
||||
{
|
||||
username: "pure",
|
||||
nickname: "pure",
|
||||
remark: "不要吓我",
|
||||
deptId: 104,
|
||||
postIds: [1],
|
||||
mobile: "15888888888",
|
||||
sex: 0,
|
||||
id: 100,
|
||||
status: 1,
|
||||
createTime: 1605456000000,
|
||||
dept: {
|
||||
id: 104,
|
||||
name: "市场部门"
|
||||
}
|
||||
},
|
||||
{
|
||||
username: "小姐姐",
|
||||
nickname: "girl",
|
||||
remark: null,
|
||||
deptId: 106,
|
||||
postIds: null,
|
||||
mobile: "15888888888",
|
||||
sex: 1,
|
||||
id: 103,
|
||||
status: 1,
|
||||
createTime: 1605456000000,
|
||||
dept: {
|
||||
id: 106,
|
||||
name: "财务部门"
|
||||
}
|
||||
},
|
||||
{
|
||||
username: "小哥哥",
|
||||
nickname: "boy",
|
||||
remark: null,
|
||||
deptId: 107,
|
||||
postIds: [],
|
||||
mobile: "15888888888",
|
||||
sex: 0,
|
||||
id: 104,
|
||||
status: 0,
|
||||
createTime: 1605456000000,
|
||||
dept: {
|
||||
id: 107,
|
||||
name: "运维部门"
|
||||
}
|
||||
}
|
||||
],
|
||||
total: 4
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
] as MockMethod[];
|
||||
214
package.json
@@ -1,24 +1,25 @@
|
||||
{
|
||||
"name": "vue-pure-admin",
|
||||
"version": "2.7.0",
|
||||
"version": "4.1.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"node": ">= 16",
|
||||
"pnpm": ">= 6"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "cross-env --max_old_space_size=4096 vite",
|
||||
"dev": "NODE_OPTIONS=--max-old-space-size=4096 vite",
|
||||
"serve": "pnpm dev",
|
||||
"build": "rimraf dist && cross-env vite build",
|
||||
"build": "rimraf dist && NODE_OPTIONS=--max-old-space-size=8192 vite build",
|
||||
"build:staging": "rimraf dist && vite build --mode staging",
|
||||
"report": "rimraf dist && vite build",
|
||||
"preview": "vite preview",
|
||||
"preview:build": "pnpm build && vite preview",
|
||||
"typecheck": "tsc --noEmit && vue-tsc --noEmit --skipLibCheck",
|
||||
"svgo": "svgo -f src/assets/svg -o src/assets/svg",
|
||||
"cloc": "NODE_OPTIONS=--max-old-space-size=4096 cloc . --exclude-dir=node_modules --exclude-lang=YAML",
|
||||
"clean:cache": "rm -rf node_modules && rm -rf .eslintcache && pnpm install",
|
||||
"lint:eslint": "eslint --cache --max-warnings 0 \"{src,mock}/**/*.{vue,ts,tsx}\" --fix",
|
||||
"lint:prettier": "prettier --write \"src/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"",
|
||||
"lint:stylelint": "stylelint --cache --fix \"**/*.{vue,css,scss,postcss,less}\" --cache --cache-location node_modules/.cache/stylelint/",
|
||||
"lint:eslint": "eslint --cache --max-warnings 0 \"{src,mock,build}/**/*.{vue,js,ts,tsx}\" --fix",
|
||||
"lint:prettier": "prettier --write \"src/**/*.{js,ts,json,tsx,css,scss,vue,html,md}\"",
|
||||
"lint:stylelint": "stylelint --cache --fix \"**/*.{html,vue,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
|
||||
"lint:lint-staged": "lint-staged -c ./.husky/lintstagedrc.js",
|
||||
"lint:pretty": "pretty-quick --staged",
|
||||
"lint": "pnpm lint:eslint && pnpm lint:prettier && pnpm lint:stylelint && pnpm lint:pretty",
|
||||
"lint": "pnpm lint:eslint && pnpm lint:prettier && pnpm lint:stylelint",
|
||||
"prepare": "husky install",
|
||||
"preinstall": "npx only-allow pnpm"
|
||||
},
|
||||
@@ -29,98 +30,133 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@amap/amap-jsapi-loader": "^1.0.1",
|
||||
"@element-plus/icons-vue": "^0.2.4",
|
||||
"@fortawesome/fontawesome-svg-core": "^1.2.36",
|
||||
"@fortawesome/free-solid-svg-icons": "^5.15.4",
|
||||
"@fortawesome/vue-fontawesome": "^3.0.0-5",
|
||||
"@logicflow/core": "0.7.1",
|
||||
"@logicflow/extension": "0.7.1",
|
||||
"@vueuse/core": "^6.7.1",
|
||||
"@vueuse/motion": "^2.0.0-beta.4",
|
||||
"@howdyjs/mouse-menu": "^2.0.7",
|
||||
"@logicflow/core": "^1.2.5",
|
||||
"@logicflow/extension": "^1.2.5",
|
||||
"@pureadmin/descriptions": "^1.1.1",
|
||||
"@pureadmin/table": "^2.1.0",
|
||||
"@pureadmin/utils": "^1.8.9",
|
||||
"@vueuse/core": "^10.1.2",
|
||||
"@vueuse/motion": "2.0.0-beta.12",
|
||||
"@wangeditor/editor": "^5.1.21",
|
||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||
"animate.css": "^4.1.1",
|
||||
"await-to-js": "^3.0.0",
|
||||
"axios": "^0.21.1",
|
||||
"cropperjs": "^1.5.11",
|
||||
"dayjs": "^1.10.7",
|
||||
"echarts": "^5.2.1",
|
||||
"element-plus": "1.2.0-beta.6",
|
||||
"element-resize-detector": "^1.2.3",
|
||||
"font-awesome": "^4.7.0",
|
||||
"js-cookie": "^3.0.1",
|
||||
"lodash-es": "^4.17.21",
|
||||
"lowdb": "^3.0.0",
|
||||
"axios": "^1.4.0",
|
||||
"china-area-data": "^5.0.1",
|
||||
"cropperjs": "^1.5.13",
|
||||
"dayjs": "^1.11.7",
|
||||
"echarts": "^5.4.2",
|
||||
"el-table-infinite-scroll": "^3.0.1",
|
||||
"element-plus": "^2.3.4",
|
||||
"element-resize-detector": "^1.2.4",
|
||||
"intro.js": "^7.0.1",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jsbarcode": "^3.11.5",
|
||||
"md-editor-v3": "2.7.2",
|
||||
"mitt": "^3.0.0",
|
||||
"mockjs": "^1.1.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"path": "^0.12.7",
|
||||
"path-to-regexp": "^6.2.0",
|
||||
"pinia": "^2.0.0-rc.14",
|
||||
"qs": "^6.10.1",
|
||||
"remixicon": "^2.5.0",
|
||||
"resize-observer-polyfill": "^1.5.1",
|
||||
"responsive-storage": "^1.0.11",
|
||||
"sortablejs": "1.13.0",
|
||||
"typescript-cookie": "^1.0.0",
|
||||
"pinia": "^2.0.36",
|
||||
"qrcode": "^1.5.3",
|
||||
"qs": "^6.11.1",
|
||||
"responsive-storage": "^2.2.0",
|
||||
"sortablejs": "^1.15.0",
|
||||
"swiper": "^9.3.0",
|
||||
"typeit": "^8.7.1",
|
||||
"v-contextmenu": "3.0.0",
|
||||
"vue": "^3.2.24",
|
||||
"vue-i18n": "^9.2.0-beta.3",
|
||||
"vue-json-pretty": "^2.0.2",
|
||||
"vue-router": "^4.0.12",
|
||||
"vue-types": "^4.1.0",
|
||||
"vuedraggable": "4.1.0",
|
||||
"vxe-table": "4.0.30",
|
||||
"wangeditor": "^4.7.9",
|
||||
"xe-ajax": "4.0.5",
|
||||
"xe-utils": "3.4.0",
|
||||
"xgplayer": "2.28.0"
|
||||
"vue": "^3.3.1",
|
||||
"vue-i18n": "^9.2.2",
|
||||
"vue-json-pretty": "^2.2.4",
|
||||
"vue-pdf-embed": "^1.1.6",
|
||||
"vue-router": "^4.1.6",
|
||||
"vue-types": "^5.0.2",
|
||||
"vue-virtual-scroller": "2.0.0-beta.7",
|
||||
"vue3-danmaku": "1.4.0-beta.1",
|
||||
"vuedraggable": "^4.1.0",
|
||||
"xgplayer": "^3.0.2",
|
||||
"xlsx": "^0.18.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "13.1.0",
|
||||
"@commitlint/config-conventional": "13.1.0",
|
||||
"@commitlint/cli": "^17.6.3",
|
||||
"@commitlint/config-conventional": "^17.6.3",
|
||||
"@iconify-icons/ep": "^1.2.11",
|
||||
"@iconify-icons/ri": "^1.2.7",
|
||||
"@iconify/vue": "^4.1.1",
|
||||
"@intlify/unplugin-vue-i18n": "^0.10.0",
|
||||
"@pureadmin/theme": "^3.0.0",
|
||||
"@types/element-resize-detector": "1.1.3",
|
||||
"@types/js-cookie": "^3.0.1",
|
||||
"@types/mockjs": "1.0.3",
|
||||
"@types/node": "14.14.14",
|
||||
"@types/intro.js": "^5.1.1",
|
||||
"@types/js-cookie": "^3.0.3",
|
||||
"@types/mockjs": "^1.0.7",
|
||||
"@types/node": "^18.15.12",
|
||||
"@types/nprogress": "0.2.0",
|
||||
"@types/qrcode": "^1.5.0",
|
||||
"@types/qs": "^6.9.7",
|
||||
"@typescript-eslint/eslint-plugin": "4.31.0",
|
||||
"@typescript-eslint/parser": "4.31.0",
|
||||
"@vitejs/plugin-legacy": "^1.6.4",
|
||||
"@vitejs/plugin-vue": "^1.10.2",
|
||||
"@vitejs/plugin-vue-jsx": "^1.3.1",
|
||||
"@vue/compiler-sfc": "^3.2.24",
|
||||
"@vue/eslint-config-prettier": "6.0.0",
|
||||
"@vue/eslint-config-typescript": "7.0.0",
|
||||
"@zougt/vite-plugin-theme-preprocessor": "^1.4.0",
|
||||
"autoprefixer": "10.2.4",
|
||||
"babel-plugin-transform-remove-console": "6.9.4",
|
||||
"chalk": "2.4.2",
|
||||
"cross-env": "7.0.3",
|
||||
"eslint": "7.30.0",
|
||||
"eslint-plugin-prettier": "3.4.0",
|
||||
"eslint-plugin-vue": "7.17.0",
|
||||
"husky": "7.0.2",
|
||||
"lint-staged": "11.1.2",
|
||||
"postcss": "8.2.6",
|
||||
"postcss-import": "14.0.0",
|
||||
"prettier": "2.3.2",
|
||||
"@types/sortablejs": "^1.15.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5.59.5",
|
||||
"@typescript-eslint/parser": "^5.59.5",
|
||||
"@vitejs/plugin-vue": "^4.2.2",
|
||||
"@vitejs/plugin-vue-jsx": "^3.0.1",
|
||||
"@vue/eslint-config-prettier": "^7.1.0",
|
||||
"@vue/eslint-config-typescript": "^11.0.3",
|
||||
"autoprefixer": "^10.4.14",
|
||||
"cloc": "^2.11.0",
|
||||
"cssnano": "^6.0.1",
|
||||
"eslint": "^8.40.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-vue": "^9.12.0",
|
||||
"husky": "^8.0.3",
|
||||
"lint-staged": "^13.2.2",
|
||||
"picocolors": "^1.0.0",
|
||||
"postcss": "^8.4.23",
|
||||
"postcss-html": "^1.5.0",
|
||||
"postcss-import": "^15.1.0",
|
||||
"postcss-scss": "^4.0.6",
|
||||
"prettier": "^2.8.7",
|
||||
"pretty-quick": "3.1.1",
|
||||
"rimraf": "3.0.2",
|
||||
"sass": "^1.45.0",
|
||||
"sass-loader": "^12.3.0",
|
||||
"stylelint": "13.13.1",
|
||||
"stylelint-config-prettier": "8.0.2",
|
||||
"stylelint-config-standard": "22.0.0",
|
||||
"stylelint-order": "4.1.0",
|
||||
"typescript": "4.4.2",
|
||||
"unplugin-element-plus": "^0.1.3",
|
||||
"vite": "2.6.14",
|
||||
"rimraf": "^5.0.0",
|
||||
"rollup-plugin-visualizer": "^5.9.0",
|
||||
"sass": "^1.62.1",
|
||||
"sass-loader": "^13.2.2",
|
||||
"stylelint": "^15.6.1",
|
||||
"stylelint-config-html": "^1.1.0",
|
||||
"stylelint-config-recess-order": "^4.0.0",
|
||||
"stylelint-config-recommended": "^12.0.0",
|
||||
"stylelint-config-recommended-scss": "^11.0.0",
|
||||
"stylelint-config-recommended-vue": "^1.4.0",
|
||||
"stylelint-config-standard": "^33.0.0",
|
||||
"stylelint-config-standard-scss": "^9.0.0",
|
||||
"stylelint-order": "^6.0.3",
|
||||
"stylelint-prettier": "^3.0.0",
|
||||
"stylelint-scss": "^5.0.0",
|
||||
"svgo": "^3.0.2",
|
||||
"tailwindcss": "^3.3.2",
|
||||
"terser": "^5.17.1",
|
||||
"typescript": "^5.0.4",
|
||||
"vite": "^4.3.5",
|
||||
"vite-plugin-cdn-import": "^0.3.5",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vite-plugin-mock": "^2.9.6",
|
||||
"vite-plugin-style-import": "^1.2.1",
|
||||
"vite-svg-loader": "^2.2.0",
|
||||
"vue-eslint-parser": "7.10.0"
|
||||
"vite-plugin-remove-console": "^2.1.1",
|
||||
"vite-svg-loader": "^4.0.0",
|
||||
"vue-eslint-parser": "^9.2.1",
|
||||
"vue-tsc": "^1.6.4"
|
||||
},
|
||||
"repository": "git@github.com:xiaoxian521/vue-pure-admin.git",
|
||||
"pnpm": {
|
||||
"peerDependencyRules": {
|
||||
"ignoreMissing": [
|
||||
"rollup",
|
||||
"webpack",
|
||||
"core-js"
|
||||
]
|
||||
},
|
||||
"allowedDeprecatedVersions": {
|
||||
"sourcemap-codec": "*",
|
||||
"stable": "*"
|
||||
}
|
||||
},
|
||||
"repository": "git@github.com:pure-admin/vue-pure-admin.git",
|
||||
"author": "xiaoxian521",
|
||||
"license": "MIT"
|
||||
}
|
||||
|
||||
10375
pnpm-lock.yaml
generated
@@ -1,3 +1,9 @@
|
||||
module.exports = {
|
||||
plugins: [require("autoprefixer"), require("postcss-import")]
|
||||
plugins: {
|
||||
"postcss-import": {},
|
||||
"tailwindcss/nesting": {},
|
||||
tailwindcss: {},
|
||||
autoprefixer: {},
|
||||
...(process.env.NODE_ENV === "production" ? { cssnano: {} } : {})
|
||||
}
|
||||
};
|
||||
|
||||
@@ -95,7 +95,6 @@
|
||||
|
||||
.c:active {
|
||||
transform: translate(0px, 4px);
|
||||
-webkit-transform: translate(0px, 4px);
|
||||
box-shadow: 0px 1px 0px 0px #3486d5;
|
||||
}
|
||||
|
||||
@@ -223,8 +222,6 @@
|
||||
}
|
||||
|
||||
input[type="checkbox"].toggle {
|
||||
-moz-appearance: none;
|
||||
-webkit-appearance: none;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
@@ -299,36 +296,6 @@
|
||||
animation: anim-out-pseudo 0.75s;
|
||||
}
|
||||
|
||||
@-webkit-keyframes anim-in {
|
||||
0% {
|
||||
width: 0%;
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes anim-in {
|
||||
0% {
|
||||
width: 0%;
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@-ms-keyframes anim-in {
|
||||
0% {
|
||||
width: 0%;
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes anim-in {
|
||||
0% {
|
||||
width: 0%;
|
||||
@@ -339,36 +306,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes anim-in-pseudo {
|
||||
0% {
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
100% {
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes anim-in-pseudo {
|
||||
0% {
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
100% {
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
@-ms-keyframes anim-in-pseudo {
|
||||
0% {
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
100% {
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes anim-in-pseudo {
|
||||
0% {
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
@@ -379,36 +316,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes anim-out {
|
||||
0% {
|
||||
width: 0%;
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes anim-out {
|
||||
0% {
|
||||
width: 0%;
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@-ms-keyframes anim-out {
|
||||
0% {
|
||||
width: 0%;
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes anim-out {
|
||||
0% {
|
||||
width: 0%;
|
||||
@@ -419,36 +326,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes anim-out-pseudo {
|
||||
0% {
|
||||
background: rgba(0, 0, 0, 0.35);
|
||||
}
|
||||
|
||||
100% {
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes anim-out-pseudo {
|
||||
0% {
|
||||
background: rgba(0, 0, 0, 0.35);
|
||||
}
|
||||
|
||||
100% {
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
@-ms-keyframes anim-out-pseudo {
|
||||
0% {
|
||||
background: rgba(0, 0, 0, 0.35);
|
||||
}
|
||||
|
||||
100% {
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes anim-out-pseudo {
|
||||
0% {
|
||||
background: rgba(0, 0, 0, 0.35);
|
||||
@@ -515,9 +392,6 @@
|
||||
|
||||
.php,
|
||||
.php::after {
|
||||
-webkit-transition: all 0.5s;
|
||||
-moz-transition: all 0.5s;
|
||||
-o-transition: all 0.5s;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
@font-face {
|
||||
font-family: "iconfont"; /* project id 1098500 */
|
||||
src: url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.eot");
|
||||
src: url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.eot?#iefix")
|
||||
format("embedded-opentype"),
|
||||
url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.woff2") format("woff2"),
|
||||
url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.woff") format("woff"),
|
||||
url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.ttf") format("truetype"),
|
||||
url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.svg#iconfont") format("svg");
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
font-family: "iconfont" !important;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
1
public/logo.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" class="icon" viewBox="0 0 1024 1024"><path fill="#386BF3" d="M410.558.109c0 210.974-300.876 361.752-300.876 633.548 0 174.943 134.704 316.787 300.876 316.787s300.877-141.817 300.877-316.787C711.408 361.752 410.558 210.974 410.558.109z"/><path fill="#C3D2FB" d="M613.469 73.665c0 211.055-300.877 361.914-300.877 633.547C312.592 882.156 447.296 1024 613.47 1024s300.876-141.817 300.876-316.788C914.29 435.58 613.469 284.72 613.469 73.665z"/><path fill="#303F5B" d="M312.592 707.212c0-183.713 137.636-312.171 226.723-441.39 81.702 106.112 172.12 218.74 172.12 367.726A309.755 309.755 0 0 1 420.36 950.064a323.114 323.114 0 0 1-107.769-242.852z"/></svg>
|
||||
|
After Width: | Height: | Size: 712 B |
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Version": "2.7.0",
|
||||
"Version": "4.1.0",
|
||||
"Title": "PureAdmin",
|
||||
"FixedHeader": true,
|
||||
"HiddenSideBar": false,
|
||||
@@ -8,9 +8,18 @@
|
||||
"Locale": "zh",
|
||||
"Layout": "vertical",
|
||||
"Theme": "default",
|
||||
"DarkMode": false,
|
||||
"Grey": false,
|
||||
"Weak": false,
|
||||
"HideTabs": false,
|
||||
"SidebarStatus": true,
|
||||
"EpThemeColor": "#409EFF",
|
||||
"ShowLogo": true,
|
||||
"ShowModel": "smart",
|
||||
"MenuArrowIconNoTransition": true,
|
||||
"CachingAsyncRoutes": false,
|
||||
"TooltipEffect": "light",
|
||||
"ResponsiveStorageNameSpace": "responsive-",
|
||||
"MapConfigure": {
|
||||
"amapKey": "97b3248d1553172e81f168cf94ea667e",
|
||||
"options": {
|
||||
|
||||
2607
public/sortable.min.js
vendored
10
src/App.vue
@@ -1,22 +1,26 @@
|
||||
<template>
|
||||
<el-config-provider :locale="currentLocale">
|
||||
<router-view />
|
||||
<ReDialog />
|
||||
</el-config-provider>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent } from "vue";
|
||||
import { ElConfigProvider } from "element-plus";
|
||||
import zhCn from "element-plus/lib/locale/lang/zh-cn";
|
||||
import en from "element-plus/lib/locale/lang/en";
|
||||
export default {
|
||||
import { ReDialog } from "@/components/ReDialog";
|
||||
export default defineComponent({
|
||||
name: "app",
|
||||
components: {
|
||||
[ElConfigProvider.name]: ElConfigProvider
|
||||
[ElConfigProvider.name]: ElConfigProvider,
|
||||
ReDialog
|
||||
},
|
||||
computed: {
|
||||
currentLocale() {
|
||||
return this.$storage.locale?.locale === "zh" ? zhCn : en;
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
</script>
|
||||
|
||||
14
src/api/list.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { http } from "@/utils/http";
|
||||
|
||||
type Result = {
|
||||
success: boolean;
|
||||
data?: {
|
||||
/** 列表数据 */
|
||||
list: Array<any>;
|
||||
};
|
||||
};
|
||||
|
||||
/** 卡片列表 */
|
||||
export const getCardList = (data?: object) => {
|
||||
return http.request<Result>("post", "/getCardList", { data });
|
||||
};
|
||||
@@ -1,11 +1,11 @@
|
||||
import { http } from "../utils/http";
|
||||
import { http } from "@/utils/http";
|
||||
|
||||
// 地图数据
|
||||
type Result = {
|
||||
success: boolean;
|
||||
data: Array<any>;
|
||||
};
|
||||
|
||||
/** 地图数据 */
|
||||
export const mapJson = (params?: object) => {
|
||||
return http.request("get", "/getMapInfo", { params });
|
||||
};
|
||||
|
||||
// echarts数据
|
||||
export const echartsJson = (params?: object) => {
|
||||
return http.request("get", "/getEchartsInfo", { params });
|
||||
return http.request<Result>("get", "/getMapInfo", { params });
|
||||
};
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import { http } from "../utils/http";
|
||||
import { http } from "@/utils/http";
|
||||
|
||||
export const getAsyncRoutes = (params?: object) => {
|
||||
return http.request("get", "/getAsyncRoutes", { params });
|
||||
type Result = {
|
||||
success: boolean;
|
||||
data: Array<any>;
|
||||
};
|
||||
|
||||
export const getAsyncRoutes = () => {
|
||||
return http.request<Result>("get", "/getAsyncRoutes");
|
||||
};
|
||||
|
||||
31
src/api/system.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { http } from "@/utils/http";
|
||||
|
||||
type Result = {
|
||||
success: boolean;
|
||||
data?: {
|
||||
/** 列表数据 */
|
||||
list: Array<any>;
|
||||
/** 总数 */
|
||||
total?: number;
|
||||
};
|
||||
};
|
||||
|
||||
type ResultDept = {
|
||||
success: boolean;
|
||||
data?: Array<any>;
|
||||
};
|
||||
|
||||
/** 获取用户管理列表 */
|
||||
export const getUserList = (data?: object) => {
|
||||
return http.request<Result>("post", "/user", { data });
|
||||
};
|
||||
|
||||
/** 获取角色管理列表 */
|
||||
export const getRoleList = (data?: object) => {
|
||||
return http.request<Result>("post", "/role", { data });
|
||||
};
|
||||
|
||||
/** 获取部门管理列表 */
|
||||
export const getDeptList = (data?: object) => {
|
||||
return http.request<ResultDept>("post", "/dept", { data });
|
||||
};
|
||||
@@ -1,26 +1,39 @@
|
||||
import { http } from "../utils/http";
|
||||
import { http } from "@/utils/http";
|
||||
|
||||
interface userType extends Promise<any> {
|
||||
svg?: string;
|
||||
code?: number;
|
||||
info?: object;
|
||||
}
|
||||
|
||||
// 获取验证码
|
||||
export const getVerify = (): userType => {
|
||||
return http.request("get", "/captcha");
|
||||
export type UserResult = {
|
||||
success: boolean;
|
||||
data: {
|
||||
/** 用户名 */
|
||||
username: string;
|
||||
/** 当前登陆用户的角色 */
|
||||
roles: Array<string>;
|
||||
/** `token` */
|
||||
accessToken: string;
|
||||
/** 用于调用刷新`accessToken`的接口时所需的`token` */
|
||||
refreshToken: string;
|
||||
/** `accessToken`的过期时间(格式'xxxx/xx/xx xx:xx:xx') */
|
||||
expires: Date;
|
||||
};
|
||||
};
|
||||
|
||||
// 登录
|
||||
export const getLogin = (data: object) => {
|
||||
return http.request("post", "/login", { data });
|
||||
export type RefreshTokenResult = {
|
||||
success: boolean;
|
||||
data: {
|
||||
/** `token` */
|
||||
accessToken: string;
|
||||
/** 用于调用刷新`accessToken`的接口时所需的`token` */
|
||||
refreshToken: string;
|
||||
/** `accessToken`的过期时间(格式'xxxx/xx/xx xx:xx:xx') */
|
||||
expires: Date;
|
||||
};
|
||||
};
|
||||
|
||||
// 刷新token
|
||||
export const refreshToken = (data: object) => {
|
||||
return http.request("post", "/refreshToken", { data });
|
||||
/** 登录 */
|
||||
export const getLogin = (data?: object) => {
|
||||
return http.request<UserResult>("post", "/login", { data });
|
||||
};
|
||||
|
||||
// export const searchVague = (data: object) => {
|
||||
// return http.request("post", "/searchVague", { data });
|
||||
// };
|
||||
/** 刷新token */
|
||||
export const refreshTokenApi = (data?: object) => {
|
||||
return http.request<RefreshTokenResult>("post", "/refreshToken", { data });
|
||||
};
|
||||
|
||||
|
Before Width: | Height: | Size: 680 KiB |
|
Before Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 23 KiB |
@@ -1,8 +1,8 @@
|
||||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 2208059 */
|
||||
src: url("iconfont.woff2?t=1638023560828") format("woff2"),
|
||||
url("iconfont.woff?t=1638023560828") format("woff"),
|
||||
url("iconfont.ttf?t=1638023560828") format("truetype");
|
||||
src: url("iconfont.woff2?t=1671895108120") format("woff2"),
|
||||
url("iconfont.woff?t=1671895108120") format("woff"),
|
||||
url("iconfont.ttf?t=1671895108120") format("truetype");
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
@@ -13,26 +13,14 @@
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.team-icontabs::before {
|
||||
.pure-iconfont-tabs:before {
|
||||
content: "\e63e";
|
||||
}
|
||||
|
||||
.team-iconlogo::before {
|
||||
.pure-iconfont-logo:before {
|
||||
content: "\e620";
|
||||
}
|
||||
|
||||
.team-iconxinpin::before {
|
||||
content: "\e614";
|
||||
}
|
||||
|
||||
.team-iconxinpinrenqiwang::before {
|
||||
.pure-iconfont-new:before {
|
||||
content: "\e615";
|
||||
}
|
||||
|
||||
.team-iconexit-fullscreen::before {
|
||||
content: "\e62a";
|
||||
}
|
||||
|
||||
.team-iconfullscreen::before {
|
||||
content: "\e62b";
|
||||
}
|
||||
|
||||
@@ -2,50 +2,29 @@
|
||||
"id": "2208059",
|
||||
"name": "pure-admin",
|
||||
"font_family": "iconfont",
|
||||
"css_prefix_text": "team-icon",
|
||||
"description": "pure-admin",
|
||||
"css_prefix_text": "pure-iconfont-",
|
||||
"description": "pure-admin-iconfont",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "20594647",
|
||||
"name": "标签页",
|
||||
"name": "Tabs",
|
||||
"font_class": "tabs",
|
||||
"unicode": "e63e",
|
||||
"unicode_decimal": 58942
|
||||
},
|
||||
{
|
||||
"icon_id": "22129506",
|
||||
"name": "水能",
|
||||
"name": "PureLogo",
|
||||
"font_class": "logo",
|
||||
"unicode": "e620",
|
||||
"unicode_decimal": 58912
|
||||
},
|
||||
{
|
||||
"icon_id": "7795613",
|
||||
"name": "新品",
|
||||
"font_class": "xinpin",
|
||||
"unicode": "e614",
|
||||
"unicode_decimal": 58900
|
||||
},
|
||||
{
|
||||
"icon_id": "7795615",
|
||||
"name": "新品人气王",
|
||||
"font_class": "xinpinrenqiwang",
|
||||
"name": "New",
|
||||
"font_class": "new",
|
||||
"unicode": "e615",
|
||||
"unicode_decimal": 58901
|
||||
},
|
||||
{
|
||||
"icon_id": "5698509",
|
||||
"name": "全屏缩小",
|
||||
"font_class": "exit-fullscreen",
|
||||
"unicode": "e62a",
|
||||
"unicode_decimal": 58922
|
||||
},
|
||||
{
|
||||
"icon_id": "5698510",
|
||||
"name": "全屏显示",
|
||||
"font_class": "fullscreen",
|
||||
"unicode": "e62b",
|
||||
"unicode_decimal": 58923
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
<svg t="1636193306629" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1847" width="32" height="32"><path d="M410.558481 0.10861C410.558481 211.083075 109.682285 361.860579 109.682285 633.656511c0 174.943176 134.703259 316.787527 300.876196 316.787527s300.876197-141.817198 300.876197-316.787527C711.407525 361.751969 410.558481 210.974465 410.558481 0.10861z" fill="#386BF3" p-id="1848"></path><path d="M613.468671 73.664572c0 211.055922-300.876197 361.914883-300.876196 633.547901 0 174.943176 134.703259 316.787527 300.876196 316.787527s300.876197-141.817198 300.876197-316.787527c-0.054305-271.633018-300.876197-422.491979-300.876197-633.547901z" fill="#C3D2FB" p-id="1849"></path><path d="M312.592475 707.212473c0-183.713414 137.635722-312.171612 226.72288-441.390078 81.701694 106.111739 172.119322 218.740063 172.119323 367.725506a309.755045 309.755045 0 0 1-291.074166 316.516003 323.114046 323.114046 0 0 1-107.768037-242.851431z" fill="#303F5B" p-id="1850"></path></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" class="icon" viewBox="0 0 1024 1024"><path fill="#386BF3" d="M410.558.109c0 210.974-300.876 361.752-300.876 633.548 0 174.943 134.704 316.787 300.876 316.787s300.877-141.817 300.877-316.787C711.408 361.752 410.558 210.974 410.558.109z"/><path fill="#C3D2FB" d="M613.469 73.665c0 211.055-300.877 361.914-300.877 633.547C312.592 882.156 447.296 1024 613.47 1024s300.876-141.817 300.876-316.788C914.29 435.58 613.469 284.72 613.469 73.665z"/><path fill="#303F5B" d="M312.592 707.212c0-183.713 137.636-312.171 226.723-441.39 81.702 106.112 172.12 218.74 172.12 367.726A309.755 309.755 0 0 1 420.36 950.064a323.114 323.114 0 0 1-107.769-242.852z"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 712 B |
1
src/assets/login/illustration.svg
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 17 KiB |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width="500" height="380" viewBox="0 0 896 529.1129" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M832.06729,623.22778s-26.37759,9.89441-38.806,32.94348S787.06,706.69574,787.06,706.69574s26.37759-9.89447,38.806-32.94348S832.06729,623.22778,832.06729,623.22778Z" transform="translate(-158 -185.8871)" fill="#3f3d56"/><path d="M867.5,657.59637s-8.64182,26.814-31.0802,40.31373-50.17651,8.57293-50.17651,8.57293,8.64175-26.81408,31.08017-40.31378S867.5,657.59637,867.5,657.59637Z" transform="translate(-158 -185.8871)" fill="#5392f0"/><rect y="527.1129" width="896" height="2" fill="#2f2e41"/><path d="M519.87238,620.97461a95.44448,95.44448,0,0,1-35.748-14.44629L485.306,604.915a93.36283,93.36283,0,0,0,34.999,14.10547c18.93164,3.40137,47.26075,1.73144,74.707-25.52735,53.41358-53.04785,104.39307-58.39062,104.90186-58.43847l.18652,1.99219c-.50146.04687-50.76806,5.31738-103.67822,57.86621-21.61328,21.46386-43.792,27.40234-61.71777,27.40234A83.49962,83.49962,0,0,1,519.87238,620.97461Z" transform="translate(-158 -185.8871)" fill="#2f2e41"/><circle cx="515.15271" cy="381.1129" r="12" fill="#2f2e41"/><circle cx="430.15271" cy="437.1129" r="12" fill="#2f2e41"/><path d="M841.5,714s-17.46191-5.41315-52.26129-10.84192L790,692.5c6-60-34-150-34-150a401.561,401.561,0,0,1,21.4693,139.0246C772.13214,672.2124,761.82056,662.16638,742,656c0,0,25.77765,22.106,33.15918,45.10175a997.84042,997.84042,0,0,0-102.02258-8.21589L682,672.5l-17,17s-7-51-22-53l11,50s-13-10-16-9l7.39746,14.79486c-49.819-.51654-109.08453,1.7356-177.76581,8.95227L476,682l-17,17s-7-51-22-53l11,50s-13-10-16-9l8.64288,17.28583Q406.9763,708.2897,370.5,714Z" transform="translate(-158 -185.8871)" fill="#3f3d56"/><path d="M565.64813,230.37817c-10.89964,11.74783,17.59745,40.25959,17.59745,40.25959s-57.70662,9.73051-53.12783,9.14083,2.20622-49.13151,2.20622-49.13151S576.54777,218.63035,565.64813,230.37817Z" transform="translate(-158 -185.8871)" fill="#a0616a"/><path d="M605.81236,356.10945l-50.139,25.6141-27.22969,15.6059s-32.09862,40.43116-38.08709,64.39234,25.92963,68.247,29.54371,72.82286a54.36088,54.36088,0,0,1,4.98908,7.42355c1.24727,1.85589,12.02944-.541,23.80342-3.06554S547.13,518.93875,547.13,518.93875s-15.02732-38.39505-16.14686-39.25912c-1.04554-.807-4.60093-7.44631-2.04309-10.35234a25.94993,25.94993,0,0,0,5.44489-8.89825,30.09064,30.09064,0,0,1,4.18709-7.94151s45.361-36.83645,59.52776-49.37835,51.82952-4.65839,51.82952-4.65839-17.78167,68.20027-22.22979,72.80616-4.929,8.70085-2.91535,16.50759,28.28157.39078,28.28157.39078L662.766,461.6996s15.74879-34.2925,24.29946-69.67451c4.27533-17.691-3.88828-28.23462-13.12073-34.35549a41.39094,41.39094,0,0,0-30.02983-5.97766l-46.34848,8.1308,32.14706-13.84923Z" transform="translate(-158 -185.8871)" fill="#2f2e41"/><path d="M420.87777,290.19133,361.02366,271.685s-24.179-31.16689-12.78824-36.6669,25.65172,26.94419,25.65172,26.94419l41.686,2.69751Z" transform="translate(-158 -185.8871)" fill="#a0616a"/><path d="M672.49431,257.78673l53.2121-33.06768s15.49333-36.27612,3.0807-38.71059-17.98787,32.56435-17.98787,32.56435l-39.64232,13.17143Z" transform="translate(-158 -185.8871)" fill="#a0616a"/><path d="M682.45318,220.40023l1.01427,39.19147-89.68779,16.025c13.19231,28.22441,9.84118,60.34675,43.04725,74.4259L524.9027,404.78717c4.9871-43.03806-15.81748-75.456-35.263-115.75876-23.68547-8.58589-51.19594-2.29078-80.33649,10.34619l-5.237-40.66416,123.87841-8.896,20.34848,7.77932,21.81842-9.17677C602.17891,238.88953,648.22076,220.77584,682.45318,220.40023Z" transform="translate(-158 -185.8871)" fill="#5392f0"/><path d="M626.64006,486.51727c-2.72,2.36681-5.25213,21.84984-5.34982,28.92023s9.21178,8.89624,14.29855,9.2494,4.47816,3.45631,7.83678,6.04854,14.39625,2.179,28.89019-2.71238-9.75274-20.92568-11.86409-21.662-11-22.78156-11-22.78156S629.36,484.15046,626.64006,486.51727Z" transform="translate(-158 -185.8871)" fill="#2f2e41"/><path d="M547.368,531.00717c3.23089,1.60043,10.61681,19.80614,12.50274,26.62107s-6.65716,10.93994-11.48848,12.5704-3.45631,4.47816-6.04855,7.83678-13.3744,5.75546-28.63472,4.696,4.13258-22.71391,5.98847-23.96118,4.86893-24.82526,4.86893-24.82526S544.13715,529.40674,547.368,531.00717Z" transform="translate(-158 -185.8871)" fill="#2f2e41"/><circle cx="389.47074" cy="35.42904" r="23.99585" fill="#a0616a"/><path d="M519.73448,218.90923a22.82668,22.82668,0,0,1-.83378-18.59281c2.35891-5.8153,7.59174-11.65569,18.87309-13.4,24.61387-3.80572,37.71267,13.43543,37.02452,19.07449s-3.99294,19.27051-3.99294,19.27051,1.47587-12.90619-4.85883-13.362-30.90178-2.37835-37.12217,4.145a14.23268,14.23268,0,0,0-3.71042,13.82977Z" transform="translate(-158 -185.8871)" fill="#2f2e41"/></svg>
|
||||
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 11 KiB |
1
src/assets/status/403.svg
Normal file
|
After Width: | Height: | Size: 10 KiB |
1
src/assets/status/404.svg
Normal file
|
After Width: | Height: | Size: 11 KiB |
1
src/assets/status/500.svg
Normal file
|
After Width: | Height: | Size: 13 KiB |
1
src/assets/svg/back.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="32" height="32" viewBox="0 0 48 48"><path fill="#2F88FF" fill-rule="evenodd" stroke="#000" stroke-linejoin="round" stroke-width="4" d="M44 40.836c-4.893-5.973-9.238-9.362-13.036-10.168-3.797-.805-7.412-.927-10.846-.365V41L4 23.545 20.118 7v10.167c6.349.05 11.746 2.328 16.192 6.833 4.445 4.505 7.009 10.117 7.69 16.836Z" clip-rule="evenodd"/></svg>
|
||||
|
After Width: | Height: | Size: 360 B |
@@ -1 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="none" d="M0 0h24v24H0z"/><path d="M2.88 18.054a35.897 35.897 0 0 1 8.531-16.32.8.8 0 0 1 1.178 0c.166.18.304.332.413.455a35.897 35.897 0 0 1 8.118 15.865c-2.141.451-4.34.747-6.584.874l-2.089 4.178a.5.5 0 0 1-.894 0l-2.089-4.178a44.019 44.019 0 0 1-6.584-.874zm6.698-1.123l1.157.066L12 19.527l1.265-2.53 1.157-.066a42.137 42.137 0 0 0 4.227-.454A33.913 33.913 0 0 0 12 4.09a33.913 33.913 0 0 0-6.649 12.387c1.395.222 2.805.374 4.227.454zM12 15a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-2a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="none" d="M0 0h24v24H0z"/><path d="M2.88 18.054a35.897 35.897 0 0 1 8.531-16.32.8.8 0 0 1 1.178 0c.166.18.304.332.413.455a35.897 35.897 0 0 1 8.118 15.865c-2.141.451-4.34.747-6.584.874l-2.089 4.178a.5.5 0 0 1-.894 0l-2.089-4.178a44.019 44.019 0 0 1-6.584-.874zm6.698-1.123 1.157.066L12 19.527l1.265-2.53 1.157-.066a42.137 42.137 0 0 0 4.227-.454A33.913 33.913 0 0 0 12 4.09a33.913 33.913 0 0 0-6.649 12.387c1.395.222 2.805.374 4.227.454zM12 15a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-2a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></svg>
|
||||
|
Before Width: | Height: | Size: 608 B After Width: | Height: | Size: 588 B |
1
src/assets/svg/calendar.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="1em" height="1em" fill="none" class="t-icon t-icon-calendar" viewBox="0 0 16 16"><path fill="currentColor" d="M10 3H6V1.5H5V3H3a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1h-2V1.5h-1V3zM5 5h1V4h4v1h1V4h2v2H3V4h2v1zM3 7h10v6H3V7z"/></svg>
|
||||
|
After Width: | Height: | Size: 267 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 36 36"><path d="M19.41 18l8.29-8.29a1 1 0 0 0-1.41-1.41L18 16.59l-8.29-8.3a1 1 0 0 0-1.42 1.42l8.3 8.29l-8.3 8.29A1 1 0 1 0 9.7 27.7l8.3-8.29l8.29 8.29a1 1 0 0 0 1.41-1.41z" fill="currentColor"></path></svg>
|
||||
|
Before Width: | Height: | Size: 395 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 36 36"><path d="M26 17H10a1 1 0 0 0 0 2h16a1 1 0 0 0 0-2z" fill="currentColor"></path></svg>
|
||||
|
Before Width: | Height: | Size: 279 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><g fill="none"><path d="M7 12l7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M7 12l7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M21 12H7.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" ></path><path d="M3 3v18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></g></svg>
|
||||
|
Before Width: | Height: | Size: 647 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 20 20"><path d="M3 5h14V3H3v2zm12 8V7H5v6h10zM3 17h14v-2H3v2z" fill="currentColor"></path></svg>
|
||||
|
Before Width: | Height: | Size: 284 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><g transform="translate(24 0) scale(-1 1)"><g fill="none"><path d="M7 12l7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M7 12l7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M21 12H7.5" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path><path d="M3 3v18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></g></g></svg>
|
||||
|
Before Width: | Height: | Size: 693 B |
1
src/assets/svg/dark.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.38 2.019a7.5 7.5 0 1 0 10.6 10.6C21.662 17.854 17.316 22 12.001 22 6.477 22 2 17.523 2 12c0-5.315 4.146-9.661 9.38-9.981z"/></svg>
|
||||
|
After Width: | Height: | Size: 263 B |
1
src/assets/svg/day.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85 1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></svg>
|
||||
|
After Width: | Height: | Size: 480 B |
1
src/assets/svg/enter_outlined.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" aria-hidden="true" class="iconify iconify--ant-design" viewBox="0 0 1024 1024"><path fill="currentColor" d="M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 0 0 0 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z"/></svg>
|
||||
|
After Width: | Height: | Size: 352 B |
@@ -1 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" class="re-screen" color="#00000073" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"><g fill="currentColor"><path d="M3.5 4H1V3h2V1h1v2.5l-.5.5zM13 3V1h-1v2.5l.5.5H15V3h-2zm-1 9.5V15h1v-2h2v-1h-2.5l-.5.5zM1 12v1h2v2h1v-2.5l-.5-.5H1zm11-1.5l-.5.5h-7l-.5-.5v-5l.5-.5h7l.5.5v5zM10 7H6v2h4V7z"></path></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" aria-hidden="true" class="re-screen" color="#00000073" viewBox="0 0 16 16"><path fill="currentColor" d="M3.5 4H1V3h2V1h1v2.5l-.5.5zM13 3V1h-1v2.5l.5.5H15V3h-2zm-1 9.5V15h1v-2h2v-1h-2.5l-.5.5zM1 12v1h2v2h1v-2.5l-.5-.5H1zm11-1.5-.5.5h-7l-.5-.5v-5l.5-.5h7l.5.5v5zM10 7H6v2h4V7z"/></svg>
|
||||
|
Before Width: | Height: | Size: 452 B After Width: | Height: | Size: 348 B |
@@ -1 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" class="re-screen" color="#00000073" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"><g fill="currentColor"><path d="M3 12h10V4H3v8zm2-6h6v4H5V6zM2 6H1V2.5l.5-.5H5v1H2v3zm13-3.5V6h-1V3h-3V2h3.5l.5.5zM14 10h1v3.5l-.5.5H11v-1h3v-3zM2 13h3v1H1.5l-.5-.5V10h1v3z"></path></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" aria-hidden="true" class="re-screen" color="#00000073" viewBox="0 0 16 16"><path fill="currentColor" d="M3 12h10V4H3v8zm2-6h6v4H5V6zM2 6H1V2.5l.5-.5H5v1H2v3zm13-3.5V6h-1V3h-3V2h3.5l.5.5zM14 10h1v3.5l-.5.5H11v-1h3v-3zM2 13h3v1H1.5l-.5-.5V10h1v3z"/></svg>
|
||||
|
Before Width: | Height: | Size: 421 B After Width: | Height: | Size: 318 B |
@@ -1 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="globalization" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"><path d="M478.33 433.6l-90-218a22 22 0 0 0-40.67 0l-90 218a22 22 0 1 0 40.67 16.79L316.66 406h102.67l18.33 44.39A22 22 0 0 0 458 464a22 22 0 0 0 20.32-30.4zM334.83 362L368 281.65L401.17 362z" fill="currentColor"></path><path d="M267.84 342.92a22 22 0 0 0-4.89-30.7c-.2-.15-15-11.13-36.49-34.73c39.65-53.68 62.11-114.75 71.27-143.49H330a22 22 0 0 0 0-44H214V70a22 22 0 0 0-44 0v20H54a22 22 0 0 0 0 44h197.25c-9.52 26.95-27.05 69.5-53.79 108.36c-31.41-41.68-43.08-68.65-43.17-68.87a22 22 0 0 0-40.58 17c.58 1.38 14.55 34.23 52.86 83.93c.92 1.19 1.83 2.35 2.74 3.51c-39.24 44.35-77.74 71.86-93.85 80.74a22 22 0 1 0 21.07 38.63c2.16-1.18 48.6-26.89 101.63-85.59c22.52 24.08 38 35.44 38.93 36.1a22 22 0 0 0 30.75-4.9z" fill="currentColor"></path></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" aria-hidden="true" class="globalization" viewBox="0 0 512 512"><path fill="currentColor" d="m478.33 433.6-90-218a22 22 0 0 0-40.67 0l-90 218a22 22 0 1 0 40.67 16.79L316.66 406h102.67l18.33 44.39A22 22 0 0 0 458 464a22 22 0 0 0 20.32-30.4zM334.83 362 368 281.65 401.17 362zm-66.99-19.08a22 22 0 0 0-4.89-30.7c-.2-.15-15-11.13-36.49-34.73 39.65-53.68 62.11-114.75 71.27-143.49H330a22 22 0 0 0 0-44H214V70a22 22 0 0 0-44 0v20H54a22 22 0 0 0 0 44h197.25c-9.52 26.95-27.05 69.5-53.79 108.36-31.41-41.68-43.08-68.65-43.17-68.87a22 22 0 0 0-40.58 17c.58 1.38 14.55 34.23 52.86 83.93.92 1.19 1.83 2.35 2.74 3.51-39.24 44.35-77.74 71.86-93.85 80.74a22 22 0 1 0 21.07 38.63c2.16-1.18 48.6-26.89 101.63-85.59 22.52 24.08 38 35.44 38.93 36.1a22 22 0 0 0 30.75-4.9z"/></svg>
|
||||
|
Before Width: | Height: | Size: 965 B After Width: | Height: | Size: 826 B |
1
src/assets/svg/hot.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 1024 1024"><path fill="#FF5D50" d="M428.698 107.315c-6.503 72.192-36.352 207.258-160.256 337.408 3.686-48.025-7.117-83.763-19.047-107.673-6.605-13.159-26.06-10.599-28.877 3.84-5.734 29.44-20.582 75.059-57.6 137.779-71.628 121.395-62.566 459.878 340.736 459.878S934.093 585.728 876.8 442.522c-37.376-93.44-93.952-152.525-128.82-182.324-11.417-9.779-29.132-1.945-29.593 13.056-.921 30.464-7.321 73.37-33.075 102.144-.666-52.787-38.144-208.384-202.445-296.857-23.296-12.544-51.763 2.457-54.17 28.774z"/><path fill="#FFDF99" d="M702.26 678.4c-4.2-45.056-60.673-166.554-212.634-246.426-10.599-5.58-23.092 3.124-21.504 15.002 6.246 46.848 12.953 140.493-24.064 184.73 4.044-40.397-18.125-73.83-36.66-94.31-8.396-9.217-23.552-4.66-25.497 7.68-3.533 22.322-12.851 56.268-36.557 97.945-42.086 74.035-86.989 188.672 124.57 294.656 10.956.563 22.17.87 33.74.87a617.97 617.97 0 0 0 32.717-.87C694.631 878.182 709.837 759.706 702.26 678.4z"/></svg>
|
||||
|
After Width: | Height: | Size: 1011 B |
1
src/assets/svg/keyboard_esc.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" aria-hidden="true" class="iconify iconify--mdi" viewBox="0 0 24 24"><path fill="currentColor" d="M1 7h6v2H3v2h4v2H3v2h4v2H1V7m10 0h4v2h-4v2h2a2 2 0 0 1 2 2v2c0 1.11-.89 2-2 2H9v-2h4v-2h-2a2 2 0 0 1-2-2V9c0-1.1.9-2 2-2m8 0h2a2 2 0 0 1 2 2v1h-2V9h-2v6h2v-1h2v1c0 1.11-.89 2-2 2h-2a2 2 0 0 1-2-2V9c0-1.1.9-2 2-2Z"/></svg>
|
||||
|
After Width: | Height: | Size: 381 B |
1
src/assets/svg/laptop.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="1em" height="1em" fill="none" class="t-icon t-icon-laptop" viewBox="0 0 16 16"><path fill="currentColor" d="M2.5 12a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h11a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-11zm0-1h11V4h-11v7zM15 13H1v1h14v-1z"/></svg>
|
||||
|
After Width: | Height: | Size: 237 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"><path d="M400 148l-21.12-24.57A191.43 191.43 0 0 0 240 64C134 64 48 150 48 256s86 192 192 192a192.09 192.09 0 0 0 181.07-128" fill="none" stroke="currentColor" stroke-linecap="square" stroke-miterlimit="10" stroke-width="32"></path><path d="M464 68.45V220a4 4 0 0 1-4 4H308.45a4 4 0 0 1-2.83-6.83L457.17 65.62a4 4 0 0 1 6.83 2.83z" fill="currentColor"></path></svg>
|
||||
|
Before Width: | Height: | Size: 561 B |
1
src/assets/svg/service.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="1em" height="1em" fill="none" class="t-icon t-icon-service" viewBox="0 0 16 16"><path fill="currentColor" d="M2.52 6.37a5.5 5.5 0 0 1 10.98.13v4c0 .05 0 .1-.02.15A4.5 4.5 0 0 1 9 14.7H8v-1h1a3.5 3.5 0 0 0 3.4-2.7h-1.9a.5.5 0 0 1-.5-.5v-4c0-.28.22-.5.5-.5h1.93a4.5 4.5 0 0 0-8.86 0H5.5c.28 0 .5.22.5.5v4a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5v-4c0-.04 0-.09.02-.13zM12.5 7H11v3h1.5V7zm-9 0v3H5V7H3.5z"/></svg>
|
||||
|
After Width: | Height: | Size: 416 B |
1
src/assets/svg/shop.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="1em" height="1em" fill="none" class="t-icon t-icon-shop" viewBox="0 0 16 16"><path fill="currentColor" d="M8 1a2.5 2.5 0 0 0-2.5 2.5V5h-2a.5.5 0 0 0-.5.5v9c0 .28.22.5.5.5h9a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-2V3.5A2.5 2.5 0 0 0 8 1zm1.5 5v2h1V6H12v8H4V6h1.5v2h1V6h3zm0-1h-3V3.5a1.5 1.5 0 1 1 3 0V5z"/></svg>
|
||||
|
After Width: | Height: | Size: 322 B |
1
src/assets/svg/user_avatar.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="1em" height="1em" fill="none" class="t-icon t-icon-user-avatar" viewBox="0 0 16 16"><path fill="currentColor" d="M8 10.5c1.24 0 2.42.31 3.5.88v1.12h1v-1.14a.94.94 0 0 0-.49-.84 8.48 8.48 0 0 0-8.02 0 .94.94 0 0 0-.49.84v1.14h1v-1.12A7.47 7.47 0 0 1 8 10.5zM10.5 6a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0zm-1 0a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0z"/><path fill="currentColor" d="M2.5 1.5a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1v-11a1 1 0 0 0-1-1h-11zm11 1v11h-11v-11h11z"/></svg>
|
||||
|
After Width: | Height: | Size: 494 B |
5
src/components/ReAuth/index.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import auth from "./src/auth";
|
||||
|
||||
const Auth = auth;
|
||||
|
||||
export { Auth };
|
||||
20
src/components/ReAuth/src/auth.tsx
Normal file
@@ -0,0 +1,20 @@
|
||||
import { defineComponent, Fragment } from "vue";
|
||||
import { hasAuth } from "@/router/utils";
|
||||
|
||||
export default defineComponent({
|
||||
name: "Auth",
|
||||
props: {
|
||||
value: {
|
||||
type: undefined,
|
||||
default: []
|
||||
}
|
||||
},
|
||||
setup(props, { slots }) {
|
||||
return () => {
|
||||
if (!slots) return null;
|
||||
return hasAuth(props.value) ? (
|
||||
<Fragment>{slots.default?.()}</Fragment>
|
||||
) : null;
|
||||
};
|
||||
}
|
||||
});
|
||||