Compare commits

...

362 Commits

Author SHA1 Message Date
xiaoxian521
ed0ab495f6 Merge branch 'main' into pages 2025-11-27 12:29:22 +08:00
xiaoming
fb744dbab7 refactor: 将系统配置中的“整体风格”更名为“主题模式”,“导航模式”更名为“菜单布局”,以提升命名的专业性与清晰度 (#1247) 2025-11-27 12:24:03 +08:00
xiaoxian521
d4cf8167ce Merge branch 'main' into pages 2025-11-26 08:20:46 +08:00
SoulEater
080ccae0ff perf: 优化页签风格为谷歌模式下的布局和样式 (#1245) 2025-11-26 08:14:30 +08:00
xiaoxian521
6fe45b2539 Merge branch 'main' into pages 2025-11-17 13:43:59 +08:00
xiaoming
c22cafaa1e feat: 添加颜色选择器面板组件 (#1242) 2025-11-17 10:55:39 +08:00
xiaoxian521
f7bf20af97 chore: 导入element-plus最新版本的新组件 2025-11-15 08:07:26 +08:00
xiaoxian521
fbceefa5a7 Merge branch 'main' into pages 2025-11-13 10:10:47 +08:00
xiaoming
1b7c0577d9 chore: message工具函数适配ElMessage最新版本的API变更以及补充相关示例 (#1241) 2025-11-13 07:54:28 +08:00
xiaoxian521
7d8eeee22b Merge branch 'main' into pages 2025-11-08 10:30:33 +08:00
cvpv
244211c4eb fix: 修复RePureTableBarReVxeTableBar组件的列设置弹窗样式问题 (#1239) 2025-11-07 13:54:55 +08:00
xiaoming
e01ad0a5df chore: ReDrawer组件适配el-drawer最新版本的API变更以及补充相关示例 (#1238) 2025-11-07 12:35:36 +08:00
xiaoxian521
8bb96ef370 Merge branch 'main' into pages 2025-11-05 10:01:55 +08:00
xiaoming
ac61eb807b chore: ReDialog组件适配el-dialog最新版本的API变更以及补充相关示例 (#1236) 2025-11-04 18:22:31 +08:00
xiaoxian521
68decd01b8 fix: 修复导航菜单在使用iconfont图标时,选中/激活状态的样式显示异常问题 2025-10-22 11:25:23 +08:00
xiaoxian521
91ceb8f397 chore: update 2025-10-17 10:38:56 +08:00
xiaoxian521
401d99b3be Merge branch 'main' into pages 2025-10-17 10:19:32 +08:00
xiaoxian521
37cd77d4dd chore: update 2025-09-25 20:27:14 +08:00
xiaoxian521
728ccd6d9a chore: update 2025-09-22 14:00:52 +08:00
xiaoxian521
07785fe989 Merge branch 'main' into pages 2025-09-19 14:37:16 +08:00
xiaoxian521
cb3672ec1e Merge branch 'main' into pages 2025-09-18 10:10:03 +08:00
xiaoxian521
1ebfc2c0ec Merge branch 'main' into pages 2025-09-15 15:51:48 +08:00
xiaoxian521
d353da6ac5 chore: update 2025-08-14 09:10:49 +08:00
xiaoxian521
2cc688135e Merge branch 'main' into pages 2025-08-14 08:25:23 +08:00
xiaoxian521
51e9dfc717 Merge branch 'main' into pages 2025-07-24 12:28:56 +08:00
xiaoxian521
fe7d67af0d chore: update 2025-05-27 14:30:44 +08:00
xiaoxian521
c2ae49a2e6 chore: update 2025-05-12 16:07:26 +08:00
xiaoxian521
a7f78ff1ec Merge branch 'main' into pages 2025-04-18 15:06:38 +08:00
xiaoxian521
de36c33d3c Merge branch 'main' into pages 2025-04-17 14:45:23 +08:00
xiaoxian521
41daa6a5db Merge branch 'main' into pages 2025-04-14 16:42:23 +08:00
xiaoxian521
9b871c8164 chore: update 2025-04-10 18:39:00 +08:00
xiaoxian521
c3f017434e chore: update 2025-04-10 11:04:23 +08:00
xiaoxian521
c48279ce56 Merge branch 'main' into pages 2025-04-10 10:48:04 +08:00
xiaoxian521
7c61fabebe chore: update 2025-04-09 19:18:32 +08:00
xiaoxian521
440ce053e5 Merge branch 'main' into pages 2025-04-09 19:16:25 +08:00
xiaoxian521
e72ac8ae70 Merge branch 'main' into pages 2025-03-11 09:51:24 +08:00
xiaoxian521
edfbe7de87 chore: update 2024-12-27 12:04:30 +08:00
xiaoxian521
5c73d182b4 Merge branch 'main' into pages 2024-12-27 11:58:04 +08:00
xiaoxian521
dfa3797b27 Merge branch 'main' into pages 2024-12-19 17:38:42 +08:00
xiaoxian521
a84529418c Merge branch 'main' into pages 2024-12-14 17:09:24 +08:00
xiaoxian521
81d8a51d6c chore: update 2024-11-28 13:06:32 +08:00
xiaoxian521
533199656e chore: update 2024-11-24 13:58:31 +08:00
xiaoxian521
5057e0933b chore: update 2024-10-19 09:37:05 +08:00
xiaoxian521
5ce380d7e6 Merge branch 'main' into pages 2024-10-19 08:24:32 +08:00
xiaoxian521
9d351ab600 Merge branch 'main' into pages 2024-09-25 17:00:31 +08:00
xiaoxian521
81111c096a Merge branch 'main' into pages 2024-09-24 12:12:16 +08:00
xiaoxian521
66f099fa99 Merge branch 'main' into pages 2024-09-23 14:52:29 +08:00
xiaoxian521
190c3c6123 Merge branch 'main' into pages 2024-08-13 10:28:40 +08:00
xiaoxian521
c0d683c9b1 Merge branch 'main' into pages 2024-08-03 15:39:24 +08:00
xiaoxian521
c3320d771c chore: update 2024-06-26 17:52:50 +08:00
xiaoxian521
76a173ceb2 chore: update 2024-06-15 17:09:38 +08:00
xiaoxian521
87a89ff85a chore: js 2024-06-11 22:35:05 +08:00
xiaoxian521
bf0d7dd060 Merge branch 'main' into pages 2024-06-11 22:30:41 +08:00
xiaoxian521
f1d1abd661 chore: 通知 2024-06-06 10:51:32 +08:00
xiaoxian521
06977488ef Merge branch 'main' into pages 2024-06-06 10:48:26 +08:00
xiaoxian521
debd439eeb Merge branch 'main' into pages 2024-06-04 13:59:51 +08:00
xiaoxian521
e33eb54d36 chore: update sponsors 2024-06-01 06:26:27 +08:00
xiaoxian521
4315c3122f chore: update 2024-05-30 08:42:27 +08:00
xiaoxian521
7159227ebf Merge branch 'main' into pages 2024-05-30 08:30:18 +08:00
xiaoxian521
134a06d282 Merge branch 'main' into pages 2024-05-28 12:39:16 +08:00
xiaoxian521
bdb32b3b22 chore: update 2024-05-20 22:15:03 +08:00
xiaoxian521
a02b5b7b5c chore: update 2024-05-14 21:15:03 +08:00
xiaoxian521
b80013f458 chore: update 2024-05-14 18:41:19 +08:00
xiaoxian521
097d6cd8bf Merge branch 'main' into pages 2024-05-14 18:02:09 +08:00
xiaoxian521
d9bd2ecca3 Merge branch 'main' into pages 2024-05-08 16:08:03 +08:00
xiaoxian521
2e0fdcad4b chore: update 2024-05-06 16:44:51 +08:00
xiaoxian521
da9467d98a chore: update 2024-05-06 16:41:55 +08:00
xiaoxian521
fb856a158d Merge branch 'main' into gitee 2024-05-06 16:40:05 +08:00
xiaoxian521
b617ce650a Merge branch 'main' into gitee 2024-05-06 16:08:45 +08:00
xiaoxian521
0e68510f4f chore: update 2024-04-26 13:08:33 +08:00
xiaoxian521
b33f8ca05c Merge branch 'main' into gitee 2024-04-26 13:05:42 +08:00
xiaoxian521
192a52a07c chore: update 2024-04-24 11:30:28 +08:00
xiaoxian521
5f768aa3c5 Merge branch 'main' into gitee 2024-04-24 11:26:31 +08:00
xiaoxian521
5d12a6d556 chore: update 2024-04-24 10:52:09 +08:00
xiaoxian521
8b2ca51272 chore: update 2024-04-24 10:48:45 +08:00
xiaoxian521
b3983df384 Merge branch 'main' into gitee 2024-04-24 10:40:12 +08:00
xiaoxian521
a5a527fa54 chore: update 2024-04-18 13:50:05 +08:00
xiaoxian521
c8686999f5 Merge branch 'main' into gitee 2024-04-18 13:48:43 +08:00
xiaoxian521
dabadf98fd chore: update 2024-04-17 15:48:20 +08:00
xiaoxian521
3720c15712 Merge branch 'main' into gitee 2024-04-17 15:47:06 +08:00
xiaoxian521
b4a8384fa9 chore: update 2024-04-15 17:57:56 +08:00
xiaoxian521
ebf6bb23eb Merge branch 'main' into gitee 2024-04-15 17:56:10 +08:00
xiaoxian521
147e8125e8 chore: update 2024-04-13 11:26:55 +08:00
xiaoxian521
0f35e7e0c5 Merge branch 'main' into gitee 2024-04-13 11:24:57 +08:00
xiaoxian521
733cb795fa chore: update 2024-04-12 16:26:23 +08:00
xiaoxian521
07dc4942ba Merge branch 'main' into gitee 2024-04-12 16:24:07 +08:00
xiaoxian521
c1cfe98f3e chore: update 2024-04-04 22:21:40 +08:00
xiaoxian521
5b51aedab4 chore: update 2024-04-04 22:20:14 +08:00
xiaoxian521
0bb0026974 Merge branch 'main' into gitee 2024-04-04 22:18:28 +08:00
xiaoxian521
3db2e53367 chore: update 2024-03-31 20:44:49 +08:00
xiaoxian521
0c1b14a9b5 Merge branch 'main' into gitee 2024-03-31 20:42:04 +08:00
xiaoxian521
3b1af3ec99 chore: update 2024-03-29 10:15:56 +08:00
xiaoxian521
1c5cc42220 chore: update 2024-03-29 10:14:01 +08:00
xiaoxian521
fc40bb3ea3 Merge branch 'main' into gitee 2024-03-29 10:12:02 +08:00
xiaoxian521
a47610fb59 chore: update 2024-03-28 11:34:33 +08:00
xiaoxian521
8d987d247d chore: update 2024-03-28 11:33:09 +08:00
xiaoxian521
2ac8eab760 chore: update 2024-03-27 13:58:47 +08:00
xiaoxian521
a5f2fcca01 chore: update 2024-03-27 13:57:25 +08:00
xiaoxian521
34d5d2d64d chore: update 2024-03-27 10:39:58 +08:00
xiaoxian521
6eb28f13fd chore: update 2024-03-27 10:38:38 +08:00
xiaoxian521
08b902a836 chore: update 2024-03-27 10:30:27 +08:00
xiaoxian521
1a033a784f Merge branch 'main' into gitee 2024-03-27 10:28:52 +08:00
xiaoxian521
b00afc7b82 chore: update 2024-03-24 21:22:32 +08:00
xiaoxian521
1d27d6e83a Merge branch 'main' into gitee 2024-03-24 21:21:00 +08:00
xiaoxian521
14aa977cb7 Merge branch 'main' into gitee 2024-03-24 19:38:40 +08:00
xiaoxian521
518db3d318 chore: update 2024-03-23 16:24:25 +08:00
xiaoxian521
6f4f2276bb Merge branch 'main' into gitee 2024-03-23 16:20:11 +08:00
xiaoxian521
9098546fc4 chore: update 2024-03-23 08:40:42 +08:00
xiaoxian521
a4f32df68d chore: update 2024-03-23 08:39:09 +08:00
xiaoxian521
9a6124c97b Merge branch 'main' into gitee 2024-03-23 08:24:55 +08:00
xiaoxian521
6764da7991 chore: update 2024-03-22 15:43:03 +08:00
xiaoxian521
712aca8ba1 Merge branch 'main' into gitee 2024-03-22 15:41:13 +08:00
xiaoxian521
c23919cc5d chore: update 2024-03-21 23:09:55 +08:00
xiaoxian521
26ee13de8c chore: update 2024-03-21 23:08:37 +08:00
xiaoxian521
3a25022df0 chore: update 2024-03-21 22:48:37 +08:00
xiaoxian521
edd481ad67 chore: update 2024-03-21 22:47:13 +08:00
xiaoxian521
52b59453f3 chore: update 2024-03-21 16:24:24 +08:00
xiaoxian521
c6b96cfe63 Merge branch 'main' into gitee 2024-03-21 16:21:30 +08:00
xiaoxian521
e5d90d9089 chore: update 2024-03-21 00:18:27 +08:00
xiaoxian521
a93850341c Merge branch 'main' into gitee 2024-03-21 00:17:11 +08:00
xiaoxian521
e793a69cb1 chore: update 2024-03-20 19:40:27 +08:00
xiaoxian521
dc5745e502 Merge branch 'main' into gitee 2024-03-20 19:39:14 +08:00
xiaoxian521
dcc4904e32 chore: update 2024-03-20 15:07:39 +08:00
xiaoxian521
4d6bbb2ada Merge branch 'main' into gitee 2024-03-20 15:05:56 +08:00
xiaoxian521
258ba5adaa chore: update 2024-03-19 21:08:43 +08:00
xiaoxian521
caab9c9843 Merge branch 'main' into gitee 2024-03-19 21:07:39 +08:00
xiaoxian521
b3be037a2d chore: update 2024-03-19 16:55:49 +08:00
xiaoxian521
97ff577085 Merge branch 'main' into gitee 2024-03-19 16:54:28 +08:00
xiaoxian521
58f0891141 chore: update 2024-03-19 16:25:05 +08:00
xiaoxian521
c1659c01a4 Merge branch 'main' into gitee 2024-03-19 16:23:56 +08:00
xiaoxian521
4d746a969c chore: update 2024-03-18 16:18:26 +08:00
xiaoxian521
e3b4f0f7f9 Merge branch 'main' into gitee 2024-03-18 16:17:23 +08:00
xiaoxian521
c074e99021 chore: update 2024-03-17 22:58:29 +08:00
xiaoxian521
166f785ce6 Merge branch 'main' into gitee 2024-03-17 22:57:05 +08:00
xiaoxian521
54f3ebbc9b chore: update 2024-03-17 14:19:43 +08:00
xiaoxian521
3f195a33c3 Merge branch 'main' into gitee 2024-03-17 14:18:41 +08:00
xiaoxian521
27b374d9fc chore: update 2024-03-16 23:29:07 +08:00
xiaoxian521
56ec3eda80 Merge branch 'main' into gitee 2024-03-16 23:27:38 +08:00
xiaoxian521
7e976bebbe chore: update 2024-03-16 01:27:17 +08:00
xiaoxian521
8d16627ca9 chore: update 2024-03-16 01:26:24 +08:00
xiaoxian521
b6f2575182 chore: update 2024-03-14 11:25:24 +08:00
xiaoxian521
91a57cbba9 Merge branch 'main' into gitee 2024-03-14 11:24:14 +08:00
xiaoxian521
e153ed3054 chore: update 2024-03-14 10:16:54 +08:00
xiaoxian521
26d564095b Merge branch 'main' into gitee 2024-03-14 10:15:39 +08:00
xiaoxian521
47855a39f2 chore: update 2024-03-13 21:19:45 +08:00
xiaoxian521
be773575bb Merge branch 'main' into gitee 2024-03-13 21:18:39 +08:00
xiaoxian521
4ac6a0b238 chore: update 2024-03-13 20:52:43 +08:00
xiaoxian521
0fb677540a Merge branch 'main' into gitee 2024-03-13 20:50:26 +08:00
xiaoxian521
e642f37317 chore: update 2024-03-12 14:51:49 +08:00
xiaoxian521
017a294112 Merge branch 'main' into gitee 2024-03-12 14:49:40 +08:00
xiaoxian521
0386152b52 chore: update 2024-03-08 14:39:07 +08:00
xiaoxian521
6d47fa628b chore: update 2024-03-08 14:37:58 +08:00
xiaoxian521
3209cf727f chore: update 2024-03-06 16:26:30 +08:00
xiaoxian521
be64390cee Merge branch 'main' into gitee 2024-03-06 16:24:50 +08:00
xiaoxian521
c5863f6e34 chore: update 2024-03-06 12:13:53 +08:00
xiaoxian521
4406b5fa1b Merge branch 'main' into gitee 2024-03-06 12:07:55 +08:00
xiaoxian521
562e31d119 chore: update 2024-03-06 08:53:15 +08:00
xiaoxian521
cf1efcc9f5 Merge branch 'main' into gitee 2024-03-06 08:50:51 +08:00
xiaoxian521
c9655d25d1 chore: update 2024-03-06 01:17:27 +08:00
xiaoxian521
969c0f89ec Merge branch 'main' into gitee 2024-03-06 01:15:52 +08:00
xiaoxian521
5b7c868829 chore: update 2024-03-05 22:26:40 +08:00
xiaoxian521
87a2af7181 Merge branch 'main' into gitee 2024-03-05 22:24:55 +08:00
xiaoxian521
057db33e5a chore: update 2024-03-05 00:13:41 +08:00
xiaoxian521
74197929d5 chore: update 2024-03-05 00:12:06 +08:00
xiaoxian521
43b61aad25 chore: update 2024-03-04 16:51:30 +08:00
xiaoxian521
8742a67d56 Merge branch 'main' into gitee 2024-03-04 16:50:18 +08:00
xiaoxian521
3885cec95b chore: update 2024-03-04 01:14:01 +08:00
xiaoxian521
95f3cf7c0a chore: update 2024-03-04 01:12:38 +08:00
xiaoxian521
0576b1cfeb Merge branch 'main' into gitee 2024-03-04 01:07:55 +08:00
xiaoxian521
a65f90f50a chore: update 2024-03-02 01:33:15 +08:00
xiaoxian521
08110770e0 Merge branch 'main' into gitee 2024-03-02 01:31:19 +08:00
xiaoxian521
cd8d80bfb0 chore: update 2024-03-01 21:13:02 +08:00
xiaoxian521
0316a3de5f Merge branch 'main' into gitee 2024-03-01 21:11:10 +08:00
xiaoxian521
691cec8c94 chore: update 2024-03-01 16:42:37 +08:00
xiaoxian521
10aa2c0718 Merge branch 'main' into gitee 2024-03-01 16:40:24 +08:00
xiaoxian521
bdcdef41df chore: update 2024-03-01 12:10:40 +08:00
xiaoxian521
97cb48e726 Merge branch 'main' into gitee 2024-03-01 12:09:15 +08:00
xiaoxian521
41df77fe95 chore: update 2024-02-29 13:21:03 +08:00
xiaoxian521
7076d2761a Merge branch 'main' into gitee 2024-02-29 13:18:53 +08:00
xiaoxian521
13c1adf03c chore: update 2024-02-26 23:17:32 +08:00
xiaoxian521
bbf64e1ff0 Merge branch 'main' into gitee 2024-02-26 23:13:54 +08:00
xiaoxian521
c32a60a10d chore: update 2024-02-19 13:47:30 +08:00
xiaoxian521
7a32d804b5 Merge branch 'main' into gitee 2024-02-19 13:43:08 +08:00
xiaoxian521
5027e26633 chore: update 2024-01-29 13:32:11 +08:00
xiaoxian521
907f8ffbef Merge remote-tracking branch 'origin/main' into gitee 2024-01-29 13:28:30 +08:00
xiaoxian521
358f7c2c1f chore: update 2024-01-27 16:42:55 +08:00
xiaoxian521
8c2bd1e986 chore: update 2024-01-27 16:39:59 +08:00
xiaoxian521
63f5d47fc7 chore: update 2024-01-27 16:31:53 +08:00
xiaoxian521
f069f45418 Merge remote-tracking branch 'origin/main' into gitee 2024-01-27 16:28:45 +08:00
xiaoxian521
60304dcb33 chore: update 2024-01-24 15:59:56 +08:00
xiaoxian521
07f6145179 Merge remote-tracking branch 'origin/main' into gitee 2024-01-24 15:56:57 +08:00
xiaoxian521
be1504ea83 chore: update 2024-01-23 14:03:17 +08:00
xiaoxian521
9d640eee48 Merge remote-tracking branch 'origin/main' into gitee 2024-01-23 14:00:11 +08:00
xiaoxian521
213ad9d851 chore: update 2024-01-22 11:25:00 +08:00
xiaoxian521
ac36246e19 Merge remote-tracking branch 'origin/main' into gitee 2024-01-22 11:19:06 +08:00
xiaoxian521
64f529a84e chore: update 2024-01-21 23:34:55 +08:00
xiaoxian521
46cec38fe6 Merge remote-tracking branch 'origin/main' into gitee 2024-01-21 23:31:02 +08:00
xiaoxian521
5def64a02d chore: update 2024-01-19 17:24:55 +08:00
xiaoxian521
bce6656926 Merge remote-tracking branch 'origin/main' into gitee 2024-01-19 17:22:01 +08:00
xiaoxian521
e42012a3eb chore: update 2024-01-19 16:25:57 +08:00
xiaoxian521
01a2e49377 Merge remote-tracking branch 'origin/main' into gitee 2024-01-19 16:23:08 +08:00
xiaoxian521
cc59397dc5 chore: update 2024-01-19 13:06:15 +08:00
xiaoxian521
c9bb37339d Merge remote-tracking branch 'origin/main' into gitee 2024-01-19 13:03:16 +08:00
xiaoxian521
1d8ec613ce chore: update 2024-01-18 23:57:34 +08:00
xiaoxian521
a118b701d1 Merge remote-tracking branch 'origin/main' into gitee 2024-01-18 23:53:03 +08:00
xiaoxian521
765bd35b9f chore: update 2024-01-18 17:53:34 +08:00
xiaoxian521
90b4107496 Merge remote-tracking branch 'origin/main' into gitee 2024-01-18 17:50:07 +08:00
xiaoxian521
666dc9bcb0 chore: update 2024-01-17 10:44:25 +08:00
xiaoxian521
8376191b19 chore: update 2024-01-17 10:41:21 +08:00
xiaoxian521
800577c127 chore: update 2024-01-16 13:07:17 +08:00
xiaoxian521
fdf0b9ba7e Merge remote-tracking branch 'origin/main' into gitee 2024-01-16 13:05:40 +08:00
xiaoxian521
03f8a25f75 chore: update 2024-01-16 01:02:30 +08:00
xiaoxian521
827481c909 Merge remote-tracking branch 'origin/main' into gitee 2024-01-16 01:01:22 +08:00
xiaoxian521
947bf62635 chore: update 2024-01-16 00:52:06 +08:00
xiaoxian521
dd647eb3b2 Merge remote-tracking branch 'origin/main' into gitee 2024-01-16 00:50:22 +08:00
xiaoxian521
305da78f75 chore: update 2024-01-16 00:47:18 +08:00
xiaoxian521
9eec96809f chore: update 2024-01-14 23:27:52 +08:00
xiaoxian521
e3f5f3c1a9 Merge remote-tracking branch 'origin/main' into gitee 2024-01-14 23:26:00 +08:00
xiaoxian521
27e4ad9460 chore: update 2024-01-14 12:51:27 +08:00
xiaoxian521
17eaf8161f Merge remote-tracking branch 'origin/main' into gitee 2024-01-14 12:49:39 +08:00
xiaoxian521
78b37d3480 chore: update 2024-01-12 01:04:39 +08:00
xiaoxian521
bad65648a2 Merge remote-tracking branch 'origin/main' into gitee 2024-01-12 01:03:03 +08:00
xiaoxian521
dce3dea7fe chore: update 2024-01-11 19:46:16 +08:00
xiaoxian521
4b3cdbf473 Merge remote-tracking branch 'origin/main' into gitee 2024-01-11 19:43:54 +08:00
xiaoxian521
4bcdc7229a chore: update 2024-01-11 01:58:59 +08:00
xiaoxian521
236f9e1b6a Merge remote-tracking branch 'origin/main' into gitee 2024-01-11 01:57:17 +08:00
xiaoxian521
7d5c7dfeb3 chore: update 2024-01-08 00:03:57 +08:00
xiaoxian521
1a38146587 Merge remote-tracking branch 'origin/main' into gitee 2024-01-08 00:02:10 +08:00
xiaoxian521
796348094d Merge remote-tracking branch 'origin/main' into gitee 2024-01-07 23:31:16 +08:00
xiaoxian521
6126d53bc0 chore: update 2024-01-03 17:34:25 +08:00
xiaoxian521
9a5f1f0d89 Merge remote-tracking branch 'origin/main' into gitee 2024-01-03 17:32:52 +08:00
xiaoxian521
1abdfe683a chore: update 2024-01-03 00:09:15 +08:00
xiaoxian521
f9124c886c Merge remote-tracking branch 'origin/main' into gitee 2024-01-03 00:07:21 +08:00
xiaoxian521
2aaf141178 chore: update 2024-01-02 23:18:01 +08:00
xiaoxian521
4dc7ccda4f Merge remote-tracking branch 'origin/main' into gitee 2024-01-02 23:16:18 +08:00
xiaoxian521
951496c72b chore: update 2024-01-02 19:54:47 +08:00
xiaoxian521
4fb186424c Merge remote-tracking branch 'origin/main' into gitee 2024-01-02 19:52:43 +08:00
xiaoxian521
7c66dcdfe1 chore: update 2023-11-02 10:07:20 +08:00
xiaoxian521
c57b2be2b0 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-11-02 10:06:18 +08:00
xiaoxian521
d921e54f76 chore: update 2023-10-31 01:00:12 +08:00
xiaoxian521
3be4d87f6a Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-10-31 00:59:05 +08:00
xiaoxian521
18aade8cde chore: update 2023-10-30 23:54:06 +08:00
xiaoxian521
3a488eff38 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-10-30 23:52:58 +08:00
xiaoxian521
9d6624fe5e chore: update 2023-10-17 11:41:08 +08:00
xiaoxian521
227a7b7a2a Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-10-17 11:39:36 +08:00
xiaoxian521
7336406b02 chore: update 2023-10-09 19:02:53 +08:00
xiaoxian521
ea188be3d7 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-10-09 19:00:40 +08:00
xiaoxian521
09e24f5e03 chore: update 2023-10-07 15:33:43 +08:00
xiaoxian521
94382e4bcd chore: update 2023-10-07 15:32:03 +08:00
xiaoxian521
0c01fbfa9c Merge branch 'main' into gitee 2023-10-07 15:09:03 +08:00
xiaoxian521
a2e0b9155b chore: update 2023-08-30 21:53:35 +08:00
xiaoxian521
d7a479afc6 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-08-30 21:52:26 +08:00
xiaoxian521
e38b5ec797 chore: update 2023-08-30 21:51:41 +08:00
xiaoxian521
fd097c5a6a chore: update 2023-08-30 12:39:32 +08:00
xiaoxian521
421fe54bbd chore: update 2023-08-30 12:36:43 +08:00
xiaoxian521
6fa1d28748 chore: update 2023-08-30 12:14:51 +08:00
xiaoxian521
94c5c6e7d0 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-08-30 12:12:12 +08:00
xiaoxian521
1a61d934bd chore: update 2023-07-18 12:46:39 +08:00
xiaoxian521
29ba70d041 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-07-18 12:45:22 +08:00
xiaoxian521
bd5e96c6ab chore: update 2023-07-12 18:27:40 +08:00
xiaoxian521
ff272087ee Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-07-12 18:25:35 +08:00
xiaoxian521
c0ec81b669 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-07-12 18:17:02 +08:00
xiaoxian521
16ff8b60c1 chore: update 2023-06-27 17:57:56 +08:00
xiaoxian521
71a7d3ce1f chore: update 2023-06-27 17:46:30 +08:00
xiaoxian521
a831ea2bb3 chore: update 2023-06-27 17:45:15 +08:00
xiaoxian521
1cd173b66c Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-27 17:44:30 +08:00
xiaoxian521
dbff002c00 chore: update 2023-06-26 18:07:18 +08:00
xiaoxian521
43cd5d9321 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-26 18:06:01 +08:00
xiaoxian521
131766bba1 chore: update 2023-06-26 11:33:52 +08:00
xiaoxian521
4d458169ea Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-26 11:32:30 +08:00
xiaoxian521
8194f6c98f chore: update 2023-06-25 18:39:46 +08:00
xiaoxian521
cf54809ee8 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-25 18:38:36 +08:00
xiaoxian521
e362927e51 chore: update 2023-06-22 00:38:07 +08:00
xiaoxian521
eed805414d Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-22 00:36:58 +08:00
xiaoxian521
e9a1550134 chore: update 2023-06-19 11:57:27 +08:00
xiaoxian521
52a973db34 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-19 11:56:02 +08:00
xiaoxian521
98790df5b8 chore: update 2023-06-14 11:11:18 +08:00
xiaoxian521
433035ac94 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-14 11:10:13 +08:00
xiaoxian521
41e912101a chore: update 2023-06-13 23:14:27 +08:00
xiaoxian521
518fd88362 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-13 23:13:17 +08:00
xiaoxian521
04aa161a1d chore: update 2023-06-12 21:14:45 +08:00
xiaoxian521
4e62edc78e Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-12 21:13:23 +08:00
xiaoxian521
19522aa2f0 chore: update 2023-06-09 18:08:38 +08:00
xiaoxian521
2bd7d44119 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-09 18:07:26 +08:00
xiaoxian521
f13b471e9b chore: update 2023-06-07 11:06:35 +08:00
xiaoxian521
793e228be2 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-07 11:05:30 +08:00
xiaoxian521
de628597c0 chore: update 2023-06-05 19:35:34 +08:00
xiaoxian521
f797d9531c Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-05 19:34:16 +08:00
xiaoxian521
0e09b8c809 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-04 12:47:03 +08:00
xiaoxian521
55129577c7 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-06-04 12:44:01 +08:00
xiaoxian521
c95a090649 chore: update 2023-05-29 11:37:34 +08:00
xiaoxian521
d18b2787f4 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-29 11:34:16 +08:00
xiaoxian521
7d4a5cc431 chore: update 2023-05-27 21:59:43 +08:00
xiaoxian521
2a7e35696b Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-27 21:58:34 +08:00
xiaoxian521
362bae0e64 chore: update 2023-05-27 13:35:12 +08:00
xiaoxian521
22e7b4b503 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-27 13:33:53 +08:00
xiaoxian521
ad0ca59796 chore: update 2023-05-27 13:33:15 +08:00
xiaoxian521
a33dea3c6d chore: update 2023-05-26 23:30:14 +08:00
xiaoxian521
24b645d462 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-26 23:27:51 +08:00
xiaoxian521
52d0adf4a8 chore: update 2023-05-26 23:11:09 +08:00
xiaoxian521
69841db686 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-26 23:08:39 +08:00
xiaoxian521
76acd82ec5 chore: update 2023-05-26 12:49:16 +08:00
xiaoxian521
9d2878f534 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-26 12:40:49 +08:00
xiaoxian521
08f05fe621 chore: update 2023-05-24 13:01:18 +08:00
xiaoxian521
6294a3ffac Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-24 12:58:59 +08:00
xiaoxian521
e59acea894 chore: update 2023-05-18 17:26:20 +08:00
xiaoxian521
b1ada2f1ae Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-18 17:25:14 +08:00
xiaoxian521
b9daa90b37 chore: update 2023-05-16 14:36:04 +08:00
xiaoxian521
93498b6643 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-16 14:35:01 +08:00
xiaoxian521
7b067a8801 chore: update 2023-05-15 19:16:46 +08:00
xiaoxian521
88f7aefa16 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-15 19:15:37 +08:00
xiaoxian521
fb72d4afec chore: update 2023-05-15 14:50:02 +08:00
xiaoxian521
45ec532ec6 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-15 14:48:13 +08:00
xiaoxian521
45d225c3d0 chore: update 2023-05-14 16:42:53 +08:00
xiaoxian521
b9c1d8e351 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-14 16:41:23 +08:00
xiaoxian521
21f658489c chore: update 2023-05-11 20:53:36 +08:00
xiaoxian521
ff9d0da464 chore: update 2023-05-11 20:37:21 +08:00
xiaoxian521
d352cfbcde Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-11 20:36:00 +08:00
xiaoxian521
1adec2df2a chore: update 2023-05-11 15:25:20 +08:00
xiaoxian521
a51c11865d Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-11 15:23:37 +08:00
xiaoxian521
c5f2118a34 chore: update 2023-05-10 01:54:17 +08:00
xiaoxian521
2df0b16320 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-10 01:52:32 +08:00
xiaoxian521
3fa7176a68 chore: update 2023-05-09 15:35:56 +08:00
xiaoxian521
c8356ac05f Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-09 15:34:26 +08:00
xiaoxian521
784b6943a0 chore: update 2023-05-08 20:16:48 +08:00
xiaoxian521
c77ec6bda3 Merge branch 'main' of github.com:pure-admin/vue-pure-admin into gitee 2023-05-08 20:14:32 +08:00
xiaoxian521
0c2a430485 chore: update 2023-03-30 12:27:12 +08:00
xiaoxian521
013ae275de Merge branch 'main' into gitee 2023-03-30 12:25:53 +08:00
xiaoxian521
6696a3964e chore: update 2023-02-28 22:58:13 +08:00
xiaoxian521
6b2b5dee78 Merge branch 'main' into gitee 2023-02-28 22:56:58 +08:00
xiaoxian521
e637b37416 chore: update 2023-02-16 12:44:44 +08:00
xiaoxian521
534d125c33 Merge branch 'main' into gitee 2023-02-16 12:43:26 +08:00
xiaoxian521
a873c3977b chore: update 2023-02-13 14:03:46 +08:00
xiaoxian521
d063407e3d Merge branch 'main' into gitee 2023-02-13 14:02:19 +08:00
xiaoxian521
534e889f49 perf: 优化logo图和文字布局 2023-02-13 14:00:37 +08:00
xiaoxian521
cb7bd9e5a8 chore: update 2023-02-12 23:55:06 +08:00
xiaoxian521
0b4a281bad Merge branch 'main' into gitee 2023-02-12 23:53:58 +08:00
xiaoxian521
9243e6e290 chore: update 2023-02-12 14:40:59 +08:00
xiaoxian521
039a194788 Merge branch 'main' into gitee 2023-02-12 14:40:21 +08:00
xiaoxian521
8f12419660 style: update 2023-02-12 14:38:50 +08:00
xiaoxian521
9683a7be9c chore: update 2023-02-12 13:29:47 +08:00
xiaoxian521
94ac2ba400 Merge branch 'main' into gitee 2023-02-12 13:28:41 +08:00
xiaoxian521
eed95cd109 chore: update 2023-02-11 16:18:55 +08:00
xiaoxian521
3fb9c6895e Merge branch 'main' into gitee 2023-02-11 16:17:53 +08:00
xiaoxian521
9c3ac7a888 chore: update 2023-02-09 12:11:18 +08:00
xiaoxian521
d05a4e9990 Merge branch 'main' into gitee 2023-02-09 12:09:47 +08:00
xiaoxian521
585997dbb7 chore: update 2023-02-09 00:25:06 +08:00
xiaoxian521
0c7185cc47 Merge branch 'main' into gitee 2023-02-09 00:23:57 +08:00
xiaoxian521
d0c45b7995 chore: update 2023-02-08 18:11:24 +08:00
xiaoxian521
9ba545ae3b Merge branch 'main' into gitee 2023-02-08 18:10:12 +08:00
xiaoxian521
86f5a040dc chore: update 2023-01-08 16:15:33 +08:00
xiaoxian521
9ff777c8d2 Merge branch 'main' into gitee 2023-01-08 16:11:59 +08:00
xiaoxian521
e0b7922b13 chore: update 2022-12-26 12:57:03 +08:00
xiaoxian521
c951880e3a Merge branch 'main' into gitee 2022-12-26 12:56:01 +08:00
xiaoxian521
0d02cb739e chore: update 2022-12-16 14:54:53 +08:00
xiaoxian521
9c5140d117 Merge branch 'main' into gitee 2022-12-16 14:53:11 +08:00
xiaoxian521
7707607545 chore: update 2022-12-13 15:28:52 +08:00
xiaoxian521
e6775a1b05 Merge branch 'main' into gitee 2022-12-13 15:27:01 +08:00
xiaoxian521
0087f0f27c chore: update 2022-12-09 22:35:31 +08:00
xiaoxian521
5da968f122 Merge branch 'main' into gitee 2022-12-09 22:34:27 +08:00
xiaoxian521
43d0a53ce0 chore: update 2022-12-09 20:23:54 +08:00
xiaoxian521
db64905ab0 chore: update 2022-12-09 20:21:50 +08:00
38 changed files with 558 additions and 239 deletions

3
.gitignore vendored
View File

@@ -1,10 +1,9 @@
node_modules
.DS_Store
dist
dist-ssr
*.local
.eslintcache
report.html
dist
vite.config.*.timestamp*
yarn.lock

View File

@@ -1,8 +0,0 @@
#!/bin/sh
# shellcheck source=./_/husky.sh
. "$(dirname "$0")/_/husky.sh"
PATH="/usr/local/bin:$PATH"
npx --no-install commitlint --edit "$1"

View File

@@ -1,9 +0,0 @@
#!/bin/sh
command_exists () {
command -v "$1" >/dev/null 2>&1
}
# Workaround for Windows 10, Git Bash and Pnpm
if command_exists winpty && test -t 1; then
exec < /dev/tty
fi

View File

@@ -1,10 +0,0 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
. "$(dirname "$0")/common.sh"
[ -n "$CI" ] && exit 0
PATH="/usr/local/bin:$PATH"
# Perform lint check on files in the staging area through .lintstagedrc configuration
pnpm exec lint-staged

View File

@@ -2,7 +2,7 @@
### 🎫 Feat
- 添加全屏`403``404``500`页面,全屏错误页面清晰且安全,提升用户体验
- 添加全屏`403``404``500`页面,全屏错误页面清晰且安全,提升用户体验
### 🐞 Bug fixes
@@ -26,7 +26,7 @@
### 🐞 Bug fixes
- 修复`ReSegmented`分段控制器组件在浅色和深色整体风格切换时的闪烁问题
- 修复`ReSegmented`分段控制器组件在浅色和深色主题模式切换时的闪烁问题
- 修复`resetRouter`未清空全部路由数据问题
- 修复标签页-关闭左侧标签页关闭异常问题
@@ -231,8 +231,8 @@
- 修复`windwos`下点击注册页面会出现滚动条问题
- 修复`windows`下页面切换,内容区会出现滚动条问题
- 修复`pure-table`带状态表格在深色整体风格下状态样式消失的问题
- 修复系统配置中开启灰色模式和深色整体风格,刷新页面整体风格异常
- 修复`pure-table`带状态表格在深色主题模式下状态样式消失的问题
- 修复系统配置中开启灰色模式和深色主题模式,刷新页面主题模式异常
### 🍏 Perf
@@ -285,7 +285,7 @@
- 内嵌`iframe`页支持设置`keepAlive`,保持页面状态
- 优化导航,弹出的菜单超出内容区自适应且可滚动
- 添加文件上传示例
- 添加整体风格自适应操作系统浅色、深色、自动主题功能
- 添加主题模式自适应操作系统浅色、深色、自动主题功能
- 添加页脚
- 支持多标签页打开已经登录的系统后无需再登录并添加内免登录功能(用户可选择免登录的天数)
- 带来高级感的终端命令行
@@ -485,7 +485,7 @@
- 修复菜单搜索功能弹框打开后搜索框未自动聚集的问题
- 修复按 `ESC` 退出全屏后,工具栏按钮文案展示问题
- 修复移动端通知栏 `tooltip` 点击穿透问题
- 修复当左侧菜单收起后,切换到 `horizontal` 导航模式时文字不展示的问题
- 修复当左侧菜单收起后,切换到 `horizontal` 菜单布局时文字不展示的问题
- 修复导航 `tab` 关闭其他标签页无法重置状态问题
- 修复 `getHistoryMode` 函数中环境变量未初始化带来的页面热更新报错
- 修复导航 `tab` 过多导致关闭左侧标签页无法正常显示

View File

@@ -1,84 +1,94 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<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>
<link rel="icon" href="/favicon.ico" />
</head>
<body>
<div id="app">
<style>
html,
body,
#app {
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
overflow: hidden;
<head>
<meta charset="UTF-8" />
<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>
<link rel="icon" href="/favicon.ico" />
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script")
hm.src = "https://hm.baidu.com/hm.js?d3824e75ef2bf6d851035f74ae1aec68"
var s = document.getElementsByTagName("script")[0]
s.parentNode.insertBefore(hm, s)
})();
</script>
</head>
<body>
<div id="app">
<style>
html,
body,
#app {
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
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;
margin: 80px auto;
font-size: 10px;
color: #406eeb;
text-indent: -9999em;
transform: translateZ(0);
transform: translate(-50%, 0);
animation-delay: -0.16s;
}
.loader::before,
.loader::after {
position: absolute;
top: 0;
content: "";
}
.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;
}
.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;
40% {
box-shadow: 0 2.5em 0 0;
}
}
</style>
<div class="loader"></div>
</div>
<script type="module" src="/src/main.ts"></script>
</body>
.loader {
position: relative;
top: 0;
margin: 80px auto;
font-size: 10px;
color: #406eeb;
text-indent: -9999em;
transform: translateZ(0);
transform: translate(-50%, 0);
animation-delay: -0.16s;
}
.loader::before,
.loader::after {
position: absolute;
top: 0;
content: "";
}
.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="loader"></div>
</div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
</html>

View File

@@ -31,15 +31,15 @@ panel:
pureCloseSystemSet: Close System Configs
pureClearCacheAndToLogin: Clear cache and return to login page
pureClearCache: Clear Cache
pureOverallStyle: Overall Style
pureOverallStyleLight: Light
pureOverallStyleLightTip: Set sail freshly and light up the comfortable work interface
pureOverallStyleDark: Dark
pureOverallStyleDarkTip: Moonlight Overture, indulge in the tranquility and elegance of the night
pureOverallStyleSystem: Auto
pureOverallStyleSystemTip: Synchronize time, the interface naturally responds to morning and dusk
pureThemeMode: Theme Mode
pureThemeModeLight: Light
pureThemeModeLightTip: Set sail freshly and light up the comfortable work interface
pureThemeModeDark: Dark
pureThemeModeDarkTip: Moonlight Overture, indulge in the tranquility and elegance of the night
pureThemeModeSystem: Auto
pureThemeModeSystemTip: Synchronize time, the interface naturally responds to morning and dusk
pureThemeColor: Theme Color
pureLayoutModel: Layout Model
pureMenuLayout: Menu Layout
pureVerticalTip: The menu on the left is familiar and friendly
pureHorizontalTip: Top menu, concise overview
pureMixTip: Mixed menu, flexible
@@ -108,6 +108,7 @@ menus:
pureTypeit: Typeit
pureJsonEditor: JSON Editor
pureColorPicker: Color Picker
pureColorPickerPanel: Color PickerPanel
pureDatePicker: Date Picker
pureDateTimePicker: DateTimePicker
pureTimePicker: TimePicker

View File

@@ -31,15 +31,15 @@ panel:
pureCloseSystemSet: 关闭配置
pureClearCacheAndToLogin: 清空缓存并返回登录页
pureClearCache: 清空缓存
pureOverallStyle: 整体风格
pureOverallStyleLight: 浅色
pureOverallStyleLightTip: 清新启航,点亮舒适的工作界面
pureOverallStyleDark: 深色
pureOverallStyleDarkTip: 月光序曲,沉醉于夜的静谧雅致
pureOverallStyleSystem: 自动
pureOverallStyleSystemTip: 同步时光,界面随晨昏自然呼应
pureThemeMode: 主题模式
pureThemeModeLight: 浅色
pureThemeModeLightTip: 清新启航,点亮舒适的工作界面
pureThemeModeDark: 深色
pureThemeModeDarkTip: 月光序曲,沉醉于夜的静谧雅致
pureThemeModeSystem: 自动
pureThemeModeSystemTip: 同步时光,界面随晨昏自然呼应
pureThemeColor: 主题色
pureLayoutModel: 导航模式
pureMenuLayout: 菜单布局
pureVerticalTip: 左侧菜单,亲切熟悉
pureHorizontalTip: 顶部菜单,简洁概览
pureMixTip: 混合菜单,灵活多变
@@ -108,6 +108,7 @@ menus:
pureTypeit: 打字机
pureJsonEditor: JSON编辑器
pureColorPicker: 颜色选择器
pureColorPickerPanel: 颜色选择器面板
pureDatePicker: 日期选择器
pureDateTimePicker: 日期时间选择器
pureTimePicker: 时间选择器

View File

@@ -72,7 +72,7 @@
"deep-chat": "^2.2.2",
"echarts": "^6.0.0",
"el-table-infinite-scroll": "^3.0.7",
"element-plus": "^2.11.4",
"element-plus": "^2.11.7",
"highlight.js": "^11.11.1",
"intro.js": "^7.2.0",
"js-cookie": "^3.0.5",
@@ -206,4 +206,4 @@
"vue3-danmaku"
]
}
}
}

