Commit 69a7b0de57d440a1cd1356d3ea52072a56e80883
Committed by
Gitee
!220 vue3
Merge pull request !220 from xingyu/master
Showing
55 changed files
with
758 additions
and
249 deletions
sql/mysql/vue3-menu.sql
0 → 100644
| 1 | +-- ---------------------------- | ||
| 2 | +-- Table structure for system_menu | ||
| 3 | +-- icon 不兼容 | ||
| 4 | +-- ---------------------------- | ||
| 5 | +DROP TABLE IF EXISTS `system_menu`; | ||
| 6 | +CREATE TABLE `system_menu` ( | ||
| 7 | + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜单ID', | ||
| 8 | + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '菜单名称', | ||
| 9 | + `permission` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '权限标识', | ||
| 10 | + `type` tinyint NOT NULL COMMENT '菜单类型', | ||
| 11 | + `sort` int NOT NULL DEFAULT 0 COMMENT '显示顺序', | ||
| 12 | + `parent_id` bigint NOT NULL DEFAULT 0 COMMENT '父菜单ID', | ||
| 13 | + `path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '路由地址', | ||
| 14 | + `icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '#' COMMENT '菜单图标', | ||
| 15 | + `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '组件路径', | ||
| 16 | + `status` tinyint NOT NULL DEFAULT 0 COMMENT '菜单状态', | ||
| 17 | + `visible` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可见', | ||
| 18 | + `keep_alive` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否缓存', | ||
| 19 | + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', | ||
| 20 | + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 21 | + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者', | ||
| 22 | + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', | ||
| 23 | + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', | ||
| 24 | + PRIMARY KEY (`id`) USING BTREE | ||
| 25 | +) ENGINE = InnoDB AUTO_INCREMENT = 1268 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '菜单权限表' ROW_FORMAT = Dynamic; | ||
| 26 | + | ||
| 27 | +-- ---------------------------- | ||
| 28 | +-- Records of system_menu | ||
| 29 | +-- ---------------------------- | ||
| 30 | +INSERT INTO `system_menu` VALUES (1, '系统管理', '', 1, 10, 0, '/system', 'ep:tools', NULL, 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 13:10:54', b'0'); | ||
| 31 | +INSERT INTO `system_menu` VALUES (2, '基础设施', '', 1, 20, 0, '/infra', 'ep:brush-filled', NULL, 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 13:11:55', b'0'); | ||
| 32 | +INSERT INTO `system_menu` VALUES (5, 'OA 示例', '', 1, 40, 1185, 'oa', 'ep:guide', NULL, 0, b'1', b'1', 'admin', '2021-09-20 16:26:19', '1', '2022-07-20 14:51:03', b'0'); | ||
| 33 | +INSERT INTO `system_menu` VALUES (100, '用户管理', 'system:user:list', 2, 1, 1, 'user', 'ep:avatar', 'system/user/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 13:13:17', b'0'); | ||
| 34 | +INSERT INTO `system_menu` VALUES (101, '角色管理', '', 2, 2, 1, 'role', 'ep:user-filled', 'system/role/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 13:13:41', b'0'); | ||
| 35 | +INSERT INTO `system_menu` VALUES (102, '菜单管理', '', 2, 3, 1, 'menu', 'ep:grid', 'system/menu/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 13:13:54', b'0'); | ||
| 36 | +INSERT INTO `system_menu` VALUES (103, '部门管理', '', 2, 4, 1, 'dept', 'ep:office-building', 'system/dept/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:51:31', b'0'); | ||
| 37 | +INSERT INTO `system_menu` VALUES (104, '岗位管理', '', 2, 5, 1, 'post', 'ep:briefcase', 'system/post/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:41:47', b'0'); | ||
| 38 | +INSERT INTO `system_menu` VALUES (105, '字典管理', '', 2, 6, 1, 'dict', 'ep:list', 'system/dict/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:42:18', b'0'); | ||
| 39 | +INSERT INTO `system_menu` VALUES (106, '配置管理', '', 2, 6, 2, 'config', 'ep:edit', 'infra/config/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:48:29', b'0'); | ||
| 40 | +INSERT INTO `system_menu` VALUES (107, '通知公告', '', 2, 8, 1, 'notice', 'ep:bell-filled', 'system/notice/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:42:30', b'0'); | ||
| 41 | +INSERT INTO `system_menu` VALUES (108, '审计日志', '', 1, 9, 1, 'log', 'ep:document-checked', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:42:52', b'0'); | ||
| 42 | +INSERT INTO `system_menu` VALUES (109, '令牌管理', '', 2, 2, 1261, 'token', 'online', 'system/oauth2/token/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-05-11 23:31:42', b'0'); | ||
| 43 | +INSERT INTO `system_menu` VALUES (110, '定时任务', '', 2, 12, 2, 'job', 'ep:alarm-clock', 'infra/job/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:49:09', b'0'); | ||
| 44 | +INSERT INTO `system_menu` VALUES (111, 'MySQL 监控', '', 2, 9, 2, 'druid', 'ep:wind-power', 'infra/druid/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:50:06', b'0'); | ||
| 45 | +INSERT INTO `system_menu` VALUES (112, 'Java 监控', '', 2, 11, 2, 'admin-server', 'ep:opportunity', 'infra/server/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:49:42', b'0'); | ||
| 46 | +INSERT INTO `system_menu` VALUES (113, 'Redis 监控', '', 2, 10, 2, 'redis', 'ep:set-up', 'infra/redis/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:49:52', b'0'); | ||
| 47 | +INSERT INTO `system_menu` VALUES (114, '表单构建', 'infra:build:list', 2, 2, 2, 'build', 'ep:calendar', 'infra/build/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:47:29', b'0'); | ||
| 48 | +INSERT INTO `system_menu` VALUES (115, '代码生成', 'infra:codegen:query', 2, 1, 2, 'codegen', 'ep:connection', 'infra/codegen/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:46:41', b'0'); | ||
| 49 | +INSERT INTO `system_menu` VALUES (116, '系统接口', 'infra:swagger:list', 2, 3, 2, 'swagger', 'ep:operation', 'infra/swagger/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:47:41', b'0'); | ||
| 50 | +INSERT INTO `system_menu` VALUES (500, '操作日志', '', 2, 1, 108, 'operate-log', 'form', 'system/operatelog/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 51 | +INSERT INTO `system_menu` VALUES (501, '登录日志', '', 2, 2, 108, 'login-log', 'logininfor', 'system/loginlog/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 52 | +INSERT INTO `system_menu` VALUES (1001, '用户查询', 'system:user:query', 3, 1, 100, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 53 | +INSERT INTO `system_menu` VALUES (1002, '用户新增', 'system:user:create', 3, 2, 100, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 54 | +INSERT INTO `system_menu` VALUES (1003, '用户修改', 'system:user:update', 3, 3, 100, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 55 | +INSERT INTO `system_menu` VALUES (1004, '用户删除', 'system:user:delete', 3, 4, 100, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 56 | +INSERT INTO `system_menu` VALUES (1005, '用户导出', 'system:user:export', 3, 5, 100, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 57 | +INSERT INTO `system_menu` VALUES (1006, '用户导入', 'system:user:import', 3, 6, 100, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 58 | +INSERT INTO `system_menu` VALUES (1007, '重置密码', 'system:user:update-password', 3, 7, 100, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 59 | +INSERT INTO `system_menu` VALUES (1008, '角色查询', 'system:role:query', 3, 1, 101, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 60 | +INSERT INTO `system_menu` VALUES (1009, '角色新增', 'system:role:create', 3, 2, 101, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 61 | +INSERT INTO `system_menu` VALUES (1010, '角色修改', 'system:role:update', 3, 3, 101, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 62 | +INSERT INTO `system_menu` VALUES (1011, '角色删除', 'system:role:delete', 3, 4, 101, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 63 | +INSERT INTO `system_menu` VALUES (1012, '角色导出', 'system:role:export', 3, 5, 101, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 64 | +INSERT INTO `system_menu` VALUES (1013, '菜单查询', 'system:menu:query', 3, 1, 102, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 65 | +INSERT INTO `system_menu` VALUES (1014, '菜单新增', 'system:menu:create', 3, 2, 102, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 66 | +INSERT INTO `system_menu` VALUES (1015, '菜单修改', 'system:menu:update', 3, 3, 102, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 67 | +INSERT INTO `system_menu` VALUES (1016, '菜单删除', 'system:menu:delete', 3, 4, 102, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 68 | +INSERT INTO `system_menu` VALUES (1017, '部门查询', 'system:dept:query', 3, 1, 103, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 69 | +INSERT INTO `system_menu` VALUES (1018, '部门新增', 'system:dept:create', 3, 2, 103, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 70 | +INSERT INTO `system_menu` VALUES (1019, '部门修改', 'system:dept:update', 3, 3, 103, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 71 | +INSERT INTO `system_menu` VALUES (1020, '部门删除', 'system:dept:delete', 3, 4, 103, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 72 | +INSERT INTO `system_menu` VALUES (1021, '岗位查询', 'system:post:query', 3, 1, 104, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 73 | +INSERT INTO `system_menu` VALUES (1022, '岗位新增', 'system:post:create', 3, 2, 104, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 74 | +INSERT INTO `system_menu` VALUES (1023, '岗位修改', 'system:post:update', 3, 3, 104, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 75 | +INSERT INTO `system_menu` VALUES (1024, '岗位删除', 'system:post:delete', 3, 4, 104, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 76 | +INSERT INTO `system_menu` VALUES (1025, '岗位导出', 'system:post:export', 3, 5, 104, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 77 | +INSERT INTO `system_menu` VALUES (1026, '字典查询', 'system:dict:query', 3, 1, 105, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 78 | +INSERT INTO `system_menu` VALUES (1027, '字典新增', 'system:dict:create', 3, 2, 105, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 79 | +INSERT INTO `system_menu` VALUES (1028, '字典修改', 'system:dict:update', 3, 3, 105, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 80 | +INSERT INTO `system_menu` VALUES (1029, '字典删除', 'system:dict:delete', 3, 4, 105, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 81 | +INSERT INTO `system_menu` VALUES (1030, '字典导出', 'system:dict:export', 3, 5, 105, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 82 | +INSERT INTO `system_menu` VALUES (1031, '配置查询', 'infra:config:query', 3, 1, 106, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 83 | +INSERT INTO `system_menu` VALUES (1032, '配置新增', 'infra:config:create', 3, 2, 106, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 84 | +INSERT INTO `system_menu` VALUES (1033, '配置修改', 'infra:config:update', 3, 3, 106, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 85 | +INSERT INTO `system_menu` VALUES (1034, '配置删除', 'infra:config:delete', 3, 4, 106, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 86 | +INSERT INTO `system_menu` VALUES (1035, '配置导出', 'infra:config:export', 3, 5, 106, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 87 | +INSERT INTO `system_menu` VALUES (1036, '公告查询', 'system:notice:query', 3, 1, 107, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 88 | +INSERT INTO `system_menu` VALUES (1037, '公告新增', 'system:notice:create', 3, 2, 107, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 89 | +INSERT INTO `system_menu` VALUES (1038, '公告修改', 'system:notice:update', 3, 3, 107, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 90 | +INSERT INTO `system_menu` VALUES (1039, '公告删除', 'system:notice:delete', 3, 4, 107, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 91 | +INSERT INTO `system_menu` VALUES (1040, '操作查询', 'system:operate-log:query', 3, 1, 500, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 92 | +INSERT INTO `system_menu` VALUES (1042, '日志导出', 'system:operate-log:export', 3, 2, 500, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 93 | +INSERT INTO `system_menu` VALUES (1043, '登录查询', 'system:login-log:query', 3, 1, 501, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 94 | +INSERT INTO `system_menu` VALUES (1045, '日志导出', 'system:login-log:export', 3, 3, 501, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 95 | +INSERT INTO `system_menu` VALUES (1046, '令牌列表', 'system:oauth2-token:page', 3, 1, 109, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-05-09 23:54:42', b'0'); | ||
| 96 | +INSERT INTO `system_menu` VALUES (1048, '令牌删除', 'system:oauth2-token:delete', 3, 2, 109, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-05-09 23:54:53', b'0'); | ||
| 97 | +INSERT INTO `system_menu` VALUES (1050, '任务新增', 'infra:job:create', 3, 2, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 98 | +INSERT INTO `system_menu` VALUES (1051, '任务修改', 'infra:job:update', 3, 3, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 99 | +INSERT INTO `system_menu` VALUES (1052, '任务删除', 'infra:job:delete', 3, 4, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 100 | +INSERT INTO `system_menu` VALUES (1053, '状态修改', 'infra:job:update', 3, 5, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 101 | +INSERT INTO `system_menu` VALUES (1054, '任务导出', 'infra:job:export', 3, 7, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 102 | +INSERT INTO `system_menu` VALUES (1056, '生成修改', 'infra:codegen:update', 3, 2, 115, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 103 | +INSERT INTO `system_menu` VALUES (1057, '生成删除', 'infra:codegen:delete', 3, 3, 115, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 104 | +INSERT INTO `system_menu` VALUES (1058, '导入代码', 'infra:codegen:create', 3, 2, 115, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 105 | +INSERT INTO `system_menu` VALUES (1059, '预览代码', 'infra:codegen:preview', 3, 4, 115, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 106 | +INSERT INTO `system_menu` VALUES (1060, '生成代码', 'infra:codegen:download', 3, 5, 115, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 107 | +INSERT INTO `system_menu` VALUES (1063, '设置角色菜单权限', 'system:permission:assign-role-menu', 3, 6, 101, '', '', '', 0, b'1', b'1', '', '2021-01-06 17:53:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 108 | +INSERT INTO `system_menu` VALUES (1064, '设置角色数据权限', 'system:permission:assign-role-data-scope', 3, 7, 101, '', '', '', 0, b'1', b'1', '', '2021-01-06 17:56:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 109 | +INSERT INTO `system_menu` VALUES (1065, '设置用户角色', 'system:permission:assign-user-role', 3, 8, 101, '', '', '', 0, b'1', b'1', '', '2021-01-07 10:23:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 110 | +INSERT INTO `system_menu` VALUES (1066, '获得 Redis 监控信息', 'infra:redis:get-monitor-info', 3, 1, 113, '', '', '', 0, b'1', b'1', '', '2021-01-26 01:02:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 111 | +INSERT INTO `system_menu` VALUES (1067, '获得 Redis Key 列表', 'infra:redis:get-key-list', 3, 2, 113, '', '', '', 0, b'1', b'1', '', '2021-01-26 01:02:52', '', '2022-04-20 17:03:10', b'0'); | ||
| 112 | +INSERT INTO `system_menu` VALUES (1070, '代码生成示例', 'infra:test-demo:query', 2, 1, 2, 'test-demo', 'ep:baseball', 'infra/testDemo/index', 0, b'1', b'1', '', '2021-02-06 12:42:49', '1', '2022-07-20 14:46:53', b'0'); | ||
| 113 | +INSERT INTO `system_menu` VALUES (1071, '测试示例表创建', 'infra:test-demo:create', 3, 1, 1070, '', '', '', 0, b'1', b'1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', b'0'); | ||
| 114 | +INSERT INTO `system_menu` VALUES (1072, '测试示例表更新', 'infra:test-demo:update', 3, 2, 1070, '', '', '', 0, b'1', b'1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', b'0'); | ||
| 115 | +INSERT INTO `system_menu` VALUES (1073, '测试示例表删除', 'infra:test-demo:delete', 3, 3, 1070, '', '', '', 0, b'1', b'1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', b'0'); | ||
| 116 | +INSERT INTO `system_menu` VALUES (1074, '测试示例表导出', 'infra:test-demo:export', 3, 4, 1070, '', '', '', 0, b'1', b'1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', b'0'); | ||
| 117 | +INSERT INTO `system_menu` VALUES (1075, '任务触发', 'infra:job:trigger', 3, 8, 110, '', '', '', 0, b'1', b'1', '', '2021-02-07 13:03:10', '', '2022-04-20 17:03:10', b'0'); | ||
| 118 | +INSERT INTO `system_menu` VALUES (1076, '数据库文档', '', 2, 4, 2, 'db-doc', 'ep:grid', 'infra/dbDoc/index', 0, b'1', b'1', '', '2021-02-08 01:41:47', '1', '2022-07-20 14:47:56', b'0'); | ||
| 119 | +INSERT INTO `system_menu` VALUES (1077, '监控平台', '', 2, 13, 2, 'skywalking', 'ep:aim', 'infra/skywalking/index', 0, b'1', b'1', '', '2021-02-08 20:41:31', '1', '2022-07-20 14:49:15', b'0'); | ||
| 120 | +INSERT INTO `system_menu` VALUES (1078, '访问日志', '', 2, 1, 1083, 'api-access-log', 'log', 'infra/apiAccessLog/index', 0, b'1', b'1', '', '2021-02-26 01:32:59', '1', '2022-04-20 17:03:10', b'0'); | ||
| 121 | +INSERT INTO `system_menu` VALUES (1082, '日志导出', 'infra:api-access-log:export', 3, 2, 1078, '', '', '', 0, b'1', b'1', '', '2021-02-26 01:32:59', '1', '2022-04-20 17:03:10', b'0'); | ||
| 122 | +INSERT INTO `system_menu` VALUES (1083, 'API 日志', '', 2, 8, 2, 'log', 'ep:bell', NULL, 0, b'1', b'1', '', '2021-02-26 02:18:24', '1', '2022-07-20 14:48:36', b'0'); | ||
| 123 | +INSERT INTO `system_menu` VALUES (1084, '错误日志', 'infra:api-error-log:query', 2, 2, 1083, 'api-error-log', 'log', 'infra/apiErrorLog/index', 0, b'1', b'1', '', '2021-02-26 07:53:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 124 | +INSERT INTO `system_menu` VALUES (1085, '日志处理', 'infra:api-error-log:update-status', 3, 2, 1084, '', '', '', 0, b'1', b'1', '', '2021-02-26 07:53:20', '1', '2022-04-20 17:03:10', b'0'); | ||
| 125 | +INSERT INTO `system_menu` VALUES (1086, '日志导出', 'infra:api-error-log:export', 3, 3, 1084, '', '', '', 0, b'1', b'1', '', '2021-02-26 07:53:20', '1', '2022-04-20 17:03:10', b'0'); | ||
| 126 | +INSERT INTO `system_menu` VALUES (1087, '任务查询', 'infra:job:query', 3, 1, 110, '', '', '', 0, b'1', b'1', '1', '2021-03-10 01:26:19', '1', '2022-04-20 17:03:10', b'0'); | ||
| 127 | +INSERT INTO `system_menu` VALUES (1088, '日志查询', 'infra:api-access-log:query', 3, 1, 1078, '', '', '', 0, b'1', b'1', '1', '2021-03-10 01:28:04', '1', '2022-04-20 17:03:10', b'0'); | ||
| 128 | +INSERT INTO `system_menu` VALUES (1089, '日志查询', 'infra:api-error-log:query', 3, 1, 1084, '', '', '', 0, b'1', b'1', '1', '2021-03-10 01:29:09', '1', '2022-04-20 17:03:10', b'0'); | ||
| 129 | +INSERT INTO `system_menu` VALUES (1090, '文件列表', '', 2, 5, 1243, 'file-list', 'upload', 'infra/fileList/index', 0, b'1', b'1', '', '2021-03-12 20:16:20', '1', '2022-07-20 12:10:47', b'0'); | ||
| 130 | +INSERT INTO `system_menu` VALUES (1091, '文件查询', 'infra:file:query', 3, 1, 1090, '', '', '', 0, b'1', b'1', '', '2021-03-12 20:16:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 131 | +INSERT INTO `system_menu` VALUES (1092, '文件删除', 'infra:file:delete', 3, 4, 1090, '', '', '', 0, b'1', b'1', '', '2021-03-12 20:16:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 132 | +INSERT INTO `system_menu` VALUES (1093, '短信管理', '', 1, 11, 1, 'sms', 'ep:chat-dot-square', NULL, 0, b'1', b'1', '1', '2021-04-05 01:10:16', '1', '2022-07-20 14:43:32', b'0'); | ||
| 133 | +INSERT INTO `system_menu` VALUES (1094, '短信渠道', '', 2, 0, 1093, 'sms-channel', 'phone', 'system/sms/smsChannel', 0, b'1', b'1', '', '2021-04-01 11:07:15', '1', '2022-04-20 17:03:10', b'0'); | ||
| 134 | +INSERT INTO `system_menu` VALUES (1095, '短信渠道查询', 'system:sms-channel:query', 3, 1, 1094, '', '', '', 0, b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0'); | ||
| 135 | +INSERT INTO `system_menu` VALUES (1096, '短信渠道创建', 'system:sms-channel:create', 3, 2, 1094, '', '', '', 0, b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0'); | ||
| 136 | +INSERT INTO `system_menu` VALUES (1097, '短信渠道更新', 'system:sms-channel:update', 3, 3, 1094, '', '', '', 0, b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0'); | ||
| 137 | +INSERT INTO `system_menu` VALUES (1098, '短信渠道删除', 'system:sms-channel:delete', 3, 4, 1094, '', '', '', 0, b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0'); | ||
| 138 | +INSERT INTO `system_menu` VALUES (1100, '短信模板', '', 2, 1, 1093, 'sms-template', 'phone', 'system/sms/smsTemplate', 0, b'1', b'1', '', '2021-04-01 17:35:17', '1', '2022-04-20 17:03:10', b'0'); | ||
| 139 | +INSERT INTO `system_menu` VALUES (1101, '短信模板查询', 'system:sms-template:query', 3, 1, 1100, '', '', '', 0, b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0'); | ||
| 140 | +INSERT INTO `system_menu` VALUES (1102, '短信模板创建', 'system:sms-template:create', 3, 2, 1100, '', '', '', 0, b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0'); | ||
| 141 | +INSERT INTO `system_menu` VALUES (1103, '短信模板更新', 'system:sms-template:update', 3, 3, 1100, '', '', '', 0, b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0'); | ||
| 142 | +INSERT INTO `system_menu` VALUES (1104, '短信模板删除', 'system:sms-template:delete', 3, 4, 1100, '', '', '', 0, b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0'); | ||
| 143 | +INSERT INTO `system_menu` VALUES (1105, '短信模板导出', 'system:sms-template:export', 3, 5, 1100, '', '', '', 0, b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0'); | ||
| 144 | +INSERT INTO `system_menu` VALUES (1106, '发送测试短信', 'system:sms-template:send-sms', 3, 6, 1100, '', '', '', 0, b'1', b'1', '1', '2021-04-11 00:26:40', '1', '2022-04-20 17:03:10', b'0'); | ||
| 145 | +INSERT INTO `system_menu` VALUES (1107, '短信日志', '', 2, 2, 1093, 'sms-log', 'phone', 'system/sms/smsLog', 0, b'1', b'1', '', '2021-04-11 08:37:05', '1', '2022-04-20 17:03:10', b'0'); | ||
| 146 | +INSERT INTO `system_menu` VALUES (1108, '短信日志查询', 'system:sms-log:query', 3, 1, 1107, '', '', '', 0, b'1', b'1', '', '2021-04-11 08:37:05', '', '2022-04-20 17:03:10', b'0'); | ||
| 147 | +INSERT INTO `system_menu` VALUES (1109, '短信日志导出', 'system:sms-log:export', 3, 5, 1107, '', '', '', 0, b'1', b'1', '', '2021-04-11 08:37:05', '', '2022-04-20 17:03:10', b'0'); | ||
| 148 | +INSERT INTO `system_menu` VALUES (1110, '错误码管理', '', 2, 12, 1, 'error-code', 'ep:document-delete', 'system/errorCode/index', 0, b'1', b'1', '', '2021-04-13 21:46:42', '1', '2022-07-20 14:43:42', b'0'); | ||
| 149 | +INSERT INTO `system_menu` VALUES (1111, '错误码查询', 'system:error-code:query', 3, 1, 1110, '', '', '', 0, b'1', b'1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', b'0'); | ||
| 150 | +INSERT INTO `system_menu` VALUES (1112, '错误码创建', 'system:error-code:create', 3, 2, 1110, '', '', '', 0, b'1', b'1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', b'0'); | ||
| 151 | +INSERT INTO `system_menu` VALUES (1113, '错误码更新', 'system:error-code:update', 3, 3, 1110, '', '', '', 0, b'1', b'1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', b'0'); | ||
| 152 | +INSERT INTO `system_menu` VALUES (1114, '错误码删除', 'system:error-code:delete', 3, 4, 1110, '', '', '', 0, b'1', b'1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', b'0'); | ||
| 153 | +INSERT INTO `system_menu` VALUES (1115, '错误码导出', 'system:error-code:export', 3, 5, 1110, '', '', '', 0, b'1', b'1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', b'0'); | ||
| 154 | +INSERT INTO `system_menu` VALUES (1117, '支付管理', '', 1, 11, 0, '/pay', 'ep:goods-filled', NULL, 0, b'1', b'1', '1', '2021-12-25 16:43:41', '1', '2022-07-20 13:11:45', b'0'); | ||
| 155 | +INSERT INTO `system_menu` VALUES (1118, '请假查询', '', 2, 0, 5, 'leave', 'user', 'bpm/oa/leave/index', 0, b'1', b'1', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', b'0'); | ||
| 156 | +INSERT INTO `system_menu` VALUES (1119, '请假申请查询', 'bpm:oa-leave:query', 3, 1, 1118, '', '', '', 0, b'1', b'1', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', b'0'); | ||
| 157 | +INSERT INTO `system_menu` VALUES (1120, '请假申请创建', 'bpm:oa-leave:create', 3, 2, 1118, '', '', '', 0, b'1', b'1', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', b'0'); | ||
| 158 | +INSERT INTO `system_menu` VALUES (1126, '应用信息', '', 2, 1, 1117, 'app', 'ep:cellphone', 'pay/app/index', 0, b'1', b'1', '', '2021-11-10 01:13:30', '1', '2022-07-20 14:44:17', b'0'); | ||
| 159 | +INSERT INTO `system_menu` VALUES (1127, '支付应用信息查询', 'pay:app:query', 3, 1, 1126, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 160 | +INSERT INTO `system_menu` VALUES (1128, '支付应用信息创建', 'pay:app:create', 3, 2, 1126, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 161 | +INSERT INTO `system_menu` VALUES (1129, '支付应用信息更新', 'pay:app:update', 3, 3, 1126, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 162 | +INSERT INTO `system_menu` VALUES (1130, '支付应用信息删除', 'pay:app:delete', 3, 4, 1126, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 163 | +INSERT INTO `system_menu` VALUES (1131, '支付应用信息导出', 'pay:app:export', 3, 5, 1126, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 164 | +INSERT INTO `system_menu` VALUES (1132, '秘钥解析', 'pay:channel:parsing', 3, 6, 1129, '', '', '', 0, b'1', b'1', '1', '2021-11-08 15:15:47', '1', '2022-04-20 17:03:10', b'0'); | ||
| 165 | +INSERT INTO `system_menu` VALUES (1133, '支付商户信息查询', 'pay:merchant:query', 3, 1, 1132, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', b'0'); | ||
| 166 | +INSERT INTO `system_menu` VALUES (1134, '支付商户信息创建', 'pay:merchant:create', 3, 2, 1132, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', b'0'); | ||
| 167 | +INSERT INTO `system_menu` VALUES (1135, '支付商户信息更新', 'pay:merchant:update', 3, 3, 1132, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', b'0'); | ||
| 168 | +INSERT INTO `system_menu` VALUES (1136, '支付商户信息删除', 'pay:merchant:delete', 3, 4, 1132, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', b'0'); | ||
| 169 | +INSERT INTO `system_menu` VALUES (1137, '支付商户信息导出', 'pay:merchant:export', 3, 5, 1132, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', b'0'); | ||
| 170 | +INSERT INTO `system_menu` VALUES (1138, '租户列表', '', 2, 0, 1224, 'list', 'peoples', 'system/tenant/index', 0, b'1', b'1', '', '2021-12-14 12:31:43', '1', '2022-04-20 17:03:10', b'0'); | ||
| 171 | +INSERT INTO `system_menu` VALUES (1139, '租户查询', 'system:tenant:query', 3, 1, 1138, '', '', '', 0, b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 172 | +INSERT INTO `system_menu` VALUES (1140, '租户创建', 'system:tenant:create', 3, 2, 1138, '', '', '', 0, b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 173 | +INSERT INTO `system_menu` VALUES (1141, '租户更新', 'system:tenant:update', 3, 3, 1138, '', '', '', 0, b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 174 | +INSERT INTO `system_menu` VALUES (1142, '租户删除', 'system:tenant:delete', 3, 4, 1138, '', '', '', 0, b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 175 | +INSERT INTO `system_menu` VALUES (1143, '租户导出', 'system:tenant:export', 3, 5, 1138, '', '', '', 0, b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 176 | +INSERT INTO `system_menu` VALUES (1150, '秘钥解析', '', 3, 6, 1129, '', '', '', 0, b'1', b'1', '1', '2021-11-08 15:15:47', '1', '2022-04-20 17:03:10', b'0'); | ||
| 177 | +INSERT INTO `system_menu` VALUES (1161, '退款订单', '', 2, 3, 1117, 'refund', 'ep:message-box', 'pay/refund/index', 0, b'1', b'1', '', '2021-12-25 08:29:07', '1', '2022-07-20 14:45:23', b'0'); | ||
| 178 | +INSERT INTO `system_menu` VALUES (1162, '退款订单查询', 'pay:refund:query', 3, 1, 1161, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', b'0'); | ||
| 179 | +INSERT INTO `system_menu` VALUES (1163, '退款订单创建', 'pay:refund:create', 3, 2, 1161, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', b'0'); | ||
| 180 | +INSERT INTO `system_menu` VALUES (1164, '退款订单更新', 'pay:refund:update', 3, 3, 1161, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', b'0'); | ||
| 181 | +INSERT INTO `system_menu` VALUES (1165, '退款订单删除', 'pay:refund:delete', 3, 4, 1161, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', b'0'); | ||
| 182 | +INSERT INTO `system_menu` VALUES (1166, '退款订单导出', 'pay:refund:export', 3, 5, 1161, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', b'0'); | ||
| 183 | +INSERT INTO `system_menu` VALUES (1173, '支付订单', '', 2, 2, 1117, 'order', 'ep:histogram', 'pay/order/index', 0, b'1', b'1', '', '2021-12-25 08:49:43', '1', '2022-07-20 14:44:36', b'0'); | ||
| 184 | +INSERT INTO `system_menu` VALUES (1174, '支付订单查询', 'pay:order:query', 3, 1, 1173, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0'); | ||
| 185 | +INSERT INTO `system_menu` VALUES (1175, '支付订单创建', 'pay:order:create', 3, 2, 1173, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0'); | ||
| 186 | +INSERT INTO `system_menu` VALUES (1176, '支付订单更新', 'pay:order:update', 3, 3, 1173, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0'); | ||
| 187 | +INSERT INTO `system_menu` VALUES (1177, '支付订单删除', 'pay:order:delete', 3, 4, 1173, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0'); | ||
| 188 | +INSERT INTO `system_menu` VALUES (1178, '支付订单导出', 'pay:order:export', 3, 5, 1173, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0'); | ||
| 189 | +INSERT INTO `system_menu` VALUES (1179, '商户信息', '', 2, 0, 1117, 'merchant', 'ep:goods', 'pay/merchant/index', 0, b'1', b'1', '', '2021-12-25 09:01:44', '1', '2022-07-20 14:44:58', b'0'); | ||
| 190 | +INSERT INTO `system_menu` VALUES (1180, '支付商户信息查询', 'pay:merchant:query', 3, 1, 1179, '', '', '', 0, b'1', b'1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 191 | +INSERT INTO `system_menu` VALUES (1181, '支付商户信息创建', 'pay:merchant:create', 3, 2, 1179, '', '', '', 0, b'1', b'1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 192 | +INSERT INTO `system_menu` VALUES (1182, '支付商户信息更新', 'pay:merchant:update', 3, 3, 1179, '', '', '', 0, b'1', b'1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 193 | +INSERT INTO `system_menu` VALUES (1183, '支付商户信息删除', '', 3, 4, 1179, '', '', '', 0, b'1', b'1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 194 | +INSERT INTO `system_menu` VALUES (1184, '支付商户信息导出', 'pay:merchant:export', 3, 5, 1179, '', '', '', 0, b'1', b'1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 195 | +INSERT INTO `system_menu` VALUES (1185, '工作流程', '', 1, 50, 0, '/bpm', 'ep:checked', NULL, 0, b'1', b'1', '1', '2021-12-30 20:26:36', '1', '2022-07-20 13:12:35', b'0'); | ||
| 196 | +INSERT INTO `system_menu` VALUES (1186, '流程管理', '', 1, 10, 1185, 'manager', 'ep:collection-tag', NULL, 0, b'1', b'1', '1', '2021-12-30 20:28:30', '1', '2022-07-20 14:50:31', b'0'); | ||
| 197 | +INSERT INTO `system_menu` VALUES (1187, '流程表单', '', 2, 0, 1186, 'form', 'form', 'bpm/form/index', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 198 | +INSERT INTO `system_menu` VALUES (1188, '表单查询', 'bpm:form:query', 3, 1, 1187, '', '', '', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 199 | +INSERT INTO `system_menu` VALUES (1189, '表单创建', 'bpm:form:create', 3, 2, 1187, '', '', '', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 200 | +INSERT INTO `system_menu` VALUES (1190, '表单更新', 'bpm:form:update', 3, 3, 1187, '', '', '', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 201 | +INSERT INTO `system_menu` VALUES (1191, '表单删除', 'bpm:form:delete', 3, 4, 1187, '', '', '', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 202 | +INSERT INTO `system_menu` VALUES (1192, '表单导出', 'bpm:form:export', 3, 5, 1187, '', '', '', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 203 | +INSERT INTO `system_menu` VALUES (1193, '流程模型', '', 2, 5, 1186, 'model', 'guide', 'bpm/model/index', 0, b'1', b'1', '1', '2021-12-31 23:24:58', '103', '2022-04-20 17:03:10', b'0'); | ||
| 204 | +INSERT INTO `system_menu` VALUES (1194, '模型查询', 'bpm:model:query', 3, 1, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:01:10', '1', '2022-04-20 17:03:10', b'0'); | ||
| 205 | +INSERT INTO `system_menu` VALUES (1195, '模型创建', 'bpm:model:create', 3, 2, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:01:24', '1', '2022-04-20 17:03:10', b'0'); | ||
| 206 | +INSERT INTO `system_menu` VALUES (1196, '模型导入', 'bpm:model:import', 3, 3, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:01:35', '1', '2022-04-20 17:03:10', b'0'); | ||
| 207 | +INSERT INTO `system_menu` VALUES (1197, '模型更新', 'bpm:model:update', 3, 4, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:02:28', '1', '2022-04-20 17:03:10', b'0'); | ||
| 208 | +INSERT INTO `system_menu` VALUES (1198, '模型删除', 'bpm:model:delete', 3, 5, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:02:43', '1', '2022-04-20 17:03:10', b'0'); | ||
| 209 | +INSERT INTO `system_menu` VALUES (1199, '模型发布', 'bpm:model:deploy', 3, 6, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:03:24', '1', '2022-04-20 17:03:10', b'0'); | ||
| 210 | +INSERT INTO `system_menu` VALUES (1200, '任务管理', '', 1, 20, 1185, 'task', 'ep:calendar', NULL, 0, b'1', b'1', '1', '2022-01-07 23:51:48', '1', '2022-07-20 14:50:40', b'0'); | ||
| 211 | +INSERT INTO `system_menu` VALUES (1201, '我的流程', '', 2, 0, 1200, 'my', 'people', 'bpm/processInstance/index', 0, b'1', b'1', '', '2022-01-07 15:53:44', '1', '2022-04-20 17:03:10', b'0'); | ||
| 212 | +INSERT INTO `system_menu` VALUES (1202, '流程实例的查询', 'bpm:process-instance:query', 3, 1, 1201, '', '', '', 0, b'1', b'1', '', '2022-01-07 15:53:44', '1', '2022-04-20 17:03:10', b'0'); | ||
| 213 | +INSERT INTO `system_menu` VALUES (1207, '待办任务', '', 2, 10, 1200, 'todo', 'eye-open', 'bpm/task/todo', 0, b'1', b'1', '1', '2022-01-08 10:33:37', '1', '2022-04-20 17:03:10', b'0'); | ||
| 214 | +INSERT INTO `system_menu` VALUES (1208, '已办任务', '', 2, 20, 1200, 'done', 'eye', 'bpm/task/done', 0, b'1', b'1', '1', '2022-01-08 10:34:13', '1', '2022-04-20 17:03:10', b'0'); | ||
| 215 | +INSERT INTO `system_menu` VALUES (1209, '用户分组', '', 2, 2, 1186, 'user-group', 'people', 'bpm/group/index', 0, b'1', b'1', '', '2022-01-14 02:14:20', '103', '2022-04-20 17:03:10', b'0'); | ||
| 216 | +INSERT INTO `system_menu` VALUES (1210, '用户组查询', 'bpm:user-group:query', 3, 1, 1209, '', '', '', 0, b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 217 | +INSERT INTO `system_menu` VALUES (1211, '用户组创建', 'bpm:user-group:create', 3, 2, 1209, '', '', '', 0, b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 218 | +INSERT INTO `system_menu` VALUES (1212, '用户组更新', 'bpm:user-group:update', 3, 3, 1209, '', '', '', 0, b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 219 | +INSERT INTO `system_menu` VALUES (1213, '用户组删除', 'bpm:user-group:delete', 3, 4, 1209, '', '', '', 0, b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 220 | +INSERT INTO `system_menu` VALUES (1215, '流程定义查询', 'bpm:process-definition:query', 3, 10, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:21:43', '1', '2022-04-20 17:03:10', b'0'); | ||
| 221 | +INSERT INTO `system_menu` VALUES (1216, '流程任务分配规则查询', 'bpm:task-assign-rule:query', 3, 20, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:26:53', '1', '2022-04-20 17:03:10', b'0'); | ||
| 222 | +INSERT INTO `system_menu` VALUES (1217, '流程任务分配规则创建', 'bpm:task-assign-rule:create', 3, 21, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:28:15', '1', '2022-04-20 17:03:10', b'0'); | ||
| 223 | +INSERT INTO `system_menu` VALUES (1218, '流程任务分配规则更新', 'bpm:task-assign-rule:update', 3, 22, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:28:41', '1', '2022-04-20 17:03:10', b'0'); | ||
| 224 | +INSERT INTO `system_menu` VALUES (1219, '流程实例的创建', 'bpm:process-instance:create', 3, 2, 1201, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:36:15', '1', '2022-04-20 17:03:10', b'0'); | ||
| 225 | +INSERT INTO `system_menu` VALUES (1220, '流程实例的取消', 'bpm:process-instance:cancel', 3, 3, 1201, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:36:33', '1', '2022-04-20 17:03:10', b'0'); | ||
| 226 | +INSERT INTO `system_menu` VALUES (1221, '流程任务的查询', 'bpm:task:query', 3, 1, 1207, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:38:52', '1', '2022-04-20 17:03:10', b'0'); | ||
| 227 | +INSERT INTO `system_menu` VALUES (1222, '流程任务的更新', 'bpm:task:update', 3, 2, 1207, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:39:24', '1', '2022-04-20 17:03:10', b'0'); | ||
| 228 | +INSERT INTO `system_menu` VALUES (1224, '租户管理', '', 2, 0, 1, 'tenant', 'ep:cherry', NULL, 0, b'1', b'1', '1', '2022-02-20 01:41:13', '1', '2022-07-20 14:51:46', b'0'); | ||
| 229 | +INSERT INTO `system_menu` VALUES (1225, '租户套餐', '', 2, 0, 1224, 'package', 'eye', 'system/tenantPackage/index', 0, b'1', b'1', '', '2022-02-19 17:44:06', '1', '2022-04-21 01:21:25', b'0'); | ||
| 230 | +INSERT INTO `system_menu` VALUES (1226, '租户套餐查询', 'system:tenant-package:query', 3, 1, 1225, '', '', '', 0, b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0'); | ||
| 231 | +INSERT INTO `system_menu` VALUES (1227, '租户套餐创建', 'system:tenant-package:create', 3, 2, 1225, '', '', '', 0, b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0'); | ||
| 232 | +INSERT INTO `system_menu` VALUES (1228, '租户套餐更新', 'system:tenant-package:update', 3, 3, 1225, '', '', '', 0, b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0'); | ||
| 233 | +INSERT INTO `system_menu` VALUES (1229, '租户套餐删除', 'system:tenant-package:delete', 3, 4, 1225, '', '', '', 0, b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0'); | ||
| 234 | +INSERT INTO `system_menu` VALUES (1237, '文件配置', '', 2, 0, 1243, 'file-config', 'config', 'infra/fileConfig/index', 0, b'1', b'1', '', '2022-03-15 14:35:28', '1', '2022-04-20 17:03:10', b'0'); | ||
| 235 | +INSERT INTO `system_menu` VALUES (1238, '文件配置查询', 'infra:file-config:query', 3, 1, 1237, '', '', '', 0, b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 236 | +INSERT INTO `system_menu` VALUES (1239, '文件配置创建', 'infra:file-config:create', 3, 2, 1237, '', '', '', 0, b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 237 | +INSERT INTO `system_menu` VALUES (1240, '文件配置更新', 'infra:file-config:update', 3, 3, 1237, '', '', '', 0, b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 238 | +INSERT INTO `system_menu` VALUES (1241, '文件配置删除', 'infra:file-config:delete', 3, 4, 1237, '', '', '', 0, b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 239 | +INSERT INTO `system_menu` VALUES (1242, '文件配置导出', 'infra:file-config:export', 3, 5, 1237, '', '', '', 0, b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 240 | +INSERT INTO `system_menu` VALUES (1243, '文件管理', '', 2, 5, 2, 'file', 'ep:folder-opened', NULL, 0, b'1', b'1', '1', '2022-03-16 23:47:40', '1', '2022-07-20 14:48:19', b'0'); | ||
| 241 | +INSERT INTO `system_menu` VALUES (1247, '敏感词管理', '', 2, 13, 1, 'sensitive-word', 'ep:document-copy', 'system/sensitiveWord/index', 0, b'1', b'1', '', '2022-04-07 16:55:03', '1', '2022-07-20 14:43:53', b'0'); | ||
| 242 | +INSERT INTO `system_menu` VALUES (1248, '敏感词查询', 'system:sensitive-word:query', 3, 1, 1247, '', '', '', 0, b'1', b'1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', b'0'); | ||
| 243 | +INSERT INTO `system_menu` VALUES (1249, '敏感词创建', 'system:sensitive-word:create', 3, 2, 1247, '', '', '', 0, b'1', b'1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', b'0'); | ||
| 244 | +INSERT INTO `system_menu` VALUES (1250, '敏感词更新', 'system:sensitive-word:update', 3, 3, 1247, '', '', '', 0, b'1', b'1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', b'0'); | ||
| 245 | +INSERT INTO `system_menu` VALUES (1251, '敏感词删除', 'system:sensitive-word:delete', 3, 4, 1247, '', '', '', 0, b'1', b'1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', b'0'); | ||
| 246 | +INSERT INTO `system_menu` VALUES (1252, '敏感词导出', 'system:sensitive-word:export', 3, 5, 1247, '', '', '', 0, b'1', b'1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', b'0'); | ||
| 247 | +INSERT INTO `system_menu` VALUES (1254, '作者动态', '', 1, 0, 0, 'https://www.iocoder.cn', 'ep:bell-filled', NULL, 0, b'1', b'1', '1', '2022-04-23 01:03:15', '1', '2022-07-20 13:12:43', b'0'); | ||
| 248 | +INSERT INTO `system_menu` VALUES (1255, '数据源配置', '', 2, 1, 2, 'data-source-config', 'ep:coin', 'infra/dataSourceConfig/index', 0, b'1', b'1', '', '2022-04-27 14:37:32', '1', '2022-07-20 14:49:01', b'0'); | ||
| 249 | +INSERT INTO `system_menu` VALUES (1256, '数据源配置查询', 'infra:data-source-config:query', 3, 1, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); | ||
| 250 | +INSERT INTO `system_menu` VALUES (1257, '数据源配置创建', 'infra:data-source-config:create', 3, 2, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); | ||
| 251 | +INSERT INTO `system_menu` VALUES (1258, '数据源配置更新', 'infra:data-source-config:update', 3, 3, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); | ||
| 252 | +INSERT INTO `system_menu` VALUES (1259, '数据源配置删除', 'infra:data-source-config:delete', 3, 4, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); | ||
| 253 | +INSERT INTO `system_menu` VALUES (1260, '数据源配置导出', 'infra:data-source-config:export', 3, 5, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); | ||
| 254 | +INSERT INTO `system_menu` VALUES (1261, '授权管理', '', 1, 10, 1, 'oauth2', 'ep:connection', NULL, 0, b'1', b'1', '1', '2022-05-09 23:38:17', '1', '2022-07-20 14:43:23', b'0'); | ||
| 255 | +INSERT INTO `system_menu` VALUES (1263, '应用管理', '', 2, 0, 1261, 'oauth2/application', 'tool', 'system/oauth2/client/index', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 23:31:36', b'0'); | ||
| 256 | +INSERT INTO `system_menu` VALUES (1264, '客户端查询', 'system:oauth2-client:query', 3, 1, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:06', b'0'); | ||
| 257 | +INSERT INTO `system_menu` VALUES (1265, '客户端创建', 'system:oauth2-client:create', 3, 2, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:23', b'0'); | ||
| 258 | +INSERT INTO `system_menu` VALUES (1266, '客户端更新', 'system:oauth2-client:update', 3, 3, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:28', b'0'); | ||
| 259 | +INSERT INTO `system_menu` VALUES (1267, '客户端删除', 'system:oauth2-client:delete', 3, 4, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:33', b'0'); | ||
| 260 | + | ||
| 261 | +SET FOREIGN_KEY_CHECKS = 1; |
yudao-ui-admin-vue3/README.md
| @@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
| 7 | ## 注意事项 | 7 | ## 注意事项 |
| 8 | 8 | ||
| 9 | - 项目路径请不要使用中文命名!!!会造成解析乱码!!!请使用全英文路径!!! | 9 | - 项目路径请不要使用中文命名!!!会造成解析乱码!!!请使用全英文路径!!! |
| 10 | -- node >=14.18.0(建议使用16版本) ,pnpm >=7 | 10 | +- node >=14.18.0(建议使用 16 版本) ,pnpm >=7 |
| 11 | - 开发建议使用 [谷歌浏览器-开发者版](https://www.google.cn/intl/zh-CN/chrome/dev/) 不支持 IE\QQ 等浏览器 | 11 | - 开发建议使用 [谷歌浏览器-开发者版](https://www.google.cn/intl/zh-CN/chrome/dev/) 不支持 IE\QQ 等浏览器 |
| 12 | 12 | ||
| 13 | ### 前端依赖 | 13 | ### 前端依赖 |
| @@ -15,7 +15,7 @@ | @@ -15,7 +15,7 @@ | ||
| 15 | | 框架 | 说明 | 版本 | | 15 | | 框架 | 说明 | 版本 | |
| 16 | | --- | --- | --- | | 16 | | --- | --- | --- | |
| 17 | | [Vue](https://staging-cn.vuejs.org/) | vue 框架 | 3.2.37 | | 17 | | [Vue](https://staging-cn.vuejs.org/) | vue 框架 | 3.2.37 | |
| 18 | -| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 3.0.1 | | 18 | +| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 3.0.2 | |
| 19 | | [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.2.9 | | 19 | | [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.2.9 | |
| 20 | | [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 4.7.4 | | 20 | | [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 4.7.4 | |
| 21 | | [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.0.16 | | 21 | | [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.0.16 | |
| @@ -24,9 +24,7 @@ | @@ -24,9 +24,7 @@ | ||
| 24 | | [vue-router](https://router.vuejs.org/) | vue 路由 | 4.1.2 | | 24 | | [vue-router](https://router.vuejs.org/) | vue 路由 | 4.1.2 | |
| 25 | | [windicss](https://cn.windicss.org/) | 下一代工具优先的 CSS 框架 | 3.5.6 | | 25 | | [windicss](https://cn.windicss.org/) | 下一代工具优先的 CSS 框架 | 3.5.6 | |
| 26 | | [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 2.2.1 | | 26 | | [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 2.2.1 | |
| 27 | -| [wangeditor](https://www.wangeditor.com/) | 富文本编辑器 | 5.1.11 | | ||
| 28 | - | ||
| 29 | -## 用法 | 27 | +| [wangeditor](https://www.wangeditor.com/) | 富文本编辑器 | 5.1.10 | |
| 30 | 28 | ||
| 31 | ### 推荐 VScode 开发,插件如下 | 29 | ### 推荐 VScode 开发,插件如下 |
| 32 | 30 | ||
| @@ -42,44 +40,58 @@ | @@ -42,44 +40,58 @@ | ||
| 42 | 40 | ||
| 43 | ### 安装 pnpm 并启动项目 | 41 | ### 安装 pnpm 并启动项目 |
| 44 | 42 | ||
| 45 | -``` | ||
| 46 | -# 查看当前 npm 源 | 43 | +- 查看当前 npm 源 |
| 47 | 44 | ||
| 45 | +```bash | ||
| 48 | npm config ls | 46 | npm config ls |
| 47 | +``` | ||
| 49 | 48 | ||
| 50 | -# 如果执行上面命令您并未看到 registry = "https://registry.npmjs.org/",说明使用的非npm官方源,请执行下面命令 | 49 | +- 如果执行上面命令您并未看到 registry = "https://registry.npmjs.org/",说明使用的非npm官方源,请执行下面命令 |
| 51 | 50 | ||
| 51 | +```bash | ||
| 52 | npm config set registry https://registry.npmjs.org | 52 | npm config set registry https://registry.npmjs.org |
| 53 | +``` | ||
| 53 | 54 | ||
| 54 | -# 如果您还没安装 pnpm,请执行下面命令 | 55 | +- 如果您还没安装 pnpm,请执行下面命令 |
| 55 | 56 | ||
| 57 | +```bash | ||
| 56 | npm install -g pnpm | 58 | npm install -g pnpm |
| 59 | +``` | ||
| 57 | 60 | ||
| 58 | -# mac 用户遇到安装报错请在命令前加上 sudo | 61 | +- mac 用户遇到安装报错请在命令前加上 sudo |
| 59 | 62 | ||
| 60 | -# 安装依赖 | 63 | +- 安装依赖 |
| 61 | 64 | ||
| 65 | +```bash | ||
| 62 | pnpm install | 66 | pnpm install |
| 67 | +``` | ||
| 63 | 68 | ||
| 64 | -# 运行项目 | 69 | +- 运行项目 |
| 65 | 70 | ||
| 71 | +```bash | ||
| 66 | pnpm run dev | 72 | pnpm run dev |
| 73 | +``` | ||
| 67 | 74 | ||
| 68 | -# 打包 | 75 | +- 打包 |
| 69 | 76 | ||
| 77 | +```bash | ||
| 70 | pnpm run build:pro | 78 | pnpm run build:pro |
| 79 | +``` | ||
| 71 | 80 | ||
| 72 | -# 安装一个包 | 81 | +- 安装一个包 |
| 73 | 82 | ||
| 83 | +```bash | ||
| 74 | pnpm add 包名 | 84 | pnpm add 包名 |
| 85 | +``` | ||
| 75 | 86 | ||
| 76 | -# 卸载一个包 | 87 | +- 卸载一个包 |
| 77 | 88 | ||
| 89 | +```bash | ||
| 78 | pnpm remove 包名 | 90 | pnpm remove 包名 |
| 79 | - | ||
| 80 | -# 其他命令请看package.json | ||
| 81 | ``` | 91 | ``` |
| 82 | 92 | ||
| 93 | +- 其他命令请看 package.json | ||
| 94 | + | ||
| 83 | ## 浏览器支持 | 95 | ## 浏览器支持 |
| 84 | 96 | ||
| 85 | 本地开发推荐使用 `Chrome 80+` 浏览器 | 97 | 本地开发推荐使用 `Chrome 80+` 浏览器 |
yudao-ui-admin-vue3/package.json
| @@ -32,7 +32,7 @@ | @@ -32,7 +32,7 @@ | ||
| 32 | "@zxcvbn-ts/core": "^2.0.3", | 32 | "@zxcvbn-ts/core": "^2.0.3", |
| 33 | "animate.css": "^4.1.1", | 33 | "animate.css": "^4.1.1", |
| 34 | "axios": "^0.27.2", | 34 | "axios": "^0.27.2", |
| 35 | - "dayjs": "^1.11.3", | 35 | + "dayjs": "^1.11.4", |
| 36 | "echarts": "^5.3.3", | 36 | "echarts": "^5.3.3", |
| 37 | "echarts-wordcloud": "^2.0.0", | 37 | "echarts-wordcloud": "^2.0.0", |
| 38 | "element-plus": "2.2.9", | 38 | "element-plus": "2.2.9", |
| @@ -93,13 +93,14 @@ | @@ -93,13 +93,14 @@ | ||
| 93 | "typescript": "4.7.4", | 93 | "typescript": "4.7.4", |
| 94 | "unplugin-vue-define-options": "^0.6.2", | 94 | "unplugin-vue-define-options": "^0.6.2", |
| 95 | "vite": "3.0.2", | 95 | "vite": "3.0.2", |
| 96 | + "vite-plugin-compression": "^0.5.1", | ||
| 96 | "vite-plugin-eslint": "^1.7.0", | 97 | "vite-plugin-eslint": "^1.7.0", |
| 97 | "vite-plugin-html": "^3.2.0", | 98 | "vite-plugin-html": "^3.2.0", |
| 98 | "vite-plugin-purge-icons": "^0.8.1", | 99 | "vite-plugin-purge-icons": "^0.8.1", |
| 99 | "vite-plugin-style-import": "^1.4.1", | 100 | "vite-plugin-style-import": "^1.4.1", |
| 100 | "vite-plugin-svg-icons": "^2.0.1", | 101 | "vite-plugin-svg-icons": "^2.0.1", |
| 101 | "vite-plugin-windicss": "^1.8.7", | 102 | "vite-plugin-windicss": "^1.8.7", |
| 102 | - "vue-tsc": "^0.38.8", | 103 | + "vue-tsc": "^0.38.9", |
| 103 | "windicss": "^3.5.6", | 104 | "windicss": "^3.5.6", |
| 104 | "windicss-analysis": "^0.3.5" | 105 | "windicss-analysis": "^0.3.5" |
| 105 | }, | 106 | }, |
yudao-ui-admin-vue3/src/api/infra/file/index.ts renamed to yudao-ui-admin-vue3/src/api/infra/fileList/index.ts
yudao-ui-admin-vue3/src/api/infra/file/types.ts renamed to yudao-ui-admin-vue3/src/api/infra/fileList/types.ts
yudao-ui-admin-vue3/src/api/infra/redis/types.ts
| @@ -182,4 +182,4 @@ export interface RedisKeyInfo { | @@ -182,4 +182,4 @@ export interface RedisKeyInfo { | ||
| 182 | timeoutType: number | 182 | timeoutType: number |
| 183 | timeout: number | 183 | timeout: number |
| 184 | memo: string | 184 | memo: string |
| 185 | -} | ||
| 186 | \ No newline at end of file | 185 | \ No newline at end of file |
| 186 | +} |
yudao-ui-admin-vue3/src/components/Editor/src/Editor.vue
| @@ -6,6 +6,7 @@ import { propTypes } from '@/utils/propTypes' | @@ -6,6 +6,7 @@ import { propTypes } from '@/utils/propTypes' | ||
| 6 | import { isNumber } from '@/utils/is' | 6 | import { isNumber } from '@/utils/is' |
| 7 | import { ElMessage } from 'element-plus' | 7 | import { ElMessage } from 'element-plus' |
| 8 | import { useLocaleStore } from '@/store/modules/locale' | 8 | import { useLocaleStore } from '@/store/modules/locale' |
| 9 | +import { getAccessToken, getTenantId } from '@/utils/auth' | ||
| 9 | 10 | ||
| 10 | const localeStore = useLocaleStore() | 11 | const localeStore = useLocaleStore() |
| 11 | 12 | ||
| @@ -80,12 +81,40 @@ const editorConfig = computed((): IEditorConfig => { | @@ -80,12 +81,40 @@ const editorConfig = computed((): IEditorConfig => { | ||
| 80 | }, | 81 | }, |
| 81 | autoFocus: false, | 82 | autoFocus: false, |
| 82 | scroll: true, | 83 | scroll: true, |
| 84 | + MENU_CONF: { | ||
| 85 | + ['uploadImage']: { | ||
| 86 | + server: import.meta.env.VITE_UPLOAD_URL, | ||
| 87 | + // 单个文件的最大体积限制,默认为 2M | ||
| 88 | + maxFileSize: 2 * 1024 * 1024, | ||
| 89 | + // 最多可上传几个文件,默认为 100 | ||
| 90 | + maxNumberOfFiles: 10, | ||
| 91 | + // 选择文件时的类型限制,默认为 ['image/*'] 。如不想限制,则设置为 [] | ||
| 92 | + allowedFileTypes: ['image/*'], | ||
| 93 | + | ||
| 94 | + // 自定义上传参数,例如传递验证的 token 等。参数会被添加到 formData 中,一起上传到服务端。 | ||
| 95 | + meta: {}, | ||
| 96 | + // 将 meta 拼接到 url 参数中,默认 false | ||
| 97 | + metaWithUrl: false, | ||
| 98 | + | ||
| 99 | + // 自定义增加 http header | ||
| 100 | + headers: { | ||
| 101 | + Accept: 'image/*', | ||
| 102 | + Authorization: 'Bearer ' + getAccessToken(), | ||
| 103 | + 'tenant-id': getTenantId() | ||
| 104 | + }, | ||
| 105 | + | ||
| 106 | + // 跨域是否传递 cookie ,默认为 false | ||
| 107 | + withCredentials: false, | ||
| 108 | + | ||
| 109 | + // 超时时间,默认为 10 秒 | ||
| 110 | + timeout: 5 * 1000 // 5 秒 | ||
| 111 | + } | ||
| 112 | + }, | ||
| 83 | uploadImgShowBase64: true | 113 | uploadImgShowBase64: true |
| 84 | }, | 114 | }, |
| 85 | props.editorConfig || {} | 115 | props.editorConfig || {} |
| 86 | ) | 116 | ) |
| 87 | }) | 117 | }) |
| 88 | - | ||
| 89 | const editorStyle = computed(() => { | 118 | const editorStyle = computed(() => { |
| 90 | return { | 119 | return { |
| 91 | height: isNumber(props.height) ? `${props.height}px` : props.height | 120 | height: isNumber(props.height) ? `${props.height}px` : props.height |
yudao-ui-admin-vue3/src/components/Table/src/Table.vue
| @@ -297,6 +297,10 @@ export default defineComponent({ | @@ -297,6 +297,10 @@ export default defineComponent({ | ||
| 297 | <style lang="less" scoped> | 297 | <style lang="less" scoped> |
| 298 | :deep(.el-button.is-text) { | 298 | :deep(.el-button.is-text) { |
| 299 | margin-left: 0; | 299 | margin-left: 0; |
| 300 | - padding: 8px 10px; | 300 | + padding: 8px 4px; |
| 301 | +} | ||
| 302 | +:deep(.el-button.is-link) { | ||
| 303 | + margin-left: 0; | ||
| 304 | + padding: 8px 4px; | ||
| 301 | } | 305 | } |
| 302 | </style> | 306 | </style> |
yudao-ui-admin-vue3/src/components/TagsView/src/TagsView.vue
| @@ -455,7 +455,7 @@ watch( | @@ -455,7 +455,7 @@ watch( | ||
| 455 | class="w-[var(--tags-view-height)] h-[var(--tags-view-height)] text-center leading-[var(--tags-view-height)] cursor-pointer block" | 455 | class="w-[var(--tags-view-height)] h-[var(--tags-view-height)] text-center leading-[var(--tags-view-height)] cursor-pointer block" |
| 456 | > | 456 | > |
| 457 | <Icon | 457 | <Icon |
| 458 | - icon="ep:setting" | 458 | + icon="ep:menu" |
| 459 | :color="appStore.getIsDark ? 'var(--el-text-color-regular)' : '#333'" | 459 | :color="appStore.getIsDark ? 'var(--el-text-color-regular)' : '#333'" |
| 460 | /> | 460 | /> |
| 461 | </span> | 461 | </span> |
yudao-ui-admin-vue3/src/components/UserInfo/src/UserInfo.vue
| @@ -7,6 +7,7 @@ import { resetRouter } from '@/router' | @@ -7,6 +7,7 @@ import { resetRouter } from '@/router' | ||
| 7 | import { useRouter } from 'vue-router' | 7 | import { useRouter } from 'vue-router' |
| 8 | import { useDesign } from '@/hooks/web/useDesign' | 8 | import { useDesign } from '@/hooks/web/useDesign' |
| 9 | import { useTagsViewStore } from '@/store/modules/tagsView' | 9 | import { useTagsViewStore } from '@/store/modules/tagsView' |
| 10 | +import avatarImg from '@/assets/imgs/avatar.gif' | ||
| 10 | 11 | ||
| 11 | const tagsViewStore = useTagsViewStore() | 12 | const tagsViewStore = useTagsViewStore() |
| 12 | 13 | ||
| @@ -22,9 +23,9 @@ const { push, replace } = useRouter() | @@ -22,9 +23,9 @@ const { push, replace } = useRouter() | ||
| 22 | 23 | ||
| 23 | const user = wsCache.get('user') | 24 | const user = wsCache.get('user') |
| 24 | 25 | ||
| 25 | -const avatar = user?.user?.avatar ? user.user.avatar : '@/assets/imgs/avatar.gif' | 26 | +const avatar = user.user.avatar ? user.user.avatar : avatarImg |
| 26 | 27 | ||
| 27 | -const userName = user?.user?.nickname ? user.user.nickname : 'Admin' | 28 | +const userName = user.user.nickname ? user.user.nickname : 'Admin' |
| 28 | 29 | ||
| 29 | const loginOut = () => { | 30 | const loginOut = () => { |
| 30 | ElMessageBox.confirm(t('common.loginOutMessage'), t('common.reminder'), { | 31 | ElMessageBox.confirm(t('common.loginOutMessage'), t('common.reminder'), { |
yudao-ui-admin-vue3/src/config/axios/index.ts
| @@ -4,6 +4,8 @@ import qs from 'qs' | @@ -4,6 +4,8 @@ import qs from 'qs' | ||
| 4 | import { config } from '@/config/axios/config' | 4 | import { config } from '@/config/axios/config' |
| 5 | import { getAccessToken, getRefreshToken, getTenantId } from '@/utils/auth' | 5 | import { getAccessToken, getRefreshToken, getTenantId } from '@/utils/auth' |
| 6 | import errorCode from './errorCode' | 6 | import errorCode from './errorCode' |
| 7 | +import { useI18n } from '@/hooks/web/useI18n' | ||
| 8 | +const { t } = useI18n() | ||
| 7 | 9 | ||
| 8 | const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE | 10 | const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE |
| 9 | const BASE_URL = import.meta.env.VITE_BASE_URL | 11 | const BASE_URL = import.meta.env.VITE_BASE_URL |
| @@ -18,8 +20,11 @@ const ignoreMsgs = [ | @@ -18,8 +20,11 @@ const ignoreMsgs = [ | ||
| 18 | // 是否显示重新登录 | 20 | // 是否显示重新登录 |
| 19 | export const isRelogin = { show: false } | 21 | export const isRelogin = { show: false } |
| 20 | // Axios 无感知刷新令牌,参考 https://www.dashingdog.cn/article/11 与 https://segmentfault.com/a/1190000020210980 实现 | 22 | // Axios 无感知刷新令牌,参考 https://www.dashingdog.cn/article/11 与 https://segmentfault.com/a/1190000020210980 实现 |
| 23 | +// 请求队列 | ||
| 24 | +// const requestList = [] | ||
| 21 | // 是否正在刷新中 | 25 | // 是否正在刷新中 |
| 22 | let isRefreshToken = false | 26 | let isRefreshToken = false |
| 27 | + | ||
| 23 | export const PATH_URL = base_url[import.meta.env.VITE_API_BASEPATH] | 28 | export const PATH_URL = base_url[import.meta.env.VITE_API_BASEPATH] |
| 24 | 29 | ||
| 25 | // 创建axios实例 | 30 | // 创建axios实例 |
| @@ -95,13 +100,17 @@ service.interceptors.response.use( | @@ -95,13 +100,17 @@ service.interceptors.response.use( | ||
| 95 | if (!getRefreshToken()) { | 100 | if (!getRefreshToken()) { |
| 96 | return handleAuthorized() | 101 | return handleAuthorized() |
| 97 | } | 102 | } |
| 103 | + // 2. 进行刷新访问令牌 | ||
| 104 | + // TODO: 引入refreshToken会循环依赖报错 | ||
| 98 | } | 105 | } |
| 99 | } else if (code === 500) { | 106 | } else if (code === 500) { |
| 100 | - ElMessage.error(msg) | 107 | + ElMessage.error(t('sys.api.errMsg500')) |
| 101 | return Promise.reject(new Error(msg)) | 108 | return Promise.reject(new Error(msg)) |
| 102 | } else if (code === 901) { | 109 | } else if (code === 901) { |
| 103 | ElMessage.error( | 110 | ElMessage.error( |
| 104 | - '<div>演示模式,无法进行写操作</div>' + | 111 | + '<div>' + |
| 112 | + t('sys.api.errMsg901') + | ||
| 113 | + '</div>' + | ||
| 105 | '<div> </div>' + | 114 | '<div> </div>' + |
| 106 | '<div>参考 https://doc.iocoder.cn/ 教程</div>' + | 115 | '<div>参考 https://doc.iocoder.cn/ 教程</div>' + |
| 107 | '<div> </div>' + | 116 | '<div> </div>' + |
| @@ -124,16 +133,24 @@ service.interceptors.response.use( | @@ -124,16 +133,24 @@ service.interceptors.response.use( | ||
| 124 | }, | 133 | }, |
| 125 | (error: AxiosError) => { | 134 | (error: AxiosError) => { |
| 126 | console.log('err' + error) // for debug | 135 | console.log('err' + error) // for debug |
| 127 | - ElMessage.error(error.message) | 136 | + let { message } = error |
| 137 | + if (message === 'Network Error') { | ||
| 138 | + message = t('sys.api.errorMessage') | ||
| 139 | + } else if (message.includes('timeout')) { | ||
| 140 | + message = t('sys.api.apiTimeoutMessage') | ||
| 141 | + } else if (message.includes('Request failed with status code')) { | ||
| 142 | + message = t('sys.api.apiRequestFailed') + message.substr(message.length - 3) | ||
| 143 | + } | ||
| 144 | + ElMessage.error(message) | ||
| 128 | return Promise.reject(error) | 145 | return Promise.reject(error) |
| 129 | } | 146 | } |
| 130 | ) | 147 | ) |
| 131 | function handleAuthorized() { | 148 | function handleAuthorized() { |
| 132 | if (!isRelogin.show) { | 149 | if (!isRelogin.show) { |
| 133 | isRelogin.show = true | 150 | isRelogin.show = true |
| 134 | - ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { | ||
| 135 | - confirmButtonText: '重新登录', | ||
| 136 | - cancelButtonText: '取消', | 151 | + ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), { |
| 152 | + confirmButtonText: t('login.relogin'), | ||
| 153 | + cancelButtonText: t('common.cancel'), | ||
| 137 | type: 'warning' | 154 | type: 'warning' |
| 138 | }) | 155 | }) |
| 139 | .then(() => { | 156 | .then(() => { |
| @@ -143,6 +160,6 @@ function handleAuthorized() { | @@ -143,6 +160,6 @@ function handleAuthorized() { | ||
| 143 | isRelogin.show = false | 160 | isRelogin.show = false |
| 144 | }) | 161 | }) |
| 145 | } | 162 | } |
| 146 | - return Promise.reject('无效的会话,或者会话已过期,请重新登录。') | 163 | + return Promise.reject(t('sys.api.timeoutMessage')) |
| 147 | } | 164 | } |
| 148 | export { service } | 165 | export { service } |
yudao-ui-admin-vue3/src/locales/en.ts
| @@ -108,7 +108,10 @@ export default { | @@ -108,7 +108,10 @@ export default { | ||
| 108 | login: 'Sign in', | 108 | login: 'Sign in', |
| 109 | relogin: 'Sign in again', | 109 | relogin: 'Sign in again', |
| 110 | otherLogin: 'Sign in with', | 110 | otherLogin: 'Sign in with', |
| 111 | + register: 'Register', | ||
| 112 | + checkPassword: 'Confirm password', | ||
| 111 | remember: 'Remember me', | 113 | remember: 'Remember me', |
| 114 | + hasUser: 'Existing account? Go to login', | ||
| 112 | forgetPassword: 'Forget password?', | 115 | forgetPassword: 'Forget password?', |
| 113 | tenantNamePlaceholder: 'Please Enter Tenant Name', | 116 | tenantNamePlaceholder: 'Please Enter Tenant Name', |
| 114 | usernamePlaceholder: 'Please Enter Username', | 117 | usernamePlaceholder: 'Please Enter Username', |
| @@ -121,6 +124,7 @@ export default { | @@ -121,6 +124,7 @@ export default { | ||
| 121 | getSmsCode: 'Get SMS Code', | 124 | getSmsCode: 'Get SMS Code', |
| 122 | btnMobile: 'Mobile sign in', | 125 | btnMobile: 'Mobile sign in', |
| 123 | btnQRCode: 'QR code sign in', | 126 | btnQRCode: 'QR code sign in', |
| 127 | + qrcode: 'Scan the QR code to log in', | ||
| 124 | btnRegister: 'Sign up', | 128 | btnRegister: 'Sign up', |
| 125 | SmsSendMsg: 'code has been sent' | 129 | SmsSendMsg: 'code has been sent' |
| 126 | }, | 130 | }, |
yudao-ui-admin-vue3/src/locales/zh-CN.ts
| @@ -108,7 +108,10 @@ export default { | @@ -108,7 +108,10 @@ export default { | ||
| 108 | login: '登录', | 108 | login: '登录', |
| 109 | relogin: '重新登录', | 109 | relogin: '重新登录', |
| 110 | otherLogin: '其他登录方式', | 110 | otherLogin: '其他登录方式', |
| 111 | + register: '注册', | ||
| 112 | + checkPassword: '确认密码', | ||
| 111 | remember: '记住我', | 113 | remember: '记住我', |
| 114 | + hasUser: '已有账号?去登录', | ||
| 112 | forgetPassword: '忘记密码?', | 115 | forgetPassword: '忘记密码?', |
| 113 | tenantNamePlaceholder: '请输入租户名称', | 116 | tenantNamePlaceholder: '请输入租户名称', |
| 114 | usernamePlaceholder: '请输入用户名', | 117 | usernamePlaceholder: '请输入用户名', |
| @@ -121,6 +124,7 @@ export default { | @@ -121,6 +124,7 @@ export default { | ||
| 121 | getSmsCode: '获取验证码', | 124 | getSmsCode: '获取验证码', |
| 122 | btnMobile: '手机登录', | 125 | btnMobile: '手机登录', |
| 123 | btnQRCode: '二维码登录', | 126 | btnQRCode: '二维码登录', |
| 127 | + qrcode: '扫描二维码登录', | ||
| 124 | btnRegister: '注册', | 128 | btnRegister: '注册', |
| 125 | SmsSendMsg: '验证码已发送' | 129 | SmsSendMsg: '验证码已发送' |
| 126 | }, | 130 | }, |
yudao-ui-admin-vue3/src/router/modules/error.ts deleted
| 1 | -import { Layout } from '@/utils/routerHelper' | ||
| 2 | -import { useI18n } from '@/hooks/web/useI18n' | ||
| 3 | -const { t } = useI18n() | ||
| 4 | - | ||
| 5 | -const errorRouter = [ | ||
| 6 | - { | ||
| 7 | - path: '/error', | ||
| 8 | - component: Layout, | ||
| 9 | - redirect: '/error/404', | ||
| 10 | - name: 'Error', | ||
| 11 | - meta: { | ||
| 12 | - title: t('router.errorPage'), | ||
| 13 | - icon: 'ci:error', | ||
| 14 | - alwaysShow: true | ||
| 15 | - }, | ||
| 16 | - children: [ | ||
| 17 | - { | ||
| 18 | - path: '404-demo', | ||
| 19 | - component: () => import('@/views/Error/404.vue'), | ||
| 20 | - name: '404Demo', | ||
| 21 | - meta: { | ||
| 22 | - title: '404' | ||
| 23 | - } | ||
| 24 | - }, | ||
| 25 | - { | ||
| 26 | - path: '403-demo', | ||
| 27 | - component: () => import('@/views/Error/403.vue'), | ||
| 28 | - name: '403Demo', | ||
| 29 | - meta: { | ||
| 30 | - title: '403' | ||
| 31 | - } | ||
| 32 | - }, | ||
| 33 | - { | ||
| 34 | - path: '500-demo', | ||
| 35 | - component: () => import('@/views/Error/500.vue'), | ||
| 36 | - name: '500Demo', | ||
| 37 | - meta: { | ||
| 38 | - title: '500' | ||
| 39 | - } | ||
| 40 | - } | ||
| 41 | - ] | ||
| 42 | - } | ||
| 43 | -] | ||
| 44 | - | ||
| 45 | -export default errorRouter |
yudao-ui-admin-vue3/src/router/modules/remaining.ts
| @@ -43,7 +43,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ | @@ -43,7 +43,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ | ||
| 43 | { | 43 | { |
| 44 | path: '/user', | 44 | path: '/user', |
| 45 | component: Layout, | 45 | component: Layout, |
| 46 | - name: 'User', | 46 | + name: 'UserInfo', |
| 47 | meta: { | 47 | meta: { |
| 48 | hidden: true | 48 | hidden: true |
| 49 | }, | 49 | }, |
| @@ -53,9 +53,10 @@ const remainingRouter: AppRouteRecordRaw[] = [ | @@ -53,9 +53,10 @@ const remainingRouter: AppRouteRecordRaw[] = [ | ||
| 53 | component: () => import('@/views/Profile/Index.vue'), | 53 | component: () => import('@/views/Profile/Index.vue'), |
| 54 | name: 'Profile', | 54 | name: 'Profile', |
| 55 | meta: { | 55 | meta: { |
| 56 | + canTo: true, | ||
| 56 | hidden: true, | 57 | hidden: true, |
| 58 | + noTagsView: true, | ||
| 57 | icon: 'ep:user', | 59 | icon: 'ep:user', |
| 58 | - canTo: true, | ||
| 59 | title: t('common.profile') | 60 | title: t('common.profile') |
| 60 | } | 61 | } |
| 61 | } | 62 | } |
| @@ -64,7 +65,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ | @@ -64,7 +65,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ | ||
| 64 | { | 65 | { |
| 65 | path: '/codegen', | 66 | path: '/codegen', |
| 66 | component: Layout, | 67 | component: Layout, |
| 67 | - name: 'Codegen', | 68 | + name: 'CodegenEdit', |
| 68 | meta: { | 69 | meta: { |
| 69 | hidden: true | 70 | hidden: true |
| 70 | }, | 71 | }, |
| @@ -74,7 +75,6 @@ const remainingRouter: AppRouteRecordRaw[] = [ | @@ -74,7 +75,6 @@ const remainingRouter: AppRouteRecordRaw[] = [ | ||
| 74 | component: () => import('@/views/infra/codegen/EditTable.vue'), | 75 | component: () => import('@/views/infra/codegen/EditTable.vue'), |
| 75 | name: 'EditTable', | 76 | name: 'EditTable', |
| 76 | meta: { | 77 | meta: { |
| 77 | - noTagsView: true, | ||
| 78 | noCache: true, | 78 | noCache: true, |
| 79 | hidden: true, | 79 | hidden: true, |
| 80 | canTo: true, | 80 | canTo: true, |
| @@ -88,7 +88,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ | @@ -88,7 +88,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ | ||
| 88 | { | 88 | { |
| 89 | path: '/job', | 89 | path: '/job', |
| 90 | component: Layout, | 90 | component: Layout, |
| 91 | - name: 'Job', | 91 | + name: 'JobL', |
| 92 | meta: { | 92 | meta: { |
| 93 | hidden: true | 93 | hidden: true |
| 94 | }, | 94 | }, |
| @@ -98,7 +98,6 @@ const remainingRouter: AppRouteRecordRaw[] = [ | @@ -98,7 +98,6 @@ const remainingRouter: AppRouteRecordRaw[] = [ | ||
| 98 | component: () => import('@/views/infra/job/JobLog.vue'), | 98 | component: () => import('@/views/infra/job/JobLog.vue'), |
| 99 | name: 'JobLog', | 99 | name: 'JobLog', |
| 100 | meta: { | 100 | meta: { |
| 101 | - noTagsView: true, | ||
| 102 | noCache: true, | 101 | noCache: true, |
| 103 | hidden: true, | 102 | hidden: true, |
| 104 | canTo: true, | 103 | canTo: true, |
yudao-ui-admin-vue3/src/views/Login/Login.vue
| 1 | <script setup lang="ts"> | 1 | <script setup lang="ts"> |
| 2 | -import { LoginForm } from './components' | ||
| 3 | -import { MobileForm } from './components' | 2 | +import { LoginForm, MobileForm, RegisterForm, QrCodeForm } from './components' |
| 4 | import { ThemeSwitch } from '@/components/ThemeSwitch' | 3 | import { ThemeSwitch } from '@/components/ThemeSwitch' |
| 5 | import { LocaleDropdown } from '@/components/LocaleDropdown' | 4 | import { LocaleDropdown } from '@/components/LocaleDropdown' |
| 6 | import { useI18n } from '@/hooks/web/useI18n' | 5 | import { useI18n } from '@/hooks/web/useI18n' |
| @@ -8,13 +7,13 @@ import { underlineToHump } from '@/utils' | @@ -8,13 +7,13 @@ import { underlineToHump } from '@/utils' | ||
| 8 | import { useAppStore } from '@/store/modules/app' | 7 | import { useAppStore } from '@/store/modules/app' |
| 9 | import { useDesign } from '@/hooks/web/useDesign' | 8 | import { useDesign } from '@/hooks/web/useDesign' |
| 10 | 9 | ||
| 10 | +const { t } = useI18n() | ||
| 11 | + | ||
| 11 | const { getPrefixCls } = useDesign() | 12 | const { getPrefixCls } = useDesign() |
| 12 | 13 | ||
| 13 | const prefixCls = getPrefixCls('login') | 14 | const prefixCls = getPrefixCls('login') |
| 14 | 15 | ||
| 15 | const appStore = useAppStore() | 16 | const appStore = useAppStore() |
| 16 | - | ||
| 17 | -const { t } = useI18n() | ||
| 18 | </script> | 17 | </script> |
| 19 | 18 | ||
| 20 | <template> | 19 | <template> |
| @@ -67,6 +66,10 @@ const { t } = useI18n() | @@ -67,6 +66,10 @@ const { t } = useI18n() | ||
| 67 | <LoginForm class="p-20px h-auto m-auto <xl:(rounded-3xl light:bg-white)" /> | 66 | <LoginForm class="p-20px h-auto m-auto <xl:(rounded-3xl light:bg-white)" /> |
| 68 | <!-- 手机登录 --> | 67 | <!-- 手机登录 --> |
| 69 | <MobileForm class="p-20px h-auto m-auto <xl:(rounded-3xl light:bg-white)" /> | 68 | <MobileForm class="p-20px h-auto m-auto <xl:(rounded-3xl light:bg-white)" /> |
| 69 | + <!-- 二维码登录 --> | ||
| 70 | + <QrCodeForm class="p-20px h-auto m-auto <xl:(rounded-3xl light:bg-white)" /> | ||
| 71 | + <!-- 注册 --> | ||
| 72 | + <RegisterForm class="p-20px h-auto m-auto <xl:(rounded-3xl light:bg-white)" /> | ||
| 70 | </div> | 73 | </div> |
| 71 | </Transition> | 74 | </Transition> |
| 72 | </div> | 75 | </div> |
yudao-ui-admin-vue3/src/views/Login/components/LoginForm.vue
| @@ -13,7 +13,14 @@ import { | @@ -13,7 +13,14 @@ import { | ||
| 13 | } from 'element-plus' | 13 | } from 'element-plus' |
| 14 | import { reactive, ref, unref, onMounted, computed, watch } from 'vue' | 14 | import { reactive, ref, unref, onMounted, computed, watch } from 'vue' |
| 15 | import * as LoginApi from '@/api/login' | 15 | import * as LoginApi from '@/api/login' |
| 16 | -import { setToken, setTenantId } from '@/utils/auth' | 16 | +import { |
| 17 | + setToken, | ||
| 18 | + setTenantId, | ||
| 19 | + getUsername, | ||
| 20 | + getRememberMe, | ||
| 21 | + getPassword, | ||
| 22 | + getTenantName | ||
| 23 | +} from '@/utils/auth' | ||
| 17 | import { useUserStoreWithOut } from '@/store/modules/user' | 24 | import { useUserStoreWithOut } from '@/store/modules/user' |
| 18 | import { useCache } from '@/hooks/web/useCache' | 25 | import { useCache } from '@/hooks/web/useCache' |
| 19 | import { usePermissionStore } from '@/store/modules/permission' | 26 | import { usePermissionStore } from '@/store/modules/permission' |
| @@ -40,7 +47,6 @@ const iconHouse = useIcon({ icon: 'ep:house' }) | @@ -40,7 +47,6 @@ const iconHouse = useIcon({ icon: 'ep:house' }) | ||
| 40 | const iconAvatar = useIcon({ icon: 'ep:avatar' }) | 47 | const iconAvatar = useIcon({ icon: 'ep:avatar' }) |
| 41 | const iconLock = useIcon({ icon: 'ep:lock' }) | 48 | const iconLock = useIcon({ icon: 'ep:lock' }) |
| 42 | const iconCircleCheck = useIcon({ icon: 'ep:circle-check' }) | 49 | const iconCircleCheck = useIcon({ icon: 'ep:circle-check' }) |
| 43 | -const remember = ref(false) | ||
| 44 | const LoginRules = { | 50 | const LoginRules = { |
| 45 | tenantName: [required], | 51 | tenantName: [required], |
| 46 | username: [required], | 52 | username: [required], |
| @@ -61,6 +67,7 @@ const loginData = reactive({ | @@ -61,6 +67,7 @@ const loginData = reactive({ | ||
| 61 | tenantName: '芋道源码', | 67 | tenantName: '芋道源码', |
| 62 | username: 'admin', | 68 | username: 'admin', |
| 63 | password: 'admin123', | 69 | password: 'admin123', |
| 70 | + rememberMe: false, | ||
| 64 | code: '', | 71 | code: '', |
| 65 | uuid: '' | 72 | uuid: '' |
| 66 | } | 73 | } |
| @@ -77,6 +84,20 @@ const getTenantId = async () => { | @@ -77,6 +84,20 @@ const getTenantId = async () => { | ||
| 77 | const res = await LoginApi.getTenantIdByNameApi(loginData.loginForm.tenantName) | 84 | const res = await LoginApi.getTenantIdByNameApi(loginData.loginForm.tenantName) |
| 78 | setTenantId(res) | 85 | setTenantId(res) |
| 79 | } | 86 | } |
| 87 | +// 记住我 | ||
| 88 | +const getCookie = () => { | ||
| 89 | + const username = getUsername() | ||
| 90 | + const password = getPassword() | ||
| 91 | + const rememberMe = getRememberMe() | ||
| 92 | + const tenantName = getTenantName() | ||
| 93 | + loginData.loginForm = { | ||
| 94 | + ...loginData.loginForm, | ||
| 95 | + username: username ? username : loginData.loginForm.username, | ||
| 96 | + password: password ? password : loginData.loginForm.password, | ||
| 97 | + rememberMe: rememberMe ? getRememberMe() : false, | ||
| 98 | + tenantName: tenantName ? tenantName : loginData.loginForm.tenantName | ||
| 99 | + } | ||
| 100 | +} | ||
| 80 | // 登录 | 101 | // 登录 |
| 81 | const handleLogin = async () => { | 102 | const handleLogin = async () => { |
| 82 | await getTenantId() | 103 | await getTenantId() |
| @@ -103,14 +124,13 @@ const getRoutes = async () => { | @@ -103,14 +124,13 @@ const getRoutes = async () => { | ||
| 103 | // 后端过滤菜单 | 124 | // 后端过滤菜单 |
| 104 | const res = await LoginApi.getAsyncRoutesApi() | 125 | const res = await LoginApi.getAsyncRoutesApi() |
| 105 | wsCache.set('roleRouters', res) | 126 | wsCache.set('roleRouters', res) |
| 106 | - await permissionStore.generateRoutes(res).catch(() => {}) | 127 | + await permissionStore.generateRoutes(res) |
| 107 | permissionStore.getAddRouters.forEach((route) => { | 128 | permissionStore.getAddRouters.forEach((route) => { |
| 108 | addRoute(route as RouteRecordRaw) // 动态添加可访问路由表 | 129 | addRoute(route as RouteRecordRaw) // 动态添加可访问路由表 |
| 109 | }) | 130 | }) |
| 110 | permissionStore.setIsAddRouters(true) | 131 | permissionStore.setIsAddRouters(true) |
| 111 | push({ path: redirect.value || permissionStore.addRouters[0].path }) | 132 | push({ path: redirect.value || permissionStore.addRouters[0].path }) |
| 112 | } | 133 | } |
| 113 | - | ||
| 114 | watch( | 134 | watch( |
| 115 | () => currentRoute.value, | 135 | () => currentRoute.value, |
| 116 | (route: RouteLocationNormalizedLoaded) => { | 136 | (route: RouteLocationNormalizedLoaded) => { |
| @@ -120,8 +140,9 @@ watch( | @@ -120,8 +140,9 @@ watch( | ||
| 120 | immediate: true | 140 | immediate: true |
| 121 | } | 141 | } |
| 122 | ) | 142 | ) |
| 123 | -onMounted(() => { | ||
| 124 | - getCode() | 143 | +onMounted(async () => { |
| 144 | + await getCode() | ||
| 145 | + getCookie() | ||
| 125 | }) | 146 | }) |
| 126 | </script> | 147 | </script> |
| 127 | <template> | 148 | <template> |
| @@ -165,7 +186,7 @@ onMounted(() => { | @@ -165,7 +186,7 @@ onMounted(() => { | ||
| 165 | <el-input | 186 | <el-input |
| 166 | v-model="loginData.loginForm.password" | 187 | v-model="loginData.loginForm.password" |
| 167 | type="password" | 188 | type="password" |
| 168 | - :placeholder="t('login.password')" | 189 | + :placeholder="t('login.passwordPlaceholder')" |
| 169 | show-password | 190 | show-password |
| 170 | @keyup.enter="handleLogin" | 191 | @keyup.enter="handleLogin" |
| 171 | :prefix-icon="iconLock" | 192 | :prefix-icon="iconLock" |
| @@ -178,7 +199,7 @@ onMounted(() => { | @@ -178,7 +199,7 @@ onMounted(() => { | ||
| 178 | <el-col :span="14"> | 199 | <el-col :span="14"> |
| 179 | <el-input | 200 | <el-input |
| 180 | v-model="loginData.loginForm.code" | 201 | v-model="loginData.loginForm.code" |
| 181 | - :placeholder="t('login.code')" | 202 | + :placeholder="t('login.codePlaceholder')" |
| 182 | @keyup.enter="handleLogin" | 203 | @keyup.enter="handleLogin" |
| 183 | :prefix-icon="iconCircleCheck" | 204 | :prefix-icon="iconCircleCheck" |
| 184 | style="width: 90%" | 205 | style="width: 90%" |
| @@ -199,7 +220,9 @@ onMounted(() => { | @@ -199,7 +220,9 @@ onMounted(() => { | ||
| 199 | <el-form-item> | 220 | <el-form-item> |
| 200 | <el-row justify="space-between" style="width: 100%"> | 221 | <el-row justify="space-between" style="width: 100%"> |
| 201 | <el-col :span="6"> | 222 | <el-col :span="6"> |
| 202 | - <el-checkbox v-model="remember">{{ t('login.remember') }}</el-checkbox> | 223 | + <el-checkbox v-model="loginData.loginForm.rememberMe"> |
| 224 | + {{ t('login.remember') }} | ||
| 225 | + </el-checkbox> | ||
| 203 | </el-col> | 226 | </el-col> |
| 204 | <el-col :span="12" :offset="6"> | 227 | <el-col :span="12" :offset="6"> |
| 205 | <el-link type="primary" style="float: right">{{ t('login.forgetPassword') }}</el-link> | 228 | <el-link type="primary" style="float: right">{{ t('login.forgetPassword') }}</el-link> |
| @@ -209,24 +232,28 @@ onMounted(() => { | @@ -209,24 +232,28 @@ onMounted(() => { | ||
| 209 | </el-col> | 232 | </el-col> |
| 210 | <el-col :span="24" style="padding-left: 10px; padding-right: 10px"> | 233 | <el-col :span="24" style="padding-left: 10px; padding-right: 10px"> |
| 211 | <el-form-item> | 234 | <el-form-item> |
| 212 | - <el-button :loading="loginLoading" type="primary" class="w-[100%]" @click="handleLogin">{{ | ||
| 213 | - t('login.login') | ||
| 214 | - }}</el-button> | 235 | + <el-button :loading="loginLoading" type="primary" class="w-[100%]" @click="handleLogin"> |
| 236 | + {{ t('login.login') }} | ||
| 237 | + </el-button> | ||
| 215 | </el-form-item> | 238 | </el-form-item> |
| 216 | </el-col> | 239 | </el-col> |
| 217 | <el-col :span="24" style="padding-left: 10px; padding-right: 10px"> | 240 | <el-col :span="24" style="padding-left: 10px; padding-right: 10px"> |
| 218 | <el-form-item> | 241 | <el-form-item> |
| 219 | <el-row justify="space-between" style="width: 100%" :gutter="5"> | 242 | <el-row justify="space-between" style="width: 100%" :gutter="5"> |
| 220 | <el-col :span="8"> | 243 | <el-col :span="8"> |
| 221 | - <el-button class="w-[100%]" @click="setLoginState(LoginStateEnum.MOBILE)">{{ | ||
| 222 | - t('login.btnMobile') | ||
| 223 | - }}</el-button> | 244 | + <el-button class="w-[100%]" @click="setLoginState(LoginStateEnum.MOBILE)"> |
| 245 | + {{ t('login.btnMobile') }} | ||
| 246 | + </el-button> | ||
| 224 | </el-col> | 247 | </el-col> |
| 225 | <el-col :span="8"> | 248 | <el-col :span="8"> |
| 226 | - <el-button class="w-[100%]">{{ t('login.btnQRCode') }}</el-button> | 249 | + <el-button class="w-[100%]" @click="setLoginState(LoginStateEnum.QR_CODE)"> |
| 250 | + {{ t('login.btnQRCode') }} | ||
| 251 | + </el-button> | ||
| 227 | </el-col> | 252 | </el-col> |
| 228 | <el-col :span="8"> | 253 | <el-col :span="8"> |
| 229 | - <el-button class="w-[100%]">{{ t('login.btnRegister') }}</el-button> | 254 | + <el-button class="w-[100%]" @click="setLoginState(LoginStateEnum.REGISTER)"> |
| 255 | + {{ t('login.btnRegister') }} | ||
| 256 | + </el-button> | ||
| 230 | </el-col> | 257 | </el-col> |
| 231 | </el-row> | 258 | </el-row> |
| 232 | </el-form-item> | 259 | </el-form-item> |
| @@ -254,7 +281,7 @@ onMounted(() => { | @@ -254,7 +281,7 @@ onMounted(() => { | ||
| 254 | class="cursor-pointer anticon" | 281 | class="cursor-pointer anticon" |
| 255 | /> | 282 | /> |
| 256 | <Icon | 283 | <Icon |
| 257 | - icon="ant-design:weibo-circle-filled" | 284 | + icon="ant-design:dingtalk-circle-filled" |
| 258 | :size="iconSize" | 285 | :size="iconSize" |
| 259 | :color="iconColor" | 286 | :color="iconColor" |
| 260 | class="cursor-pointer anticon" | 287 | class="cursor-pointer anticon" |
| @@ -266,6 +293,11 @@ onMounted(() => { | @@ -266,6 +293,11 @@ onMounted(() => { | ||
| 266 | </el-form> | 293 | </el-form> |
| 267 | </template> | 294 | </template> |
| 268 | <style lang="less" scoped> | 295 | <style lang="less" scoped> |
| 296 | +:deep(.anticon) { | ||
| 297 | + &:hover { | ||
| 298 | + color: var(--el-color-primary) !important; | ||
| 299 | + } | ||
| 300 | +} | ||
| 269 | .login-code { | 301 | .login-code { |
| 270 | width: 100%; | 302 | width: 100%; |
| 271 | height: 38px; | 303 | height: 38px; |
yudao-ui-admin-vue3/src/views/Login/components/MobileForm.vue
| @@ -67,27 +67,21 @@ const redirect = ref<string>('') | @@ -67,27 +67,21 @@ const redirect = ref<string>('') | ||
| 67 | const getSmsCode = async () => { | 67 | const getSmsCode = async () => { |
| 68 | await getTenantId() | 68 | await getTenantId() |
| 69 | smsVO.smsCode.mobile = loginData.loginForm.mobileNumber | 69 | smsVO.smsCode.mobile = loginData.loginForm.mobileNumber |
| 70 | - console.log('getSmsCode begin:', smsVO.smsCode) | ||
| 71 | - await sendSmsCodeApi(smsVO.smsCode) | ||
| 72 | - .then(async (res) => { | ||
| 73 | - // 提示验证码发送成功 | ||
| 74 | - ElMessage({ | ||
| 75 | - type: 'success', | ||
| 76 | - message: t('login.SmsSendMsg') | ||
| 77 | - }) | ||
| 78 | - console.log('res', res) | ||
| 79 | - // 设置倒计时 | ||
| 80 | - mobileCodeTimer.value = 60 | ||
| 81 | - let msgTimer = setInterval(() => { | ||
| 82 | - mobileCodeTimer.value = mobileCodeTimer.value - 1 | ||
| 83 | - if (mobileCodeTimer.value <= 0) { | ||
| 84 | - clearInterval(msgTimer) | ||
| 85 | - } | ||
| 86 | - }, 1000) | ||
| 87 | - }) | ||
| 88 | - .catch(() => { | ||
| 89 | - console.log('error') | 70 | + await sendSmsCodeApi(smsVO.smsCode).then(async () => { |
| 71 | + // 提示验证码发送成功 | ||
| 72 | + ElMessage({ | ||
| 73 | + type: 'success', | ||
| 74 | + message: t('login.SmsSendMsg') | ||
| 90 | }) | 75 | }) |
| 76 | + // 设置倒计时 | ||
| 77 | + mobileCodeTimer.value = 60 | ||
| 78 | + let msgTimer = setInterval(() => { | ||
| 79 | + mobileCodeTimer.value = mobileCodeTimer.value - 1 | ||
| 80 | + if (mobileCodeTimer.value <= 0) { | ||
| 81 | + clearInterval(msgTimer) | ||
| 82 | + } | ||
| 83 | + }, 1000) | ||
| 84 | + }) | ||
| 91 | } | 85 | } |
| 92 | watch( | 86 | watch( |
| 93 | () => currentRoute.value, | 87 | () => currentRoute.value, |
| @@ -126,7 +120,6 @@ const signIn = async () => { | @@ -126,7 +120,6 @@ const signIn = async () => { | ||
| 126 | // 获取路由 | 120 | // 获取路由 |
| 127 | const getRoutes = async () => { | 121 | const getRoutes = async () => { |
| 128 | // 后端过滤菜单 | 122 | // 后端过滤菜单 |
| 129 | - // TODO @jinz:这块 getRoutes 的代码,是不是可以统一到 store 里,类似 ruoyi-vue 的做法,可能要找作者沟通下 | ||
| 130 | const routers = await getAsyncRoutesApi() | 123 | const routers = await getAsyncRoutesApi() |
| 131 | wsCache.set('roleRouters', routers) | 124 | wsCache.set('roleRouters', routers) |
| 132 | await permissionStore.generateRoutes(routers).catch(() => {}) | 125 | await permissionStore.generateRoutes(routers).catch(() => {}) |
yudao-ui-admin-vue3/src/views/Login/components/QrCodeForm.vue
0 → 100644
| 1 | +<script setup lang="ts"> | ||
| 2 | +import { computed, unref } from 'vue' | ||
| 3 | +import { ElRow, ElCol, ElCard, ElDivider } from 'element-plus' | ||
| 4 | +import { useI18n } from '@/hooks/web/useI18n' | ||
| 5 | +import { useLoginState, LoginStateEnum } from './useLogin' | ||
| 6 | +import LoginFormTitle from './LoginFormTitle.vue' | ||
| 7 | +import { Qrcode } from '@/components/Qrcode' | ||
| 8 | +import logoImg from '@/assets/imgs/logo.png' | ||
| 9 | + | ||
| 10 | +const { t } = useI18n() | ||
| 11 | +const { handleBackLogin, getLoginState } = useLoginState() | ||
| 12 | +const getShow = computed(() => unref(getLoginState) === LoginStateEnum.QR_CODE) | ||
| 13 | +</script> | ||
| 14 | + | ||
| 15 | +<template> | ||
| 16 | + <el-row v-show="getShow" style="maring-left: -10px; maring-right: -10px"> | ||
| 17 | + <el-col :span="24" style="padding-left: 10px; padding-right: 10px"> | ||
| 18 | + <LoginFormTitle style="width: 100%" /> | ||
| 19 | + </el-col> | ||
| 20 | + <el-col :span="24" style="padding-left: 10px; padding-right: 10px"> | ||
| 21 | + <el-card shadow="hover" class="mb-10px text-center"> | ||
| 22 | + <Qrcode :logo="logoImg" /> | ||
| 23 | + </el-card> | ||
| 24 | + </el-col> | ||
| 25 | + <el-divider class="enter-x">{{ t('login.qrcode') }}</el-divider> | ||
| 26 | + <el-col :span="24" style="padding-left: 10px; padding-right: 10px"> | ||
| 27 | + <div class="w-[100%] mt-15px"> | ||
| 28 | + <el-button class="w-[100%]" @click="handleBackLogin"> | ||
| 29 | + {{ t('sys.login.backSignIn') }} | ||
| 30 | + </el-button> | ||
| 31 | + </div> | ||
| 32 | + </el-col> | ||
| 33 | + </el-row> | ||
| 34 | +</template> |
yudao-ui-admin-vue3/src/views/Login/components/RegisterForm.vue
0 → 100644
| 1 | +<script setup lang="ts"> | ||
| 2 | +import { Form } from '@/components/Form' | ||
| 3 | +import { computed, reactive, ref, unref } from 'vue' | ||
| 4 | +import { useI18n } from '@/hooks/web/useI18n' | ||
| 5 | +import { useForm } from '@/hooks/web/useForm' | ||
| 6 | +import { ElInput, FormRules } from 'element-plus' | ||
| 7 | +import { useValidator } from '@/hooks/web/useValidator' | ||
| 8 | +import { useLoginState, LoginStateEnum } from './useLogin' | ||
| 9 | +import LoginFormTitle from './LoginFormTitle.vue' | ||
| 10 | + | ||
| 11 | +const { register, elFormRef } = useForm() | ||
| 12 | +const { handleBackLogin, getLoginState } = useLoginState() | ||
| 13 | +const getShow = computed(() => unref(getLoginState) === LoginStateEnum.REGISTER) | ||
| 14 | +const { t } = useI18n() | ||
| 15 | + | ||
| 16 | +const { required } = useValidator() | ||
| 17 | + | ||
| 18 | +const schema = reactive<FormSchema[]>([ | ||
| 19 | + { | ||
| 20 | + field: 'title', | ||
| 21 | + colProps: { | ||
| 22 | + span: 24 | ||
| 23 | + } | ||
| 24 | + }, | ||
| 25 | + { | ||
| 26 | + field: 'username', | ||
| 27 | + label: t('login.username'), | ||
| 28 | + value: '', | ||
| 29 | + component: 'Input', | ||
| 30 | + colProps: { | ||
| 31 | + span: 24 | ||
| 32 | + }, | ||
| 33 | + componentProps: { | ||
| 34 | + placeholder: t('login.usernamePlaceholder') | ||
| 35 | + } | ||
| 36 | + }, | ||
| 37 | + { | ||
| 38 | + field: 'password', | ||
| 39 | + label: t('login.password'), | ||
| 40 | + value: '', | ||
| 41 | + component: 'InputPassword', | ||
| 42 | + colProps: { | ||
| 43 | + span: 24 | ||
| 44 | + }, | ||
| 45 | + componentProps: { | ||
| 46 | + style: { | ||
| 47 | + width: '100%' | ||
| 48 | + }, | ||
| 49 | + strength: true, | ||
| 50 | + placeholder: t('login.passwordPlaceholder') | ||
| 51 | + } | ||
| 52 | + }, | ||
| 53 | + { | ||
| 54 | + field: 'check_password', | ||
| 55 | + label: t('login.checkPassword'), | ||
| 56 | + value: '', | ||
| 57 | + component: 'InputPassword', | ||
| 58 | + colProps: { | ||
| 59 | + span: 24 | ||
| 60 | + }, | ||
| 61 | + componentProps: { | ||
| 62 | + style: { | ||
| 63 | + width: '100%' | ||
| 64 | + }, | ||
| 65 | + strength: true, | ||
| 66 | + placeholder: t('login.passwordPlaceholder') | ||
| 67 | + } | ||
| 68 | + }, | ||
| 69 | + { | ||
| 70 | + field: 'code', | ||
| 71 | + label: t('login.code'), | ||
| 72 | + colProps: { | ||
| 73 | + span: 24 | ||
| 74 | + } | ||
| 75 | + }, | ||
| 76 | + { | ||
| 77 | + field: 'register', | ||
| 78 | + colProps: { | ||
| 79 | + span: 24 | ||
| 80 | + } | ||
| 81 | + } | ||
| 82 | +]) | ||
| 83 | + | ||
| 84 | +const rules: FormRules = { | ||
| 85 | + username: [required()], | ||
| 86 | + password: [required()], | ||
| 87 | + check_password: [required()], | ||
| 88 | + code: [required()] | ||
| 89 | +} | ||
| 90 | + | ||
| 91 | +const loading = ref(false) | ||
| 92 | + | ||
| 93 | +const loginRegister = async () => { | ||
| 94 | + const formRef = unref(elFormRef) | ||
| 95 | + formRef?.validate(async (valid) => { | ||
| 96 | + if (valid) { | ||
| 97 | + try { | ||
| 98 | + loading.value = true | ||
| 99 | + } finally { | ||
| 100 | + loading.value = false | ||
| 101 | + } | ||
| 102 | + } | ||
| 103 | + }) | ||
| 104 | +} | ||
| 105 | +</script> | ||
| 106 | + | ||
| 107 | +<template> | ||
| 108 | + <Form | ||
| 109 | + :schema="schema" | ||
| 110 | + :rules="rules" | ||
| 111 | + label-position="top" | ||
| 112 | + hide-required-asterisk | ||
| 113 | + size="large" | ||
| 114 | + v-show="getShow" | ||
| 115 | + class="dark:(border-1 border-[var(--el-border-color)] border-solid)" | ||
| 116 | + @register="register" | ||
| 117 | + > | ||
| 118 | + <template #title> | ||
| 119 | + <LoginFormTitle style="width: 100%" /> | ||
| 120 | + </template> | ||
| 121 | + | ||
| 122 | + <template #code="form"> | ||
| 123 | + <div class="w-[100%] flex"> | ||
| 124 | + <el-input v-model="form['code']" :placeholder="t('login.codePlaceholder')" /> | ||
| 125 | + </div> | ||
| 126 | + </template> | ||
| 127 | + | ||
| 128 | + <template #register> | ||
| 129 | + <div class="w-[100%]"> | ||
| 130 | + <el-button type="primary" class="w-[100%]" :loading="loading" @click="loginRegister"> | ||
| 131 | + {{ t('login.register') }} | ||
| 132 | + </el-button> | ||
| 133 | + </div> | ||
| 134 | + <div class="w-[100%] mt-15px"> | ||
| 135 | + <el-button class="w-[100%]" @click="handleBackLogin"> | ||
| 136 | + {{ t('login.hasUser') }} | ||
| 137 | + </el-button> | ||
| 138 | + </div> | ||
| 139 | + </template> | ||
| 140 | + </Form> | ||
| 141 | +</template> |
yudao-ui-admin-vue3/src/views/Login/components/index.ts
| 1 | import LoginForm from './LoginForm.vue' | 1 | import LoginForm from './LoginForm.vue' |
| 2 | import MobileForm from './MobileForm.vue' | 2 | import MobileForm from './MobileForm.vue' |
| 3 | import LoginFormTitle from './LoginFormTitle.vue' | 3 | import LoginFormTitle from './LoginFormTitle.vue' |
| 4 | +import RegisterForm from './RegisterForm.vue' | ||
| 5 | +import QrCodeForm from './QrCodeForm.vue' | ||
| 4 | 6 | ||
| 5 | -export { LoginForm, MobileForm, LoginFormTitle } | 7 | +export { LoginForm, MobileForm, LoginFormTitle, RegisterForm, QrCodeForm } |
yudao-ui-admin-vue3/src/views/infra/apiAccessLog/index.vue
| @@ -69,7 +69,7 @@ getList() | @@ -69,7 +69,7 @@ getList() | ||
| 69 | v-hasPermi="['infra:api-access-log:query']" | 69 | v-hasPermi="['infra:api-access-log:query']" |
| 70 | @click="handleDetail(row)" | 70 | @click="handleDetail(row)" |
| 71 | > | 71 | > |
| 72 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 72 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 73 | </el-button> | 73 | </el-button> |
| 74 | </template> | 74 | </template> |
| 75 | </Table> | 75 | </Table> |
yudao-ui-admin-vue3/src/views/infra/apiErrorLog/index.vue
| @@ -96,7 +96,7 @@ getList() | @@ -96,7 +96,7 @@ getList() | ||
| 96 | v-hasPermi="['infra:api-error-log:export']" | 96 | v-hasPermi="['infra:api-error-log:export']" |
| 97 | @click="handleDetail(row)" | 97 | @click="handleDetail(row)" |
| 98 | > | 98 | > |
| 99 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 99 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 100 | </el-button> | 100 | </el-button> |
| 101 | <el-button | 101 | <el-button |
| 102 | link | 102 | link |
| @@ -105,7 +105,7 @@ getList() | @@ -105,7 +105,7 @@ getList() | ||
| 105 | v-hasPermi="['infra:api-error-log:update-status']" | 105 | v-hasPermi="['infra:api-error-log:update-status']" |
| 106 | @click="handleProcessClick(row, InfraApiErrorLogProcessStatusEnum.DONE, '已处理')" | 106 | @click="handleProcessClick(row, InfraApiErrorLogProcessStatusEnum.DONE, '已处理')" |
| 107 | > | 107 | > |
| 108 | - <Icon icon="ep:cpu" class="mr-5px" /> 已处理 | 108 | + <Icon icon="ep:cpu" class="mr-1px" /> 已处理 |
| 109 | </el-button> | 109 | </el-button> |
| 110 | <el-button | 110 | <el-button |
| 111 | link | 111 | link |
| @@ -114,7 +114,7 @@ getList() | @@ -114,7 +114,7 @@ getList() | ||
| 114 | v-hasPermi="['infra:api-error-log:update-status']" | 114 | v-hasPermi="['infra:api-error-log:update-status']" |
| 115 | @click="handleProcessClick(row, InfraApiErrorLogProcessStatusEnum.IGNORE, '已忽略')" | 115 | @click="handleProcessClick(row, InfraApiErrorLogProcessStatusEnum.IGNORE, '已忽略')" |
| 116 | > | 116 | > |
| 117 | - <Icon icon="ep:mute-notification" class="mr-5px" /> 已忽略 | 117 | + <Icon icon="ep:mute-notification" class="mr-1px" /> 已忽略 |
| 118 | </el-button> | 118 | </el-button> |
| 119 | </template> | 119 | </template> |
| 120 | </Table> | 120 | </Table> |
yudao-ui-admin-vue3/src/views/infra/codegen/index.vue
| @@ -100,7 +100,7 @@ getList() | @@ -100,7 +100,7 @@ getList() | ||
| 100 | v-hasPermi="['infra:codegen:preview']" | 100 | v-hasPermi="['infra:codegen:preview']" |
| 101 | @click="handlePreview(row)" | 101 | @click="handlePreview(row)" |
| 102 | > | 102 | > |
| 103 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.preview') }} | 103 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.preview') }} |
| 104 | </el-button> | 104 | </el-button> |
| 105 | <el-button | 105 | <el-button |
| 106 | link | 106 | link |
| @@ -108,7 +108,7 @@ getList() | @@ -108,7 +108,7 @@ getList() | ||
| 108 | v-hasPermi="['infra:codegen:update']" | 108 | v-hasPermi="['infra:codegen:update']" |
| 109 | @click="handleEditTable(row)" | 109 | @click="handleEditTable(row)" |
| 110 | > | 110 | > |
| 111 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 111 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 112 | </el-button> | 112 | </el-button> |
| 113 | <el-button | 113 | <el-button |
| 114 | link | 114 | link |
| @@ -116,7 +116,7 @@ getList() | @@ -116,7 +116,7 @@ getList() | ||
| 116 | v-hasPermi="['infra:codegen:delete']" | 116 | v-hasPermi="['infra:codegen:delete']" |
| 117 | @click="handleDelete(row)" | 117 | @click="handleDelete(row)" |
| 118 | > | 118 | > |
| 119 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 119 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 120 | </el-button> | 120 | </el-button> |
| 121 | <el-button | 121 | <el-button |
| 122 | link | 122 | link |
| @@ -124,7 +124,7 @@ getList() | @@ -124,7 +124,7 @@ getList() | ||
| 124 | v-hasPermi="['infra:codegen:update']" | 124 | v-hasPermi="['infra:codegen:update']" |
| 125 | @click="handleSynchDb(row)" | 125 | @click="handleSynchDb(row)" |
| 126 | > | 126 | > |
| 127 | - <Icon icon="ep:refresh" class="mr-5px" /> {{ t('action.sync') }} | 127 | + <Icon icon="ep:refresh" class="mr-1px" /> {{ t('action.sync') }} |
| 128 | </el-button> | 128 | </el-button> |
| 129 | <el-button | 129 | <el-button |
| 130 | link | 130 | link |
| @@ -132,7 +132,7 @@ getList() | @@ -132,7 +132,7 @@ getList() | ||
| 132 | v-hasPermi="['infra:codegen:download']" | 132 | v-hasPermi="['infra:codegen:download']" |
| 133 | @click="handleGenTable(row)" | 133 | @click="handleGenTable(row)" |
| 134 | > | 134 | > |
| 135 | - <Icon icon="ep:download" class="mr-5px" /> {{ t('action.generate') }} | 135 | + <Icon icon="ep:download" class="mr-1px" /> {{ t('action.generate') }} |
| 136 | </el-button> | 136 | </el-button> |
| 137 | </template> | 137 | </template> |
| 138 | </Table> | 138 | </Table> |
yudao-ui-admin-vue3/src/views/infra/config/index.vue
| @@ -142,7 +142,7 @@ getList() | @@ -142,7 +142,7 @@ getList() | ||
| 142 | v-hasPermi="['infra:config:update']" | 142 | v-hasPermi="['infra:config:update']" |
| 143 | @click="handleUpdate(row)" | 143 | @click="handleUpdate(row)" |
| 144 | > | 144 | > |
| 145 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 145 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 146 | </el-button> | 146 | </el-button> |
| 147 | <el-button | 147 | <el-button |
| 148 | link | 148 | link |
| @@ -150,7 +150,7 @@ getList() | @@ -150,7 +150,7 @@ getList() | ||
| 150 | v-hasPermi="['infra:config:update']" | 150 | v-hasPermi="['infra:config:update']" |
| 151 | @click="handleDetail(row)" | 151 | @click="handleDetail(row)" |
| 152 | > | 152 | > |
| 153 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 153 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 154 | </el-button> | 154 | </el-button> |
| 155 | <el-button | 155 | <el-button |
| 156 | link | 156 | link |
| @@ -158,7 +158,7 @@ getList() | @@ -158,7 +158,7 @@ getList() | ||
| 158 | v-hasPermi="['infra:config:delete']" | 158 | v-hasPermi="['infra:config:delete']" |
| 159 | @click="handleDelete(row)" | 159 | @click="handleDelete(row)" |
| 160 | > | 160 | > |
| 161 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 161 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 162 | </el-button> | 162 | </el-button> |
| 163 | </template> | 163 | </template> |
| 164 | </Table> | 164 | </Table> |
yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue
| @@ -106,7 +106,7 @@ onMounted(async () => { | @@ -106,7 +106,7 @@ onMounted(async () => { | ||
| 106 | v-hasPermi="['infra:data-source-config:update']" | 106 | v-hasPermi="['infra:data-source-config:update']" |
| 107 | @click="handleUpdate(row)" | 107 | @click="handleUpdate(row)" |
| 108 | > | 108 | > |
| 109 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 109 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 110 | </el-button> | 110 | </el-button> |
| 111 | <el-button | 111 | <el-button |
| 112 | link | 112 | link |
| @@ -114,7 +114,7 @@ onMounted(async () => { | @@ -114,7 +114,7 @@ onMounted(async () => { | ||
| 114 | v-hasPermi="['infra:data-source-config:update']" | 114 | v-hasPermi="['infra:data-source-config:update']" |
| 115 | @click="handleDetail(row)" | 115 | @click="handleDetail(row)" |
| 116 | > | 116 | > |
| 117 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 117 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 118 | </el-button> | 118 | </el-button> |
| 119 | <el-button | 119 | <el-button |
| 120 | link | 120 | link |
| @@ -122,7 +122,7 @@ onMounted(async () => { | @@ -122,7 +122,7 @@ onMounted(async () => { | ||
| 122 | v-hasPermi="['infra:data-source-config:delete']" | 122 | v-hasPermi="['infra:data-source-config:delete']" |
| 123 | @click="handleDelete(row)" | 123 | @click="handleDelete(row)" |
| 124 | > | 124 | > |
| 125 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 125 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 126 | </el-button> | 126 | </el-button> |
| 127 | </template> | 127 | </template> |
| 128 | </Table> | 128 | </Table> |
yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue
| @@ -142,7 +142,7 @@ getList() | @@ -142,7 +142,7 @@ getList() | ||
| 142 | v-hasPermi="['infra:file-config:update']" | 142 | v-hasPermi="['infra:file-config:update']" |
| 143 | @click="handleUpdate(row)" | 143 | @click="handleUpdate(row)" |
| 144 | > | 144 | > |
| 145 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 145 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 146 | </el-button> | 146 | </el-button> |
| 147 | <el-button | 147 | <el-button |
| 148 | link | 148 | link |
| @@ -150,7 +150,7 @@ getList() | @@ -150,7 +150,7 @@ getList() | ||
| 150 | v-hasPermi="['infra:file-config:update']" | 150 | v-hasPermi="['infra:file-config:update']" |
| 151 | @click="handleDetail(row)" | 151 | @click="handleDetail(row)" |
| 152 | > | 152 | > |
| 153 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 153 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 154 | </el-button> | 154 | </el-button> |
| 155 | <el-button | 155 | <el-button |
| 156 | link | 156 | link |
| @@ -158,7 +158,7 @@ getList() | @@ -158,7 +158,7 @@ getList() | ||
| 158 | v-hasPermi="['infra:file-config:update']" | 158 | v-hasPermi="['infra:file-config:update']" |
| 159 | @click="handleMaster(row)" | 159 | @click="handleMaster(row)" |
| 160 | > | 160 | > |
| 161 | - <Icon icon="ep:flag" class="mr-5px" /> 主配置 | 161 | + <Icon icon="ep:flag" class="mr-1px" /> 主配置 |
| 162 | </el-button> | 162 | </el-button> |
| 163 | <el-button | 163 | <el-button |
| 164 | link | 164 | link |
| @@ -166,7 +166,7 @@ getList() | @@ -166,7 +166,7 @@ getList() | ||
| 166 | v-hasPermi="['infra:file-config:update']" | 166 | v-hasPermi="['infra:file-config:update']" |
| 167 | @click="handleUpdate(row)" | 167 | @click="handleUpdate(row)" |
| 168 | > | 168 | > |
| 169 | - <Icon icon="ep:share" class="mr-5px" /> {{ t('action.test') }} | 169 | + <Icon icon="ep:share" class="mr-1px" /> {{ t('action.test') }} |
| 170 | </el-button> | 170 | </el-button> |
| 171 | <el-button | 171 | <el-button |
| 172 | link | 172 | link |
| @@ -174,7 +174,7 @@ getList() | @@ -174,7 +174,7 @@ getList() | ||
| 174 | v-hasPermi="['infra:file-config:delete']" | 174 | v-hasPermi="['infra:file-config:delete']" |
| 175 | @click="handleDelete(row)" | 175 | @click="handleDelete(row)" |
| 176 | > | 176 | > |
| 177 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 177 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 178 | </el-button> | 178 | </el-button> |
| 179 | </template> | 179 | </template> |
| 180 | </Table> | 180 | </Table> |
yudao-ui-admin-vue3/src/views/infra/file/fileList.data.ts renamed to yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts
yudao-ui-admin-vue3/src/views/infra/file/index.vue renamed to yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
| @@ -4,11 +4,11 @@ import dayjs from 'dayjs' | @@ -4,11 +4,11 @@ import dayjs from 'dayjs' | ||
| 4 | import { ElMessage, ElUpload, UploadInstance, UploadRawFile, ElImage } from 'element-plus' | 4 | import { ElMessage, ElUpload, UploadInstance, UploadRawFile, ElImage } from 'element-plus' |
| 5 | import { useTable } from '@/hooks/web/useTable' | 5 | import { useTable } from '@/hooks/web/useTable' |
| 6 | import { useI18n } from '@/hooks/web/useI18n' | 6 | import { useI18n } from '@/hooks/web/useI18n' |
| 7 | -import type { FileVO } from '@/api/infra/file/types' | 7 | +import type { FileVO } from '@/api/infra/fileList/types' |
| 8 | import { allSchemas } from './fileList.data' | 8 | import { allSchemas } from './fileList.data' |
| 9 | -import * as FileApi from '@/api/infra/file' | ||
| 10 | -import { useCache } from '@/hooks/web/useCache' | ||
| 11 | -const { wsCache } = useCache() | 9 | +import * as FileApi from '@/api/infra/fileList' |
| 10 | +import { getAccessToken, getTenantId } from '@/utils/auth' | ||
| 11 | + | ||
| 12 | const { t } = useI18n() // 国际化 | 12 | const { t } = useI18n() // 国际化 |
| 13 | 13 | ||
| 14 | // ========== 列表相关 ========== | 14 | // ========== 列表相关 ========== |
| @@ -29,7 +29,7 @@ const uploadHeaders = ref() | @@ -29,7 +29,7 @@ const uploadHeaders = ref() | ||
| 29 | const beforeUpload = (file: UploadRawFile) => { | 29 | const beforeUpload = (file: UploadRawFile) => { |
| 30 | const isImg = file.type === 'image/jpeg' || 'image/gif' || 'image/png' | 30 | const isImg = file.type === 'image/jpeg' || 'image/gif' || 'image/png' |
| 31 | const isLt5M = file.size / 1024 / 1024 < 5 | 31 | const isLt5M = file.size / 1024 / 1024 < 5 |
| 32 | - if (!isImg) ElMessage.error('上传文件只能是 xls / xlsx 格式!') | 32 | + if (!isImg) ElMessage.error('上传文件只能是 jpeg / gif / png 格式!') |
| 33 | if (!isLt5M) ElMessage.error('上传文件大小不能超过 5MB!') | 33 | if (!isLt5M) ElMessage.error('上传文件大小不能超过 5MB!') |
| 34 | return isImg && isLt5M | 34 | return isImg && isLt5M |
| 35 | } | 35 | } |
| @@ -40,8 +40,8 @@ const beforeUpload = (file: UploadRawFile) => { | @@ -40,8 +40,8 @@ const beforeUpload = (file: UploadRawFile) => { | ||
| 40 | // 文件上传 | 40 | // 文件上传 |
| 41 | const submitFileForm = () => { | 41 | const submitFileForm = () => { |
| 42 | uploadHeaders.value = { | 42 | uploadHeaders.value = { |
| 43 | - Authorization: 'Bearer ' + wsCache.get('ACCESS_TOKEN'), | ||
| 44 | - 'tenant-id': wsCache.get('tenantId') | 43 | + Authorization: 'Bearer ' + getAccessToken(), |
| 44 | + 'tenant-id': getTenantId() | ||
| 45 | } | 45 | } |
| 46 | uploadDisabled.value = true | 46 | uploadDisabled.value = true |
| 47 | uploadRef.value!.submit() | 47 | uploadRef.value!.submit() |
| @@ -122,7 +122,7 @@ getList() | @@ -122,7 +122,7 @@ getList() | ||
| 122 | </template> | 122 | </template> |
| 123 | <template #action="{ row }"> | 123 | <template #action="{ row }"> |
| 124 | <el-button link type="primary" @click="handleDetail(row)"> | 124 | <el-button link type="primary" @click="handleDetail(row)"> |
| 125 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 125 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 126 | </el-button> | 126 | </el-button> |
| 127 | <el-button | 127 | <el-button |
| 128 | link | 128 | link |
| @@ -130,7 +130,7 @@ getList() | @@ -130,7 +130,7 @@ getList() | ||
| 130 | v-hasPermi="['infra:file:delete']" | 130 | v-hasPermi="['infra:file:delete']" |
| 131 | @click="handleDelete(row)" | 131 | @click="handleDelete(row)" |
| 132 | > | 132 | > |
| 133 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 133 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 134 | </el-button> | 134 | </el-button> |
| 135 | </template> | 135 | </template> |
| 136 | </Table> | 136 | </Table> |
yudao-ui-admin-vue3/src/views/infra/job/JobLog.vue
| @@ -96,7 +96,7 @@ onMounted(() => { | @@ -96,7 +96,7 @@ onMounted(() => { | ||
| 96 | </template> | 96 | </template> |
| 97 | <template #action="{ row }"> | 97 | <template #action="{ row }"> |
| 98 | <el-button link type="primary" v-hasPermi="['infra:job:query']" @click="handleDetail(row)"> | 98 | <el-button link type="primary" v-hasPermi="['infra:job:query']" @click="handleDetail(row)"> |
| 99 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 99 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 100 | </el-button> | 100 | </el-button> |
| 101 | </template> | 101 | </template> |
| 102 | </Table> | 102 | </Table> |
yudao-ui-admin-vue3/src/views/infra/job/index.vue
| @@ -158,19 +158,19 @@ getList() | @@ -158,19 +158,19 @@ getList() | ||
| 158 | </template> | 158 | </template> |
| 159 | <template #action="{ row }"> | 159 | <template #action="{ row }"> |
| 160 | <el-button link type="primary" v-hasPermi="['infra:job:update']" @click="handleUpdate(row)"> | 160 | <el-button link type="primary" v-hasPermi="['infra:job:update']" @click="handleUpdate(row)"> |
| 161 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 161 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 162 | </el-button> | 162 | </el-button> |
| 163 | <el-button link type="primary" v-hasPermi="['infra:job:query']" @click="handleDetail(row)"> | 163 | <el-button link type="primary" v-hasPermi="['infra:job:query']" @click="handleDetail(row)"> |
| 164 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 164 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 165 | </el-button> | 165 | </el-button> |
| 166 | <el-button link type="primary" v-hasPermi="['infra:job:delete']" @click="handleDelete(row)"> | 166 | <el-button link type="primary" v-hasPermi="['infra:job:delete']" @click="handleDelete(row)"> |
| 167 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 167 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 168 | </el-button> | 168 | </el-button> |
| 169 | <el-button link type="primary" v-hasPermi="['infra:job:trigger']" @click="handleRun(row)"> | 169 | <el-button link type="primary" v-hasPermi="['infra:job:trigger']" @click="handleRun(row)"> |
| 170 | - <Icon icon="ep:view" class="mr-5px" /> 执行一次 | 170 | + <Icon icon="ep:view" class="mr-1px" /> 执行一次 |
| 171 | </el-button> | 171 | </el-button> |
| 172 | <el-button link type="primary" v-hasPermi="['infra:job:query']" @click="handleJobLog(row)"> | 172 | <el-button link type="primary" v-hasPermi="['infra:job:query']" @click="handleJobLog(row)"> |
| 173 | - <Icon icon="ep:view" class="mr-5px" /> 调度日志 | 173 | + <Icon icon="ep:view" class="mr-1px" /> 调度日志 |
| 174 | </el-button> | 174 | </el-button> |
| 175 | </template> | 175 | </template> |
| 176 | </Table> | 176 | </Table> |
yudao-ui-admin-vue3/src/views/pay/app/index.vue
| @@ -139,7 +139,7 @@ getList() | @@ -139,7 +139,7 @@ getList() | ||
| 139 | v-hasPermi="['system:post:update']" | 139 | v-hasPermi="['system:post:update']" |
| 140 | @click="handleUpdate(row)" | 140 | @click="handleUpdate(row)" |
| 141 | > | 141 | > |
| 142 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 142 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 143 | </el-button> | 143 | </el-button> |
| 144 | <el-button | 144 | <el-button |
| 145 | link | 145 | link |
| @@ -147,7 +147,7 @@ getList() | @@ -147,7 +147,7 @@ getList() | ||
| 147 | v-hasPermi="['system:post:update']" | 147 | v-hasPermi="['system:post:update']" |
| 148 | @click="handleDetail(row)" | 148 | @click="handleDetail(row)" |
| 149 | > | 149 | > |
| 150 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 150 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 151 | </el-button> | 151 | </el-button> |
| 152 | <el-button | 152 | <el-button |
| 153 | link | 153 | link |
| @@ -155,7 +155,7 @@ getList() | @@ -155,7 +155,7 @@ getList() | ||
| 155 | v-hasPermi="['system:post:delete']" | 155 | v-hasPermi="['system:post:delete']" |
| 156 | @click="handleDelete(row)" | 156 | @click="handleDelete(row)" |
| 157 | > | 157 | > |
| 158 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 158 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 159 | </el-button> | 159 | </el-button> |
| 160 | </template> | 160 | </template> |
| 161 | </Table> | 161 | </Table> |
yudao-ui-admin-vue3/src/views/pay/merchant/index.vue
| @@ -139,7 +139,7 @@ getList() | @@ -139,7 +139,7 @@ getList() | ||
| 139 | v-hasPermi="['system:post:update']" | 139 | v-hasPermi="['system:post:update']" |
| 140 | @click="handleUpdate(row)" | 140 | @click="handleUpdate(row)" |
| 141 | > | 141 | > |
| 142 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 142 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 143 | </el-button> | 143 | </el-button> |
| 144 | <el-button | 144 | <el-button |
| 145 | link | 145 | link |
| @@ -147,7 +147,7 @@ getList() | @@ -147,7 +147,7 @@ getList() | ||
| 147 | v-hasPermi="['system:post:update']" | 147 | v-hasPermi="['system:post:update']" |
| 148 | @click="handleDetail(row)" | 148 | @click="handleDetail(row)" |
| 149 | > | 149 | > |
| 150 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 150 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 151 | </el-button> | 151 | </el-button> |
| 152 | <el-button | 152 | <el-button |
| 153 | link | 153 | link |
| @@ -155,7 +155,7 @@ getList() | @@ -155,7 +155,7 @@ getList() | ||
| 155 | v-hasPermi="['system:post:delete']" | 155 | v-hasPermi="['system:post:delete']" |
| 156 | @click="handleDelete(row)" | 156 | @click="handleDelete(row)" |
| 157 | > | 157 | > |
| 158 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 158 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 159 | </el-button> | 159 | </el-button> |
| 160 | </template> | 160 | </template> |
| 161 | </Table> | 161 | </Table> |
yudao-ui-admin-vue3/src/views/pay/order/index.vue
| @@ -128,13 +128,13 @@ getList() | @@ -128,13 +128,13 @@ getList() | ||
| 128 | </template> | 128 | </template> |
| 129 | <template #action="{ row }"> | 129 | <template #action="{ row }"> |
| 130 | <el-button link type="primary" v-hasPermi="['pay:order:update']" @click="handleUpdate(row)"> | 130 | <el-button link type="primary" v-hasPermi="['pay:order:update']" @click="handleUpdate(row)"> |
| 131 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 131 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 132 | </el-button> | 132 | </el-button> |
| 133 | <el-button link type="primary" v-hasPermi="['pay:order:update']" @click="handleDetail(row)"> | 133 | <el-button link type="primary" v-hasPermi="['pay:order:update']" @click="handleDetail(row)"> |
| 134 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 134 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 135 | </el-button> | 135 | </el-button> |
| 136 | <el-button link type="primary" v-hasPermi="['pay:order:delete']" @click="handleDelete(row)"> | 136 | <el-button link type="primary" v-hasPermi="['pay:order:delete']" @click="handleDelete(row)"> |
| 137 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 137 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 138 | </el-button> | 138 | </el-button> |
| 139 | </template> | 139 | </template> |
| 140 | </Table> | 140 | </Table> |
yudao-ui-admin-vue3/src/views/pay/refund/index.vue
| @@ -89,7 +89,7 @@ getList() | @@ -89,7 +89,7 @@ getList() | ||
| 89 | v-hasPermi="['system:post:update']" | 89 | v-hasPermi="['system:post:update']" |
| 90 | @click="handleDetail(row)" | 90 | @click="handleDetail(row)" |
| 91 | > | 91 | > |
| 92 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 92 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 93 | </el-button> | 93 | </el-button> |
| 94 | <el-button | 94 | <el-button |
| 95 | link | 95 | link |
| @@ -97,7 +97,7 @@ getList() | @@ -97,7 +97,7 @@ getList() | ||
| 97 | v-hasPermi="['system:post:delete']" | 97 | v-hasPermi="['system:post:delete']" |
| 98 | @click="handleDelete(row)" | 98 | @click="handleDelete(row)" |
| 99 | > | 99 | > |
| 100 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 100 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 101 | </el-button> | 101 | </el-button> |
| 102 | </template> | 102 | </template> |
| 103 | </Table> | 103 | </Table> |
yudao-ui-admin-vue3/src/views/system/dept/index.vue
| 1 | <script setup lang="ts"> | 1 | <script setup lang="ts"> |
| 2 | import { useI18n } from '@/hooks/web/useI18n' | 2 | import { useI18n } from '@/hooks/web/useI18n' |
| 3 | -import { ElCard, ElTree, ElTreeSelect, ElMessage, ElMessageBox } from 'element-plus' | 3 | +import { ElInput, ElCard, ElTree, ElTreeSelect, ElMessage, ElMessageBox } from 'element-plus' |
| 4 | import { handleTree } from '@/utils/tree' | 4 | import { handleTree } from '@/utils/tree' |
| 5 | -import { onMounted, ref, unref } from 'vue' | 5 | +import { onMounted, ref, unref, watch } from 'vue' |
| 6 | import * as DeptApi from '@/api/system/dept' | 6 | import * as DeptApi from '@/api/system/dept' |
| 7 | import { Form, FormExpose } from '@/components/Form' | 7 | import { Form, FormExpose } from '@/components/Form' |
| 8 | import { modelSchema } from './dept.data' | 8 | import { modelSchema } from './dept.data' |
| @@ -28,6 +28,7 @@ const deptParentId = ref(0) // 上级ID | @@ -28,6 +28,7 @@ const deptParentId = ref(0) // 上级ID | ||
| 28 | const formRef = ref<FormExpose>() | 28 | const formRef = ref<FormExpose>() |
| 29 | 29 | ||
| 30 | // ========== 创建部门树结构 ========== | 30 | // ========== 创建部门树结构 ========== |
| 31 | +const filterText = ref('') | ||
| 31 | const deptOptions = ref([]) // 树形结构 | 32 | const deptOptions = ref([]) // 树形结构 |
| 32 | const treeRef = ref<InstanceType<typeof ElTree>>() | 33 | const treeRef = ref<InstanceType<typeof ElTree>>() |
| 33 | const getTree = async () => { | 34 | const getTree = async () => { |
| @@ -38,9 +39,13 @@ const filterNode = (value: string, data: Tree) => { | @@ -38,9 +39,13 @@ const filterNode = (value: string, data: Tree) => { | ||
| 38 | if (!value) return true | 39 | if (!value) return true |
| 39 | return data.name.includes(value) | 40 | return data.name.includes(value) |
| 40 | } | 41 | } |
| 42 | +watch(filterText, (val) => { | ||
| 43 | + treeRef.value!.filter(val) | ||
| 44 | +}) | ||
| 41 | // 新增 | 45 | // 新增 |
| 42 | -const handleAdd = () => { | 46 | +const handleAdd = (data: { id: number }) => { |
| 43 | // 重置表单 | 47 | // 重置表单 |
| 48 | + deptParentId.value = data.id | ||
| 44 | formTitle.value = '新增部门' | 49 | formTitle.value = '新增部门' |
| 45 | unref(formRef)?.getElFormRef()?.resetFields() | 50 | unref(formRef)?.getElFormRef()?.resetFields() |
| 46 | showForm.value = true | 51 | showForm.value = true |
| @@ -73,7 +78,7 @@ const submitForm = async () => { | @@ -73,7 +78,7 @@ const submitForm = async () => { | ||
| 73 | // 提交请求 | 78 | // 提交请求 |
| 74 | try { | 79 | try { |
| 75 | const data = unref(formRef)?.formModel as DeptVO | 80 | const data = unref(formRef)?.formModel as DeptVO |
| 76 | - deptParentId.value = data.parentId | 81 | + data.parentId = deptParentId.value |
| 77 | // TODO: 表单提交待完善 | 82 | // TODO: 表单提交待完善 |
| 78 | if (formTitle.value.startsWith('新增')) { | 83 | if (formTitle.value.startsWith('新增')) { |
| 79 | await DeptApi.createDeptApi(data) | 84 | await DeptApi.createDeptApi(data) |
| @@ -104,6 +109,7 @@ onMounted(async () => { | @@ -104,6 +109,7 @@ onMounted(async () => { | ||
| 104 | <div class="custom-tree-container"> | 109 | <div class="custom-tree-container"> |
| 105 | <!-- <p>部门列表</p> --> | 110 | <!-- <p>部门列表</p> --> |
| 106 | <!-- 操作工具栏 --> | 111 | <!-- 操作工具栏 --> |
| 112 | + <el-input v-model="filterText" placeholder="搜索部门" /> | ||
| 107 | <el-tree | 113 | <el-tree |
| 108 | ref="treeRef" | 114 | ref="treeRef" |
| 109 | node-key="id" | 115 | node-key="id" |
| @@ -111,20 +117,20 @@ onMounted(async () => { | @@ -111,20 +117,20 @@ onMounted(async () => { | ||
| 111 | :props="defaultProps" | 117 | :props="defaultProps" |
| 112 | :highlight-current="true" | 118 | :highlight-current="true" |
| 113 | default-expand-all | 119 | default-expand-all |
| 114 | - :filter-method="filterNode" | 120 | + :filter-node-method="filterNode" |
| 115 | > | 121 | > |
| 116 | <template #default="{ node, data }"> | 122 | <template #default="{ node, data }"> |
| 117 | <span class="custom-tree-node"> | 123 | <span class="custom-tree-node"> |
| 118 | <span>{{ node.label }}</span> | 124 | <span>{{ node.label }}</span> |
| 119 | <span> | 125 | <span> |
| 120 | - <el-button link v-hasPermi="['system:dept:create']" @click="handleAdd()"> | ||
| 121 | - <Icon icon="ep:plus" class="mr-5px" /> | 126 | + <el-button link v-hasPermi="['system:dept:create']" @click="handleAdd(data)"> |
| 127 | + <Icon icon="ep:plus" class="mr-1px" /> | ||
| 122 | </el-button> | 128 | </el-button> |
| 123 | <el-button link v-hasPermi="['system:dept:update']" @click="handleUpdate(data)"> | 129 | <el-button link v-hasPermi="['system:dept:update']" @click="handleUpdate(data)"> |
| 124 | - <Icon icon="ep:edit" class="mr-5px" /> | 130 | + <Icon icon="ep:edit" class="mr-1px" /> |
| 125 | </el-button> | 131 | </el-button> |
| 126 | <el-button link v-hasPermi="['system:dept:delete']" @click="handleDelete(data)"> | 132 | <el-button link v-hasPermi="['system:dept:delete']" @click="handleDelete(data)"> |
| 127 | - <Icon icon="ep:delete" class="mr-5px" /> | 133 | + <Icon icon="ep:delete" class="mr-1px" /> |
| 128 | </el-button> | 134 | </el-button> |
| 129 | </span> | 135 | </span> |
| 130 | </span> | 136 | </span> |
yudao-ui-admin-vue3/src/views/system/dict/index.vue
| @@ -189,7 +189,7 @@ onMounted(async () => { | @@ -189,7 +189,7 @@ onMounted(async () => { | ||
| 189 | v-hasPermi="['system:dict:update']" | 189 | v-hasPermi="['system:dict:update']" |
| 190 | @click="handleTypeUpdate(row)" | 190 | @click="handleTypeUpdate(row)" |
| 191 | > | 191 | > |
| 192 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 192 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 193 | </el-button> | 193 | </el-button> |
| 194 | <el-button | 194 | <el-button |
| 195 | link | 195 | link |
| @@ -197,7 +197,7 @@ onMounted(async () => { | @@ -197,7 +197,7 @@ onMounted(async () => { | ||
| 197 | v-hasPermi="['system:dict:delete']" | 197 | v-hasPermi="['system:dict:delete']" |
| 198 | @click="handleTypeDelete(row)" | 198 | @click="handleTypeDelete(row)" |
| 199 | > | 199 | > |
| 200 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 200 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 201 | </el-button> | 201 | </el-button> |
| 202 | </template> | 202 | </template> |
| 203 | </Table> | 203 | </Table> |
| @@ -221,7 +221,7 @@ onMounted(async () => { | @@ -221,7 +221,7 @@ onMounted(async () => { | ||
| 221 | <!-- 操作工具栏 --> | 221 | <!-- 操作工具栏 --> |
| 222 | <div class="mb-10px"> | 222 | <div class="mb-10px"> |
| 223 | <el-button type="primary" v-hasPermi="['system:dict:create']" @click="handleDataCreate"> | 223 | <el-button type="primary" v-hasPermi="['system:dict:create']" @click="handleDataCreate"> |
| 224 | - <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }} | 224 | + <Icon icon="ep:zoom-in" class="mr-1px" /> {{ t('action.add') }} |
| 225 | </el-button> | 225 | </el-button> |
| 226 | </div> | 226 | </div> |
| 227 | <Table | 227 | <Table |
| @@ -246,7 +246,7 @@ onMounted(async () => { | @@ -246,7 +246,7 @@ onMounted(async () => { | ||
| 246 | v-hasPermi="['system:dict:update']" | 246 | v-hasPermi="['system:dict:update']" |
| 247 | @click="handleDataUpdate(row)" | 247 | @click="handleDataUpdate(row)" |
| 248 | > | 248 | > |
| 249 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 249 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 250 | </el-button> | 250 | </el-button> |
| 251 | <el-button | 251 | <el-button |
| 252 | link | 252 | link |
| @@ -254,7 +254,7 @@ onMounted(async () => { | @@ -254,7 +254,7 @@ onMounted(async () => { | ||
| 254 | v-hasPermi="['system:dict:delete']" | 254 | v-hasPermi="['system:dict:delete']" |
| 255 | @click="handleDataDelete(row)" | 255 | @click="handleDataDelete(row)" |
| 256 | > | 256 | > |
| 257 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 257 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 258 | </el-button> | 258 | </el-button> |
| 259 | </template> | 259 | </template> |
| 260 | </Table> | 260 | </Table> |
yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
| @@ -125,7 +125,7 @@ getList() | @@ -125,7 +125,7 @@ getList() | ||
| 125 | v-hasPermi="['system:error-code:update']" | 125 | v-hasPermi="['system:error-code:update']" |
| 126 | @click="handleUpdate(row)" | 126 | @click="handleUpdate(row)" |
| 127 | > | 127 | > |
| 128 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 128 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 129 | </el-button> | 129 | </el-button> |
| 130 | <el-button | 130 | <el-button |
| 131 | link | 131 | link |
| @@ -133,7 +133,7 @@ getList() | @@ -133,7 +133,7 @@ getList() | ||
| 133 | v-hasPermi="['system:error-code:update']" | 133 | v-hasPermi="['system:error-code:update']" |
| 134 | @click="handleDetail(row)" | 134 | @click="handleDetail(row)" |
| 135 | > | 135 | > |
| 136 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 136 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 137 | </el-button> | 137 | </el-button> |
| 138 | <el-button | 138 | <el-button |
| 139 | link | 139 | link |
| @@ -141,7 +141,7 @@ getList() | @@ -141,7 +141,7 @@ getList() | ||
| 141 | v-hasPermi="['system:error-code:delete']" | 141 | v-hasPermi="['system:error-code:delete']" |
| 142 | @click="handleDelete(row)" | 142 | @click="handleDelete(row)" |
| 143 | > | 143 | > |
| 144 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 144 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 145 | </el-button> | 145 | </el-button> |
| 146 | </template> | 146 | </template> |
| 147 | </Table> | 147 | </Table> |
yudao-ui-admin-vue3/src/views/system/loginlog/index.vue
| @@ -54,7 +54,7 @@ getList() | @@ -54,7 +54,7 @@ getList() | ||
| 54 | </template> | 54 | </template> |
| 55 | <template #action="{ row }"> | 55 | <template #action="{ row }"> |
| 56 | <el-button link type="primary" @click="handleDetail(row)"> | 56 | <el-button link type="primary" @click="handleDetail(row)"> |
| 57 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 57 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 58 | </el-button> | 58 | </el-button> |
| 59 | </template> | 59 | </template> |
| 60 | </Table> | 60 | </Table> |
yudao-ui-admin-vue3/src/views/system/menu/index.vue
| @@ -195,7 +195,7 @@ onMounted(async () => { | @@ -195,7 +195,7 @@ onMounted(async () => { | ||
| 195 | <ContentWrap> | 195 | <ContentWrap> |
| 196 | <div class="mb-10px"> | 196 | <div class="mb-10px"> |
| 197 | <el-button type="primary" v-hasPermi="['system:notice:create']" @click="handleCreate"> | 197 | <el-button type="primary" v-hasPermi="['system:notice:create']" @click="handleCreate"> |
| 198 | - <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }} | 198 | + <Icon icon="ep:zoom-in" class="mr-1px" /> {{ t('action.add') }} |
| 199 | </el-button> | 199 | </el-button> |
| 200 | </div> | 200 | </div> |
| 201 | <el-table | 201 | <el-table |
| @@ -238,7 +238,7 @@ onMounted(async () => { | @@ -238,7 +238,7 @@ onMounted(async () => { | ||
| 238 | v-hasPermi="['system:menu:update']" | 238 | v-hasPermi="['system:menu:update']" |
| 239 | @click="handleUpdate(scope.row)" | 239 | @click="handleUpdate(scope.row)" |
| 240 | > | 240 | > |
| 241 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 241 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 242 | </el-button> | 242 | </el-button> |
| 243 | <el-button | 243 | <el-button |
| 244 | link | 244 | link |
| @@ -246,7 +246,7 @@ onMounted(async () => { | @@ -246,7 +246,7 @@ onMounted(async () => { | ||
| 246 | v-hasPermi="['system:menu:delete']" | 246 | v-hasPermi="['system:menu:delete']" |
| 247 | @click="handleDelete(scope.row)" | 247 | @click="handleDelete(scope.row)" |
| 248 | > | 248 | > |
| 249 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 249 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 250 | </el-button> | 250 | </el-button> |
| 251 | </template> | 251 | </template> |
| 252 | </el-table-column> | 252 | </el-table-column> |
yudao-ui-admin-vue3/src/views/system/notice/index.vue
| @@ -127,7 +127,7 @@ getList() | @@ -127,7 +127,7 @@ getList() | ||
| 127 | v-hasPermi="['system:notice:update']" | 127 | v-hasPermi="['system:notice:update']" |
| 128 | @click="handleUpdate(row)" | 128 | @click="handleUpdate(row)" |
| 129 | > | 129 | > |
| 130 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 130 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 131 | </el-button> | 131 | </el-button> |
| 132 | <el-button | 132 | <el-button |
| 133 | link | 133 | link |
| @@ -135,7 +135,7 @@ getList() | @@ -135,7 +135,7 @@ getList() | ||
| 135 | v-hasPermi="['system:notice:update']" | 135 | v-hasPermi="['system:notice:update']" |
| 136 | @click="handleDetail(row)" | 136 | @click="handleDetail(row)" |
| 137 | > | 137 | > |
| 138 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 138 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 139 | </el-button> | 139 | </el-button> |
| 140 | <el-button | 140 | <el-button |
| 141 | link | 141 | link |
| @@ -143,7 +143,7 @@ getList() | @@ -143,7 +143,7 @@ getList() | ||
| 143 | v-hasPermi="['system:notice:delete']" | 143 | v-hasPermi="['system:notice:delete']" |
| 144 | @click="handleDelete(row)" | 144 | @click="handleDelete(row)" |
| 145 | > | 145 | > |
| 146 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 146 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 147 | </el-button> | 147 | </el-button> |
| 148 | </template> | 148 | </template> |
| 149 | </Table> | 149 | </Table> |
yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue
| @@ -128,7 +128,7 @@ getList() | @@ -128,7 +128,7 @@ getList() | ||
| 128 | v-hasPermi="['system:oauth2-client:update']" | 128 | v-hasPermi="['system:oauth2-client:update']" |
| 129 | @click="handleUpdate(row)" | 129 | @click="handleUpdate(row)" |
| 130 | > | 130 | > |
| 131 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 131 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 132 | </el-button> | 132 | </el-button> |
| 133 | <el-button | 133 | <el-button |
| 134 | link | 134 | link |
| @@ -136,7 +136,7 @@ getList() | @@ -136,7 +136,7 @@ getList() | ||
| 136 | v-hasPermi="['system:oauth2-client:update']" | 136 | v-hasPermi="['system:oauth2-client:update']" |
| 137 | @click="handleDetail(row)" | 137 | @click="handleDetail(row)" |
| 138 | > | 138 | > |
| 139 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 139 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 140 | </el-button> | 140 | </el-button> |
| 141 | <el-button | 141 | <el-button |
| 142 | link | 142 | link |
| @@ -144,7 +144,7 @@ getList() | @@ -144,7 +144,7 @@ getList() | ||
| 144 | v-hasPermi="['system:oauth2-client:delete']" | 144 | v-hasPermi="['system:oauth2-client:delete']" |
| 145 | @click="handleDelete(row)" | 145 | @click="handleDelete(row)" |
| 146 | > | 146 | > |
| 147 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 147 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 148 | </el-button> | 148 | </el-button> |
| 149 | </template> | 149 | </template> |
| 150 | </Table> | 150 | </Table> |
yudao-ui-admin-vue3/src/views/system/oauth2/token/index.vue
| @@ -58,7 +58,7 @@ getList() | @@ -58,7 +58,7 @@ getList() | ||
| 58 | </template> | 58 | </template> |
| 59 | <template #action="{ row }"> | 59 | <template #action="{ row }"> |
| 60 | <el-button link type="primary" @click="handleDetail(row)"> | 60 | <el-button link type="primary" @click="handleDetail(row)"> |
| 61 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 61 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 62 | </el-button> | 62 | </el-button> |
| 63 | <el-button | 63 | <el-button |
| 64 | link | 64 | link |
| @@ -66,7 +66,7 @@ getList() | @@ -66,7 +66,7 @@ getList() | ||
| 66 | v-hasPermi="['system:oauth2-token:delete']" | 66 | v-hasPermi="['system:oauth2-token:delete']" |
| 67 | @click="handleForceLogout(row)" | 67 | @click="handleForceLogout(row)" |
| 68 | > | 68 | > |
| 69 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.logout') }} | 69 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.logout') }} |
| 70 | </el-button> | 70 | </el-button> |
| 71 | </template> | 71 | </template> |
| 72 | </Table> | 72 | </Table> |
yudao-ui-admin-vue3/src/views/system/operatelog/index.vue
| @@ -72,7 +72,7 @@ getList() | @@ -72,7 +72,7 @@ getList() | ||
| 72 | </template> | 72 | </template> |
| 73 | <template #action="{ row }"> | 73 | <template #action="{ row }"> |
| 74 | <el-button link type="primary" @click="handleDetail(row)"> | 74 | <el-button link type="primary" @click="handleDetail(row)"> |
| 75 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 75 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 76 | </el-button> | 76 | </el-button> |
| 77 | </template> | 77 | </template> |
| 78 | </Table> | 78 | </Table> |
yudao-ui-admin-vue3/src/views/system/post/index.vue
| @@ -139,7 +139,7 @@ getList() | @@ -139,7 +139,7 @@ getList() | ||
| 139 | v-hasPermi="['system:post:update']" | 139 | v-hasPermi="['system:post:update']" |
| 140 | @click="handleUpdate(row)" | 140 | @click="handleUpdate(row)" |
| 141 | > | 141 | > |
| 142 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 142 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 143 | </el-button> | 143 | </el-button> |
| 144 | <el-button | 144 | <el-button |
| 145 | link | 145 | link |
| @@ -147,7 +147,7 @@ getList() | @@ -147,7 +147,7 @@ getList() | ||
| 147 | v-hasPermi="['system:post:update']" | 147 | v-hasPermi="['system:post:update']" |
| 148 | @click="handleDetail(row)" | 148 | @click="handleDetail(row)" |
| 149 | > | 149 | > |
| 150 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 150 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 151 | </el-button> | 151 | </el-button> |
| 152 | <el-button | 152 | <el-button |
| 153 | link | 153 | link |
| @@ -155,7 +155,7 @@ getList() | @@ -155,7 +155,7 @@ getList() | ||
| 155 | v-hasPermi="['system:post:delete']" | 155 | v-hasPermi="['system:post:delete']" |
| 156 | @click="handleDelete(row)" | 156 | @click="handleDelete(row)" |
| 157 | > | 157 | > |
| 158 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 158 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 159 | </el-button> | 159 | </el-button> |
| 160 | </template> | 160 | </template> |
| 161 | </Table> | 161 | </Table> |
yudao-ui-admin-vue3/src/views/system/role/index.vue
| @@ -191,7 +191,7 @@ getList() | @@ -191,7 +191,7 @@ getList() | ||
| 191 | v-hasPermi="['system:role:update']" | 191 | v-hasPermi="['system:role:update']" |
| 192 | @click="handleUpdate(row)" | 192 | @click="handleUpdate(row)" |
| 193 | > | 193 | > |
| 194 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 194 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 195 | </el-button> | 195 | </el-button> |
| 196 | <el-button | 196 | <el-button |
| 197 | link | 197 | link |
| @@ -199,7 +199,7 @@ getList() | @@ -199,7 +199,7 @@ getList() | ||
| 199 | v-hasPermi="['system:role:update']" | 199 | v-hasPermi="['system:role:update']" |
| 200 | @click="handleDetail(row)" | 200 | @click="handleDetail(row)" |
| 201 | > | 201 | > |
| 202 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 202 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 203 | </el-button> | 203 | </el-button> |
| 204 | <el-button | 204 | <el-button |
| 205 | link | 205 | link |
| @@ -207,7 +207,7 @@ getList() | @@ -207,7 +207,7 @@ getList() | ||
| 207 | v-hasPermi="['system:permission:assign-role-menu']" | 207 | v-hasPermi="['system:permission:assign-role-menu']" |
| 208 | @click="handleScope('menu', row)" | 208 | @click="handleScope('menu', row)" |
| 209 | > | 209 | > |
| 210 | - <Icon icon="ep:basketball" class="mr-5px" /> 菜单权限 | 210 | + <Icon icon="ep:basketball" class="mr-1px" /> 菜单权限 |
| 211 | </el-button> | 211 | </el-button> |
| 212 | <el-button | 212 | <el-button |
| 213 | link | 213 | link |
| @@ -215,7 +215,7 @@ getList() | @@ -215,7 +215,7 @@ getList() | ||
| 215 | v-hasPermi="['system:permission:assign-role-data-scope']" | 215 | v-hasPermi="['system:permission:assign-role-data-scope']" |
| 216 | @click="handleScope('data', row)" | 216 | @click="handleScope('data', row)" |
| 217 | > | 217 | > |
| 218 | - <Icon icon="ep:coin" class="mr-5px" /> 数据权限 | 218 | + <Icon icon="ep:coin" class="mr-1px" /> 数据权限 |
| 219 | </el-button> | 219 | </el-button> |
| 220 | <el-button | 220 | <el-button |
| 221 | link | 221 | link |
| @@ -223,7 +223,7 @@ getList() | @@ -223,7 +223,7 @@ getList() | ||
| 223 | v-hasPermi="['system:role:delete']" | 223 | v-hasPermi="['system:role:delete']" |
| 224 | @click="handleDelete(row)" | 224 | @click="handleDelete(row)" |
| 225 | > | 225 | > |
| 226 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 226 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 227 | </el-button> | 227 | </el-button> |
| 228 | </template> | 228 | </template> |
| 229 | </Table> | 229 | </Table> |
yudao-ui-admin-vue3/src/views/system/sensitiveWord/index.vue
| @@ -157,7 +157,7 @@ onMounted(async () => { | @@ -157,7 +157,7 @@ onMounted(async () => { | ||
| 157 | v-hasPermi="['system:post:update']" | 157 | v-hasPermi="['system:post:update']" |
| 158 | @click="handleUpdate(row)" | 158 | @click="handleUpdate(row)" |
| 159 | > | 159 | > |
| 160 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 160 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 161 | </el-button> | 161 | </el-button> |
| 162 | <el-button | 162 | <el-button |
| 163 | link | 163 | link |
| @@ -165,7 +165,7 @@ onMounted(async () => { | @@ -165,7 +165,7 @@ onMounted(async () => { | ||
| 165 | v-hasPermi="['system:post:update']" | 165 | v-hasPermi="['system:post:update']" |
| 166 | @click="handleDetail(row)" | 166 | @click="handleDetail(row)" |
| 167 | > | 167 | > |
| 168 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 168 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 169 | </el-button> | 169 | </el-button> |
| 170 | <el-button | 170 | <el-button |
| 171 | link | 171 | link |
| @@ -173,7 +173,7 @@ onMounted(async () => { | @@ -173,7 +173,7 @@ onMounted(async () => { | ||
| 173 | v-hasPermi="['system:post:delete']" | 173 | v-hasPermi="['system:post:delete']" |
| 174 | @click="handleDelete(row)" | 174 | @click="handleDelete(row)" |
| 175 | > | 175 | > |
| 176 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 176 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 177 | </el-button> | 177 | </el-button> |
| 178 | </template> | 178 | </template> |
| 179 | </Table> | 179 | </Table> |
yudao-ui-admin-vue3/src/views/system/sms/smsChannel/index.vue
| @@ -128,7 +128,7 @@ getList() | @@ -128,7 +128,7 @@ getList() | ||
| 128 | v-hasPermi="['system:sms-channel:update']" | 128 | v-hasPermi="['system:sms-channel:update']" |
| 129 | @click="handleUpdate(row)" | 129 | @click="handleUpdate(row)" |
| 130 | > | 130 | > |
| 131 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 131 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 132 | </el-button> | 132 | </el-button> |
| 133 | <el-button | 133 | <el-button |
| 134 | link | 134 | link |
| @@ -136,7 +136,7 @@ getList() | @@ -136,7 +136,7 @@ getList() | ||
| 136 | v-hasPermi="['system:sms-channel:update']" | 136 | v-hasPermi="['system:sms-channel:update']" |
| 137 | @click="handleDetail(row)" | 137 | @click="handleDetail(row)" |
| 138 | > | 138 | > |
| 139 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 139 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 140 | </el-button> | 140 | </el-button> |
| 141 | <el-button | 141 | <el-button |
| 142 | link | 142 | link |
| @@ -144,7 +144,7 @@ getList() | @@ -144,7 +144,7 @@ getList() | ||
| 144 | v-hasPermi="['system:sms-channel:delete']" | 144 | v-hasPermi="['system:sms-channel:delete']" |
| 145 | @click="handleDelete(row)" | 145 | @click="handleDelete(row)" |
| 146 | > | 146 | > |
| 147 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 147 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 148 | </el-button> | 148 | </el-button> |
| 149 | </template> | 149 | </template> |
| 150 | </Table> | 150 | </Table> |
yudao-ui-admin-vue3/src/views/system/sms/smsLog/index.vue
| @@ -68,7 +68,7 @@ getList() | @@ -68,7 +68,7 @@ getList() | ||
| 68 | v-hasPermi="['system:sms-channel:update']" | 68 | v-hasPermi="['system:sms-channel:update']" |
| 69 | @click="handleDetail(row)" | 69 | @click="handleDetail(row)" |
| 70 | > | 70 | > |
| 71 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 71 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 72 | </el-button> | 72 | </el-button> |
| 73 | </template> | 73 | </template> |
| 74 | </Table> | 74 | </Table> |
yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/index.vue
| @@ -146,7 +146,7 @@ getList() | @@ -146,7 +146,7 @@ getList() | ||
| 146 | v-hasPermi="['system:sms-template:send-sms']" | 146 | v-hasPermi="['system:sms-template:send-sms']" |
| 147 | @click="handleSendSms(row)" | 147 | @click="handleSendSms(row)" |
| 148 | > | 148 | > |
| 149 | - <Icon icon="ep:cpu" class="mr-5px" /> {{ t('action.test') }} | 149 | + <Icon icon="ep:cpu" class="mr-1px" /> {{ t('action.test') }} |
| 150 | </el-button> | 150 | </el-button> |
| 151 | <el-button | 151 | <el-button |
| 152 | link | 152 | link |
| @@ -154,7 +154,7 @@ getList() | @@ -154,7 +154,7 @@ getList() | ||
| 154 | v-hasPermi="['system:sms-template:update']" | 154 | v-hasPermi="['system:sms-template:update']" |
| 155 | @click="handleUpdate(row)" | 155 | @click="handleUpdate(row)" |
| 156 | > | 156 | > |
| 157 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 157 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 158 | </el-button> | 158 | </el-button> |
| 159 | <el-button | 159 | <el-button |
| 160 | link | 160 | link |
| @@ -162,7 +162,7 @@ getList() | @@ -162,7 +162,7 @@ getList() | ||
| 162 | v-hasPermi="['system:sms-template:update']" | 162 | v-hasPermi="['system:sms-template:update']" |
| 163 | @click="handleDetail(row)" | 163 | @click="handleDetail(row)" |
| 164 | > | 164 | > |
| 165 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 165 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 166 | </el-button> | 166 | </el-button> |
| 167 | <el-button | 167 | <el-button |
| 168 | link | 168 | link |
| @@ -170,7 +170,7 @@ getList() | @@ -170,7 +170,7 @@ getList() | ||
| 170 | v-hasPermi="['system:sms-template:delete']" | 170 | v-hasPermi="['system:sms-template:delete']" |
| 171 | @click="handleDelete(row)" | 171 | @click="handleDelete(row)" |
| 172 | > | 172 | > |
| 173 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 173 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 174 | </el-button> | 174 | </el-button> |
| 175 | </template> | 175 | </template> |
| 176 | </Table> | 176 | </Table> |
yudao-ui-admin-vue3/src/views/system/tenant/index.vue
| @@ -177,7 +177,7 @@ onMounted(async () => { | @@ -177,7 +177,7 @@ onMounted(async () => { | ||
| 177 | v-hasPermi="['system:tenant:update']" | 177 | v-hasPermi="['system:tenant:update']" |
| 178 | @click="handleUpdate(row)" | 178 | @click="handleUpdate(row)" |
| 179 | > | 179 | > |
| 180 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 180 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 181 | </el-button> | 181 | </el-button> |
| 182 | <el-button | 182 | <el-button |
| 183 | link | 183 | link |
| @@ -185,7 +185,7 @@ onMounted(async () => { | @@ -185,7 +185,7 @@ onMounted(async () => { | ||
| 185 | v-hasPermi="['system:tenant:update']" | 185 | v-hasPermi="['system:tenant:update']" |
| 186 | @click="handleDetail(row)" | 186 | @click="handleDetail(row)" |
| 187 | > | 187 | > |
| 188 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 188 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 189 | </el-button> | 189 | </el-button> |
| 190 | <el-button | 190 | <el-button |
| 191 | link | 191 | link |
| @@ -193,7 +193,7 @@ onMounted(async () => { | @@ -193,7 +193,7 @@ onMounted(async () => { | ||
| 193 | v-hasPermi="['system:tenant:delete']" | 193 | v-hasPermi="['system:tenant:delete']" |
| 194 | @click="handleDelete(row)" | 194 | @click="handleDelete(row)" |
| 195 | > | 195 | > |
| 196 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 196 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 197 | </el-button> | 197 | </el-button> |
| 198 | </template> | 198 | </template> |
| 199 | </Table> | 199 | </Table> |
yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
| @@ -147,10 +147,10 @@ onMounted(async () => { | @@ -147,10 +147,10 @@ onMounted(async () => { | ||
| 147 | </template> | 147 | </template> |
| 148 | <template #action="{ row }"> | 148 | <template #action="{ row }"> |
| 149 | <el-button link type="primary" @click="handleUpdate(row)"> | 149 | <el-button link type="primary" @click="handleUpdate(row)"> |
| 150 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 150 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 151 | </el-button> | 151 | </el-button> |
| 152 | <el-button link type="primary" @click="handleDelete(row)"> | 152 | <el-button link type="primary" @click="handleDelete(row)"> |
| 153 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 153 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 154 | </el-button> | 154 | </el-button> |
| 155 | </template> | 155 | </template> |
| 156 | </Table> | 156 | </Table> |
yudao-ui-admin-vue3/src/views/system/user/index.vue
| 1 | <script setup lang="ts"> | 1 | <script setup lang="ts"> |
| 2 | -import { onMounted, ref, unref } from 'vue' | 2 | +import { onMounted, ref, unref, watch } from 'vue' |
| 3 | import dayjs from 'dayjs' | 3 | import dayjs from 'dayjs' |
| 4 | import { | 4 | import { |
| 5 | + ElInput, | ||
| 5 | ElMessage, | 6 | ElMessage, |
| 6 | ElCard, | 7 | ElCard, |
| 7 | ElTree, | 8 | ElTree, |
| @@ -29,9 +30,8 @@ import { listSimplePostsApi } from '@/api/system/post' | @@ -29,9 +30,8 @@ import { listSimplePostsApi } from '@/api/system/post' | ||
| 29 | import { rules, allSchemas } from './user.data' | 30 | import { rules, allSchemas } from './user.data' |
| 30 | import * as UserApi from '@/api/system/user' | 31 | import * as UserApi from '@/api/system/user' |
| 31 | import download from '@/utils/download' | 32 | import download from '@/utils/download' |
| 32 | -import { useCache } from '@/hooks/web/useCache' | ||
| 33 | import { CommonStatusEnum } from '@/utils/constants' | 33 | import { CommonStatusEnum } from '@/utils/constants' |
| 34 | -const { wsCache } = useCache() | 34 | +import { getAccessToken, getTenantId } from '@/utils/auth' |
| 35 | interface Tree { | 35 | interface Tree { |
| 36 | id: number | 36 | id: number |
| 37 | name: string | 37 | name: string |
| @@ -55,6 +55,7 @@ const { register, tableObject, methods } = useTable<UserVO>({ | @@ -55,6 +55,7 @@ const { register, tableObject, methods } = useTable<UserVO>({ | ||
| 55 | const { getList, setSearchParams, delList, exportList } = methods | 55 | const { getList, setSearchParams, delList, exportList } = methods |
| 56 | 56 | ||
| 57 | // ========== 创建部门树结构 ========== | 57 | // ========== 创建部门树结构 ========== |
| 58 | +const filterText = ref('') | ||
| 58 | const deptOptions = ref([]) // 树形结构 | 59 | const deptOptions = ref([]) // 树形结构 |
| 59 | const searchForm = ref<FormExpose>() | 60 | const searchForm = ref<FormExpose>() |
| 60 | const treeRef = ref<InstanceType<typeof ElTree>>() | 61 | const treeRef = ref<InstanceType<typeof ElTree>>() |
| @@ -73,7 +74,9 @@ const handleDeptNodeClick = (data: { [key: string]: any }) => { | @@ -73,7 +74,9 @@ const handleDeptNodeClick = (data: { [key: string]: any }) => { | ||
| 73 | tableTitle.value = data.name | 74 | tableTitle.value = data.name |
| 74 | methods.getList() | 75 | methods.getList() |
| 75 | } | 76 | } |
| 76 | - | 77 | +watch(filterText, (val) => { |
| 78 | + treeRef.value!.filter(val) | ||
| 79 | +}) | ||
| 77 | // ========== CRUD 相关 ========== | 80 | // ========== CRUD 相关 ========== |
| 78 | const loading = ref(false) // 遮罩层 | 81 | const loading = ref(false) // 遮罩层 |
| 79 | const actionType = ref('') // 操作按钮的类型 | 82 | const actionType = ref('') // 操作按钮的类型 |
| @@ -138,7 +141,7 @@ const submitForm = async () => { | @@ -138,7 +141,7 @@ const submitForm = async () => { | ||
| 138 | } | 141 | } |
| 139 | // 改变用户状态操作 | 142 | // 改变用户状态操作 |
| 140 | const handleStatusChange = async (row: UserVO) => { | 143 | const handleStatusChange = async (row: UserVO) => { |
| 141 | - const text = row.status === CommonStatusEnum.ENABLE ? '停用' : '启用' | 144 | + const text = row.status === CommonStatusEnum.ENABLE ? '启用' : '停用' |
| 142 | ElMessageBox.confirm('确认要"' + text + '""' + row.username + '"用户吗?', t('common.reminder'), { | 145 | ElMessageBox.confirm('确认要"' + text + '""' + row.username + '"用户吗?', t('common.reminder'), { |
| 143 | confirmButtonText: t('common.ok'), | 146 | confirmButtonText: t('common.ok'), |
| 144 | cancelButtonText: t('common.cancel'), | 147 | cancelButtonText: t('common.cancel'), |
| @@ -146,9 +149,8 @@ const handleStatusChange = async (row: UserVO) => { | @@ -146,9 +149,8 @@ const handleStatusChange = async (row: UserVO) => { | ||
| 146 | }) | 149 | }) |
| 147 | .then(async () => { | 150 | .then(async () => { |
| 148 | row.status = | 151 | row.status = |
| 149 | - row.status === CommonStatusEnum.ENABLE ? CommonStatusEnum.DISABLE : CommonStatusEnum.ENABLE | ||
| 150 | - const res = await UserApi.updateUserStatusApi(row.id, row.status) | ||
| 151 | - console.info(res) | 152 | + row.status === CommonStatusEnum.ENABLE ? CommonStatusEnum.ENABLE : CommonStatusEnum.DISABLE |
| 153 | + await UserApi.updateUserStatusApi(row.id, row.status) | ||
| 152 | ElMessage.success(text + '成功') | 154 | ElMessage.success(text + '成功') |
| 153 | await getList() | 155 | await getList() |
| 154 | }) | 156 | }) |
| @@ -159,12 +161,10 @@ const handleStatusChange = async (row: UserVO) => { | @@ -159,12 +161,10 @@ const handleStatusChange = async (row: UserVO) => { | ||
| 159 | } | 161 | } |
| 160 | // 重置密码 | 162 | // 重置密码 |
| 161 | const handleResetPwd = (row: UserVO) => { | 163 | const handleResetPwd = (row: UserVO) => { |
| 162 | - ElMessageBox.prompt('请输入"' + row.username + '"的新密码', '提示', { | 164 | + ElMessageBox.prompt('请输入"' + row.username + '"的新密码', t('common.reminder'), { |
| 163 | confirmButtonText: t('common.ok'), | 165 | confirmButtonText: t('common.ok'), |
| 164 | cancelButtonText: t('common.cancel') | 166 | cancelButtonText: t('common.cancel') |
| 165 | }).then(({ value }) => { | 167 | }).then(({ value }) => { |
| 166 | - console.log(row.id) | ||
| 167 | - console.log(value) | ||
| 168 | UserApi.resetUserPwdApi(row.id, value).then(() => { | 168 | UserApi.resetUserPwdApi(row.id, value).then(() => { |
| 169 | ElMessage.success('修改成功,新密码是:' + value) | 169 | ElMessage.success('修改成功,新密码是:' + value) |
| 170 | }) | 170 | }) |
| @@ -215,8 +215,8 @@ const beforeExcelUpload = (file: UploadRawFile) => { | @@ -215,8 +215,8 @@ const beforeExcelUpload = (file: UploadRawFile) => { | ||
| 215 | const uploadRef = ref<UploadInstance>() | 215 | const uploadRef = ref<UploadInstance>() |
| 216 | const submitFileForm = () => { | 216 | const submitFileForm = () => { |
| 217 | uploadHeaders.value = { | 217 | uploadHeaders.value = { |
| 218 | - Authorization: 'Bearer ' + wsCache.get('ACCESS_TOKEN'), | ||
| 219 | - 'tenant-id': wsCache.get('tenantId') | 218 | + Authorization: 'Bearer ' + getAccessToken(), |
| 219 | + 'tenant-id': getTenantId() | ||
| 220 | } | 220 | } |
| 221 | uploadDisabled.value = true | 221 | uploadDisabled.value = true |
| 222 | uploadRef.value!.submit() | 222 | uploadRef.value!.submit() |
| @@ -268,6 +268,7 @@ getList() | @@ -268,6 +268,7 @@ getList() | ||
| 268 | <span>部门列表</span> | 268 | <span>部门列表</span> |
| 269 | </div> | 269 | </div> |
| 270 | </template> | 270 | </template> |
| 271 | + <el-input v-model="filterText" placeholder="搜索部门" /> | ||
| 271 | <el-tree | 272 | <el-tree |
| 272 | ref="treeRef" | 273 | ref="treeRef" |
| 273 | node-key="id" | 274 | node-key="id" |
| @@ -275,7 +276,7 @@ getList() | @@ -275,7 +276,7 @@ getList() | ||
| 275 | :data="deptOptions" | 276 | :data="deptOptions" |
| 276 | :props="defaultProps" | 277 | :props="defaultProps" |
| 277 | :highlight-current="true" | 278 | :highlight-current="true" |
| 278 | - :filter-method="filterNode" | 279 | + :filter-node-method="filterNode" |
| 279 | :expand-on-click-node="false" | 280 | :expand-on-click-node="false" |
| 280 | @node-click="handleDeptNodeClick" | 281 | @node-click="handleDeptNodeClick" |
| 281 | /> | 282 | /> |
| @@ -343,7 +344,7 @@ getList() | @@ -343,7 +344,7 @@ getList() | ||
| 343 | v-hasPermi="['system:user:update']" | 344 | v-hasPermi="['system:user:update']" |
| 344 | @click="handleUpdate(row)" | 345 | @click="handleUpdate(row)" |
| 345 | > | 346 | > |
| 346 | - <Icon icon="ep:edit" class="mr-5px" /> {{ t('action.edit') }} | 347 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} |
| 347 | </el-button> | 348 | </el-button> |
| 348 | <el-button | 349 | <el-button |
| 349 | link | 350 | link |
| @@ -351,7 +352,7 @@ getList() | @@ -351,7 +352,7 @@ getList() | ||
| 351 | v-hasPermi="['system:user:update']" | 352 | v-hasPermi="['system:user:update']" |
| 352 | @click="handleDetail(row)" | 353 | @click="handleDetail(row)" |
| 353 | > | 354 | > |
| 354 | - <Icon icon="ep:view" class="mr-5px" /> {{ t('action.detail') }} | 355 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} |
| 355 | </el-button> | 356 | </el-button> |
| 356 | <el-button | 357 | <el-button |
| 357 | link | 358 | link |
| @@ -359,7 +360,7 @@ getList() | @@ -359,7 +360,7 @@ getList() | ||
| 359 | v-hasPermi="['system:user:update-password']" | 360 | v-hasPermi="['system:user:update-password']" |
| 360 | @click="handleResetPwd(row)" | 361 | @click="handleResetPwd(row)" |
| 361 | > | 362 | > |
| 362 | - <Icon icon="ep:key" class="mr-5px" /> 重置密码 | 363 | + <Icon icon="ep:key" class="mr-1px" /> 重置密码 |
| 363 | </el-button> | 364 | </el-button> |
| 364 | <el-button | 365 | <el-button |
| 365 | link | 366 | link |
| @@ -367,7 +368,7 @@ getList() | @@ -367,7 +368,7 @@ getList() | ||
| 367 | v-hasPermi="['system:user:delete']" | 368 | v-hasPermi="['system:user:delete']" |
| 368 | @click="handleDelete(row)" | 369 | @click="handleDelete(row)" |
| 369 | > | 370 | > |
| 370 | - <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }} | 371 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} |
| 371 | </el-button> | 372 | </el-button> |
| 372 | </template> | 373 | </template> |
| 373 | </Table> | 374 | </Table> |
yudao-ui-admin-vue3/src/views/system/user/user.data.ts
| @@ -7,9 +7,7 @@ import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas' | @@ -7,9 +7,7 @@ import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas' | ||
| 7 | const { t } = useI18n() | 7 | const { t } = useI18n() |
| 8 | // 表单校验 | 8 | // 表单校验 |
| 9 | export const rules = reactive({ | 9 | export const rules = reactive({ |
| 10 | - name: [required], | ||
| 11 | - code: [required], | ||
| 12 | - sort: [required], | 10 | + nickname: [required], |
| 13 | status: [required] | 11 | status: [required] |
| 14 | }) | 12 | }) |
| 15 | // crudSchemas | 13 | // crudSchemas |
| @@ -28,6 +26,9 @@ const crudSchemas = reactive<CrudSchema[]>([ | @@ -28,6 +26,9 @@ const crudSchemas = reactive<CrudSchema[]>([ | ||
| 28 | { | 26 | { |
| 29 | label: '用户账号', | 27 | label: '用户账号', |
| 30 | field: 'username', | 28 | field: 'username', |
| 29 | + form: { | ||
| 30 | + show: false | ||
| 31 | + }, | ||
| 31 | search: { | 32 | search: { |
| 32 | show: true | 33 | show: true |
| 33 | } | 34 | } |
yudao-ui-admin-vue3/vite.config.ts
| @@ -11,6 +11,7 @@ import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' | @@ -11,6 +11,7 @@ import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' | ||
| 11 | import PurgeIcons from 'vite-plugin-purge-icons' | 11 | import PurgeIcons from 'vite-plugin-purge-icons' |
| 12 | import DefineOptions from 'unplugin-vue-define-options/vite' | 12 | import DefineOptions from 'unplugin-vue-define-options/vite' |
| 13 | import { createHtmlPlugin } from 'vite-plugin-html' | 13 | import { createHtmlPlugin } from 'vite-plugin-html' |
| 14 | +import viteCompression from 'vite-plugin-compression' | ||
| 14 | 15 | ||
| 15 | // 当前执行node命令时文件夹的地址(工作目录) | 16 | // 当前执行node命令时文件夹的地址(工作目录) |
| 16 | const root = process.cwd() | 17 | const root = process.cwd() |
| @@ -80,11 +81,19 @@ export default ({ command, mode }: ConfigEnv): UserConfig => { | @@ -80,11 +81,19 @@ export default ({ command, mode }: ConfigEnv): UserConfig => { | ||
| 80 | }), | 81 | }), |
| 81 | PurgeIcons(), | 82 | PurgeIcons(), |
| 82 | DefineOptions(), | 83 | DefineOptions(), |
| 84 | + viteCompression({ | ||
| 85 | + verbose: true, // 是否在控制台输出压缩结果 | ||
| 86 | + disable: true, // 是否禁用 | ||
| 87 | + threshold: 10240, // 体积大于 threshold 才会被压缩,单位 b | ||
| 88 | + algorithm: 'gzip', // 压缩算法,可选 [ 'gzip' , 'brotliCompress' ,'deflate' , 'deflateRaw'] | ||
| 89 | + ext: '.gz', // 生成的压缩包后缀 | ||
| 90 | + deleteOriginFile: false //压缩后是否删除源文件 | ||
| 91 | + }), | ||
| 83 | createHtmlPlugin({ | 92 | createHtmlPlugin({ |
| 84 | inject: { | 93 | inject: { |
| 85 | data: { | 94 | data: { |
| 86 | title: env.VITE_APP_TITLE, | 95 | title: env.VITE_APP_TITLE, |
| 87 | - injectScript: `<script src="./inject.js"></script>`, | 96 | + injectScript: `<script src="./inject.js"></script>` |
| 88 | } | 97 | } |
| 89 | } | 98 | } |
| 90 | }) | 99 | }) |