Compare commits

..

517 Commits

Author SHA1 Message Date
xiaoxian521
88bba7555b release: update 3.4.6 2022-08-23 10:31:44 +08:00
xiaoxian521
30c682bd24 fix: 修复iframe加载失败 2022-08-23 10:24:40 +08:00
SampsonYe(叶飞)
3baffa11e4 fix: 修复动态路由子级长度为0时抛出异常 (#333) 2022-08-23 10:10:49 +08:00
xiaoxian521
1ed598c5f2 fix: process is not defined in path 2022-08-23 09:55:23 +08:00
xiaoxian521
185d779c8d release: update 3.4.5 2022-08-22 20:21:53 +08:00
xiaoxian521
241fc618b8 fix: 修复本地响应式存储对象设置问题 2022-08-22 20:17:50 +08:00
xiaoxian521
3a0b2e04d4 release: update 3.4.0 2022-08-22 17:21:18 +08:00
xiaoxian521
cec867297d chore: update 2022-08-22 16:16:17 +08:00
RealityBoy
cbe539c727 Refactor/tags (#332)
* refactor: tags

* chore: update

* chore: update

* chore: update

* chore: update
2022-08-22 15:49:29 +08:00
xiaoxian521
7c84d9eb70 perf: router 2022-08-22 10:19:10 +08:00
xiaoxian521
5a7187d22f perf: 移动端优化 2022-08-21 10:49:27 +08:00
xiaoxian521
a7e8249ae6 chore: update 2022-08-21 10:26:09 +08:00
xiaoxian521
d81ab81fb0 chore: update 2022-08-21 07:31:59 +08:00
xiaoxian521
846e7350fb chore: update 2022-08-19 23:01:45 +08:00
xiaoxian521
102f27fe30 chore: update element-plus@2.2.14 and perf menu 2022-08-19 21:41:49 +08:00
newives
0e76bd4aac perf: 清空缓存并返回登录页时添加重置路由 (#329)
Co-authored-by: xiaoxian521 <1923740402@qq.com>
2022-08-19 15:56:39 +08:00
xiaoxian521
a74a9e2489 release: update 3.3.5 2022-08-19 15:29:06 +08:00
xiaoxian521
28e58e4b4e types: 添加完整路由配置表类型声明 2022-08-19 15:03:52 +08:00
xiaoxian521
a8e830f51c chore: update 2022-08-19 09:57:35 +08:00
xiaoxian521
0493c402a7 chore: update 2022-08-19 09:47:13 +08:00
xiaoxian521
ca10d104c0 fix: 当没有icon时,垂直导航菜单折叠文字被隐藏 2022-08-19 09:44:58 +08:00
xiaoxian521
035ac47b39 chore: update 2022-08-18 18:36:36 +08:00
xiaoxian521
a983575b6d perf: 优化接口类型 2022-08-18 18:35:09 +08:00
xiaoxian521
d6a329a63c refactor: 重构重置路由功能 2022-08-18 18:34:53 +08:00
xiaoxian521
5ac646444f chore: update 2022-08-18 15:35:50 +08:00
xiaoxian521
b36eab2141 docs: update 2022-08-18 00:20:04 +08:00
xiaoxian521
3c44909f47 chore: update 2022-08-17 22:36:21 +08:00
xiaoxian521
b827301d0a chore: update 2022-08-17 20:45:18 +08:00
xiaoxian521
e0c8781bcc feat: 添加无Layout的空白页面示例 2022-08-17 19:39:54 +08:00
xiaoxian521
8314df9faf chore: update 2022-08-17 14:02:06 +08:00
xiaoxian521
dffe8834a1 fix: unocss exclude 2022-08-17 11:09:17 +08:00
xiaoxian521
8d5be25093 chore: update 2022-08-17 10:25:39 +08:00
xiaoxian521
7878c108e1 chore: update 2022-08-16 22:29:08 +08:00
xiaoxian521
f27787d560 chore: update 2022-08-15 15:53:27 +08:00
xiaoxian521
acaeb0cb42 chore: update 2022-08-15 13:01:08 +08:00
xiaoxian521
9e8907ce21 chore: update 2022-08-15 11:59:27 +08:00
xiaoxian521
3879b99176 fix: [重构主题后的一些问题](https://github.com/xiaoxian521/vue-pure-admin/issues/319) 2022-08-14 23:09:54 +08:00
xiaoxian521
bcbc110883 chore: update 2022-08-11 22:23:41 +08:00
xiaoxian521
243c8f71a7 chore: update 2022-08-11 20:32:55 +08:00
xiaoxian521
5f1466b574 feat: login page add i18n 2022-08-11 13:10:37 +08:00
xiaoxian521
26b85b5c92 fix: svg icon 2022-07-31 19:17:46 +08:00
RealityBoy
76f6a9df89 Merge pull request #314 from xiaoxian521/perf/login
perf: login
2022-07-27 21:26:11 +08:00
xiaoxian521
0d4fe313b4 fix: update 2022-07-27 21:10:36 +08:00
xiaoxian521
c7955bcc19 style: fix 2022-07-27 16:37:06 +08:00
xiaoxian521
fe0f0c4d9e chore: update 2022-07-27 15:23:46 +08:00
lrl
114d5427cc perf: login 2022-07-27 15:08:44 +08:00
RealityBoy
d824c99489 Refactor/themes (#311)
* refactor: theme
2022-07-26 13:16:44 +08:00
一万
708ce43e00 fix: vite build error: out of memory (#310) 2022-07-22 11:10:20 +08:00
xiaoxian521
271b953081 fix: 兼容存放目录以中文命名,但是我们真心不推荐中文命名 2022-07-18 16:09:14 +08:00
xiaoxian521
af71024f42 chore: update 2022-07-18 16:07:03 +08:00
xiaoxian521
a73610672f fix: update 2022-07-18 13:50:32 +08:00
xiaoxian521
4c6acc91ab fix: 修复路由showlinkfalse的异步路由,刷新后不显示 2022-07-18 13:48:59 +08:00
xiaoxian521
b2dd962161 chore: update @pureadmin/utils 2022-07-18 11:14:12 +08:00
xiaoxian521
b52ab8cb0a chore: update vite-plugin-remove-console 2022-07-18 11:11:44 +08:00
hb0730
d87f7e1948 fix(login): use a unified title (#305) 2022-07-13 09:25:01 +08:00
xiaoxian521
60e3519f93 docs: update 2022-07-10 23:26:15 +08:00
xiaoxian521
ef80912137 chore: update vite-plugin-remove-console latest 2022-07-05 17:33:14 +08:00
xiaoxian521
2e0b574733 docs: update 2022-07-04 19:55:15 +08:00
xiaoxian521
e1eb658697 docs: update 2022-07-04 19:47:00 +08:00
xiaoxian521
5a23bd02a4 fix: update @pureadmin/utils 2022-07-02 12:11:09 +08:00
xiaoxian521
af04611d6c feat: add @pureadmin/utils 2022-06-28 11:45:32 +08:00
xiaoxian521
384d5e9598 chore: update @pureadmin/table 2022-06-26 14:00:56 +08:00
xiaoxian521
1848c43f0c fix: update 2022-06-25 16:18:21 +08:00
xiaoxian521
d2cd29a838 feat: add cloc 2022-06-25 12:24:44 +08:00
xiaoxian521
91576bd7dd chore: update @pureadmin/descriptions 2022-06-24 14:12:56 +08:00
xiaoxian521
1b2eb2481e feat: use @pureadmin/descriptions replace el-descriptions 2022-06-24 11:49:39 +08:00
xiaoxian521
e3c240f139 style: fix 2022-06-22 22:45:19 +08:00
xiaoxian521
d0cfc6614e chore: update vite-plugin-remove-console 2022-06-22 21:36:48 +08:00
xiaoxian521
007bb0124f chore: update responsive-storage 2022-06-22 21:30:40 +08:00
xiaoxian521
9fa1d9d2ea perf: use @pureadmin/table replace el-table 2022-06-22 20:16:33 +08:00
xiaoxian521
1dfc67802a feat: add @pureadmin/table 2022-06-22 18:36:08 +08:00
xiaoxian521
bae84cd1ba fix: update 2022-06-20 16:23:36 +08:00
xiaoxian521
3f3301a4c2 chore: add Vue.volar 2022-06-20 13:14:39 +08:00
一万
4af50acf88 feat: export execl demo (#288) 2022-06-03 23:41:47 +08:00
xiaoxian521
61880bc07b feat: add FUNDING.yml 2022-06-03 09:11:36 +08:00
一万
804f1aea9b fix: reset tags when logout (#286) 2022-05-28 23:10:26 +08:00
fwindpeak
636201df80 fix: correct typos 2022-05-28 10:10:10 +08:00
xiaoxian521
4157c7bccc fix: update 2022-05-27 23:05:40 +08:00
xiaoxian521
0d05a2a6e3 workflow: gh-pages is no longer deployed 2022-05-27 23:04:07 +08:00
xiaoxian521
a53cbc2b87 chore: update the latest version of element-plus 2022-05-27 17:21:18 +08:00
xiaoxian521
870f064598 perf: pdf demo 2022-05-26 22:35:35 +08:00
一万
2a15298cf8 feat: add pdf preview demo (#282)
* feat: add pdf preview demo
2022-05-26 21:29:26 +08:00
一万
bf8a7d98ac fix: theme (#281)
* fix: theme
2022-05-25 22:23:20 +08:00
xiaoxian521
e9602d23cb perf: update 2022-05-22 14:39:02 +08:00
xiaoxian521
747e2b9c1c feat: use unplugin-vue-define-options add setup name 2022-05-21 12:29:54 +08:00
duyin
dca722cb29 fix: proxy 2022-05-19 22:52:11 +08:00
一万
1f8e50f482 feat: withInstall (#275) 2022-05-19 12:31:42 +08:00
xiaoxian521
b6ed8b40d1 fix: 兼容路由title为空的情况 2022-05-19 12:03:39 +08:00
xiaoxian521
348916e567 feat: add Virtual List demo 2022-05-19 01:16:08 +08:00
xiaoxian521
6ea020c8d2 chore: update @pureadmin/theme 2022-05-18 15:48:55 +08:00
xiaoxian521
8f5981a313 perf: icon 2022-05-18 12:27:49 +08:00
xiaoxian521
378feceb5f perf: tag demo 2022-05-18 10:29:26 +08:00
xiaoxian521
c65940f5ef perf: fix ReTable 2022-05-17 17:56:12 +08:00
Simler Li
6627d4724e fix: 修改防抖demo的文字说明 (#270) 2022-05-17 16:15:59 +08:00
xiaoxian521
9ca764b2a6 fix: 修复直接通过浏览器地址栏打开演示环境标签详情页,tag未加载的情况 2022-05-17 00:52:07 +08:00
xiaoxian521
f4c419d44a fix: update 2022-05-16 20:27:55 +08:00
ryiot
4f165b9391 fix:修复在苹果自带桌面浏览器 safari 中无法输入验证码 (#268) 2022-05-15 20:07:23 +08:00
xiaoxian521
25f70fd51b perf: standard code format in the layout folder 2022-05-14 11:01:43 +08:00
xiaoxian521
58f6be4d02 Merge branch 'main' of github.com:xiaoxian521/vue-pure-admin 2022-05-14 10:53:46 +08:00
xiaoxian521
64326c4fb5 perf: standard code format in the views folder 2022-05-14 10:53:06 +08:00
啝裳
16cce26b67 Rename select.vue to Select.vue 2022-05-14 10:03:06 +08:00
啝裳
6587e6eec0 Rename Filpper.tsx to filpper.tsx 2022-05-14 10:02:24 +08:00
xiaoxian521
1cf82eb7a4 perf: standard code format 2022-05-14 09:59:02 +08:00
xiaoxian521
2214ce7911 fix: update 2022-05-14 09:56:07 +08:00
xiaoxian521
7f10ac7679 fix: update 2022-05-11 16:34:54 +08:00
xiaoxian521
c8080c58f5 release: update 3.3.0 2022-05-11 15:51:38 +08:00
xiaoxian521
9067d88c3b perf: 优化国际化,路由不再传i18n字段,平台自动读取根目录locales文件夹下文件进行国际化匹配 2022-05-11 15:25:01 +08:00
xiaoxian521
f35dea840e refactor: use unocss replace windicss 2022-05-07 11:26:04 +08:00
一万
8cbf1dd568 feat: add swiper (#261) 2022-05-05 16:27:06 +08:00
xiaoxian521
685c955ecf style: login 2022-04-30 21:19:17 +08:00
啝裳
bedbf8077b refactor: login page (#259) 2022-04-30 20:52:06 +08:00
xiaoxian521
3d304457f5 fix: update .yaml 2022-04-30 11:03:17 +08:00
一万
016c75c0d4 feat: add area cascade selector demo (#257) 2022-04-30 00:40:28 +08:00
一万
6c6d520dcb feat: add qrcode demo (#256) 2022-04-27 19:57:12 +08:00
xiaoxian521
506bfc8087 feat: add useComponent hook 2022-04-26 20:01:24 +08:00
hb0730
e0d6002aa8 feat: icon-select 增强 (#253) 2022-04-26 10:39:43 +08:00
xiaoxian521
d14b0358ee style: update 2022-04-25 18:49:46 +08:00
xiaoxian521
0b8e402375 perf: build 2022-04-25 18:06:22 +08:00
xiaoxian521
d192d842ed perf: vite optimizeDeps 2022-04-25 17:32:20 +08:00
一万
afe056649b feat: barcode demo (#252) 2022-04-25 17:17:21 +08:00
xiaoxian521
0d4499c187 perf: menu 2022-04-25 14:39:39 +08:00
xiaoxian521
7397c315a7 chore: update 2022-04-24 22:01:20 +08:00
xiaoxian521
d2104be91a perf: update 2022-04-23 15:22:30 +08:00
xiaoxian521
c5d9275630 feat: vue-form-create2 2022-04-22 13:56:05 +08:00
一万
bbedcbc96b feat: add form design (#248) 2022-04-22 10:46:49 +08:00
shilianmalaxiangguo
acebbd8958 feat: 添加预发布打包模式 2022-04-20 23:15:04 +08:00
xiaoxian521
482b41966e fix: v-resize directive conflict 2022-04-20 20:21:00 +08:00
xiaoxian521
0d694e9870 perf: wangeditor 2022-04-20 13:38:33 +08:00
一万
294e4f6601 refactor: add wangeditorV5 (#245) 2022-04-20 11:30:31 +08:00
xiaoxian521
93a09bef4b docs: update 2022-04-19 15:31:08 +08:00
xiaoxian521
14619588d4 Merge branch 'main' of github.com:xiaoxian521/vue-pure-admin 2022-04-19 11:42:54 +08:00
xiaoxian521
63640a0950 feat: add ppt demo 2022-04-19 11:42:36 +08:00
一万
db09d1c442 feat: debounce & thtottle (#244) 2022-04-19 11:17:23 +08:00
xiaoxian521
a80c6f034a docs: update 2022-04-18 12:55:44 +08:00
一万
db1f26e9da fix: 路由变化添加标签页 (#243) 2022-04-18 10:27:22 +08:00
xiaoxian521
42b7e36e0d feat: 添加用户管理demo 2022-04-18 00:30:10 +08:00
xiaoxian521
9271997a30 perf: 优化角色、部门管理页面 2022-04-16 14:00:56 +08:00
xiaoxian521
b23066c52b feat: add EpTableProBar component 2022-04-15 22:07:11 +08:00
xiaoxian521
56f9dc85e7 perf: layout显示用户信息优化 2022-04-14 09:43:39 +08:00
xiaoxian521
1a565095e9 chore: update 2022-04-13 22:32:21 +08:00
一万
c89620159a feat: card list demo (#242) 2022-04-13 21:31:36 +08:00
xiaoxian521
160db34fa0 perf: 优化示例代码 2022-04-11 12:17:47 +08:00
xiaoxian521
c4ebacedfe feat: 新增部门管理demo 2022-04-10 23:54:14 +08:00
xiaoxian521
f3f9c12edf fix: some bug 2022-04-10 21:13:34 +08:00
xiaoxian521
91df7349f4 Revert "feat: 用户登录使用mock api, 可以使用test用户登录 (#233)" 2022-04-10 20:32:18 +08:00
xiaoxian521
dc219ed11a perf: 优化岗位管理demo 2022-04-10 18:17:16 +08:00
xiaoxian521
51d08045e8 perf: 优化岗位管理demo 2022-04-10 13:54:56 +08:00
xiaoxian521
f348a5982b feat: 添加岗位管理页面demo 2022-04-10 12:08:19 +08:00
xiaoxian521
7b614716af fix: 退出登陆不清空localstorage 2022-04-08 12:02:09 +08:00
xiaoxian521
5828ad55a1 feat: 支持后端传component组件路径 2022-04-08 11:35:06 +08:00
tomoat
0becf0b4bc feat: 用户登录使用mock api, 可以使用test用户登录 (#233)
* feat: 用户登录使用mock api, 可以使用test用户登录

* Update permission.ts
2022-04-07 22:47:33 +08:00
xc_Arxher
bafd9522e0 fix: 处理项目配置栏底部在小屏幕上显示不全问题 (#232)
fix: 处理项目配置栏底部在小屏幕上显示不全问题
2022-04-07 17:41:20 +08:00
xiaoxian521
9797534458 types: supplemental type declaration 2022-04-06 13:24:16 +08:00
xiaoxian521
5efeb28eb3 fix: router initialization problem 2022-04-06 13:05:19 +08:00
xiaoxian521
5e8723a031 feat: 导出关闭某个标签的hooks 2022-04-03 15:30:45 +08:00
一万
de76497e8a feat: add vxe-table theme and perf layout theme (#226)
feat: add vxe-table theme and perf layout theme
2022-03-30 12:27:51 +08:00
xiaoxian521
9cdfe80143 chore: update 2022-03-29 10:01:48 +08:00
xiaoxian521
87da024a29 chore: update 2022-03-26 17:20:44 +08:00
xiaoxian521
a06de54113 release: update 3.2.0 2022-03-22 00:25:55 +08:00
xiaoxian521
5b94930463 style: menu min-width 2022-03-22 00:10:47 +08:00
啝裳
5885706988 perf: menu (#220)
perf: menu
2022-03-21 23:15:41 +08:00
xiaoxian521
997711b264 feat: add vue/html-self-closing eslint 2022-03-21 15:40:29 +08:00
xiaoxian521
7beb3e63fe perf: route rank is null 2022-03-17 19:53:10 +08:00
xiaoxian521
ae57e42612 perf: router rank 2022-03-17 19:00:25 +08:00
xiaoxian521
99140bbd1e fix: router 2022-03-17 18:12:42 +08:00
xiaoxian521
89f4817cfe chore: update pnpm.lock 2022-03-17 17:55:27 +08:00
xiaoxian521
9802a0c51b feat: add @pureadmin/theme plugin 2022-03-17 15:52:01 +08:00
xiaoxian521
d2d324e3f0 chore: update 2022-03-17 12:23:15 +08:00
xiaoxian521
bee2315566 fix: supprimer les commentaires redondants 2022-03-14 21:39:26 +08:00
xiaoxian521
6d38b7a6aa fix: use import local scss resolve vite build bug 2022-03-14 19:12:30 +08:00
xiaoxian521
0f6e4ab4e0 perf: use getConfig replace import 2022-03-14 18:31:51 +08:00
xiaoxian521
ee1a6ffeb6 chore: update @pureadmin/components 2022-03-14 14:52:17 +08:00
xiaoxian521
b36850f79f perf: redirect 2022-03-14 12:43:02 +08:00
xiaoxian521
bef0d9234e fix: i18n 2022-03-14 12:35:25 +08:00
xiaoxian521
0bba4b7d64 fix: vxe i18n 2022-03-13 15:49:13 +08:00
xiaoxian521
a7576f6971 fix: vxe-table i18n 2022-03-13 14:01:51 +08:00
一万
51d08e4b82 fix: menu search (#214)
* fix: menu search

* fix: i18

* perf: delete route name
2022-03-12 23:32:32 +08:00
啝裳
494ce8f41b refactor: i18n
* refactor: i18n
2022-03-11 21:28:43 +08:00
xiaoxian521
8b3f642cf2 chore: update @pureadmin/components 2022-03-10 10:51:45 +08:00
xiaoxian521
2e5667f652 feat: add anchor、tabs、treeSelect Components 2022-03-10 00:36:11 +08:00
xiaoxian521
8d539d4c21 feat: add @pureadmin/components 2022-03-09 22:54:28 +08:00
一万
c9026a45cc feat: menu search (#209)
* feat: menu search

* style(layout): 剔除windcss依赖
2022-03-09 13:54:16 +08:00
xiaoxian521
81c4184cc4 docs: update 2022-03-07 22:06:13 +08:00
xiaoxian521
244f657be2 docs: update 2022-03-07 20:43:27 +08:00
xiaoxian521
74a6b3ffdc feat: add tree line 2022-03-07 20:21:15 +08:00
xiaoxian521
8e7a79cf94 feat: add result page 2022-03-06 12:33:41 +08:00
xiaoxian521
849b46533d perf: timeline 2022-03-05 22:48:46 +08:00
xiaoxian521
7f5aeed4d1 feat: add timeline 2022-03-05 20:53:36 +08:00
xiaoxian521
c749149c2f perf: icon 2022-03-05 14:09:29 +08:00
xiaoxian521
0a7d22248f feat: add iconSelect component 2022-03-05 13:47:24 +08:00
xiaoxian521
a35dc9d7b6 docs: update 2022-03-04 17:56:33 +08:00
xiaoxian521
a6e819e169 perf: error page 2022-03-04 11:10:02 +08:00
xiaoxian521
3701161022 release: update 3.1.0 2022-03-03 22:57:11 +08:00
xiaoxian521
e3898df731 fix: tags 2022-03-03 22:50:39 +08:00
xiaoxian521
32172220f7 fix: initRouter 2022-03-03 22:40:53 +08:00
xiaoxian521
fcdfe6d0c0 perf: menu 2022-03-03 09:27:53 +08:00
xiaoxian521
67bc933d5c fix: router is initialized first 2022-03-03 09:18:30 +08:00
xiaoxian521
feb1532549 fix: selector Component 2022-03-02 21:21:47 +08:00
xiaoxian521
1722ee7a9b perf: merge 2022-03-02 20:48:46 +08:00
xiaoxian521
710e119397 feat: add about page 2022-03-02 20:47:14 +08:00
Line
f21d9f38e5 fix: PureHttpResoponse => PureHttpResponse (#207)
Co-authored-by: yang.li12 <yang.li12@bluefocus.com>
2022-03-02 18:15:21 +08:00
xiaoxian521
727c0fe3c0 feat: print and perf style 2022-03-02 13:56:07 +08:00
一万
e3fda52801 feat: add iframe router 2022-03-02 11:15:51 +08:00
xiaoxian521
37762e45fd chore: update vite latest 2022-03-01 11:24:39 +08:00
啝裳
d43316f7c9 feat: watermark (#203)
* feat: add watermark
2022-03-01 10:44:26 +08:00
一万
6971ba6c53 fix: 跳转路由新增标签页 (#199)
* fix: 跳转路由新增标签页

* fix: 跳转路由新增标签页兼容

* perf: 删除取消watch监听
2022-02-28 22:08:56 +08:00
hexiaobang
a175cf9fe0 fix: 解决toggleClass函数多次运行后html元素的class中会遗留大量无效空格的问题 (#198) 2022-02-27 11:23:45 +08:00
xiaoxian521
9927e6f217 fix: router 2022-02-27 11:17:45 +08:00
xiaoxian521
bc300eab18 feat: 添加运行、打包信息, 使用lodash-unified替换lodash-es, lodash-unified支持ESM 2022-02-27 02:44:29 +08:00
xiaoxian521
3ca4729421 fix: delete routerView 2022-02-23 15:13:36 +08:00
烂柯人
dfaa76cc29 docs: update (#192) 2022-02-18 16:12:40 +08:00
xiaoxian521
7103b04283 fix: axios type 2022-02-18 14:54:16 +08:00
xiaoxian521
d2ddb49314 fix: axios post and get type 2022-02-18 14:51:58 +08:00
xiaoxian521
a4a042bfd7 fix: el-button plain model theme bug 2022-02-18 11:45:18 +08:00
xiaoxian521
a9a8115d46 perf: useRenderIcon hooks 2022-02-18 10:53:03 +08:00
huohuoit
3676014eb6 fix: 解决页面横向滚动条不显示问题 (#190)
Co-authored-by: Qingxuan001 <534794892@qqcom>
2022-02-17 18:13:09 +08:00
xiaoxian521
52910602ff fix: vxe-table icon not show 2022-02-16 11:23:20 +08:00
xiaoxian521
a2d1cf0e5f docs: update 2022-02-15 15:22:48 +08:00
xiaoxian521
8e886e83e7 ci: update 2022-02-15 15:05:58 +08:00
xiaoxian521
3e8dfb2bcb release: update 3.0 2022-02-14 23:19:32 +08:00
xiaoxian521
6fb0f7ef4d fix: mixNav route 2022-02-14 23:12:04 +08:00
xiaoxian521
08983fdbc1 fix: 固定vite@2.7.13,2.8+打包有问题 2022-02-14 22:51:36 +08:00
啝裳
ef05b2b614 feat: add mix nav (#187)
feat: add mix nav
2022-02-14 22:09:39 +08:00
xiaoxian521
a2dde02994 docs: update 2022-02-10 13:13:38 +08:00
rich1e
7544cf058e fix: epThemeColor error
Closes #183
2022-02-10 12:54:16 +08:00
xiaoxian521
43193fd2b6 docs: update 2022-02-10 12:01:36 +08:00
xiaoxian521
25c55c5d1d chore: update eslint@8.8.0 2022-02-07 15:59:04 +08:00
xiaoxian521
217258b972 chore: update element-plus@2.0.0 2022-02-07 13:43:54 +08:00
xiaoxian521
dbe0815ac4 feat: add vxe-table/lib/locale/lang optimizeDeps 2022-02-05 17:36:21 +08:00
xiaoxian521
fd4cad8d4c release: update 2.9.0 2022-02-05 17:34:01 +08:00
xiaoxian521
e33bdb52f3 fix: vite@2.7.0-beta.8 build incompatible template 2022-01-21 18:25:29 +08:00
xiaoxian521
46a48a5650 release: update 2.8.5 2022-01-21 16:46:48 +08:00
xiaoxian521
8fa3448af2 chore: update typescript 2022-01-21 16:33:45 +08:00
xiaoxian521
f236829b0f refactor: use @iconify-icons/ep 2022-01-21 16:10:10 +08:00
xiaoxian521
47dea87275 fix: update lintstagedrc 2022-01-18 17:06:15 +08:00
xiaoxian521
5e9198c2e0 fix: vscode setting 2022-01-18 17:05:42 +08:00
xiaoxian521
c9c8f20cc5 docs: update 2022-01-09 18:44:23 +08:00
xiaoxian521
a19c97f152 fix: add vite-plugin-live-reload 2022-01-09 12:11:50 +08:00
xiaoxian521
5e1e9d3c5f feat: 添加线上环境删console插件vite-plugin-remove-console 2022-01-07 17:57:55 +08:00
xiaoxian521
96153f8a14 feat: 添加WindiCSS支持 2022-01-07 17:20:25 +08:00
xiaoxian521
14adf692ab perf: theme 2022-01-07 14:45:21 +08:00
xiaoxian521
aa845fc3f5 release: update 2.8.0 2022-01-04 19:52:05 +08:00
xiaoxian521
079a455181 perf: router 2022-01-04 17:28:36 +08:00
xiaoxian521
07794d000c chore: update element-plus@1.3.0-beta.1 2021-12-31 14:09:59 +08:00
啝裳
e787f46414 Merge pull request #166 from xiaoxian521/perf/storage
perf: storage
2021-12-30 13:57:30 +08:00
lrl
e61d6109d7 perf: modify showLogo type: from string to Boolean 2021-12-29 22:45:18 +08:00
lrl
34eda14473 perf: storage 2021-12-29 21:51:05 +08:00
xiaoxian521
0eb0b7395e perf: layout style 2021-12-29 13:26:56 +08:00
xiaoxian521
73705eb0e4 perf: 优化国际化 2021-12-29 11:21:59 +08:00
xiaoxian521
d94fb0ef06 docs: update 2021-12-28 15:09:17 +08:00
xiaoxian521
17470ecce2 docs: update 2021-12-28 13:21:16 +08:00
一万
12db6966fb feat: guide page (#164)
* feat: add guide page

* perf: guide page
2021-12-27 10:51:25 +08:00
xiaoxian521
5070568b89 perf: theme 2021-12-24 10:46:39 +08:00
lrl
ef91f113ee fix: 动态标签页标记改为refreshRedirect 2021-12-22 22:49:34 +08:00
xiaoxian521
c875d20e83 perf: layout set 2021-12-22 13:40:59 +08:00
xiaoxian521
c86aae7b8b fix: 首页同一图表组件引入多次,只显示一个 2021-12-22 09:53:59 +08:00
一万
ee30cba471 perf: theme (#157) 2021-12-21 22:06:09 +08:00
xiaoxian521
7bcd8a800a perf: theme 2021-12-21 16:57:35 +08:00
xiaoxian521
903e298951 fix: delete realPath 2021-12-21 10:34:28 +08:00
啝裳
955b76f30a feat: ep theme (#156)
* feat: ep-theme

* perf: ep-theme

Co-authored-by: lrl <742798240@qq.com>
2021-12-20 22:27:47 +08:00
lrl
1b052023b6 perf: multiTags route delete realPath 2021-12-20 22:25:45 +08:00
xiaoxian521
3af52cf6c4 docs: update 2021-12-20 16:10:36 +08:00
xiaoxian521
660b6f4be8 feat: 暗黑模式 2021-12-20 14:19:38 +08:00
xiaoxian521
836c9e7cab release: update 2.7.0 2021-12-18 13:56:21 +08:00
xiaoxian521
4ded2a7a0c chore: update 2021-12-18 13:38:53 +08:00
xiaoxian521
dc1caecf1c fix: 修复动态路由子集设置rank为0报错 2021-12-17 18:27:06 +08:00
xiaoxian521
8de3e8b37f docs: update 2021-12-17 16:45:39 +08:00
xiaoxian521
ab93216dbe perf: breadCrumb 2021-12-17 14:46:30 +08:00
lrl
86177e430e fix: breadcrumb 2021-12-17 12:53:41 +08:00
lrl
93ac4fa813 perf: breadcrumb 2021-12-17 12:53:41 +08:00
xiaoxian521
0903008ced perf: menu tree 2021-12-16 13:47:13 +08:00
xiaoxian521
10fa0ee8c8 feat: 添加菜单树结构事例 2021-12-16 11:03:20 +08:00
xiaoxian521
eb0771e7ec feat: 打包后的文件提供传统浏览器兼容性支持 2021-12-15 13:25:18 +08:00
xiaoxian521
39159d5e7b docs: update 2021-12-15 11:41:40 +08:00
xiaoxian521
501891a21c docs: update 2021-12-15 11:36:18 +08:00
啝裳
cbffe31c70 Merge pull request #149 from xiaoxian521/fix/menuModel
fix: tag
2021-12-15 11:08:44 +08:00
xiaoxian521
3ef9444bcb docs: update 2021-12-15 11:05:50 +08:00
xiaoxian521
c81227bb4c docs: update 2021-12-15 11:04:12 +08:00
lrl
05ed941638 fix: menuModel 2021-12-14 22:04:52 +08:00
lrl
77c798eaed fix: menuModel 2021-12-14 21:59:54 +08:00
xiaoxian521
6ab9997a56 fix: router 2021-12-14 13:40:11 +08:00
lrl
b961659c2f fix: router 2021-12-14 13:23:02 +08:00
xiaoxian521
81bf66eca9 fix: router 2021-12-13 23:25:27 +08:00
啝裳
b251f8ff79 Merge pull request #148 from xiaoxian521/fix/router
fix: router
2021-12-13 21:34:29 +08:00
lrl
bae16008db fix: router 2021-12-13 21:13:54 +08:00
xiaoxian521
a0c54a6ac9 fix: types 2021-12-13 17:39:13 +08:00
xiaoxian521
438aab9bfc fix: router 2021-12-13 17:30:08 +08:00
xiaoxian521
e97bd9c8c4 feat: add hasPermissions util 2021-12-13 14:08:12 +08:00
xiaoxian521
653bafaa2b fix: permission directive 2021-12-13 13:54:28 +08:00
xiaoxian521
b82a3d3a2e docs: update 2021-12-13 11:23:12 +08:00
xiaoxian521
b8c8251c64 feat: 路由历史模式从env读取并支持base参数 2021-12-13 11:20:50 +08:00
xiaoxian521
00cc5a88e0 perf: router 2021-12-12 19:46:58 +08:00
xiaoxian521
5d6ed8da33 fix: nest menu 2021-12-12 18:25:04 +08:00
啝裳
d57e0e379e refactor: router (#145)
* refactor: router

* perf: router

* perf: router

* perf: router

Co-authored-by: lrl <742798240@qq.com>
2021-12-12 17:49:19 +08:00
xiaoxian521
7811f6bdeb style: layout 2021-12-11 11:04:00 +08:00
xiaoxian521
113e5f9db2 fix: layout style 2021-12-08 20:02:44 +08:00
xiaoxian521
1758711174 fix: vite build 2021-12-08 14:27:39 +08:00
啝裳
12879f9553 perf(router): refresh (#142)
* feat: set add multiTagsCache

* perf(router): refresh

* fix(multiTags): clear storage when close other tag

Co-authored-by: lrl <742798240@qq.com>
2021-12-07 15:40:10 +08:00
xiaoxian521
d6a358e851 fix: color name 2021-12-07 14:27:08 +08:00
xiaoxian521
9e7d78fd80 fix: layout style 2021-12-06 11:40:11 +08:00
xiaoxian521
570154a4f1 fix: delete useless pictures 2021-12-06 11:05:50 +08:00
xiaoxian521
5564250e7d fix: layout icon 2021-12-06 11:00:58 +08:00
GeeHon
8d65f8ee92 style: 解决eslint换行符告警 (#139) 2021-12-06 08:31:34 +08:00
xiaoxian521
11bf711838 refactor: axios methods and env 2021-12-04 01:16:50 +08:00
xiaoxian521
a845d4f237 fix: types 2021-12-02 10:17:05 +08:00
xiaoxian521
02c3a88ed6 perf: tag 2021-12-01 20:18:00 +08:00
xiaoxian521
a8a3e5b303 perf: tags 2021-12-01 17:20:25 +08:00
一万
cec5af55d9 fix(router): refresh (#137) 2021-11-30 22:57:28 +08:00
一万
d04ba7563a fix: router refresh (#136) 2021-11-30 21:42:30 +08:00
xiaoxian521
0450f004d3 docs: update 2021-11-28 23:43:52 +08:00
xiaoxian521
24a899bba0 chore: update wangeditor 2021-11-28 16:08:09 +08:00
啝裳
6c75296a02 Merge pull request #135 from xiaoxian521/feat/expandTag
feat: expand tag
2021-11-28 15:30:14 +08:00
lrl
6cca0d3ab2 Merge branch 'feat/expandTag' of https://github.com/xiaoxian521/vue-pure-admin into feat/expandTag 2021-11-28 15:08:02 +08:00
lrl
3d34663eda feat: tabs operation view 2021-11-28 15:06:22 +08:00
xiaoxian521
4bbf4c8548 fix: style 2021-11-28 12:07:04 +08:00
xiaoxian521
8685092260 feat: 菜单支持fontawesome、iconfont、ep/icons、自定义svg 2021-11-28 01:07:16 +08:00
啝裳
622464a8a4 Merge pull request #134 from xiaoxian521/refactor/tabs
refactor: tabs
2021-11-27 19:51:21 +08:00
lrl
be3a8a6949 perf: storage tags 2021-11-27 19:04:14 +08:00
一万
3acb65d42c perf: router (#133) 2021-11-27 16:38:18 +08:00
lrl
6d3a8c5a88 fix: update 2021-11-27 15:16:50 +08:00
xiaoxian521
b65b972353 fix: update 2021-11-27 10:05:36 +08:00
xiaoxian521
8c31ca1bad fix: update name 2021-11-26 22:54:29 +08:00
一万
8cb21b6321 Merge pull request #131 from xiaoxian521/perf/progress
perf: not show spinner
2021-11-25 21:45:30 +08:00
lrl
6d6eb98562 perf: not show Spinner 2021-11-25 21:41:33 +08:00
xiaoxian521
aca6a667f3 refactor: tabs 2021-11-25 21:30:44 +08:00
啝裳
d79e63f673 Merge pull request #130 from xiaoxian521/perf/layout
perf: layout
2021-11-25 21:11:37 +08:00
lrl
e67d2df677 perf: layout 2021-11-25 20:52:23 +08:00
xiaoxian521
d44da67dc4 perf: layout 2021-11-25 12:30:02 +08:00
啝裳
9d45e80856 Merge pull request #126 from xiaoxian521/fix/tag
fix(tag): the route is not normally closed and the close icon is repeated
2021-11-22 20:24:52 +08:00
lrl
be66c8bfb9 fix(tag): the route is not normally closed and the close icon is repeated 2021-11-22 20:15:37 +08:00
xiaoxian521
e26a0f949d perf: tag 2021-11-21 11:00:13 +08:00
啝裳
3e991e6e43 Merge pull request #125 from xiaoxian521/fix/sidebar
fix(sidebarItem): span focus and enter the border that appears
2021-11-20 22:41:05 +08:00
lrl
0337a0300c fix(sidebarItem): span focus and enter the border that appears 2021-11-20 22:29:14 +08:00
xiaoxian521
ee8e0eb733 docs: update 2021-11-20 19:47:28 +08:00
啝裳
39cca9ac25 Merge pull request #124 from xiaoxian521/refactor/tag
Refactor/tag
2021-11-20 19:19:22 +08:00
lrl
95140986b9 perf: tag 2021-11-20 19:06:23 +08:00
lrl
034f1577c2 perf: tag 2021-11-20 16:41:30 +08:00
xiaoxian521
c3645fd760 fix: 删除滚动支持 2021-11-20 11:09:52 +08:00
xiaoxian521
b1b236f736 style: fix 2021-11-20 11:00:40 +08:00
xiaoxian521
0b79b65575 refactor: tag 2021-11-19 15:13:28 +08:00
啝裳
067ed96de4 Merge pull request #120 from xiaoxian521/feat/headerNotice
feat: add header notice
2021-11-17 22:48:18 +08:00
xiaoxian521
f25e5d19a4 revert: will roll to the upper level 2021-11-17 22:45:54 +08:00
xiaoxian521
0380d4a17a style: notices style 2021-11-17 22:31:10 +08:00
lrl
89dc4e5052 perf: notice add scrollbar 2021-11-17 18:10:01 +08:00
lrl
12492a522f Merge branch 'main' into feat/headerNotice 2021-11-16 23:53:26 +08:00
lrl
5d9638758b perf: headerNotice 2021-11-16 23:46:34 +08:00
xiaoxian521
6b064bdef9 fix: icon 2021-11-16 22:21:05 +08:00
paobai
7aa895a2b7 perf: storage hooks 2021-11-16 15:52:58 +08:00
xiaoxian521
35f2f9e93f fix: i18n 2021-11-16 13:49:24 +08:00
xiaoxian521
f0a5f02588 fix: i18n 2021-11-16 13:16:04 +08:00
lrl
c4a6a337a3 Merge branch 'main' into feat/headerNotice 2021-11-16 10:04:36 +08:00
hb0730
44a4c9346b fix: i18n (#110) 2021-11-16 09:53:46 +08:00
lrl
bcf533af62 feat: add headerNotice 2021-11-15 23:19:00 +08:00
hb0730
aa8005a982 feat(i18n): 菜单动态支持i18n (#109)
* feat(i18n): 菜单动态支持i18n
2021-11-15 16:45:09 +08:00
hb0730
2d6ad99f6f feat(icon): findIcon function (#107)
* feat(icon): findIcon function

支持ElementPlus icon组件和 FontAwesomeIcon

* fix(menu): 支持第三方icon组件
2021-11-15 16:41:51 +08:00
xiaoxian521
1e1747a355 docs: update 2021-11-14 09:22:15 +08:00
xiaoxian521
6ba0bd7739 docs: update 2021-11-14 09:15:20 +08:00
xiaoxian521
b4088f4612 docs: update 2021-11-14 08:46:43 +08:00
xiaoxian521
3c4619d071 feat: 兼容fontawesome4和5版本 2021-11-13 14:39:38 +08:00
hb0730
10e8b296e3 fix: #100 (#103) 2021-11-12 12:39:08 +08:00
xiaoxian521
b702703472 docs: update 2021-11-10 20:40:06 +08:00
xiaoxian521
7590dc308c chore: update vite-plugin-theme-preprocessor 2021-11-10 18:08:40 +08:00
xiaoxian521
2f457ac6b2 Merge branch 'refactor/theme' into main 2021-11-10 13:30:48 +08:00
xiaoxian521
cbc6743b5a fix: update 2021-11-10 12:37:25 +08:00
xiaoxian521
af01d80db2 fix: update 2021-11-10 11:50:29 +08:00
xiaoxian521
b45a10b98f fix: update 2021-11-10 09:55:01 +08:00
xiaoxian521
cd668c11d8 fix: update 2021-11-10 09:10:32 +08:00
xiaoxian521
753491a7eb fix: update 2021-11-10 09:00:39 +08:00
xiaoxian521
fd4706f2d3 fix: update 2021-11-10 08:39:47 +08:00
xiaoxian521
db580366fd fix: update 2021-11-10 07:59:33 +08:00
xiaoxian521
487920375b fix: update 2021-11-10 07:27:50 +08:00
xiaoxian521
42eb52bd88 fix: update 2021-11-10 07:04:19 +08:00
lrl
3943164ad6 style: sidebar icon position 2021-11-09 22:05:17 +08:00
lrl
e98dee9f0a refactor: setting 2021-11-09 19:24:55 +08:00
xiaoxian521
782cea9995 fix: update 2021-11-09 09:04:20 +08:00
xiaoxian521
41a0fde036 fix: update 2021-11-08 09:21:14 +08:00
xiaoxian521
7d453fdca7 fix: update 2021-11-07 21:11:23 +08:00
xiaoxian521
c935fce27b fix: update 2021-11-07 19:28:33 +08:00
xiaoxian521
ff4b18b73c fix: update 2021-11-07 19:02:42 +08:00
xiaoxian521
cf78f6aa6a fix: update 2021-11-07 17:45:24 +08:00
xiaoxian521
0ad3418239 fix: update vertical style 2021-11-07 16:56:15 +08:00
xiaoxian521
d501339274 chore: update 2021-11-07 13:51:18 +08:00
xiaoxian521
ad2f7358db Merge branch 'main' into refactor/theme 2021-11-07 13:32:38 +08:00
xiaoxian521
a7ca161271 fix: build svg 404 2021-11-06 20:39:29 +08:00
xiaoxian521
3a1f28667b perf: login page 2021-11-06 19:47:57 +08:00
xiaoxian521
ef1c47bac5 Merge branch 'main' of github.com:xiaoxian521/vue-pure-admin into main 2021-11-06 19:16:03 +08:00
xiaoxian521
aa7a073b4a refactor: login page 2021-11-06 19:15:10 +08:00
xiaoxian521
544e474e98 refactor: login page 2021-11-06 17:03:40 +08:00
xiaoxian521
4b16bac5dc feat: update 2021-11-06 16:15:25 +08:00
sedice
ea7266c04c fix: 修复首页柱状图在大屏下显示比例问题 (#97) 2021-11-05 00:07:49 +08:00
xiaoxian521
c18dbea3cd fix: update 2021-11-04 20:34:59 +08:00
xiaoxian521
f19f27510b chore: set vite build minify is false 2021-11-04 12:34:27 +08:00
lrl
57e32bab16 style: hideSidebar add marginLeft 2021-11-04 11:02:01 +08:00
xiaoxian521
e63fe92cd9 fix: update 2021-11-04 10:25:01 +08:00
xiaoxian521
c95126adf5 fix: update 2021-11-04 10:20:22 +08:00
xiaoxian521
54a0e457b4 feat: 剔除vxe强依赖 2021-11-03 23:55:18 +08:00
xiaoxian521
8436f964e4 Merge branch 'main' into refactor/theme 2021-11-03 23:24:53 +08:00
一万
709cb87c2b style: editor add margin (#96) 2021-11-03 22:28:15 +08:00
一万
e0551251d3 style: perf sidebar style (#95) 2021-11-03 20:51:16 +08:00
xiaoxian521
dae0b5dc08 workflow: update 2021-11-03 14:20:54 +08:00
xiaoxian521
077276463f workflow: update 2021-11-03 14:18:16 +08:00
xiaoxian521
43a8baee3d workflow: update 2021-11-03 14:16:34 +08:00
xiaoxian521
91fe227e8c chore: update 2021-11-03 14:04:13 +08:00
xiaoxian521
3f526873d8 chore: update 2021-11-03 14:01:48 +08:00
xiaoxian521
def4c60395 workflow: update 2021-11-03 14:00:50 +08:00
xiaoxian521
6c02e97157 chore: use pnpm replace yarn 2021-11-03 13:58:24 +08:00
一万
c25b130b7d perf: perf sidebar (#91) 2021-11-03 10:13:27 +08:00
xiaoxian521
c266a675a2 feat: update 2021-11-02 13:26:25 +08:00
xiaoxian521
6b151eae1b Merge branch 'main' into refactor/theme 2021-11-02 07:48:14 +08:00
xiaoxian521
0615902632 perf: home page 2021-11-01 13:31:49 +08:00
xiaoxian521
b773fb582d perf: style 2021-10-31 21:52:39 +08:00
一万
9ddf449ea7 perf: perf style (#89)
perf: perf style
2021-10-31 20:24:57 +08:00
xiaoxian521
8a14519467 feat: update 2021-10-31 15:42:46 +08:00
xiaoxian521
321b9da9a8 feat: update 2021-10-31 14:19:08 +08:00
xiaoxian521
594efc6204 feat: update 2021-10-31 13:42:51 +08:00
xiaoxian521
c819554e54 feat: update 2021-10-31 10:49:35 +08:00
xiaoxian521
3e12372d9c chore: update 2021-10-31 10:20:36 +08:00
艾阳
0fb7b5e983 fix: 修改面包屑重定向到第一个子级 (#87) 2021-10-31 00:40:01 +08:00
xiaoxian521
9d061c6406 feat: update 2021-10-30 22:11:18 +08:00
xiaoxian521
5f349775a8 feat: update 2021-10-30 21:14:25 +08:00
一万
4e04fdd657 fix(panel): fix setting tooltip (#85)
* fix(panel): fix setting tooltip
2021-10-30 19:50:47 +08:00
xiaoxian521
c418ab03a2 style: 优化样式 2021-10-30 18:56:37 +08:00
hb0730
8ffd341443 fix(axios): 修复封装的axios请求过快beforeRequestCallback,beforeResponseCallback只触发一次 (#84) 2021-10-30 13:56:42 +08:00
一万
72224717f9 style: 恢复标签页横向滚动条 (#83)
* style: 恢复标签页横向滚动条
2021-10-30 13:19:41 +08:00
一万
d4237aa596 fix: 修复菜单隐藏,内容显示问题 (#81) 2021-10-29 22:04:51 +08:00
一万
ae72cccbb9 fix: 菜单名称过长添加tooltip (#78)
* fix: 菜单名称过长添加tooltip
2021-10-29 18:41:57 +08:00
xiaoxian521
3389f3118a fix: 修复封装的axios请求过快beforeRequestCallback只触发一次 2021-10-29 15:37:48 +08:00
xiaoxian521
15ccd5db5b fix: update 2021-10-29 15:07:06 +08:00
xiaoxian521
a28eb4b203 feat: update 2021-10-29 14:50:10 +08:00
xiaoxian521
f921996563 feat: update 2021-10-29 14:09:05 +08:00
xiaoxian521
71bd7e89d4 feat: update 2021-10-29 14:09:05 +08:00
xiaoxian521
02f2cd9747 feat: update 2021-10-29 14:09:04 +08:00
xiaoxian521
af6a1b03cd fix: update 2021-10-29 14:09:04 +08:00
xiaoxian521
b248d9ea31 fix: delete toggleTheme.ts 2021-10-29 14:09:04 +08:00
xiaoxian521
3851d284bf feat: update 2021-10-29 14:09:04 +08:00
xiaoxian521
b520e234a1 feat: update 2021-10-29 14:08:00 +08:00
xiaoxian521
b40cd2db74 fix: xgplayer path error 2021-10-29 14:08:00 +08:00
xiaoxian521
fc4bfc35d7 refactor: theme 2021-10-29 14:08:00 +08:00
huohuoit
769e684c61 * feat:新增vscode中的vue3.2.setup-snippets代码片段文件
* feat:新增vscode中的vue3.2.setup-snippets代码片段文件
2021-10-28 11:43:34 +08:00
一万
25c37bb2fa fix: xgplayer path error (#76) 2021-10-27 18:27:27 +08:00
一万
ab06aa00ed fix: 修复取消固定头部问题 (#74) 2021-10-27 14:45:40 +08:00
啝裳
1fa5793ec4 fix: 修复取消固定头部问题 (#75)
* fix: 修复取消固定头部问题

* perf: simplify the layout code
2021-10-27 14:40:31 +08:00
xiaoxian521
5a78685ac9 docs: update README.md 2021-10-26 12:35:06 +08:00
一万
ae161e8b48 feat(backtop): add backtop (#71) 2021-10-25 08:55:17 +08:00
lrl
8d2824fe82 perf: 隐藏标签页功能优化 2021-10-24 15:39:01 +08:00
xiaoxian521
822261c922 docs: update README.md 2021-10-24 14:02:24 +08:00
xiaoxian521
3e4b49b4be style: 调整地图的高度 2021-10-24 13:54:36 +08:00
xiaoxian521
c5d6d2c76e refactor: login page 2021-10-24 13:48:33 +08:00
xiaoxian521
2d9c185b4e style: 修改layout样式 2021-10-24 11:53:43 +08:00
一万
70af35dbf5 fix: 修复隐藏标签页问题 (#69)
* fix: 修复隐藏标签页问题
2021-10-23 22:50:03 +08:00
xiaoxian521
7dcf98a178 style: 优化导航样式 2021-10-23 20:40:32 +08:00
xiaoxian521
089dea8441 Merge branches 'main' and 'main' of github.com:xiaoxian521/vue-pure-admin into main 2021-10-23 19:16:12 +08:00
xiaoxian521
c7b61febc3 docs: update README.md 2021-10-23 19:15:54 +08:00
一万
8b8cd52f64 style(flow-chart): 流程图数据弹窗样式优化 (#68) 2021-10-22 21:21:42 +08:00
xiaoxian521
eb8d3ca96e perf: icon 2021-10-22 20:38:19 +08:00
xiaoxian521
7e6768208d docs: update README.md 2021-10-22 17:52:38 +08:00
xiaoxian521
3980c9a876 docs: update readme.me 2021-10-22 17:49:48 +08:00
xiaoxian521
ca849c94e2 fix: 修复流程图打包后出错 2021-10-21 18:55:46 +08:00
xiaoxian521
430e5d75b0 docs: update readme.me 2021-10-21 13:00:11 +08:00
xiaoxian521
5f294356a9 docs: update readme.md 2021-10-21 10:39:21 +08:00
xiaoxian521
4a6fcdb8e5 docs: update readme.md 2021-10-21 10:35:16 +08:00
xiaoxian521
52394cc550 docs: update docs 2021-10-21 09:51:01 +08:00
xiaoxian521
f7036143a4 chore: update some packages version 2021-10-20 22:30:52 +08:00
xiaoxian521
7d0367dc58 Merge branch 'main' of github.com:xiaoxian521/vue-pure-admin into main 2021-10-20 21:26:54 +08:00
xiaoxian521
f872ea1a23 fix: 修复vxe-table打包找不到css问题 2021-10-20 21:26:39 +08:00
Ten-K
016948d852 fix(tag): 修复关闭左侧/右侧标签页时未删除缓存路由问题 (#66) 2021-10-20 15:45:35 +08:00
xiaoxian521
7724d6443e chore: update element-plus lastest 2021-10-20 11:40:22 +08:00
xiaoxian521
7013e57d1e fix: 右键菜单z-index问题 2021-10-19 18:58:47 +08:00
Ten-K
639a69d579 fix(tag): 删除非当前激活tag时不切换tag (#60)
* fix(tag): 删除非当前激活tag时不切换tag

* fix(tag): 修复在激活菜单时选择关闭左侧标签后当前激活的菜单非选择菜单

* perf: 自定义去重函数更改为lodash-es的uniqBy
2021-10-19 13:58:17 +08:00
xiaoxian521
b2c05e4397 docs: 更新文档 2021-10-19 12:36:13 +08:00
qingguizhang
f76f43ca0e style: 页面内全屏效果样式
* style: 页面内全屏效果样式
2021-10-19 11:59:17 +08:00
xiaoxian521
a322b8497e perf: 页面内全屏效果 2021-10-19 10:45:41 +08:00
xiaoxian521
b75eecabd2 Merge branch 'main' of github.com:xiaoxian521/vue-pure-admin into main 2021-10-19 10:07:44 +08:00
xiaoxian521
4aaffc53a8 style: use :deep() replace >>> 2021-10-19 10:07:24 +08:00
黄兵
a2a793f84e fix(icon): icon vary in size 2021-10-19 10:01:23 +08:00
黄兵
d551f372e4 style(element-ui.scss): move to component css 2021-10-19 10:01:23 +08:00
黄兵
04f4815f04 style(element-ui.scss): remove global .el-dialog
change .el-dialog to .flow-dialog
2021-10-19 10:01:23 +08:00
hb0730
cec2ffd3eb style(element-ui.scss): remove global .el-dialog
* style(element-ui.scss):  remove global  .el-dialog

change .el-dialog to .flow-dialog

* style(element-ui.scss): move to component css
2021-10-19 09:11:46 +08:00
xiaoxian521
1b56c86e07 docs: 添加配套视频教程地址 2021-10-18 22:04:57 +08:00
xiaoxian521
8b1b37b727 Merge branch 'main' of github.com:xiaoxian521/vue-pure-admin into main 2021-10-18 16:02:41 +08:00
xiaoxian521
f45588e811 fix: 主界面最外层正常情况下出现滚动条 2021-10-18 16:02:26 +08:00
zhuoyue03007
7f34b63569 perf: 主界面布局滚动条显示样式处理 (#59)
perf: 主界面布局滚动条采用el-scrollbar
2021-10-18 15:05:23 +08:00
xiaoxian521
db4855737b fix: 字典管理页面点击编辑弹出遮罩层没有覆盖到整个页面,菜单还能选择 2021-10-18 13:02:36 +08:00
xiaoxian521
ee7241da3f fix: 修复清空缓存并退出登陆后再次进入页面routerArrays未初始化问题 2021-10-18 10:34:28 +08:00
xiaoxian521
3cd4f340a1 types: ignore db.ts 2021-10-15 14:08:47 +08:00
xiaoxian521
a7c12d93d3 types: optimizate layout 2021-10-15 13:19:12 +08:00
xiaoxian521
e22e19552a perf: delete settings.ts use serverConfig.json 2021-10-15 11:38:43 +08:00
xiaoxian521
cafc588e4c chore: update 2.1.0 version 2021-10-14 17:50:03 +08:00
xiaoxian521
1687097e63 fix: element-plus locale config 2021-10-14 17:36:16 +08:00
xiaoxian521
b87183cb75 types: fix some types 2021-10-13 21:44:49 +08:00
xiaoxian521
80328d2e20 types: add mitt types 2021-10-13 19:51:47 +08:00
xiaoxian521
ea97cb20f3 docs: update settings.json 2021-10-13 16:17:54 +08:00
xiaoxian521
262113525d perf: route 2021-10-13 13:14:28 +08:00
xiaoxian521
e080fe4128 feat: 额外图标(比如这个是新加的页面,路由菜单右上角显示个新图标) 2021-10-13 11:57:27 +08:00
xiaoxian521
b1702ed7fe feat: 路由动画(每个路由都可添加不同动画) 2021-10-13 10:31:38 +08:00
啝裳
a31d154806 perf/route (#54)
* perf: router

* perf: route
2021-10-12 23:33:13 +08:00
xiaoxian521
0408fa6f96 workflow: update linter.yml 2021-10-12 23:24:31 +08:00
xiaoxian521
45c2c4a301 fix: showLink is false,children menu 404 2021-10-12 15:06:33 +08:00
xiaoxian521
c8e90b4bd7 fix: showLink is false,children menu still showing 2021-10-12 13:45:59 +08:00
xiaoxian521
9c70c5a8dc docs: update readme 2021-10-11 16:36:04 +08:00
xiaoxian521
4cf8c215fc chore: update responsive-storage lastest 2021-10-11 16:11:59 +08:00
xiaoxian521
a139ef80f5 chore: update element-plus lastest 2021-10-11 15:28:52 +08:00
xiaoxian521
11178d8fd5 perf: layout 2021-10-11 15:14:00 +08:00
xiaoxian521
c49fbde0b5 workflow: update linter.yml 2021-10-11 14:21:37 +08:00
hb0730
86cde31aaa feat: export router (#53)
在store模块中,可能需要router跳转
2021-10-09 19:43:11 +08:00
xiaoxian521
fc5cec54b0 feat: 抽离默认配置选项 2021-10-08 11:32:50 +08:00
xiaoxian521
13749c784d fix: some bug 2021-10-05 16:58:59 +08:00
xiaoxian521
37a967942b perf: layout 2021-10-04 11:14:13 +08:00
啝裳
6b16a04229 perf: layout (#50) 2021-10-03 13:09:12 +08:00
xiaoxian521
77b7abcbc3 types: add element-plus/global to tsconfig 2021-10-03 08:46:29 +08:00
xiaoxian521
34782fe351 chore: update 2021-10-03 08:38:48 +08:00
啝裳
52dba8a79c Merge pull request #49 from xiaoxian521/feat/layout
style: [sidebar.scss] delete overflow-x: auto
2021-10-01 21:15:49 +08:00
xiaoxian521
d4d4157cc4 style: [sidebar.scss] delete overflow-x: auto 2021-10-01 21:06:54 +08:00
xiaoxian521
b18654f52e chore: update element-plus lastest 2021-10-01 10:35:18 +08:00
xiaoxian521
28eb447de7 chore: update element-plus 2021-09-29 09:55:50 +08:00
hb0730
e661f60f13 feat(storage): add new storage (#48)
* feat(storage): add new storage,新增 database 和 cookie 存储
* fix(storage): 区分用户,获取当前存储路径时,应该获取当前用户,用来区分用户
* fix: ts alias mapping
* chore: remove lodash
* fix(storage): replace lodash with lodash-es
* fix(storage): initialization,Initialization failed, unable to write
2021-09-29 09:07:54 +08:00
xiaoxian521
6d814316c2 docs: update log 2021-09-29 02:38:50 +08:00
354 changed files with 30762 additions and 13759 deletions

11
.env
View File

@@ -1,11 +1,2 @@
# port
# 项目本地运行端口号
VITE_PORT = 8848
# open
VITE_OPEN = false
# public path
VITE_PUBLIC_PATH = /
# Cross-domain proxy, you can configure multiple
VITE_PROXY = [ ["/api", "http://127.0.0.1:3000" ] ]

View File

@@ -1,11 +1,14 @@
# port
# 项目本地运行端口号
VITE_PORT = 8848
# open
VITE_OPEN = false
# public path
# 开发环境读取配置文件路径
VITE_PUBLIC_PATH = /
# Cross-domain proxy, you can configure multiple
VITE_PROXY = [ ["/api", "http://127.0.0.1:3000" ] ]
# 开发环境代理
VITE_PROXY_DOMAIN = /api
# 开发环境路由历史模式
VITE_ROUTER_HISTORY = "hash"
# 开发环境后端地址
VITE_PROXY_DOMAIN_REAL = "http://127.0.0.1:3000"

View File

@@ -1,2 +1,11 @@
# public path
VITE_PUBLIC_PATH = /manages/
# 线上环境项目打包路径
VITE_PUBLIC_PATH = /
# 线上环境路由历史模式
VITE_ROUTER_HISTORY = "hash"
# 线上环境后端地址
VITE_PROXY_DOMAIN_REAL = ""
# 是否为打包后的文件提供传统浏览器兼容性支持 支持 true 不支持 false
VITE_LEGACY = false

14
.env.staging Normal file
View File

@@ -0,0 +1,14 @@
# 预发布也需要生产环境的行为
# https://cn.vitejs.dev/guide/env-and-mode.html#modes
NODE_ENV=production
VITE_PUBLIC_PATH = /
# 线上环境路由历史模式
VITE_ROUTER_HISTORY = "hash"
# 线上环境后端地址
VITE_PROXY_DOMAIN_REAL = ""
# 是否为打包后的文件提供传统浏览器兼容性支持 支持 true 不支持 false
VITE_LEGACY = false

View File

@@ -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",
{
@@ -70,6 +109,12 @@ module.exports = {
argsIgnorePattern: "^_",
varsIgnorePattern: "^_"
}
],
"prettier/prettier": [
"error",
{
endOfLine: "auto"
}
]
}
};
}

View File

@@ -16,10 +16,11 @@ name: Lint Code Base
#############################
on:
push:
branches-ignore: main
# Remove the line above to run when pushing to master
branches:
- main
pull_request:
branches: main
branches:
- main
###############
# Set the Job #
@@ -44,11 +45,22 @@ jobs:
# Full git history is needed to get a proper list of changed files within `super-linter`
fetch-depth: 0
- 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: Build
run: |
yarn install
yarn lint
yarn run build
pnpm install
pnpm lint
pnpm typecheck
env:
VALIDATE_ALL_CODEBASE: false
DEFAULT_BRANCH: main

10
.gitignore vendored
View File

@@ -4,16 +4,18 @@ dist
dist-ssr
*.local
.eslintcache
report.html
yarn.lock
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-error.log*
.pnpm-debug.log
tests/**/coverage/
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sln
tsconfig.tsbuildinfo

View File

@@ -2,4 +2,4 @@ ports:
- port: 3344
onOpen: open-preview
tasks:
- init: npm install && npm run serve
- init: pnpm install && pnpm serve

View File

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

View File

@@ -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,.!(browserslist)*rc}": ["prettier --write--parser json"],
"package.json": ["prettier --write"],
"*.vue": ["eslint --fix", "prettier --write", "stylelint --fix"],
"*.{vue,css,scss,postcss,less}": ["stylelint --fix", "prettier --write"],

11
.markdownlint.json Normal file
View File

@@ -0,0 +1,11 @@
{
"default": true,
"MD003": false,
"MD033": false,
"MD013": false,
"MD001": false,
"MD025": false,
"MD024": false,
"MD007": { "indent": 4 },
"no-hard-tabs": false
}

View File

@@ -1,7 +1,6 @@
module.exports = {
bracketSpacing: true,
jsxBracketSameLine: true,
singleQuote: false,
arrowParens: 'avoid',
trailingComma: 'none'
arrowParens: "avoid",
trailingComma: "none"
};

15
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,15 @@
{
"recommendations": [
"vscode-icons-team.vscode-icons",
"davidanson.vscode-markdownlint",
"stylelint.vscode-stylelint",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"lokalise.i18n-ally",
"mikestead.dotenv",
"eamodio.gitlens",
"antfu.iconify",
"antfu.unocss",
"Vue.volar"
]
}

38
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,38 @@
{
"editor.formatOnType": true,
"editor.formatOnSave": true,
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"editor.tabSize": 2,
"editor.formatOnPaste": true,
"files.autoSave": "afterDelay",
"git.confirmSync": false,
"workbench.startupEditor": "newUntitledFile",
"editor.suggestSelection": "first",
"editor.acceptSuggestionOnCommitCharacter": false,
"css.lint.propertyIgnoredDueToDisplay": "ignore",
"editor.quickSuggestions": {
"other": true,
"comments": true,
"strings": true
},
"files.associations": {
"editor.snippetSuggestions": "top"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"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
View 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+"
}
}

View File

@@ -1,5 +1,230 @@
# 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/xiaoxian521/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/xiaoxian521/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-docs.vercel.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/xiaoxian521/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/xiaoxian521/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
- New tab reuse
- New message reminder template
- Added front-end menu tree structure example
- Refactor routing, optimize permissions modules, and bring a more convenient experience
- Refactor the env environment and http request to bring a more convenient experience
- Currently, the tabs of the platform are forced to associate with local storage. The next step is to put the tabs in the memory by default and support configurable persistent tabs
- Navigation menu icons support fontawesome, iconfont, remixicon, element-plus/icons, custom svg
- Update font-awesome to version 5.0, because versions below 5.0 are no longer officially maintained, but the platform will still be compatible with font-awesome4 version
### 🍏 Perf
- 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)
### 🎫 Feat
- Refactored navigation theme color, supports multiple color schemes
- Refactored login page, illustration style
### 🍏 Perf
- Optimize the navigation style
- Eliminate strong navigation dependence on vxe-table
- Synchronously update element-plus, replace Font Icon with SVG Icon
# 2.1.0(2021-10-14)
### 🎫 Feat
- Route animation (each route can add different animations)
- Extra icons (for example, this is a newly added page, a new icon is displayed in the upper right corner of the routing menu)
- Extract the default configuration options
- Perfect type file
### 🐞 Bug fixes
- Fix the issue of element-plus internationalization
- Fix routing issues
- Fix navigation adaptation problem
# 2.0.1(2021-9-29)
### 🎫 Feat
- Feat horizontal nav
# 2.0.0(2021-4-13)
### 🎫 Chores
- Release 2.0.0 version
- Release 2.0.0 version

View File

@@ -1,5 +1,230 @@
# 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/xiaoxian521/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/xiaoxian521/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-docs.vercel.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/xiaoxian521/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/xiaoxian521/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
- New tab reuse
- New message reminder template
- Added front-end menu tree structure example
- Refactor routing, optimize permissions modules, and bring a more convenient experience
- Refactor the env environment and http request to bring a more convenient experience
- Currently, the tabs of the platform are forced to associate with local storage. The next step is to put the tabs in the memory by default and support configurable persistent tabs
- Navigation menu icons support fontawesome, iconfont, remixicon, element-plus/icons, custom svg
- Update font-awesome to version 5.0, because versions below 5.0 are no longer officially maintained, but the platform will still be compatible with font-awesome4 version
### 🍏 Perf
- 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)
### 🎫 Feat
- Refactored navigation theme color, supports multiple color schemes
- Refactored login page, illustration style
### 🍏 Perf
- Optimize the navigation style
- Eliminate strong navigation dependence on vxe-table
- Synchronously update element-plus, replace Font Icon with SVG Icon
# 2.1.0(2021-10-14)
### 🎫 Feat
- Route animation (each route can add different animations)
- Extra icons (for example, this is a newly added page, a new icon is displayed in the upper right corner of the routing menu)
- Extract the default configuration options
- Perfect type file
### 🐞 Bug fixes
- Fix the issue of element-plus internationalization
- Fix routing issues
- Fix navigation adaptation problem
# 2.0.1(2021-9-29)
### 🎫 Feat
- Feat horizontal nav
# 2.0.0(2021-4-13)
### 🎫 Chores
- Release 2.0.0 version
- Release 2.0.0 version

View File

@@ -1,5 +1,230 @@
# 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/xiaoxian521/pure-admin-table),提供灵活的配置项并集成到平台里
-`element-plus``Descriptions` 二次封装到[@pureadmin/descriptions](https://github.com/xiaoxian521/pure-admin-descriptions),提供灵活的配置项并集成到平台里
- 将平台的大部分工具以及 hooks 都集中到[@pureadmin/utils](https://pure-admin-utils-docs.vercel.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/xiaoxian521/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523)
### ✔️ refactor
- 重构登录页,更偏向实际业务场景
- 使用`unocss`替换`windicss``unocss`开发环境下性能更好,没有内存泄露,而且`api`使用上兼容`windicss`
### 🍏 Perf
- 优化平台的`split-pane`组件样式
- 优化国际化,路由不再传`i18n`字段,平台自动读取根目录`locales`文件夹下文件进行国际化匹配
- 优化图标选择器
- 优化`layout`显示用户信息[commit](https://github.com/xiaoxian521/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
- 新增标签页复用
- 新增消息提醒模版
- 新增前端菜单树结构例子
- 重构路由,优化权限模块,带来更方便的体验
- 重构 env 环境和 http 请求,带来更方便的体验
- 目前平台的标签页强制关联了本地存储,下一步标签页默认放到内存中并支持可配置持久化标签页
- 导航菜单图标支持 fontawesome、iconfont、remixicon、element-plus/icons、自定义 svg
- 更新 font-awesome 到 5.0 版本,因为 5.0 以下的版本官方不再维护,但平台依旧会兼容 font-awesome4 版本
### 🍏 Perf
- 优化标签页,带来更好的交互体验
- 路由 title 支持直接写中文,可脱离国际化
- 路由历史模式从 env 读取并支持 base 参数
- 打包后的文件提供传统浏览器兼容性支持,配置 VITE_LEGACY 为 true
# 2.6.0(2021-11-10)
### 🎫 Feat
- 重构导航主题色,支持多种配色
- 重构登录页,插画风格
### 🍏 Perf
- 优化导航样式
- 剔除导航强依赖 vxe-table
- 同步更新 element-plus使用 SVG Icon 替换 Font Icon
# 2.1.0(2021-10-14)
### 🎫 Feat
- 路由动画(每个路由都可添加不同动画)
- 额外图标(比如这个是新加的页面,路由菜单右上角显示个新图标)
- 抽离默认配置选项
- 完善类型文件
### 🐞 Bug fixes
- 修复 element-plus 国际化使用问题
- 修复路由问题
- 修复导航适配问题
# 2.0.1(2021-9-29)
### 🎫 Feat
- 添加 horizontal 水平模式导航
# 2.0.0(2021-4-13)
### 🎫 Chores
- 发布2.0.0版本
- 发布 2.0.0 版本

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2021 啝裳
Copyright (c) 2022 啝裳
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1,37 +1,49 @@
<h1>vue-pure-admin</h1>
[![license](https://img.shields.io/github/license/xiaoxian521/vue-pure-admin.svg)](LICENSE)
![GitHub license](https://img.shields.io/github/license/xiaoxian521/vue-pure-admin?style=flat)
![GitHub stars](https://img.shields.io/github/stars/xiaoxian521/vue-pure-admin?color=fa6470&style=flat)
![GitHub forks](https://img.shields.io/github/forks/xiaoxian521/vue-pure-admin?style=flat)
**English** | [中文](./README.md)
## Introduction
vue-pure-admin is a free and open source middle and back-end template. Using the latest `vue3`, `vite2`, `TypeScript`, `Element-Plus` 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 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.
## Supporting Video
- [Click Watch Tutorial](https://www.bilibili.com/video/BV1534y1S7HV)
- [Click Watch UI Design](https://www.bilibili.com/video/BV17g411T7rq)
## Docs
- [Click Watch Docs](https://pure-admin-doc.vercel.app)
## Thin
- [Click Watch Thin](https://github.com/xiaoxian521/pure-admin-thin)
## Tauri
- [Click Watch Tauri](https://github.com/xiaoxian521/tauri-pure-admin)
## Preview
- [vue-pure-admin](http://yiming_chang.gitee.io/manages)
Click to log in without password
- [vue-pure-admin](https://vue-pure-admin.vercel.app)
- PC
<p align="center">
<img alt="PureAdmin Logo" width="100%" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f5ee80eee1014fb4a53c5bb37574a5f5~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dec0672a62e141f3b7f626c22ff6c7ef~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f586f1353de74b1b88cc9f89fce2146e~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a28fc0af7ac44e3b8f30469cba4a9993~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a17e54329cda4d76aa9c1c4f2a4715d3~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d884fb611da74ee0bdc17c29014d0260~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/abed44ac1f2744e897c28d1689bcb517~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cf2f068650f44a0787c699f5a20c75a6~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/73c575dd06474731ad8ab9d853f1ddfd~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/99389b90f5ac4db9b0d61d99dd9a1454~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f1546f1c6014446db6c9983934aedc86~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cfb0093b77c34e87b094daaa4304bc2d~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fe133cc6db3245f9b1b37f231d040550~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d3110a12d63e4f6fb314e60bf18bdb66~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/45b93ec453e3406a939affe65ddcc803~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cdc2dc88c1ef4aafbaaade820442c986~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f4c91b162206485b88cc58a72ff54a01~tplv-k3u1fbpfcp-watermark.image">
<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
@@ -47,7 +59,7 @@ Open the project in Gitpod (free online dev environment for GitHub) and start co
```bash
git clone https://github.com/xiaoxian521/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
@@ -55,20 +67,20 @@ git clone https://github.com.cnpmjs.org/xiaoxian521/vue-pure-admin.git
```bash
cd vue-pure-admin
yarn install
pnpm install
```
- run
```bash
yarn serve
pnpm serve
```
- build
```bash
yarn build
pnpm build
```
## Change Log
@@ -117,20 +129,32 @@ 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
![donate](http://yiming_chang.gitee.io/manages/pay.jpg)
## Exchange Group
Please scan the code to join the WeChat exchange group, if you have any questions, you can communicate in the group!
![group](https://yiming_chang.gitee.io/manages/wechat.jpg)
<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, and you can use it with confidence, but if you need secondary open source, please contact the author for permission!
[MIT © xiaoxian521-2020](./LICENSE)
## Backers
Thank you very much for your support, I believe the project will get better and better :heart:
| 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:
<a href="https://github.com/xiaoxian521/vue-pure-admin/graphs/contributors"><img src="https://contrib.rocks/image?repo=xiaoxian521/vue-pure-admin" /></a>

View File

@@ -1,37 +1,49 @@
<h1>vue-pure-admin</h1>
[![license](https://img.shields.io/github/license/xiaoxian521/vue-pure-admin.svg)](LICENSE)
![GitHub license](https://img.shields.io/github/license/xiaoxian521/vue-pure-admin?style=flat)
![GitHub stars](https://img.shields.io/github/stars/xiaoxian521/vue-pure-admin?color=fa6470&style=flat)
![GitHub forks](https://img.shields.io/github/forks/xiaoxian521/vue-pure-admin?style=flat)
**中文** | [English](./README.en-US.md)
## 简介
vue-pure-admin 是一个免费开源的中后台模版。使用了最新的`vue3`,`vite2`,`TypeScript`,`Element-Plus`等主流技术开发,开箱即用的中后台前端解决方案,也可用于学习参考。
vue-pure-admin 是一个免费开源的中后台模版。使用了最新的`vue3` `vite2` `Element-Plus` `TypeScript`等主流技术开发,开箱即用的中后台前端解决方案,也可用于学习参考。
## 配套视频
- [点我查看教程](https://www.bilibili.com/video/BV1534y1S7HV)
- [点我查看 UI 设计](https://www.bilibili.com/video/BV17g411T7rq)
## 配套文档
- [点我查看文档](https://pure-admin-doc.vercel.app)
## 精简版
- [点我查看精简版](https://github.com/xiaoxian521/pure-admin-thin)
## Tauri 版
- [点我查看 Tauri 版](https://github.com/xiaoxian521/tauri-pure-admin)
## 预览
- [vue-pure-admin](http://yiming_chang.gitee.io/manages)
点击免密登录
- [vue-pure-admin](https://vue-pure-admin.vercel.app)
- PC 端
<p align="center">
<img alt="PureAdmin Logo" width="100%" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f5ee80eee1014fb4a53c5bb37574a5f5~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dec0672a62e141f3b7f626c22ff6c7ef~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f586f1353de74b1b88cc9f89fce2146e~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a28fc0af7ac44e3b8f30469cba4a9993~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a17e54329cda4d76aa9c1c4f2a4715d3~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d884fb611da74ee0bdc17c29014d0260~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/abed44ac1f2744e897c28d1689bcb517~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cf2f068650f44a0787c699f5a20c75a6~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/73c575dd06474731ad8ab9d853f1ddfd~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/99389b90f5ac4db9b0d61d99dd9a1454~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f1546f1c6014446db6c9983934aedc86~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cfb0093b77c34e87b094daaa4304bc2d~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fe133cc6db3245f9b1b37f231d040550~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d3110a12d63e4f6fb314e60bf18bdb66~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/45b93ec453e3406a939affe65ddcc803~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cdc2dc88c1ef4aafbaaade820442c986~tplv-k3u1fbpfcp-watermark.image">
<img alt="PureAdmin Logo" width="100%" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f4c91b162206485b88cc58a72ff54a01~tplv-k3u1fbpfcp-watermark.image">
<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>
- 暗黑模式
<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
@@ -47,7 +59,7 @@ vue-pure-admin 是一个免费开源的中后台模版。使用了最新的`vue3
```bash
git clone https://github.com/xiaoxian521/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
```
- 安装依赖
@@ -55,20 +67,20 @@ git clone https://github.com.cnpmjs.org/xiaoxian521/vue-pure-admin.git
```bash
cd vue-pure-admin
yarn install
pnpm install
```
- 运行
```bash
yarn serve
pnpm serve
```
- 打包
```bash
yarn build
pnpm build
```
## 更新日志
@@ -117,20 +129,38 @@ yarn build
## 维护者
[xiaoxian521](https://github.com/xiaoxian521)
[xiaoxian521](https://github.com/xiaoxian521)、[Ten-K](https://github.com/Ten-K)
## 捐赠
如果你觉得这个项目对有帮助,可以帮作者买一杯咖啡表示支持!
如果你觉得这个项目对有帮助,可以帮作者买一杯果汁 🍹 表示支持
![donate](http://yiming_chang.gitee.io/manages/pay.jpg)
<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 交流群
请扫码加入微信交流群,有问题可以在群里沟通!
一群已满,下面是二群,群里严禁`黄``赌``毒``vpn`等违法行为!
![group](https://yiming_chang.gitee.io/manages/wechat.jpg)
<img src="https://pure-admin-doc.vercel.app/img/support/qq.png" width="150px" height="225px" />
## License
## 许可证
原则上不收取任何费用及版权,可以放心使用,不过如需二次开源(比如用此平台二次开发并开源)请联系作者获取许可!
[MIT © xiaoxian521-2020](./LICENSE)
## 捐赠者
非常感谢你们的支持,相信项目会越来越好 :heart:
| 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:
<a href="https://github.com/xiaoxian521/vue-pure-admin/graphs/contributors"><img src="https://contrib.rocks/image?repo=xiaoxian521/vue-pure-admin" /></a>

View File

@@ -1,6 +0,0 @@
const productPlugins = [];
process.env.NODE_ENV === "production" &&
productPlugins.push("transform-remove-console");
module.exports = {
plugins: [...productPlugins]
};

View File

@@ -1,5 +1,14 @@
// 处理环境变量
const warpperEnv = (envConf: Recordable): ViteEnv => {
const ret: any = {};
// 此处为默认值,无需修改
const ret: ViteEnv = {
VITE_PORT: 8848,
VITE_PUBLIC_PATH: "",
VITE_PROXY_DOMAIN: "",
VITE_PROXY_DOMAIN_REAL: "",
VITE_ROUTER_HISTORY: "",
VITE_LEGACY: false
};
for (const envName of Object.keys(envConf)) {
let realName = envConf[envName].replace(/\\n/g, "\n");
@@ -9,13 +18,6 @@ const warpperEnv = (envConf: Recordable): ViteEnv => {
if (envName === "VITE_PORT") {
realName = Number(realName);
}
if (envName === "VITE_PROXY" && realName) {
try {
realName = JSON.parse(realName.replace(/'/g, '"'));
} catch (error) {
realName = "";
}
}
ret[envName] = realName;
if (typeof realName === "string") {
process.env[envName] = realName;
@@ -25,8 +27,15 @@ 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 { loadEnv, warpperEnv };
export { warpperEnv, regExps, loadEnv };

50
build/info.ts Normal file
View File

@@ -0,0 +1,50 @@
import type { Plugin } from "vite";
import dayjs, { Dayjs } from "dayjs";
import duration from "dayjs/plugin/duration";
import { green, blue, bold } from "picocolors";
import { getPackageSize } from "@pureadmin/utils";
dayjs.extend(duration);
export function viteBuildInfo(): Plugin {
let config: { command: string };
let startTime: Dayjs;
let endTime: Dayjs;
return {
name: "vite:buildInfo",
configResolved(resolvedConfig: { command: string }) {
config = resolvedConfig;
},
buildStart() {
console.log(
bold(
green(
`👏欢迎使用${blue(
"[vue-pure-admin]"
)}如果您感觉不错记得点击后面链接给个star哦💖 https://github.com/xiaoxian521/vue-pure-admin`
)
)
);
if (config.command === "build") {
startTime = dayjs(new Date());
}
},
closeBundle() {
if (config.command === "build") {
endTime = dayjs(new Date());
getPackageSize({
callback: (size: string) => {
console.log(
bold(
green(
`🎉恭喜打包完成(总用时${dayjs
.duration(endTime.diff(startTime))
.format("mm分ss秒")},打包后的大小为${size}`
)
)
);
}
});
}
}
};
}

73
build/plugins.ts Normal file
View File

@@ -0,0 +1,73 @@
import { resolve } from "path";
import Unocss from "unocss/vite";
import vue from "@vitejs/plugin-vue";
import { viteBuildInfo } from "./info";
import svgLoader from "vite-svg-loader";
import legacy from "@vitejs/plugin-legacy";
import vueJsx from "@vitejs/plugin-vue-jsx";
import { viteMockServe } from "vite-plugin-mock";
import VueI18n from "@intlify/vite-plugin-vue-i18n";
import { visualizer } from "rollup-plugin-visualizer";
import removeConsole from "vite-plugin-remove-console";
import themePreprocessorPlugin from "@pureadmin/theme";
import { genScssMultipleScopeVars } from "/@/layout/theme";
import DefineOptions from "unplugin-vue-define-options/vite";
export function getPluginsList(command, VITE_LEGACY) {
const prodMock = true;
const lifecycle = process.env.npm_lifecycle_event;
return [
vue(),
// https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n
VueI18n({
runtimeOnly: true,
compositionOnly: true,
include: [resolve("locales/**")]
}),
// jsx、tsx语法支持
vueJsx(),
Unocss(),
DefineOptions(),
// 线上环境删除console
removeConsole({ external: ["src/assets/iconfont/iconfont.js"] }),
viteBuildInfo(),
// 自定义主题
themePreprocessorPlugin({
scss: {
multipleScopeVars: genScssMultipleScopeVars(),
// 在生产模式是否抽取独立的主题css文件extract为true以下属性有效
extract: true,
// 会选取defaultScopeName对应的主题css文件在html添加link
themeLinkTagId: "head",
// "head"||"head-prepend" || "body" ||"body-prepend"
themeLinkTagInjectTo: "head",
// 是否对抽取的css文件内对应scopeName的权重类名移除
removeCssScopeName: false
}
}),
// svg组件化支持
svgLoader(),
// mock支持
viteMockServe({
mockPath: "mock",
localEnabled: command === "serve",
prodEnabled: command !== "serve" && prodMock,
injectCode: `
import { setupProdMockServer } from './mockProdServer';
setupProdMockServer();
`,
logger: false
}),
// 是否为打包后的文件提供传统浏览器兼容性支持
VITE_LEGACY
? legacy({
targets: ["ie >= 11"],
additionalLegacyPolyfills: ["regenerator-runtime/runtime"]
})
: null,
// 打包分析
lifecycle === "report"
? visualizer({ open: true, brotliSize: true, filename: "report.html" })
: null
];
}

View File

@@ -1,19 +0,0 @@
type ProxyItem = [string, string];
type ProxyList = ProxyItem[];
const regExps = (value: string, reg: string): string => {
return value.replace(new RegExp(reg, "g"), "");
};
export function createProxy(list: ProxyList = []) {
const ret: any = {};
for (const [prefix, target] of list) {
ret[prefix] = {
target: target,
changeOrigin: true,
rewrite: (path: string) => regExps(path, prefix)
};
}
return ret;
}

View File

@@ -2,119 +2,101 @@
<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" />
<link rel="stylesheet" href="/iconfont.css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>后台管理系统</title>
<script src="/sortable.min.js"></script>
<script>
window.process = {};
</script>
</head>
<body>
<div id="app">
<style>
* {
margin: 0;
padding: 0;
}
html,
body {
body,
#app {
width: 100%;
height: 100%;
display: flex;
position: relative;
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;
.loader,
.loader:before,
.loader:after {
border-radius: 50%;
width: 2.5em;
height: 2.5em;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
-webkit-animation: loadAnimation 1.8s infinite ease-in-out;
animation: loadAnimation 1.8s infinite ease-in-out;
}
span {
display: block;
font-size: 20px;
overflow: hidden;
color: green;
text-align: center;
}
p::before {
content: " ";
width: 100%;
height: 100%;
position: absolute;
left: 0;
.loader {
color: #406eeb;
font-size: 10px;
margin: 80px auto;
position: relative;
text-indent: -9999em;
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
-webkit-animation-delay: -0.16s;
animation-delay: -0.16s;
top: 0;
background-image: linear-gradient(45deg, #ff269b, #2ab5f5, #ffbf00);
mix-blend-mode: multiply;
transform: translate(-50%, 0);
}
p::after {
.loader:before,
.loader:after {
content: "";
background: radial-gradient(circle, #fff, #000 50%);
background-size: 25% 25%;
position: absolute;
top: -100%;
left: -100%;
right: 0;
bottom: 0;
mix-blend-mode: color-dodge;
animation: mix 2s linear infinite;
top: 0;
}
@keyframes mix {
to {
transform: translate(50%, 50%);
.loader:before {
left: -3.5em;
-webkit-animation-delay: -0.32s;
animation-delay: -0.32s;
}
.loader:after {
left: 3.5em;
}
@-webkit-keyframes loadAnimation {
0%,
80%,
100% {
box-shadow: 0 2.5em 0 -1.3em;
}
40% {
box-shadow: 0 2.5em 0 0;
}
}
@keyframes loadAnimation {
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>

130
locales/en.yaml Normal file
View File

@@ -0,0 +1,130 @@
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
menus:
hshome: Home
hslogin: Login
hsempty: Empty Page
hssysManagement: System Manage
hsUser: User Manage
hsDict: Dict Manage
hsRole: Role Manage
hsDept: Dept Manage
hseditor: Editor
hserror: Error Page
hsfourZeroFour: "404"
hsfourZeroOne: "403"
hsFive: "500"
hscomponents: 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
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
hsExternalPage: External Page
hsPureDocument: Pure Doc(Embedded)
externalLink: Pure Doc(External)
hsEpDocument: Element Plus Doc(Embedded)
hsAbout: About
hsResult: Result Page
hsSuccess: Success Page
hsFail: Fail Page
hsIconSelect: Icon Select
hsTimeline: Time Line
hsLineTree: LineTree
hsAntTabs: Imitate Antdv Tabs
hsAntAnchor: Imitate Antdv Anchor
hsAntTreeSelect: Imitate Antdv TreeSelector
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
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

130
locales/zh-CN.yaml Normal file
View File

@@ -0,0 +1,130 @@
buttons:
hsLoginOut: 退出系统
hsfullscreen: 全屏
hsexitfullscreen: 退出全屏
hsrefreshRoute: 刷新路由
hslogin: 登录
hsadd: 新增
hsmark: 标记/取消
hssave: 保存
hssearch: 搜索
hsexpendAll: 全部展开
hscollapseAll: 全部折叠
hssystemSet: 打开项目配置
hsdelete: 删除
hsreload: 重新加载
hscloseCurrentTab: 关闭当前标签页
hscloseLeftTabs: 关闭左侧标签页
hscloseRightTabs: 关闭右侧标签页
hscloseOtherTabs: 关闭其他标签页
hscloseAllTabs: 关闭全部标签页
menus:
hshome: 首页
hslogin: 登录
hsempty: 无Layout页
hssysManagement: 系统管理
hsUser: 用户管理
hsDict: 字典管理
hsRole: 角色管理
hsDept: 部门管理
hseditor: 编辑器
hserror: 错误页面
hsfourZeroFour: "404"
hsfourZeroOne: "403"
hsFive: "500"
hscomponents: 组件
hsvideo: 视频组件
hsmap: 地图组件
hsdraggable: 拖拽组件
hssplitPane: 切割面板
hsbutton: 按钮组件
hscropping: 图片裁剪
hscountTo: 数字动画
hsselector: 选择器组件
hsflowChart: 流程图
hsseamless: 无缝滚动
hscontextmenu: 右键菜单
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: 打印
hsExternalPage: 外部页面
hsPureDocument: 平台文档(内嵌)
externalLink: 平台文档(外链)
hsEpDocument: Element Plus文档(内嵌)
hsAbout: 关于
hsResult: 结果页面
hsSuccess: 成功页面
hsFail: 失败页面
hsIconSelect: 图标选择器
hsTimeline: 时间线
hsLineTree: 树形连接线
hsAntTabs: 仿antdv标签页
hsAntAnchor: 仿antdv锚点
hsAntTreeSelect: 仿antdv树型选择器
hsList: 列表页
hsListCard: 卡片列表页
hsDebounce: 防抖节流
hsFormDesign: 表单设计器
hsBarcode: 条形码
hsQrcode: 二维码
hsCascader: 区域级联选择器
hsSwiper: Swiper插件
hsVirtualList: 虚拟列表
hsPdf: PDF预览
hsExecl: 导出Excel
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: 修改密码成功

View File

@@ -4,32 +4,44 @@ import { MockMethod } from "vite-plugin-mock";
// http://mockjs.com/examples.html#Object
const systemRouter = {
path: "/system",
name: "system",
redirect: "/system/user",
meta: {
icon: "el-icon-setting",
title: "message.hssysManagement",
showLink: true,
savedPosition: true,
rank: 6
icon: "setting",
title: "menus.hssysManagement",
rank: 11
},
children: [
{
path: "/system/user",
name: "user",
path: "/system/user/index",
name: "User",
meta: {
title: "message.hsBaseinfo",
showLink: true,
savedPosition: true
icon: "flUser",
title: "menus.hsUser"
}
},
{
path: "/system/role/index",
name: "Role",
meta: {
icon: "role",
title: "menus.hsRole"
}
},
{
path: "/system/dept/index",
name: "Dept",
meta: {
icon: "dept",
title: "menus.hsDept"
}
},
{
path: "/system/dict",
name: "dict",
component: "/system/dict/index",
name: "Dict",
meta: {
title: "message.hsDict",
showLink: true,
savedPosition: true
icon: "dict",
title: "menus.hsDict",
keepAlive: true
}
}
]
@@ -37,38 +49,98 @@ const systemRouter = {
const permissionRouter = {
path: "/permission",
name: "permission",
redirect: "/permission/page",
meta: {
title: "message.permission",
icon: "el-icon-lollipop",
showLink: true,
savedPosition: true,
rank: 3
title: "menus.permission",
icon: "lollipop",
rank: 7
},
children: [
{
path: "/permission/page",
name: "permissionPage",
path: "/permission/page/index",
name: "PermissionPage",
meta: {
title: "message.permissionPage",
showLink: true,
savedPosition: true
title: "menus.permissionPage"
}
},
{
path: "/permission/button",
name: "permissionButton",
path: "/permission/button/index",
name: "PermissionButton",
meta: {
title: "message.permissionButton",
showLink: true,
savedPosition: true,
title: "menus.permissionButton",
authority: []
}
}
]
};
const frameRouter = {
path: "/iframe",
meta: {
icon: "monitor",
title: "menus.hsExternalPage",
rank: 10
},
children: [
{
path: "/iframe/pure",
name: "FramePure",
meta: {
title: "menus.hsPureDocument",
frameSrc: "https://pure-admin-doc.vercel.app"
}
},
{
path: "/external",
name: "https://pure-admin-doc.vercel.app",
meta: {
title: "menus.externalLink"
}
},
{
path: "/iframe/ep",
name: "FrameEp",
meta: {
title: "menus.hsEpDocument",
frameSrc: "https://element-plus.org/zh-CN/"
}
}
]
};
const tabsRouter = {
path: "/tabs",
meta: {
icon: "IF-team-icontabs",
title: "menus.hstabs",
rank: 13
},
children: [
{
path: "/tabs/index",
name: "Tabs",
meta: {
title: "menus.hstabs"
}
},
{
path: "/tabs/query-detail",
name: "TabQueryDetail",
meta: {
// 不在menu菜单中显示
showLink: false
}
},
{
path: "/tabs/params-detail/:id",
component: "params-detail",
name: "TabParamsDetail",
meta: {
showLink: false
}
}
]
};
// 添加不同按钮权限到/permission/button页面中
function setDifAuthority(authority, routes) {
routes.children[1].meta.authority = [authority];
@@ -83,12 +155,17 @@ export default [
if (query.name === "admin") {
return {
code: 0,
info: [systemRouter, setDifAuthority("v-admin", permissionRouter)]
info: [
tabsRouter,
frameRouter,
systemRouter,
setDifAuthority("v-admin", permissionRouter)
]
};
} else {
return {
code: 0,
info: [setDifAuthority("v-test", permissionRouter)]
info: [tabsRouter, setDifAuthority("v-test", permissionRouter)]
};
}
}

View File

@@ -1,23 +0,0 @@
import { MockMethod } from "vite-plugin-mock";
// http://mockjs.com/examples.html#Object
const echartsList = (): any => {
const result: any[] = [];
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
View File

@@ -0,0 +1,455 @@
import { MockMethod } from "vite-plugin-mock";
export default [
{
url: "/getCardList",
method: "post",
response: () => {
return {
code: 0,
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[];

View File

@@ -1,8 +1,16 @@
import { MockMethod } from "vite-plugin-mock";
type mapType = {
plateNumber: string;
driver: string;
"orientation|1-360": number;
"lng|113-114.1-10": number;
"lat|34-35.1-10": number;
};
// http://mockjs.com/examples.html#Object
const mapList = (): any => {
const result: any[] = [];
const mapList = (): Array<mapType> => {
const result: Array<mapType> = [];
for (let index = 0; index < 200; index++) {
result.push({
plateNumber: "豫A@natural(11111, 99999)@character('upper')",

288
mock/system.ts Normal file
View File

@@ -0,0 +1,288 @@
import { MockMethod } from "vite-plugin-mock";
export default [
{
url: "/role",
method: "post",
response: () => {
return {
code: 0,
data: {
list: [
{
createTime: 1609837428000,
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: 1609837428000,
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: 1609912175000,
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 {
code: 0,
data: [
{
name: "杭州总公司",
type: 1, // 1 公司 2 分公司 3 部门
parentId: 0,
sort: 0,
leaderUserId: 1,
phone: "15888888888",
email: "ry@qq.com",
status: 0,
id: 100,
createTime: 1609837427000,
remark: "备注、备注、备注、备注、备注、备注、备注"
},
{
name: "郑州分公司",
type: 2,
parentId: 100,
sort: 1,
leaderUserId: 104,
phone: "15888888888",
email: "ry@qq.com",
status: 0,
id: 101,
createTime: 1609837427000,
remark: "备注、备注、备注、备注、备注、备注、备注"
},
{
name: "研发部门",
type: 3,
parentId: 101,
sort: 1,
leaderUserId: 104,
phone: "15888888888",
email: "ry@qq.com",
status: 0,
id: 103,
createTime: 1609837427000,
remark: "备注、备注、备注、备注、备注、备注、备注"
},
{
name: "市场部门",
type: 3,
parentId: 102,
sort: 1,
leaderUserId: null,
phone: "15888888888",
email: "ry@qq.com",
status: 0,
id: 108,
createTime: 1609837427000,
remark: "备注、备注、备注、备注、备注、备注、备注"
},
{
name: "深圳分公司",
type: 2,
parentId: 100,
sort: 2,
leaderUserId: null,
phone: "15888888888",
email: "ry@qq.com",
status: 0,
id: 102,
createTime: 1609837427000,
remark: "备注、备注、备注、备注、备注、备注、备注"
},
{
name: "市场部门",
type: 3,
parentId: 101,
sort: 2,
leaderUserId: null,
phone: "15888888888",
email: "ry@qq.com",
status: 1,
id: 104,
createTime: 1609837427000,
remark: "备注、备注、备注、备注、备注、备注、备注"
},
{
name: "财务部门",
type: 3,
parentId: 102,
sort: 2,
leaderUserId: null,
phone: "15888888888",
email: "ry@qq.com",
status: 0,
id: 109,
createTime: 1609837427000,
remark: "备注、备注、备注、备注、备注、备注、备注"
},
{
name: "测试部门",
type: 3,
parentId: 101,
sort: 3,
leaderUserId: null,
phone: "15888888888",
email: "ry@qq.com",
status: 0,
id: 105,
createTime: 1609837427000,
remark: "备注、备注、备注、备注、备注、备注、备注"
},
{
name: "财务部门",
type: 3,
parentId: 101,
sort: 4,
leaderUserId: 103,
phone: "15888888888",
email: "ry@qq.com",
status: 1,
id: 106,
createTime: 1609837427000,
remark: "备注、备注、备注、备注、备注、备注、备注"
},
{
name: "运维部门",
type: 3,
parentId: 101,
sort: 5,
leaderUserId: null,
phone: "15888888888",
email: "ry@qq.com",
status: 0,
id: 107,
createTime: 1609837427000,
remark: "备注、备注、备注、备注、备注、备注、备注"
}
]
};
}
},
{
url: "/user",
method: "post",
response: () => {
return {
code: 0,
data: {
list: [
{
username: "admin",
nickname: "admin",
remark: "管理员",
deptId: 103,
postIds: [1],
mobile: "15888888888",
sex: 0,
id: 1,
status: 0,
createTime: 1609837427000,
dept: {
id: 103,
name: "研发部门"
}
},
{
username: "pure",
nickname: "pure",
remark: "不要吓我",
deptId: 104,
postIds: [1],
mobile: "15888888888",
sex: 0,
id: 100,
status: 1,
createTime: 1609981637000,
dept: {
id: 104,
name: "市场部门"
}
},
{
username: "小姐姐",
nickname: "girl",
remark: null,
deptId: 106,
postIds: null,
mobile: "15888888888",
sex: 1,
id: 103,
status: 1,
createTime: 1610553035000,
dept: {
id: 106,
name: "财务部门"
}
},
{
username: "小哥哥",
nickname: "boy",
remark: null,
deptId: 107,
postIds: [],
mobile: "15888888888",
sex: 0,
id: 104,
status: 0,
createTime: 1611166433000,
dept: {
id: 107,
name: "运维部门"
}
}
],
total: 4
}
};
}
}
] as MockMethod[];

View File

@@ -1,101 +1,165 @@
{
"name": "vue-pure-admin",
"version": "2.0.0",
"version": "3.4.6",
"private": true,
"scripts": {
"dev": "cross-env --max_old_space_size=4096 vite",
"serve": "yarn dev",
"build": "rimraf dist && cross-env vite build",
"serve": "pnpm dev",
"build": "rimraf dist && cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build",
"build:staging": "rimraf dist && cross-env vite build --mode staging",
"report": "rimraf dist && cross-env vite build",
"preview": "vite preview",
"preview:build": "yarn build && vite preview",
"clean:cache": "rm -rf node_modules && rm -rf .eslintcache && yarn cache clean && yarn",
"preview:build": "pnpm build && vite preview",
"typecheck": "tsc --noEmit && vue-tsc --noEmit --skipLibCheck",
"cloc": "cross-env --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:lint-staged": "lint-staged -c ./.husky/lintstagedrc.js",
"lint:pretty": "pretty-quick --staged",
"lint": "yarn lint:eslint && yarn lint:prettier && yarn lint:stylelint && yarn lint:pretty",
"prepare": "husky install"
"lint": "pnpm lint:eslint && pnpm lint:prettier && pnpm lint:stylelint",
"prepare": "husky install",
"preinstall": "npx only-allow pnpm"
},
"browserslist": [
"> 1%",
"not ie 11",
"not op_mini all"
],
"dependencies": {
"@amap/amap-jsapi-loader": "^1.0.1",
"@logicflow/core": "^0.4.6",
"@logicflow/extension": "^0.4.6",
"@vueuse/core": "^6.4.1",
"@ctrl/tinycolor": "^3.4.1",
"@logicflow/core": "^1.1.24",
"@logicflow/extension": "^1.1.24",
"@pureadmin/components": "^1.1.0",
"@pureadmin/descriptions": "^1.1.0",
"@pureadmin/table": "^1.2.0",
"@pureadmin/utils": "^0.1.1",
"@vueuse/core": "^9.1.0",
"@vueuse/motion": "^2.0.0-beta.12",
"@vueuse/shared": "^9.1.0",
"@wangeditor/editor": "^5.1.14",
"@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.6",
"dotenv": "^8.2.0",
"echarts": "^5.1.2",
"element-plus": "^1.1.0-beta.16",
"axios": "^0.27.2",
"china-area-data": "^5.0.1",
"cropperjs": "^1.5.12",
"css-color-function": "^1.3.3",
"dayjs": "^1.11.4",
"driver.js": "^0.9.8",
"echarts": "^5.3.3",
"element-plus": "^2.2.14",
"element-resize-detector": "^1.2.3",
"font-awesome": "^4.7.0",
"js-cookie": "^3.0.1",
"jsbarcode": "^3.11.5",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"mitt": "^2.1.0",
"lodash-unified": "^1.0.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.6",
"pinia": "^2.0.19",
"qrcode": "^1.5.1",
"qs": "^6.11.0",
"resize-observer-polyfill": "^1.5.1",
"responsive-storage": "^1.0.10",
"sortablejs": "1.13.0",
"v-contextmenu": "^3.0.0",
"vue": "^3.2.19",
"vue-i18n": "^9.2.0-beta.3",
"vue-json-pretty": "^2.0.2",
"vue-router": "^4.0.11",
"vue-types": "^4.1.0",
"responsive-storage": "^2.1.0",
"rgb-hex": "^4.0.0",
"sortablejs": "^1.15.0",
"swiper": "^8.3.2",
"v-contextmenu": "3.0.0",
"vue": "^3.2.37",
"vue-form-create2": "^1.2.8",
"vue-i18n": "^9.2.2",
"vue-json-pretty": "^2.1.1",
"vue-pdf-embed": "^1.1.4",
"vue-router": "^4.1.3",
"vue-types": "^4.2.1",
"vue-virtual-scroller": "^2.0.0-alpha.1",
"vuedraggable": "^4.1.0",
"vxe-table": "^4.0.27",
"wangeditor": "^4.7.7",
"xe-ajax": "^4.0.5",
"xe-utils": "^3.3.1",
"xgplayer": "^2.28.0"
"vxe-table": "^4.3.0-beta.5",
"xe-utils": "^3.5.6",
"xgplayer": "^2.31.7",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@commitlint/cli": "^13.1.0",
"@commitlint/config-conventional": "^13.1.0",
"@types/element-resize-detector": "^1.1.3",
"@types/mockjs": "^1.0.3",
"@types/node": "^14.14.14",
"@types/nprogress": "^0.2.0",
"@typescript-eslint/eslint-plugin": "^4.31.0",
"@typescript-eslint/parser": "^4.31.0",
"@vitejs/plugin-vue": "^1.6.0",
"@vitejs/plugin-vue-jsx": "^1.1.7",
"@vue/compiler-sfc": "^3.2.19",
"@vue/eslint-config-prettier": "^6.0.0",
"@vue/eslint-config-typescript": "^7.0.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",
"pretty-quick": "^3.1.1",
"rimraf": "^3.0.2",
"sass": "^1.38.0",
"sass-loader": "^12.1.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.0.1",
"vite": "^2.5.10",
"@commitlint/cli": "13.1.0",
"@commitlint/config-conventional": "13.1.0",
"@faker-js/faker": "^7.4.0",
"@iconify-icons/carbon": "^1.2.8",
"@iconify-icons/ep": "^1.2.7",
"@iconify-icons/fa": "^1.2.3",
"@iconify-icons/fa-solid": "^1.2.3",
"@iconify-icons/fluent": "^1.2.16",
"@iconify-icons/mdi": "^1.2.8",
"@iconify-icons/ri": "^1.2.3",
"@iconify-icons/uil": "^1.2.2",
"@iconify/vue": "^3.2.1",
"@intlify/vite-plugin-vue-i18n": "^6.0.1",
"@pureadmin/theme": "^2.4.0",
"@types/element-resize-detector": "1.1.3",
"@types/js-cookie": "^3.0.1",
"@types/lodash": "^4.14.180",
"@types/lodash-es": "^4.17.6",
"@types/mockjs": "1.0.3",
"@types/node": "14.14.14",
"@types/nprogress": "0.2.0",
"@types/qrcode": "^1.4.2",
"@types/qs": "^6.9.7",
"@types/sortablejs": "^1.13.0",
"@typescript-eslint/eslint-plugin": "^5.10.2",
"@typescript-eslint/parser": "^5.10.2",
"@vitejs/plugin-legacy": "^2.0.0",
"@vitejs/plugin-vue": "^3.0.1",
"@vitejs/plugin-vue-jsx": "^2.0.0",
"@vue/eslint-config-prettier": "^7.0.0",
"@vue/eslint-config-typescript": "^10.0.0",
"@vue/runtime-core": "^3.2.37",
"autoprefixer": "^10.4.8",
"cloc": "^2.10.0",
"cross-env": "7.0.3",
"eslint": "^8.8.0",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-vue": "^8.4.1",
"font-awesome": "^4.7.0",
"husky": "^7.0.4",
"lint-staged": "11.1.2",
"picocolors": "^1.0.0",
"postcss": "^8.4.16",
"postcss-html": "^1.5.0",
"postcss-import": "^14.1.0",
"postcss-scss": "^4.0.4",
"prettier": "^2.5.1",
"pretty-quick": "3.1.1",
"rimraf": "3.0.2",
"rollup-plugin-visualizer": "^5.7.1",
"sass": "^1.53.0",
"sass-loader": "^13.0.2",
"stylelint": "^14.3.0",
"stylelint-config-html": "^1.0.0",
"stylelint-config-prettier": "^9.0.3",
"stylelint-config-recommended": "^6.0.0",
"stylelint-config-standard": "^24.0.0",
"stylelint-order": "^5.0.0",
"typescript": "^4.7.4",
"unocss": "^0.45.9",
"unplugin-vue-define-options": "^0.7.3",
"vite": "^3.0.9",
"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": "^1.1.0",
"vite-svg-loader": "^3.4.0",
"vue-eslint-parser": "^8.2.0",
"vue-tsc": "^0.40.1"
},
"pnpm": {
"peerDependencyRules": {
"ignoreMissing": [
"rollup",
"terser",
"webpack"
]
}
},
"repository": "git@github.com:xiaoxian521/vue-pure-admin.git",
"author": "xiaoxian521",

9567
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -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;
}

View File

@@ -1,16 +1,27 @@
{
"version": "1.0.0",
"keepAlive": true,
"Version": "3.4.6",
"Title": "PureAdmin",
"FixedHeader": true,
"HiddenSideBar": false,
"MultiTagsCache": false,
"KeepAlive": true,
"Locale": "zh",
"Layout": "vertical",
"Theme": "default",
"DarkMode": false,
"Grey": false,
"Weak": false,
"HideTabs": false,
"SidebarStatus": true,
"EpThemeColor": "#409EFF",
"ShowLogo": true,
"ShowModel": "smart",
"MapConfigure": {
"amapKey": "97b3248d1553172e81f168cf94ea667e",
"baiduKey": "wTHbkkEweiFqZLKunMIjcrb2RcqNXkhc",
"options": {
"resizeEnable": true,
"center": [
113.6401,
34.72468
],
"center": [113.6401, 34.72468],
"zoom": 12
}
}
}
}

2607
public/sortable.min.js vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1,25 +1,23 @@
<script setup lang="ts">
import { getCurrentInstance } 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";
let locale: string =
getCurrentInstance().appContext.config.globalProperties.$storage?.locale
?.locale;
let currentLocale = () => {
switch (locale) {
case "zh":
return zhCn;
case "en":
return en;
}
};
</script>
<template>
<el-config-provider :locale="currentLocale()">
<el-config-provider :locale="currentLocale">
<router-view />
</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 defineComponent({
name: "app",
components: {
[ElConfigProvider.name]: ElConfigProvider
},
computed: {
currentLocale() {
return this.$storage.locale?.locale === "zh" ? zhCn : en;
}
}
});
</script>

15
src/api/list.ts Normal file
View File

@@ -0,0 +1,15 @@
import { http } from "../utils/http";
type Result = {
data?: {
/** 列表数据 */
list: Array<any>;
};
code?: number;
msg?: string;
};
// 卡片列表
export const getCardList = (data?: object) => {
return http.request<Result>("post", "/getCardList", { data });
};

View File

@@ -1,11 +1,11 @@
import { http } from "../utils/http";
// 地图数据
export const mapJson = (data?: object) => {
return http.request("get", "/getMapInfo", data);
type Result = {
code: number;
info: Array<any>;
};
// echarts数据
export const echartsJson = (data?: object) => {
return http.request("get", "/getEchartsInfo", data);
// 地图数据
export const mapJson = (params?: object) => {
return http.request<Result>("get", "/getMapInfo", { params });
};

View File

@@ -1,5 +1,10 @@
import { http } from "../utils/http";
export const getAsyncRoutes = (data?: object) => {
return http.request("get", "/getAsyncRoutes", data);
type Result = {
code: number;
info: Array<any>;
};
export const getAsyncRoutes = (params?: object) => {
return http.request<Result>("get", "/getAsyncRoutes", { params });
};

27
src/api/system.ts Normal file
View File

@@ -0,0 +1,27 @@
import { http } from "../utils/http";
type Result = {
data?: {
/** 列表数据 */
list: Array<any>;
/** 总数 */
total: number;
};
code?: number;
msg?: string;
};
// 获取用户管理列表
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<Result>("post", "/dept", { data });
};

View File

@@ -1,16 +1,26 @@
import { http } from "../utils/http";
type Result = {
svg?: string;
code?: number;
info?: object;
};
// 获取验证码
export const getVerify = () => {
return http.request("get", "/captcha");
return http.request<Result>("get", "/captcha");
};
// 登录
export const getLogin = (data: object) => {
return http.request("post", "/login", data);
return http.request("post", "/login", { data });
};
// 注册
export const getRegist = (data: object) => {
return http.request("post", "/register", data);
// 刷新token
export const refreshToken = (data: object) => {
return http.request("post", "/refreshToken", { data });
};
// export const searchVague = (data: object) => {
// return http.request("post", "/searchVague", { data });
// };

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

BIN
src/assets/avatars.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 2208059 */
src: url("iconfont.woff2?t=1632557807050") format("woff2"),
url("iconfont.woff?t=1632557807050") format("woff"),
url("iconfont.ttf?t=1632557807050") format("truetype");
src: url("iconfont.woff2?t=1638023560828") format("woff2"),
url("iconfont.woff?t=1638023560828") format("woff"),
url("iconfont.ttf?t=1638023560828") format("truetype");
}
.iconfont {
@@ -13,20 +13,20 @@
-moz-osx-font-smoothing: grayscale;
}
.team-iconinternationality::before {
content: "\e67a";
.team-icontabs::before {
content: "\e63e";
}
.team-iconshanchu::before {
content: "\e617";
.team-iconlogo::before {
content: "\e620";
}
.team-iconshow-main-container::before {
content: "\e878";
.team-iconxinpin::before {
content: "\e614";
}
.team-iconhidden-main-container::before {
content: "\e881";
.team-iconxinpinrenqiwang::before {
content: "\e615";
}
.team-iconexit-fullscreen::before {

File diff suppressed because one or more lines are too long

View File

@@ -6,32 +6,32 @@
"description": "pure-admin",
"glyphs": [
{
"icon_id": "18367956",
"name": "中英文2 中文",
"font_class": "internationality",
"unicode": "e67a",
"unicode_decimal": 59002
"icon_id": "20594647",
"name": "标签页",
"font_class": "tabs",
"unicode": "e63e",
"unicode_decimal": 58942
},
{
"icon_id": "6184565",
"name": "删除",
"font_class": "shanchu",
"unicode": "e617",
"unicode_decimal": 58903
"icon_id": "22129506",
"name": "水能",
"font_class": "logo",
"unicode": "e620",
"unicode_decimal": 58912
},
{
"icon_id": "9626913",
"name": "全屏",
"font_class": "show-main-container",
"unicode": "e878",
"unicode_decimal": 59512
"icon_id": "7795613",
"name": "新品",
"font_class": "xinpin",
"unicode": "e614",
"unicode_decimal": 58900
},
{
"icon_id": "9626952",
"name": "退出全屏",
"font_class": "hidden-main-container",
"unicode": "e881",
"unicode_decimal": 59521
"icon_id": "7795615",
"name": "新品人气王",
"font_class": "xinpinrenqiwang",
"unicode": "e615",
"unicode_decimal": 58901
},
{
"icon_id": "5698509",

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

View File

@@ -0,0 +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>

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/assets/login/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 4.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 29 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

1
src/assets/svg/back.svg Normal file
View 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.8361C39.1069 34.8632 34.7617 31.4739 30.9644 30.6682C27.1671 29.8625 23.5517 29.7408 20.1182 30.303V41L4 23.5453L20.1182 7V17.167C26.4667 17.2172 31.8638 19.4948 36.3095 24C40.7553 28.5052 43.3187 34.1172 44 40.8361Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 399 B

View File

@@ -0,0 +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>

After

Width:  |  Height:  |  Size: 608 B

View File

@@ -0,0 +1 @@
<svg fill="none" viewBox="0 0 16 16" width="1em" height="1em" class="t-icon t-icon-calendar" data-v-7be81122=""><path fill="currentColor" d="M10 3H6V1.5H5V3H3a1 1 0 00-1 1v9a1 1 0 001 1h10a1 1 0 001-1V4a1 1 0 00-1-1h-2V1.5h-1V3zM5 5h1V4h4v1h1V4h2v2H3V4h2v1zM3 7h10v6H3V7z" fillOpacity="0.9"></path></svg>

After

Width:  |  Height:  |  Size: 304 B

1
src/assets/svg/dark.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><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
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><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.85l1.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

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ant-design" width="20" height="20" preserveAspectRatio="xMidYMid meet" 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"></path></svg>

After

Width:  |  Height:  |  Size: 448 B

View File

@@ -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" 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" 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>

Before

Width:  |  Height:  |  Size: 434 B

After

Width:  |  Height:  |  Size: 452 B

View File

@@ -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" 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" 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>

Before

Width:  |  Height:  |  Size: 403 B

After

Width:  |  Height:  |  Size: 421 B

View File

@@ -0,0 +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>

After

Width:  |  Height:  |  Size: 965 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconinternationality" 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>

Before

Width:  |  Height:  |  Size: 972 B

View File

@@ -0,0 +1 @@
<svg fill="none" viewBox="0 0 16 16" width="1em" height="1em" class="t-icon t-icon-laptop" data-v-7be81122=""><path fill="currentColor" d="M2.5 12a1 1 0 01-1-1V4a1 1 0 011-1h11a1 1 0 011 1v7a1 1 0 01-1 1h-11zm0-1h11V4h-11v7zM15 13H1v1h14v-1z" fillOpacity="0.9"></path></svg>

After

Width:  |  Height:  |  Size: 274 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--mdi" width="20" height="20" preserveAspectRatio="xMidYMid meet" 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"></path></svg>

After

Width:  |  Height:  |  Size: 477 B

View File

@@ -0,0 +1 @@
<svg fill="none" viewBox="0 0 16 16" width="1em" height="1em" class="t-icon t-icon-service" data-v-7be81122=""><path fill="currentColor" d="M2.52 6.37a5.5 5.5 0 0110.98.13v4c0 .05 0 .1-.02.15A4.5 4.5 0 019 14.7H8v-1h1a3.5 3.5 0 003.4-2.7h-1.9a.5.5 0 01-.5-.5v-4c0-.28.22-.5.5-.5h1.93a4.5 4.5 0 00-8.86 0H5.5c.28 0 .5.22.5.5v4a.5.5 0 01-.5.5H3a.5.5 0 01-.5-.5v-4c0-.04 0-.09.02-.13zM12.5 7H11v3h1.5V7zm-9 0v3H5V7H3.5z" fillOpacity="0.9"></path></svg>

After

Width:  |  Height:  |  Size: 449 B

1
src/assets/svg/shop.svg Normal file
View File

@@ -0,0 +1 @@
<svg fill="none" viewBox="0 0 16 16" width="1em" height="1em" class="t-icon t-icon-shop" data-v-7be81122=""><path fill="currentColor" d="M8 1a2.5 2.5 0 00-2.5 2.5V5h-2a.5.5 0 00-.5.5v9c0 .28.22.5.5.5h9a.5.5 0 00.5-.5v-9a.5.5 0 00-.5-.5h-2V3.5A2.5 2.5 0 008 1zm1.5 5v2h1V6H12v8H4V6h1.5v2h1V6h3zm0-1h-3V3.5a1.5 1.5 0 113 0V5z" fillOpacity="0.9"></path></svg>

After

Width:  |  Height:  |  Size: 356 B

View File

@@ -0,0 +1 @@
<svg fill="none" viewBox="0 0 16 16" width="1em" height="1em" class="t-icon t-icon-user-avatar" data-v-7be81122=""><path fill="currentColor" d="M8 10.5c1.24 0 2.42.31 3.5.88v1.12h1v-1.14a.94.94 0 00-.49-.84 8.48 8.48 0 00-8.02 0 .94.94 0 00-.49.84v1.14h1v-1.12A7.47 7.47 0 018 10.5zM10.5 6a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zm-1 0a1.5 1.5 0 10-3 0 1.5 1.5 0 003 0z"></path><path fill="currentColor" d="M2.5 1.5a1 1 0 00-1 1v11a1 1 0 001 1h11a1 1 0 001-1v-11a1 1 0 00-1-1h-11zm11 1v11h-11v-11h11z"></path></svg>

After

Width:  |  Height:  |  Size: 508 B

View File

@@ -0,0 +1,7 @@
import reBarcode from "./src/index.vue";
import { withInstall } from "@pureadmin/utils";
/** 条形码组件 */
export const ReBarcode = withInstall(reBarcode);
export default ReBarcode;

View File

@@ -0,0 +1,42 @@
<script setup lang="ts">
import JsBarcode from "jsbarcode";
import { ref, onMounted } from "vue";
defineOptions({
name: "ReBarcode"
});
const props = defineProps({
tag: {
type: String,
default: "canvas"
},
text: {
type: String,
default: null
},
// 完整配置 https://github.com/lindell/JsBarcode/wiki/Options
options: {
type: Object,
default() {
return {};
}
},
// type 相当于 options.format如果 type 和 options.format 同时存在type 值优先;
type: {
type: String,
default: "CODE128"
}
});
const wrapEl = ref(null);
onMounted(() => {
const opt = { ...props.options, format: props.type };
JsBarcode(wrapEl.value, props.text, opt);
});
</script>
<template>
<component :is="tag" ref="wrapEl" />
</template>

View File

@@ -1,10 +0,0 @@
import { App } from "vue";
import reBreadCrumb from "./src/index.vue";
export const ReBreadCrumb = Object.assign(reBreadCrumb, {
install(app: App) {
app.component(reBreadCrumb.name, reBreadCrumb);
}
});
export default ReBreadCrumb;

View File

@@ -1,79 +0,0 @@
<script setup lang="ts">
import { ref, watch } from "vue";
import { useRoute, useRouter, RouteLocationMatched } from "vue-router";
const levelList = ref([]);
const route = useRoute();
const router = useRouter();
const isDashboard = (route: RouteLocationMatched): boolean | string => {
const name = route && (route.name as string);
if (!name) {
return false;
}
return name.trim().toLocaleLowerCase() === "welcome".toLocaleLowerCase();
};
const getBreadcrumb = (): void => {
let matched = route.matched.filter(item => item.meta && item.meta.title);
const first = matched[0];
if (!isDashboard(first)) {
matched = [
{
path: "/welcome",
parentPath: "/",
meta: { title: "message.hshome" }
} as unknown as RouteLocationMatched
].concat(matched);
}
levelList.value = matched.filter(
item => item.meta && item.meta.title && item.meta.breadcrumb !== false
);
};
getBreadcrumb();
watch(
() => route.path,
() => getBreadcrumb()
);
const handleLink = (item: RouteLocationMatched): any => {
const { redirect, path } = item;
if (redirect) {
router.push(redirect.toString());
return;
}
router.push(path);
};
</script>
<template>
<el-breadcrumb class="app-breadcrumb" separator="/">
<transition-group appear name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span
v-if="item.redirect === 'noRedirect' || index == levelList.length - 1"
class="no-redirect"
>{{ $t(item.meta.title) }}</span
>
<a v-else @click.prevent="handleLink(item)">
{{ $t(item.meta.title) }}
</a>
</el-breadcrumb-item>
</transition-group>
</el-breadcrumb>
</template>
<style lang="scss" scoped>
.app-breadcrumb.el-breadcrumb {
display: inline-block;
font-size: 14px;
line-height: 50px;
.no-redirect {
color: #97a8be;
cursor: text;
}
}
</style>

View File

@@ -1,36 +0,0 @@
import { App } from "vue";
import reBar from "./src/Bar.vue";
import reGithub from "./src/Github.vue";
import reInfinite from "./src/Infinite.vue";
import reLine from "./src/Line.vue";
import rePie from "./src/Pie.vue";
export const ReBar = Object.assign(reBar, {
install(app: App) {
app.component(reBar.name, reBar);
}
});
export const ReGithub = Object.assign(reGithub, {
install(app: App) {
app.component(reGithub.name, reGithub);
}
});
export const ReInfinite = Object.assign(reInfinite, {
install(app: App) {
app.component(reInfinite.name, reInfinite);
}
});
export const ReLine = Object.assign(reLine, {
install(app: App) {
app.component(reLine.name, reLine);
}
});
export const RePie = Object.assign(rePie, {
install(app: App) {
app.component(rePie.name, rePie);
}
});

View File

@@ -1,96 +0,0 @@
<script lang="ts">
export default {
name: "Bar"
};
</script>
<script setup lang="ts">
import { ECharts } from "echarts";
import echarts from "/@/plugins/echarts";
import { onBeforeMount, onMounted, nextTick } from "vue";
import { useEventListener, tryOnUnmounted, useTimeoutFn } from "@vueuse/core";
let echartInstance: ECharts;
function initechartInstance() {
const echartDom = document.querySelector(".bar");
if (!echartDom) return;
// @ts-ignore
echartInstance = echarts.init(echartDom);
echartInstance.clear(); //清除旧画布 重新渲染
echartInstance.setOption({
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow"
}
},
grid: {
bottom: "20%",
height: "68%",
containLabel: true
},
xAxis: [
{
type: "category",
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0
// width: "70",
// overflow: "truncate"
},
data: ["open_issues", "forks", "watchers", "star"]
}
],
yAxis: [
{
type: "value"
}
],
series: [
{
name: "GitHub信息",
type: "bar",
data: [3, 204, 1079, 1079]
}
]
});
}
onBeforeMount(() => {
nextTick(() => {
initechartInstance();
});
});
onMounted(() => {
nextTick(() => {
useEventListener("resize", () => {
if (!echartInstance) return;
useTimeoutFn(() => {
echartInstance.resize();
}, 180);
});
});
});
tryOnUnmounted(() => {
if (!echartInstance) return;
echartInstance.dispose();
echartInstance = null;
});
</script>
<template>
<div class="bar"></div>
</template>
<style scoped>
.bar {
width: 100%;
height: 35vh;
}
</style>

View File

@@ -1,93 +0,0 @@
<template>
<el-descriptions
class="margin-top"
direction="vertical"
:column="3"
size="medium"
border
>
<el-descriptions-item>
<template #label>
<i class="el-icon-user"></i>
用户名
</template>
xiaoxian
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<i class="el-icon-mobile-phone"></i>
手机号
</template>
123456789
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<i class="el-icon-location-outline"></i>
居住地
</template>
上海
</el-descriptions-item>
</el-descriptions>
<el-descriptions
class="margin-top"
direction="vertical"
:column="2"
size="medium"
border
>
<el-descriptions-item>
<template #label>
<i class="el-icon-tickets"></i>
标签
</template>
<el-tag
v-for="item in lists"
:key="item.label"
:type="item.type"
size="mini"
effect="dark"
>
{{ item.label }}
</el-tag>
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<i class="el-icon-office-building"></i>
联系地址
</template>
上海市徐汇区
</el-descriptions-item>
</el-descriptions>
<el-descriptions
class="margin-top"
direction="vertical"
:column="1"
size="medium"
border
>
<el-descriptions-item>
<template #label>
<i class="el-icon-notebook-1"></i>
留言
</template>
好好学习天天向上
</el-descriptions-item>
</el-descriptions>
</template>
<script setup lang="ts">
import { ref } from "vue";
const lists = ref<ForDataType<undefined>>([
{ type: "", label: "善良" },
{ type: "success", label: "好学" },
{ type: "info", label: "幽默" },
{ type: "danger", label: "旅游" },
{ type: "warning", label: "追剧" }
]);
</script>
<style scoped>
.el-tag--mini {
margin-right: 10px !important;
}
</style>

View File

@@ -1,84 +0,0 @@
<script lang="ts">
export default {
name: "Line"
};
</script>
<script setup lang="ts">
import { ECharts } from "echarts";
import echarts from "/@/plugins/echarts";
import { onBeforeMount, onMounted, nextTick } from "vue";
import { useEventListener, tryOnUnmounted, useTimeoutFn } from "@vueuse/core";
let echartInstance: ECharts;
function initechartInstance() {
const echartDom = document.querySelector(".line");
if (!echartDom) return;
// @ts-ignore
echartInstance = echarts.init(echartDom);
echartInstance.clear(); //清除旧画布 重新渲染
echartInstance.setOption({
grid: {
bottom: "20%",
height: "68%",
containLabel: true
},
tooltip: {
trigger: "item"
},
xAxis: {
type: "category",
axisLabel: {
interval: 0
},
data: ["open_issues", "forks", "watchers", "star"]
},
yAxis: {
type: "value"
},
series: [
{
data: [3, 204, 1079, 1079],
type: "line",
areaStyle: {}
}
]
});
}
onBeforeMount(() => {
nextTick(() => {
initechartInstance();
});
});
onMounted(() => {
nextTick(() => {
useEventListener("resize", () => {
if (!echartInstance) return;
useTimeoutFn(() => {
echartInstance.resize();
}, 180);
});
});
});
tryOnUnmounted(() => {
if (!echartInstance) return;
echartInstance.dispose();
echartInstance = null;
});
</script>
<template>
<div class="line"></div>
</template>
<style scoped>
.line {
width: 100%;
height: 35vh;
}
</style>

View File

@@ -1,87 +0,0 @@
<script lang="ts">
export default {
name: "Pie"
};
</script>
<script setup lang="ts">
import { ECharts } from "echarts";
import echarts from "/@/plugins/echarts";
import { onBeforeMount, onMounted, nextTick } from "vue";
import { useEventListener, tryOnUnmounted, useTimeoutFn } from "@vueuse/core";
let echartInstance: ECharts;
function initechartInstance() {
const echartDom = document.querySelector(".pie");
if (!echartDom) return;
// @ts-ignore
echartInstance = echarts.init(echartDom);
echartInstance.clear(); //清除旧画布 重新渲染
echartInstance.setOption({
tooltip: {
trigger: "item"
},
legend: {
orient: "vertical",
right: true
},
series: [
{
name: "Github信息",
type: "pie",
radius: "60%",
center: ["40%", "50%"],
data: [
{ value: 1079, name: "watchers" },
{ value: 1079, name: "star" },
{ value: 204, name: "forks" },
{ value: 3, name: "open_issues" }
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: "rgba(0, 0, 0, 0.5)"
}
}
}
]
});
}
onBeforeMount(() => {
nextTick(() => {
initechartInstance();
});
});
onMounted(() => {
nextTick(() => {
useEventListener("resize", () => {
if (!echartInstance) return;
useTimeoutFn(() => {
echartInstance.resize();
}, 180);
});
});
});
tryOnUnmounted(() => {
if (!echartInstance) return;
echartInstance.dispose();
echartInstance = null;
});
</script>
<template>
<div class="pie"></div>
</template>
<style scoped>
.pie {
width: 100%;
height: 35vh;
}
</style>

View File

@@ -1,15 +1,11 @@
import { App } from "vue";
import reNormalCountTo from "./src/normal";
import reboundCountTo from "./src/rebound";
import { withInstall } from "@pureadmin/utils";
export const ReNormalCountTo = Object.assign(reNormalCountTo, {
install(app: App) {
app.component(reNormalCountTo.name, reNormalCountTo);
}
});
/** 普通数字动画组件 */
const ReNormalCountTo = withInstall(reNormalCountTo);
export const ReboundCountTo = Object.assign(reboundCountTo, {
install(app: App) {
app.component(reboundCountTo.name, reboundCountTo);
}
});
/** 回弹式数字动画组件 */
const ReboundCountTo = withInstall(reboundCountTo);
export { ReNormalCountTo, ReboundCountTo };

View File

@@ -7,10 +7,10 @@ import {
unref
} from "vue";
import { countToProps } from "./props";
import { isNumber } from "/@/utils/is";
import { isNumber } from "@pureadmin/utils";
export default defineComponent({
name: "Normal",
name: "ReNormalCountTo",
props: countToProps,
emits: ["mounted", "callback"],
setup(props, { emit }) {
@@ -169,7 +169,8 @@ export default defineComponent({
style={{
color: props.color,
fontSize: props.fontSize
}}>
}}
>
{state.displayValue}
</span>
</>

View File

@@ -4,15 +4,15 @@ import {
ref,
unref,
onBeforeMount,
onBeforeUnmount,
getCurrentInstance
onBeforeUnmount
} from "vue";
import { reboundProps } from "./props";
export default defineComponent({
name: "Rebound",
name: "ReboundCountTo",
props: reboundProps,
setup(props) {
const ulRef = ref();
const timer = ref(null);
onBeforeMount(() => {
@@ -23,8 +23,7 @@ export default defineComponent({
// Safari浏览器的兼容代码
isSafari &&
(timer.value = setTimeout(() => {
// @ts-ignore
getCurrentInstance().refs["ul"].setAttribute(
ulRef.value.setAttribute(
"style",
`
animation: none;
@@ -42,9 +41,9 @@ export default defineComponent({
<>
<div
class="scroll-num"
// @ts-ignore
style={{ "--i": props.i, "--delay": props.delay }}>
<ul ref="ul" style={{ fontSize: "32px" }}>
style={{ "--i": props.i, "--delay": props.delay }}
>
<ul ref="ulRef" style={{ fontSize: "32px" }}>
<li>0</li>
<li>1</li>
<li>2</li>

Some files were not shown because too many files have changed in this diff Show More