36
pnpm-lock.yaml generated
View File

@@ -25,10 +25,10 @@ importers:
version: 1.2.28
'@pureadmin/descriptions':
specifier: ^1.2.1
version: 1.2.1(echarts@6.0.0)(element-plus@2.11.4(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)
version: 1.2.1(echarts@6.0.0)(element-plus@2.11.7(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)
'@pureadmin/table':
specifier: ^3.3.0
version: 3.3.0(element-plus@2.11.4(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)
version: 3.3.0(element-plus@2.11.7(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)
'@pureadmin/utils':
specifier: ^2.6.2
version: 2.6.2(echarts@6.0.0)(vue@3.5.22(typescript@5.9.3))
@@ -84,8 +84,8 @@ importers:
specifier: ^3.0.7
version: 3.0.7(typescript@5.9.3)
element-plus:
specifier: ^2.11.4
version: 2.11.4(vue@3.5.22(typescript@5.9.3))
specifier: ^2.11.7
version: 2.11.7(vue@3.5.22(typescript@5.9.3))
highlight.js:
specifier: ^11.11.1
version: 11.11.1
@@ -124,7 +124,7 @@ importers:
version: 3.27.0
plus-pro-components:
specifier: ^0.1.29
version: 0.1.29(element-plus@2.11.4(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
version: 0.1.29(element-plus@2.11.7(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
qrcode:
specifier: ^1.5.4
version: 1.5.4
@@ -2842,8 +2842,8 @@ packages:
electron-to-chromium@1.5.234:
resolution: {integrity: sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg==}
element-plus@2.11.4:
resolution: {integrity: sha512-sLq+Ypd0cIVilv8wGGMEGvzRVBBsRpJjnAS5PsI/1JU1COZXqzH3N1UYMUc/HCdvdjf6dfrBy80Sj7KcACsT7w==}
element-plus@2.11.7:
resolution: {integrity: sha512-Bh47wuzsqaNBNDkbtlOlZER1cGcOB8GsXp/+C9b95MOrk0wvoHUV4NKKK7xMkfYNFYdYysQ752oMhnExgAL6+g==}
peerDependencies:
vue: ^3.2.0
@@ -2929,9 +2929,6 @@ packages:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
escape-html@1.0.3:
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
escape-string-regexp@2.0.0:
resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
engines: {node: '>=8'}
@@ -6793,19 +6790,19 @@ snapshots:
'@popperjs/core@2.11.8': {}
'@pureadmin/descriptions@1.2.1(echarts@6.0.0)(element-plus@2.11.4(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)':
'@pureadmin/descriptions@1.2.1(echarts@6.0.0)(element-plus@2.11.7(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)':
dependencies:
'@element-plus/icons-vue': 2.3.2(vue@3.5.22(typescript@5.9.3))
'@pureadmin/utils': 2.6.2(echarts@6.0.0)(vue@3.5.22(typescript@5.9.3))
element-plus: 2.11.4(vue@3.5.22(typescript@5.9.3))
element-plus: 2.11.7(vue@3.5.22(typescript@5.9.3))
vue: 3.5.22(typescript@5.9.3)
transitivePeerDependencies:
- echarts
- typescript
'@pureadmin/table@3.3.0(element-plus@2.11.4(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)':
'@pureadmin/table@3.3.0(element-plus@2.11.7(vue@3.5.22(typescript@5.9.3)))(typescript@5.9.3)':
dependencies:
element-plus: 2.11.4(vue@3.5.22(typescript@5.9.3))
element-plus: 2.11.7(vue@3.5.22(typescript@5.9.3))
vue: 3.5.22(typescript@5.9.3)
transitivePeerDependencies:
- typescript
@@ -8277,7 +8274,7 @@ snapshots:
el-table-infinite-scroll@3.0.7(typescript@5.9.3):
dependencies:
core-js: 3.46.0
element-plus: 2.11.4(vue@3.5.22(typescript@5.9.3))
element-plus: 2.11.7(vue@3.5.22(typescript@5.9.3))
vue: 3.5.22(typescript@5.9.3)
transitivePeerDependencies:
- '@vue/composition-api'
@@ -8285,7 +8282,7 @@ snapshots:
electron-to-chromium@1.5.234: {}
element-plus@2.11.4(vue@3.5.22(typescript@5.9.3)):
element-plus@2.11.7(vue@3.5.22(typescript@5.9.3)):
dependencies:
'@ctrl/tinycolor': 3.6.1
'@element-plus/icons-vue': 2.3.2(vue@3.5.22(typescript@5.9.3))
@@ -8296,7 +8293,6 @@ snapshots:
'@vueuse/core': 9.13.0(vue@3.5.22(typescript@5.9.3))
async-validator: 4.2.5
dayjs: 1.11.18
escape-html: 1.0.3
lodash: 4.17.21
lodash-es: 4.17.21
lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21)
@@ -8430,8 +8426,6 @@ snapshots:
escalade@3.2.0: {}
escape-html@1.0.3: {}
escape-string-regexp@2.0.0: {}
escape-string-regexp@4.0.0: {}
@@ -9991,10 +9985,10 @@ snapshots:
exsolve: 1.0.7
pathe: 2.0.3
plus-pro-components@0.1.29(element-plus@2.11.4(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)):
plus-pro-components@0.1.29(element-plus@2.11.7(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)):
dependencies:
'@element-plus/icons-vue': 2.3.2(vue@3.5.22(typescript@5.9.3))
element-plus: 2.11.4(vue@3.5.22(typescript@5.9.3))
element-plus: 2.11.7(vue@3.5.22(typescript@5.9.3))
lodash-es: 4.17.21
sortablejs: 1.15.6
vue: 3.5.22(typescript@5.9.3)

View File

@@ -9,7 +9,7 @@
"Layout": "vertical",
"Theme": "light",
"DarkMode": false,
"OverallStyle": "light",
"ThemeMode": "light",
"Grey": false,
"Weak": false,
"HideTabs": false,

View File

@@ -16,6 +16,7 @@ import en from "element-plus/es/locale/lang/en";
import zhCn from "element-plus/es/locale/lang/zh-cn";
import plusEn from "plus-pro-components/es/locale/lang/en";
import plusZhCn from "plus-pro-components/es/locale/lang/zh-cn";
import { ElNotification } from "element-plus";
export default defineComponent({
name: "app",
@@ -54,5 +55,31 @@ export default defineComponent({
);
}
}
// mounted() {
// ElNotification({
// title: "平台最新活动与动态",
// duration: 0,
// customClass: "fullpage-notification",
// // @ts-expect-error
// style: { width: "260px" },
// position: "bottom-right",
// dangerouslyUseHTMLString: true,
// message: `
// <a target='_blank' class='block text-base text-center border mt-4 rounded hover:text-[red]!' href='https://pure-admin.cn/pages/service/#%E6%9C%80%E6%96%B0%E6%B4%BB%E5%8A%A8%E4%B8%8E%E5%8A%A8%E6%80%81'>
// 点我查看
// </a>
// `
// });
// }
});
</script>
<style>
.fullpage-notification > .el-notification__group > .el-notification__closeBtn {
top: 15px;
}
.fullpage-notification > div > h2 {
color: red;
font-size: 18px;
}
</style>

View File

@@ -35,8 +35,20 @@ type DialogProps = {
top?: string;
/** 是否需要遮罩层,默认 `true` */
modal?: boolean;
/** 是否允许穿透遮罩层,默认 `false`。使用时需将 `modal` 属性设置为 `false` */
modalPenetrable?: boolean;
/** 遮罩的自定义类名 */
modalClass?: string;
/** `header` 部分的自定义 `class` 名 */
headerClass?: string;
/** `body` 部分的自定义 `class` 名 */
bodyClass?: string;
/** `footer` 部分的自定义 `class` 名 */
footerClass?: string;
/** `Dialog` 自身是否插入至 `body` 元素上。嵌套的 `Dialog` 必须指定该属性并赋值为 `true`,默认 `false` */
appendToBody?: boolean;
/** `Dialog` 挂载到哪个 `DOM` 元素,该属性会覆盖 `append-to-body` 属性,默认 `body` */
appendTo?: string | HTMLElement;
/** 是否在 `Dialog` 出现时将 `body` 滚动锁定,默认 `true` */
lockScroll?: boolean;
/** `Dialog` 的自定义类名 */
@@ -57,12 +69,22 @@ type DialogProps = {
beforeClose?: (done: DoneFn) => void;
/** 为 `Dialog` 启用可拖拽功能,默认 `false` */
draggable?: boolean;
/** 拖动范围可以超出可视区,默认 `false` */
overflow?: boolean;
/** 是否让 `Dialog` 的 `header` 和 `footer` 部分居中排列,默认 `false` */
center?: boolean;
/** 是否水平垂直对齐对话框,默认 `false` */
alignCenter?: boolean;
/** 当关闭 `Dialog` 时,销毁其中的元素,默认 `false` */
destroyOnClose?: boolean;
/** 自定义关闭图标,默认 `Close` */
closeIcon?: string | Component;
/** 和原生的 `CSS` 的 `z-index` 相同,改变 `z` 轴的顺序 */
zIndex?: number;
/** `header` 的 `aria-level` 属性 */
headerAriaLevel?: string;
/** 对话框动画的自定义过渡配置。可以是一个字符串(过渡名称),也可以是一个包含 `Vue` 过渡属性的对象,默认 `dialog-fade` */
transition?: string | object;
};
//element-plus.org/zh-CN/component/popconfirm.html#attributes

View File

@@ -6,7 +6,6 @@ type ArgsType = {
/** `cancel` 点击取消按钮、`sure` 点击确定按钮、`close` 点击右上角关闭按钮或空白页或按下了 `esc` 键 */
command: "cancel" | "sure" | "close";
};
type ButtonType =
| "primary"
| "success"
@@ -20,11 +19,11 @@ type DrawerProps = {
visible?: boolean;
/** `Drawer` 自身是否插入至 `body` 元素上。嵌套的 `Drawer` 必须指定该属性并赋值为 `true`,默认 `false` */
appendToBody?: boolean;
/** 挂载到哪个 `DOM` 元素覆盖 `appendToBody` */
/** 挂载到哪个 `DOM` 元素,会覆盖 `appendToBody` 属性,默认 `body` */
appendTo?: string;
/** 是否在 `Drawer` 出现时将 `body` 滚动锁定,默认 `true` */
lockScroll?: boolean;
/** 关闭前的回调,会暂停 `Drawer` 的关闭 回调函数内执行 `done` 参数方法的时候才是真正关闭对话框的时候 */
/** 关闭前的回调,会暂停 `Drawer` 的关闭回调函数内执行 `done` 参数方法的时候才是真正关闭对话框的时候 */
beforeClose?: (done: DoneFn) => void;
/** 是否可以通过点击 `modal` 关闭 `Drawer` ,默认 `true` */
closeOnClickModal?: boolean;
@@ -44,9 +43,13 @@ type DrawerProps = {
destroyOnClose?: boolean;
/** 是否需要遮罩层,默认 `true` */
modal?: boolean;
/** 是否允许穿透遮罩层,默认 `false`。使用时需将 `modal` 属性设置为 `false` */
modalPenetrable?: boolean;
/** `Drawer` 打开的方向,默认 `rtl` */
direction?: "rtl" | "ltr" | "ttb" | "btt";
/** `Drawer` 窗体的大小, 当使用 `number` 类型时, 以像素为单位, 当使用 `string` 类型时, 请传入 `'x%'`, 否则便会以 `number` 类型解释 */
/** 是否启用可调整大小的功能,默认 `false` */
resizable?: boolean;
/** `Drawer` 窗体的大小, 当使用 `number` 类型时, 以像素为单位, 当使用 `string` 类型时, 请传入 `'x%'`, 否则便会以 `number` 类型解释,默认 `30%` */
size?: string | number;
/** `Drawer` 的标题 */
title?: string;
@@ -54,6 +57,12 @@ type DrawerProps = {
withHeader?: boolean;
/** 遮罩层的自定义类名 */
modalClass?: string;
/** `header` 部分的自定义 `class` 名 */
headerClass?: string;
/** `body` 部分的自定义 `class` 名 */
bodyClass?: string;
/** `footer` 部分的自定义 `class` 名 */
footerClass?: string;
/** 设置 `z-index` */
zIndex?: number;
/** `header` 的 `aria-level` 属性,默认 `2` */

View File

@@ -100,7 +100,7 @@ export default defineComponent({
"pt-[3px]",
"px-[11px]",
"border-b-[1px]",
"border-solid",
"border-b-solid",
"border-[#dcdfe6]",
"dark:border-[#303030]"
];

View File

@@ -93,7 +93,7 @@ export default defineComponent({
"pt-[3px]",
"px-[11px]",
"border-b-[1px]",
"border-solid",
"border-b-solid",
"border-[#dcdfe6]",
"dark:border-[#303030]"
];

View File

@@ -8,7 +8,7 @@ const TITLE = getConfig("Title");
<footer
class="layout-footer text-[rgba(0,0,0,0.6)] dark:text-[rgba(220,220,242,0.8)]"
>
Copyright © 2020-present
Copyright © 2020-2025
<a
class="hover:text-primary!"
href="https://github.com/pure-admin"
@@ -16,12 +16,23 @@ const TITLE = getConfig("Title");
>
&nbsp;{{ TITLE }}
</a>
<!-- <div class="ml-8">
<span>赞助商</span>
<a
class="hover:text-primary"
href="https://ai-tools.cn/resume/start"
target="_blank"
>
二猫 AI 简历
</a>
</div> -->
</footer>
</template>
<style lang="scss" scoped>
.layout-footer {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
width: 100%;

View File

@@ -37,7 +37,7 @@ const horizontalRef = ref();
const {
dataTheme,
overallStyle,
themeMode,
layoutTheme,
themeColors,
toggleClass,
@@ -50,7 +50,7 @@ if (unref(layoutTheme)) {
const layout = unref(layoutTheme).layout;
const theme = unref(layoutTheme).theme;
document.documentElement.setAttribute("data-theme", theme);
setLayoutModel(layout);
setMenuLayout(layout);
}
/** 默认灵动模式 */
@@ -195,24 +195,24 @@ const pClass = computed(() => {
const themeOptions = computed<Array<OptionsType>>(() => {
return [
{
label: t("panel.pureOverallStyleLight"),
label: t("panel.pureThemeModeLight"),
icon: DayIcon,
theme: "light",
tip: t("panel.pureOverallStyleLightTip"),
tip: t("panel.pureThemeModeLightTip"),
iconAttrs: { fill: isDark.value ? "#fff" : "#000" }
},
{
label: t("panel.pureOverallStyleDark"),
label: t("panel.pureThemeModeDark"),
icon: DarkIcon,
theme: "dark",
tip: t("panel.pureOverallStyleDarkTip"),
tip: t("panel.pureThemeModeDarkTip"),
iconAttrs: { fill: isDark.value ? "#fff" : "#000" }
},
{
label: t("panel.pureOverallStyleSystem"),
label: t("panel.pureThemeModeSystem"),
icon: SystemIcon,
theme: "system",
tip: t("panel.pureOverallStyleSystemTip"),
tip: t("panel.pureThemeModeSystemTip"),
iconAttrs: { fill: isDark.value ? "#fff" : "#000" }
}
];
@@ -238,8 +238,8 @@ const markOptions = computed<Array<OptionsType>>(() => {
];
});
/** 设置导航模式 */
function setLayoutModel(layout: string) {
/** 设置菜单布局 */
function setMenuLayout(layout: string) {
layoutTheme.value.layout = layout;
window.document.body.setAttribute("layout", layout);
$storage.layout = {
@@ -249,7 +249,7 @@ function setLayoutModel(layout: string) {
sidebarStatus: $storage.layout?.sidebarStatus,
epThemeColor: $storage.layout?.epThemeColor,
themeColor: $storage.layout?.themeColor,
overallStyle: $storage.layout?.overallStyle
themeMode: $storage.layout?.themeMode
};
useAppStoreHook().setLayout(layout);
}
@@ -276,15 +276,15 @@ watch($storage, ({ layout }) => {
const mediaQueryList = window.matchMedia("(prefers-color-scheme: dark)");
/** 根据操作系统主题设置平台整体风格 */
/** 根据操作系统主题设置平台主题模式 */
function updateTheme() {
if (overallStyle.value !== "system") return;
if (themeMode.value !== "system") return;
if (mediaQueryList.matches) {
dataTheme.value = true;
} else {
dataTheme.value = false;
}
dataThemeChange(overallStyle.value);
dataThemeChange(themeMode.value);
}
function removeMatchMedia() {
@@ -317,18 +317,18 @@ onUnmounted(() => removeMatchMedia);
<template>
<LayPanel>
<div class="p-5">
<p :class="pClass">{{ t("panel.pureOverallStyle") }}</p>
<p :class="pClass">{{ t("panel.pureThemeMode") }}</p>
<Segmented
resize
class="select-none"
:modelValue="overallStyle === 'system' ? 2 : dataTheme ? 1 : 0"
:modelValue="themeMode === 'system' ? 2 : dataTheme ? 1 : 0"
:options="themeOptions"
@change="
theme => {
theme.index === 1 && theme.index !== 2
? (dataTheme = true)
: (dataTheme = false);
overallStyle = theme.option.theme;
themeMode = theme.option.theme;
dataThemeChange(theme.option.theme);
theme.index === 2 && watchSystemThemeChange();
}
@@ -354,7 +354,7 @@ onUnmounted(() => removeMatchMedia);
</li>
</ul>
<p :class="['mt-5!', pClass]">{{ t("panel.pureLayoutModel") }}</p>
<p :class="['mt-5!', pClass]">{{ t("panel.pureMenuLayout") }}</p>
<ul class="pure-theme">
<li
ref="verticalRef"
@@ -363,7 +363,7 @@ onUnmounted(() => removeMatchMedia);
zIndex: 41000
}"
:class="layoutTheme.layout === 'vertical' ? 'is-select' : ''"
@click="setLayoutModel('vertical')"
@click="setMenuLayout('vertical')"
>
<div />
<div />
@@ -376,7 +376,7 @@ onUnmounted(() => removeMatchMedia);
zIndex: 41000
}"
:class="layoutTheme.layout === 'horizontal' ? 'is-select' : ''"
@click="setLayoutModel('horizontal')"
@click="setMenuLayout('horizontal')"
>
<div />
<div />
@@ -389,7 +389,7 @@ onUnmounted(() => removeMatchMedia);
zIndex: 41000
}"
:class="layoutTheme.layout === 'mix' ? 'is-select' : ''"
@click="setLayoutModel('mix')"
@click="setMenuLayout('mix')"
>
<div />
<div />

View File

@@ -321,10 +321,9 @@
.chrome-tab-divider {
position: absolute;
right: 7px;
left: 7px;
width: 1px;
height: 14px;
background-color: #2b2d2f;
}
&:hover {

View File

@@ -618,6 +618,10 @@ onBeforeUnmount(() => {
/>
</template>
<div v-else class="chrome-tab">
<span
v-if="index !== 0 && index !== activeIndex"
class="chrome-tab-divider bg-[#e2e2e2] dark:bg-[#2d2d2d]"
/>
<div class="chrome-tab__bg">
<TagChrome />
</div>
@@ -631,7 +635,6 @@ onBeforeUnmount(() => {
>
<IconifyIconOffline :icon="Close" />
</span>
<span class="chrome-tab-divider" />
</div>
</div>
</div>

View File

@@ -33,7 +33,7 @@ export function useDataThemeChange() {
const { $storage } = useGlobal<GlobalPropertiesApi>();
const dataTheme = ref<boolean>($storage?.layout?.darkMode);
const overallStyle = ref<string>($storage?.layout?.overallStyle);
const themeMode = ref<string>($storage?.layout?.themeMode);
const body = document.documentElement as HTMLElement;
function toggleClass(flag: boolean, clsName: string, target?: HTMLElement) {
@@ -59,7 +59,7 @@ export function useDataThemeChange() {
sidebarStatus: $storage.layout?.sidebarStatus,
epThemeColor: $storage.layout?.epThemeColor,
themeColor: isClick ? theme : storageThemeColor,
overallStyle: overallStyle.value
themeMode: themeMode.value
};
if (theme === "default" || theme === "light") {
@@ -89,9 +89,9 @@ export function useDataThemeChange() {
}
};
/** 浅色、深色整体风格切换 */
function dataThemeChange(overall?: string) {
overallStyle.value = overall;
/** 浅色、深色主题模式切换 */
function dataThemeChange(mode?: string) {
themeMode.value = mode;
if (useEpThemeStoreHook().epTheme === "light" && dataTheme.value) {
setLayoutThemeColor("default", false);
} else {
@@ -126,7 +126,7 @@ export function useDataThemeChange() {
return {
body,
dataTheme,
overallStyle,
themeMode,
layoutTheme,
themeColors,
onReset,

View File

@@ -29,7 +29,7 @@ export function useLayout() {
sidebarStatus: $config?.SidebarStatus ?? true,
epThemeColor: $config?.EpThemeColor ?? "#409EFF",
themeColor: $config?.Theme ?? "light",
overallStyle: $config?.OverallStyle ?? "light"
themeMode: $config?.ThemeMode ?? "light"
};
}
/** 灰色模式、色弱模式、隐藏标签页 */

View File

@@ -67,16 +67,16 @@ const set: setType = reactive({
})
});
function setTheme(layoutModel: string) {
window.document.body.setAttribute("layout", layoutModel);
function setTheme(menuLayout: string) {
window.document.body.setAttribute("layout", menuLayout);
$storage.layout = {
layout: `${layoutModel}`,
layout: `${menuLayout}`,
theme: $storage.layout?.theme,
darkMode: $storage.layout?.darkMode,
sidebarStatus: $storage.layout?.sidebarStatus,
epThemeColor: $storage.layout?.epThemeColor,
themeColor: $storage.layout?.themeColor,
overallStyle: $storage.layout?.overallStyle
themeMode: $storage.layout?.themeMode
};
}
@@ -123,7 +123,7 @@ onMounted(() => {
});
onBeforeMount(() => {
useDataThemeChange().dataThemeChange($storage.layout?.overallStyle);
useDataThemeChange().dataThemeChange($storage.layout?.themeMode);
});
const LayHeader = defineComponent({

View File

@@ -3,15 +3,13 @@ import type { App, Component } from "vue";
import {
/**
* 为了方便演示平台将 element-plus 导出的所有组件引入,实际使用中如果你没用到哪个组件,将其注释掉就行
* 导出来源https://github.com/element-plus/element-plus/blob/dev/packages/element-plus/component.ts#L111-L211
* 导出来源https://github.com/element-plus/element-plus/blob/dev/packages/element-plus/component.ts#L116-L226
* */
ElAffix,
ElAlert,
ElAutocomplete,
ElAutoResizer,
ElAvatar,
ElAnchor,
ElAnchorLink,
ElBacktop,
ElBadge,
ElBreadcrumb,
@@ -32,6 +30,7 @@ import {
ElCollapse,
ElCollapseItem,
ElCollapseTransition,
ElColorPickerPanel,
ElColorPicker,
ElConfigProvider,
ElContainer,
@@ -40,6 +39,7 @@ import {
ElHeader,
ElMain,
ElDatePicker,
ElDatePickerPanel,
ElDescriptions,
ElDescriptionsItem,
ElDialog,
@@ -56,6 +56,7 @@ import {
ElImageViewer,
ElInput,
ElInputNumber,
ElInputTag,
ElLink,
ElMenu,
ElMenuItem,
@@ -107,17 +108,22 @@ import {
ElWatermark,
ElTour,
ElTourStep,
ElAnchor,
ElAnchorLink,
ElSegmented,
ElMention,
ElSplitter,
ElSplitterPanel,
/**
* 为了方便演示平台将 element-plus 导出的所有插件引入,实际使用中如果你没用到哪个插件,将其注释掉就行
* 导出来源https://github.com/element-plus/element-plus/blob/dev/packages/element-plus/plugin.ts#L11-L16
* */
ElLoading, // v-loading 指令
ElInfiniteScroll, // v-infinite-scroll 指令
ElPopoverDirective, // v-popover 指令
ElLoading, // v-loading 指令
ElMessage, // $message 全局属性对象globalProperties
ElMessageBox, // $msgbox、$alert、$confirm、$prompt 全局属性对象globalProperties
ElNotification // $notify 全局属性对象globalProperties
ElNotification, // $notify 全局属性对象globalProperties
ElPopoverDirective // v-popover 指令
} from "element-plus";
const components = [
@@ -126,8 +132,6 @@ const components = [
ElAutocomplete,
ElAutoResizer,
ElAvatar,
ElAnchor,
ElAnchorLink,
ElBacktop,
ElBadge,
ElBreadcrumb,
@@ -148,6 +152,7 @@ const components = [
ElCollapse,
ElCollapseItem,
ElCollapseTransition,
ElColorPickerPanel,
ElColorPicker,
ElConfigProvider,
ElContainer,
@@ -156,6 +161,7 @@ const components = [
ElHeader,
ElMain,
ElDatePicker,
ElDatePickerPanel,
ElDescriptions,
ElDescriptionsItem,
ElDialog,
@@ -172,6 +178,7 @@ const components = [
ElImageViewer,
ElInput,
ElInputNumber,
ElInputTag,
ElLink,
ElMenu,
ElMenuItem,
@@ -223,16 +230,21 @@ const components = [
ElWatermark,
ElTour,
ElTourStep,
ElSegmented
ElAnchor,
ElAnchorLink,
ElSegmented,
ElMention,
ElSplitter,
ElSplitterPanel
];
const plugins = [
ElLoading,
ElInfiniteScroll,
ElPopoverDirective,
ElLoading,
ElMessage,
ElMessageBox,
ElNotification
ElNotification,
ElPopoverDirective
];
/** 按需引入`element-plus` */

View File

@@ -119,8 +119,7 @@ export default {
name: "PureSlider",
component: () => import("@/views/components/slider/index.vue"),
meta: {
title: $t("menus.pureSlider"),
extraIcon: "IF-pure-iconfont-new svg"
title: $t("menus.pureSlider")
}
},
{
@@ -195,6 +194,15 @@ export default {
title: $t("menus.pureColorPicker")
}
},
{
path: "/components/color-picker-panel",
name: "ColorPickerPanel",
component: () => import("@/views/components/color-picker-panel.vue"),
meta: {
title: $t("menus.pureColorPickerPanel"),
extraIcon: "IF-pure-iconfont-new svg"
}
},
{
path: "/components/selector",
name: "Selector",

View File

@@ -18,7 +18,7 @@ export const useAppStore = defineStore("pure-app", {
withoutAnimation: false,
isClickCollapse: false
},
// 这里的layout用于监听容器拖拉后恢复对应的导航模式
// 这里的layout用于监听容器拖拉后恢复对应的菜单布局
layout:
storageLocal().getItem<StorageConfigs>(
`${responsiveStorageNameSpace()}layout`

View File

@@ -21,7 +21,7 @@ export const useEpThemeStore = defineStore("pure-epTheme", {
getEpThemeColor(state) {
return state.epThemeColor;
},
/** 用于mix导航模式下hamburger-svg的fill属性 */
/** 用于mix菜单布局下hamburger-svg的fill属性 */
fill(state) {
if (state.epTheme === "light") {
return "#409eff";

View File

@@ -172,10 +172,6 @@
.is-active > .el-sub-menu__title,
.is-active.submenu-title-noDropdown {
color: var(--pure-theme-sub-menu-active-text) !important;
i {
color: var(--pure-theme-sub-menu-active-text) !important;
}
}
.is-active {
@@ -235,6 +231,7 @@
.is-active.submenu-title-noDropdown.outer-most > * {
z-index: 1;
color: #fff;
background: transparent !important;
}
.is-active.submenu-title-noDropdown.outer-most::before {
@@ -270,10 +267,6 @@
.is-active > .el-sub-menu__title,
.is-active.submenu-title-noDropdown {
color: var(--pure-theme-sub-menu-active-text) !important;
i {
color: var(--pure-theme-sub-menu-active-text) !important;
}
}
/* 子菜单中还有子菜单 */
@@ -374,10 +367,6 @@
.is-active > .el-sub-menu__title,
.is-active.submenu-title-noDropdown {
color: var(--pure-theme-sub-menu-active-text) !important;
i {
color: var(--pure-theme-sub-menu-active-text) !important;
}
}
.nest-menu .el-sub-menu > .el-sub-menu__title,
@@ -541,10 +530,6 @@
.is-active > .el-sub-menu__title,
.is-active.submenu-title-noDropdown {
color: var(--pure-theme-sub-menu-active-text) !important;
i {
color: var(--pure-theme-sub-menu-active-text) !important;
}
}
.is-active {

View File

@@ -4,6 +4,13 @@ import { type MessageHandler, ElMessage } from "element-plus";
type messageStyle = "el" | "antd";
type messageTypes = "info" | "success" | "warning" | "error";
type messagePlacement =
| "top"
| "top-left"
| "top-right"
| "bottom"
| "bottom-left"
| "bottom-right";
interface MessageParams {
/** 消息类型,可选 `info` 、`success` 、`warning` 、`error` ,默认 `info` */
@@ -20,8 +27,10 @@ interface MessageParams {
duration?: number;
/** 是否显示关闭按钮,默认值 `false` */
showClose?: boolean;
/** `Message` 距离窗口顶部的偏移量,默认 `16` */
/** `Message` 消息距离窗口边缘的偏移量,默认 `16` */
offset?: number;
/** `Message` 消息放置位置,默认 `top` */
placement?: messagePlacement;
/** 设置组件的根元素,默认 `document.body` */
appendTo?: string | HTMLElement;
/** 合并内容相同的消息,不支持 `VNode` 类型的消息,默认值 `false` */
@@ -56,6 +65,7 @@ const message = (
duration = 2000,
showClose = false,
offset = 16,
placement = "top",
appendTo = document.body,
grouping = false,
repeatNum = 1,
@@ -71,6 +81,7 @@ const message = (
duration,
showClose,
offset,
placement,
appendTo,
grouping,
repeatNum,

View File

@@ -19,8 +19,8 @@ export const injectResponsiveStorage = (app: App, config: PlatformConfigs) => {
darkMode: config.DarkMode ?? false,
sidebarStatus: config.SidebarStatus ?? true,
epThemeColor: config.EpThemeColor ?? "#409EFF",
themeColor: config.Theme ?? "light", // 主题色对应系统配置中的主题色与theme不同的是它不会受到浅色、深色整体风格切换的影响,只会在手动点击主题色时改变)
overallStyle: config.OverallStyle ?? "light" // 整体风格浅色light、深色dark、自动system
themeColor: config.Theme ?? "light", // 主题色对应系统配置中的主题色与theme不同的是它不会受到浅色、深色主题模式切换的影响,只会在手动点击主题色时改变)
themeMode: config.ThemeMode ?? "light" // 主题模式浅色light、深色dark、自动system
},
// 系统配置-界面显示
configure: Storage.getData("configure", nameSpace) ?? {

View File

@@ -25,7 +25,7 @@ const router = useRouter();
const isOpen = ref(deviceDetection() ? false : true);
const { $storage } = useGlobal<GlobalPropertiesApi>();
onBeforeMount(() => {
useDataThemeChange().dataThemeChange($storage.layout?.overallStyle);
useDataThemeChange().dataThemeChange($storage.layout?.themeMode);
});
const userInfo = ref({

View File

@@ -0,0 +1,68 @@
<script setup lang="ts">
import { ref } from "vue";
defineOptions({
name: "ColorPickerPanel"
});
const disabled = ref(false);
const color = ref("rgba(255, 69, 0, 0.68)");
const predefineColors = [
"#ff4500",
"#ff8c00",
"#ffd700",
"#90ee90",
"#00ced1",
"#1e90ff",
"#c71585",
"rgba(255, 69, 0, 0.68)",
"rgb(255, 120, 0)",
"hsv(51, 100, 98)",
"hsva(120, 40, 94, 0.5)",
"hsl(181, 100%, 37%)",
"hsla(209, 100%, 56%, 0.73)",
"#c7158577"
];
</script>
<template>
<el-card shadow="never">
<template #header>
<div class="card-header">
<el-space wrap :size="40">
<el-link
v-tippy="{
content: '点击查看详细文档'
}"
href="https://element-plus.org/zh-CN/component/color-picker-panel.html"
target="_blank"
style="font-size: 16px; font-weight: 800"
>
颜色选择器面板
</el-link>
<el-radio-group v-model="disabled">
<el-radio :value="false">启用</el-radio>
<el-radio :value="true">禁用</el-radio>
</el-radio-group>
</el-space>
</div>
<el-link
class="mt-2"
href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/components/color-picker-panel.vue"
target="_blank"
>
代码位置 src/views/components/color-picker-panel.vue
</el-link>
</template>
<div class="mb-2">选择透明度、预定义颜色、无边框</div>
<el-color-picker-panel
v-model="color"
show-alpha
:border="false"
:disabled="disabled"
:predefine="predefineColors"
/>
<el-divider />
</el-card>
</template>

View File

@@ -463,6 +463,16 @@ function onSureBtnLoading() {
}
});
}
// 自定义动画
function onTransitionClick(title, transition) {
addDialog({
width: "30%",
title,
transition,
contentRenderer: () => <p>{JSON.stringify(transition)}</p>
});
}
</script>
<template>
@@ -551,5 +561,112 @@ function onSureBtnLoading() {
点击底部确定按钮可开启按钮动画
</el-button>
</el-space>
<el-divider />
<el-space wrap>
<el-button
@click="onTransitionClick('淡入淡出动画(默认)', 'dialog-fade')"
>
淡入淡出动画默认
</el-button>
<el-button @click="onTransitionClick('缩放动画', 'dialog-scale')">
缩放动画
</el-button>
<el-button @click="onTransitionClick('滑动动画', 'dialog-slide')">
滑动动画
</el-button>
<el-button @click="onTransitionClick('弹跳动画', 'dialog-bounce')">
弹跳动画
</el-button>
<el-button
@click="
onTransitionClick('自定义动画事件处理器(可配置对象)', {
name: 'dialog-custom-object',
appear: true,
mode: 'out-in',
duration: 500
})
"
>
自定义动画事件处理器可配置对象
</el-button>
</el-space>
</el-card>
</template>
<style>
/* Scale Animation */
.dialog-scale-enter-active,
.dialog-scale-leave-active,
.dialog-scale-enter-active .el-dialog,
.dialog-scale-leave-active .el-dialog {
transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
}
.dialog-scale-enter-from,
.dialog-scale-leave-to {
opacity: 0;
}
.dialog-scale-enter-from .el-dialog,
.dialog-scale-leave-to .el-dialog {
opacity: 0;
transform: scale(0.5);
}
/* Slide Animation */
.dialog-slide-enter-active,
.dialog-slide-leave-active,
.dialog-slide-enter-active .el-dialog,
.dialog-slide-leave-active .el-dialog {
transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.dialog-slide-enter-from,
.dialog-slide-leave-to {
opacity: 0;
}
.dialog-slide-enter-from .el-dialog,
.dialog-slide-leave-to .el-dialog {
opacity: 0;
transform: translateY(-100px);
}
/* Bounce Animation */
.dialog-bounce-enter-active,
.dialog-bounce-leave-active,
.dialog-bounce-enter-active .el-dialog,
.dialog-bounce-leave-active .el-dialog {
transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.dialog-bounce-enter-from,
.dialog-bounce-leave-to {
opacity: 0;
}
.dialog-bounce-enter-from .el-dialog,
.dialog-bounce-leave-to .el-dialog {
opacity: 0;
transform: scale(0.3) translateY(-50px);
}
/* Object Configuration Animation */
.dialog-custom-object-enter-active,
.dialog-custom-object-leave-active,
.dialog-custom-object-enter-active .el-dialog,
.dialog-custom-object-leave-active .el-dialog {
transition: all 0.5s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.dialog-custom-object-enter-from,
.dialog-custom-object-leave-to {
opacity: 0;
}
.dialog-custom-object-enter-from .el-dialog,
.dialog-custom-object-leave-to .el-dialog {
opacity: 0;
transform: rotate(180deg) scale(0.5);
}
</style>

View File

@@ -422,6 +422,17 @@ function onSureBtnLoading() {
}
});
}
function onResizableClick(title, content, direction) {
addDrawer({
title,
direction,
resizable: true, // 启用可调整大小的功能
contentRenderer: () => (
<p class="text-[var(--el-color-primary)]">{content}</p> // jsx 语法 (注意在.vue文件启用jsx语法需要在script开启lang="tsx"
)
});
}
</script>
<template>
@@ -498,5 +509,28 @@ function onSureBtnLoading() {
点击底部确定按钮可开启按钮动画
</el-button>
</el-space>
<el-divider />
<el-space wrap>
<el-button
@click="onResizableClick('从左侧打开', '拖动抽屉右侧边缘', 'ltr')"
>
拖拽调整大小从左侧打开
</el-button>
<el-button
@click="onResizableClick('从右侧打开', '拖动抽屉左侧边缘', 'rtl')"
>
拖拽调整大小从右侧打开
</el-button>
<el-button
@click="onResizableClick('从顶部打开', '拖动抽屉底部边缘', 'ttb')"
>
拖拽调整大小从顶部打开
</el-button>
<el-button
@click="onResizableClick('从底部打开', '拖动抽屉顶部边缘', 'btt')"
>
拖拽调整大小从底部打开
</el-button>
</el-space>
</el-card>
</template>

View File

@@ -199,6 +199,31 @@ defineOptions({
<el-divider />
<h4 class="mb-4!">
控制消息出现的位置消息可以显示在窗口的顶部(默认) 或其他位置
</h4>
<el-space wrap>
<el-button @click="message('顶部中间')"> 顶部中间 </el-button>
<el-button @click="message('顶部左侧', { placement: 'top-left' })">
顶部左侧
</el-button>
<el-button @click="message('顶部右侧', { placement: 'top-right' })">
顶部右侧
</el-button>
<el-button @click="message('底部中间', { placement: 'bottom' })">
底部中间
</el-button>
<el-button @click="message('底部左侧', { placement: 'bottom-left' })">
底部左侧
</el-button>
<el-button @click="message('底部右侧', { placement: 'bottom-right' })">
底部右侧
</el-button>
</el-space>
<el-divider />
<el-button @click="closeAllMessage"> 关闭所有消息提示 </el-button>
</el-card>
</template>

View File

@@ -52,8 +52,8 @@ const currentPage = computed(() => {
const { t } = useI18n();
const { initStorage } = useLayout();
initStorage();
const { dataTheme, overallStyle, dataThemeChange } = useDataThemeChange();
dataThemeChange(overallStyle.value);
const { dataTheme, themeMode, dataThemeChange } = useDataThemeChange();
dataThemeChange(themeMode.value);
const { title, getDropdownItemStyle, getDropdownItemClass } = useNav();
const { locale, translationCh, translationEn } = useTranslationLang();
@@ -336,9 +336,9 @@ watch(loginDay, value => {
</div>
</div>
<div
class="w-full flex-c absolute bottom-3 text-sm text-[rgba(0,0,0,0.6)] dark:text-[rgba(220,220,242,0.8)]"
class="w-full flex-c flex-wrap absolute bottom-3 text-sm text-[rgba(0,0,0,0.6)] dark:text-[rgba(220,220,242,0.8)]"
>
Copyright © 2020-present
Copyright © 2020-2025
<a
class="hover:text-primary!"
href="https://github.com/pure-admin"
@@ -346,6 +346,16 @@ watch(loginDay, value => {
>
&nbsp;{{ title }}
</a>
<!-- <div class="ml-8">
<span>赞助商:</span>
<a
class="hover:text-primary"
href="https://ai-tools.cn/resume/start"
target="_blank"
>
二猫 AI 简历
</a>
</div> -->
</div>
</div>
</template>

6
types/global.d.ts vendored
View File

@@ -93,7 +93,7 @@ declare global {
Layout?: string;
Theme?: string;
DarkMode?: boolean;
OverallStyle?: string;
ThemeMode?: string;
Grey?: boolean;
Weak?: boolean;
HideTabs?: boolean;
@@ -140,7 +140,7 @@ declare global {
sidebarStatus?: boolean;
epThemeColor?: string;
themeColor?: string;
overallStyle?: string;
themeMode?: string;
showLogo?: boolean;
showModel?: string;
menuSearchHistory?: number;
@@ -169,7 +169,7 @@ declare global {
sidebarStatus?: boolean;
epThemeColor?: string;
themeColor?: string;
overallStyle?: string;
themeMode?: string;
};
configure: {
grey?: boolean;

View File

@@ -59,4 +59,4 @@ export default ({ mode }: ConfigEnv): UserConfigExport => {
__APP_INFO__: JSON.stringify(__APP_INFO__)
}
};
};
};