Commit 69a7b0de57d440a1cd1356d3ea52072a56e80883

Authored by 芋道源码
Committed by Gitee
2 parents b0cdfd7a 7dac4467

!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 &#39;@/router&#39; @@ -7,6 +7,7 @@ import { resetRouter } from &#39;@/router&#39;
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 &#39;qs&#39; @@ -4,6 +4,8 @@ import qs from &#39;qs&#39;
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> &nbsp; </div>' + 114 '<div> &nbsp; </div>' +
106 '<div>参考 https://doc.iocoder.cn/ 教程</div>' + 115 '<div>参考 https://doc.iocoder.cn/ 教程</div>' +
107 '<div> &nbsp; </div>' + 116 '<div> &nbsp; </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 &#39;@/utils&#39; @@ -8,13 +7,13 @@ import { underlineToHump } from &#39;@/utils&#39;
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: &#39;ep:house&#39; }) @@ -40,7 +47,6 @@ const iconHouse = useIcon({ icon: &#39;ep:house&#39; })
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 () =&gt; { @@ -77,6 +84,20 @@ const getTenantId = async () =&gt; {
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 () =&gt; { @@ -103,14 +124,13 @@ const getRoutes = async () =&gt; {
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(() =&gt; { @@ -165,7 +186,7 @@ onMounted(() =&gt; {
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(() =&gt; { @@ -178,7 +199,7 @@ onMounted(() =&gt; {
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(() =&gt; { @@ -199,7 +220,9 @@ onMounted(() =&gt; {
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(() =&gt; { @@ -209,24 +232,28 @@ onMounted(() =&gt; {
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(() =&gt; { @@ -254,7 +281,7 @@ onMounted(() =&gt; {
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(() =&gt; { @@ -266,6 +293,11 @@ onMounted(() =&gt; {
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&lt;string&gt;(&#39;&#39;) @@ -67,27 +67,21 @@ const redirect = ref&lt;string&gt;(&#39;&#39;)
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 () =&gt; { @@ -126,7 +120,6 @@ const signIn = async () =&gt; {
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 () =&gt; { @@ -106,7 +106,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -114,7 +114,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -122,7 +122,7 @@ onMounted(async () =&gt; {
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 &#39;dayjs&#39; @@ -4,11 +4,11 @@ import dayjs from &#39;dayjs&#39;
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) =&gt; { @@ -40,8 +40,8 @@ const beforeUpload = (file: UploadRawFile) =&gt; {
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(() =&gt; { @@ -96,7 +96,7 @@ onMounted(() =&gt; {
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) =&gt; { @@ -38,9 +39,13 @@ const filterNode = (value: string, data: Tree) =&gt; {
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 () =&gt; { @@ -73,7 +78,7 @@ const submitForm = async () =&gt; {
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 () =&gt; { @@ -104,6 +109,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -111,20 +117,20 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -189,7 +189,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -197,7 +197,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -221,7 +221,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -246,7 +246,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -254,7 +254,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -195,7 +195,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -238,7 +238,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -246,7 +246,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -157,7 +157,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -165,7 +165,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -173,7 +173,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -177,7 +177,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -185,7 +185,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -193,7 +193,7 @@ onMounted(async () =&gt; {
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 () =&gt; { @@ -147,10 +147,10 @@ onMounted(async () =&gt; {
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 &#39;@/api/system/post&#39; @@ -29,9 +30,8 @@ import { listSimplePostsApi } from &#39;@/api/system/post&#39;
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&lt;UserVO&gt;({ @@ -55,6 +55,7 @@ const { register, tableObject, methods } = useTable&lt;UserVO&gt;({
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 }) =&gt; { @@ -73,7 +74,9 @@ const handleDeptNodeClick = (data: { [key: string]: any }) =&gt; {
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 () =&gt; { @@ -138,7 +141,7 @@ const submitForm = async () =&gt; {
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) =&gt; { @@ -146,9 +149,8 @@ const handleStatusChange = async (row: UserVO) =&gt; {
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) =&gt; { @@ -159,12 +161,10 @@ const handleStatusChange = async (row: UserVO) =&gt; {
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) =&gt; { @@ -215,8 +215,8 @@ const beforeExcelUpload = (file: UploadRawFile) =&gt; {
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 &#39;@/hooks/web/useCrudSchemas&#39; @@ -7,9 +7,7 @@ import { CrudSchema, useCrudSchemas } from &#39;@/hooks/web/useCrudSchemas&#39;
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&lt;CrudSchema[]&gt;([ @@ -28,6 +26,9 @@ const crudSchemas = reactive&lt;CrudSchema[]&gt;([
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 &#39;vite-plugin-svg-icons&#39; @@ -11,6 +11,7 @@ import { createSvgIconsPlugin } from &#39;vite-plugin-svg-icons&#39;
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 =&gt; { @@ -80,11 +81,19 @@ export default ({ command, mode }: ConfigEnv): UserConfig =&gt; {
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 })