From 769cece36718666c90d31787956cdf04b880783d Mon Sep 17 00:00:00 2001 From: wangys <3401275564@qq.com> Date: Wed, 19 Nov 2025 10:41:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BA=BA=E5=91=98=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=99=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.bin/mysql/sql/createTableCrontab.sql | 2 +- .../.bin/mysql/sql/initMenuData.sql | 2 + .../resources/mapper/EmailDefaultMapper.xml | 3 +- .../src/components/base/GenericSelector.vue | 1 - .../manage/crontab/MetaEmailDefaultView.vue | 495 ++++++++++++++ .../admin/manage/crontab/NewsCrawlerView.vue | 43 +- .../manage/crontab/TaskManagementView.vue | 633 ------------------ 7 files changed, 537 insertions(+), 642 deletions(-) create mode 100644 schoolNewsWeb/src/views/admin/manage/crontab/MetaEmailDefaultView.vue delete mode 100644 schoolNewsWeb/src/views/admin/manage/crontab/TaskManagementView.vue diff --git a/schoolNewsServ/.bin/mysql/sql/createTableCrontab.sql b/schoolNewsServ/.bin/mysql/sql/createTableCrontab.sql index 79a62b6..dd9ddb5 100644 --- a/schoolNewsServ/.bin/mysql/sql/createTableCrontab.sql +++ b/schoolNewsServ/.bin/mysql/sql/createTableCrontab.sql @@ -143,7 +143,7 @@ CREATE TABLE `tb_crontab_email_default` ( `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除(0:否 1:是)', PRIMARY KEY (`id`), UNIQUE KEY `uk_default_id` (`default_id`), - UNIQUE KEY `uk_meta_id` (`meta_id`), + UNIQUE KEY `uk_meta_id` (`meta_id`, `user_id`), KEY `idx_deleted` (`deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='定时任务邮件通知默认接收人员表'; diff --git a/schoolNewsServ/.bin/mysql/sql/initMenuData.sql b/schoolNewsServ/.bin/mysql/sql/initMenuData.sql index ab660c0..abfa3bb 100644 --- a/schoolNewsServ/.bin/mysql/sql/initMenuData.sql +++ b/schoolNewsServ/.bin/mysql/sql/initMenuData.sql @@ -162,6 +162,7 @@ INSERT INTO `tb_sys_menu` VALUES ('7002', 'menu_admin_login_logs', '登录日志', 'menu_admin_logs_manage', '/admin/manage/logs/login', 'admin/manage/logs/LoginLogsView', NULL, 2, 0, 'SidebarLayout', '1', NULL, '2025-10-27 17:26:06', '2025-10-29 11:48:39', NULL, 0), ('7003', 'menu_admin_system_config', '系统配置', 'menu_sys_manage', '/admin/manage/system/config', 'admin/manage/system/SystemConfigView', NULL, 7, 0, 'SidebarLayout', '1', NULL, '2025-10-27 17:26:06', '2025-10-29 11:48:39', NULL, 0), ('8000', 'menu_admin_crontab_manage', '定时任务管理', NULL, '', '', 'admin/crontab.svg', 8, 0, 'SidebarLayout', '1', NULL, '2025-10-27 17:26:06', '2025-10-29 11:48:39', NULL, 0), +('8001', 'menu_admin_meta_email_default', '默认接收人配置', 'menu_admin_crontab_manage', '/admin/manage/crontab/meta-email-default', 'admin/manage/crontab/MetaEmailDefaultView', NULL, 1, 0, 'SidebarLayout', '1', NULL, '2025-11-18 18:00:00', '2025-11-18 18:00:00', NULL, 0), ('8002', 'menu_admin_crontab_log', '执行日志', 'menu_admin_crontab_manage', '/admin/manage/crontab/log', 'admin/manage/crontab/LogManagementView', NULL, 2, 0, 'SidebarLayout', '1', NULL, '2025-10-27 17:26:06', '2025-10-29 11:48:39', NULL, 0), ('8003', 'menu_admin_news_crawler', '新闻爬虫配置', 'menu_admin_crontab_manage', '/admin/manage/crontab/news-crawler', 'admin/manage/crontab/NewsCrawlerView', NULL, 3, 0, 'SidebarLayout', '1', NULL, '2025-10-27 17:26:06', '2025-10-29 11:48:39', NULL, 0), -- 消息通知模块菜单 (9000-9999) @@ -227,6 +228,7 @@ INSERT INTO `tb_sys_menu_permission` (id, permission_id, menu_id, creator, creat -- 定时任务管理菜单权限关联 ('232', 'perm_crontab_manage', 'menu_admin_crontab_manage', '1', now()), +('236', 'perm_crontab_manage', 'menu_admin_meta_email_default', '1', now()), ('233', 'perm_crontab_manage', 'menu_admin_crontab_task', '1', now()), ('234', 'perm_crontab_manage', 'menu_admin_crontab_log', '1', now()), ('235', 'perm_crontab_manage', 'menu_admin_news_crawler', '1', now()), diff --git a/schoolNewsServ/crontab/src/main/resources/mapper/EmailDefaultMapper.xml b/schoolNewsServ/crontab/src/main/resources/mapper/EmailDefaultMapper.xml index 01df3fd..9b75d58 100644 --- a/schoolNewsServ/crontab/src/main/resources/mapper/EmailDefaultMapper.xml +++ b/schoolNewsServ/crontab/src/main/resources/mapper/EmailDefaultMapper.xml @@ -65,12 +65,11 @@ \ No newline at end of file diff --git a/schoolNewsWeb/src/components/base/GenericSelector.vue b/schoolNewsWeb/src/components/base/GenericSelector.vue index 7c5b411..803b37b 100644 --- a/schoolNewsWeb/src/components/base/GenericSelector.vue +++ b/schoolNewsWeb/src/components/base/GenericSelector.vue @@ -878,7 +878,6 @@ function moveBackAll() { // 重新展开所有节点 expandAllNodes(treeData.value); } - selectedTarget.value = []; } diff --git a/schoolNewsWeb/src/views/admin/manage/crontab/MetaEmailDefaultView.vue b/schoolNewsWeb/src/views/admin/manage/crontab/MetaEmailDefaultView.vue new file mode 100644 index 0000000..2f74394 --- /dev/null +++ b/schoolNewsWeb/src/views/admin/manage/crontab/MetaEmailDefaultView.vue @@ -0,0 +1,495 @@ + + + + + diff --git a/schoolNewsWeb/src/views/admin/manage/crontab/NewsCrawlerView.vue b/schoolNewsWeb/src/views/admin/manage/crontab/NewsCrawlerView.vue index 0c92890..d76d251 100644 --- a/schoolNewsWeb/src/views/admin/manage/crontab/NewsCrawlerView.vue +++ b/schoolNewsWeb/src/views/admin/manage/crontab/NewsCrawlerView.vue @@ -386,6 +386,8 @@ const useDefaultRecipients = ref(false); const defaultRecipients = ref([]); const additionalRecipients = ref([]); const showUserSelector = ref(false); +// 所有用户列表(带部门信息),供 selectedRecipients 反查使用 +const allUsers = ref([]); // 搜索表单 const searchForm = reactive({ @@ -425,17 +427,45 @@ const selectedMethod = computed(() => { return selectedTemplate.value.methods.find(m => m.metaId === selectedMethodId.value) || null; }); -// 计算已选接收人(包括默认接收人+额外添加的接收人) +// 计算已选接收人(包括默认接收人+额外接收人),并转换为带部门信息的完整用户对象 const selectedRecipients = computed(() => { + // 先根据开关计算出合并后的接收人(RecipientUserInfo)列表 + let baseList: RecipientUserInfo[]; if (useDefaultRecipients.value) { - // 合并默认接收人和额外接收人,去重 const all = [...defaultRecipients.value, ...additionalRecipients.value]; const uniqueMap = new Map(); all.forEach(r => uniqueMap.set(r.userId, r)); - return Array.from(uniqueMap.values()); + baseList = Array.from(uniqueMap.values()); } else { - return additionalRecipients.value; + baseList = additionalRecipients.value; } + + // 用 userId 建索引,按 userId 反查完整用户信息(含 deptID / deptName / parentID) + const userMap = new Map( + allUsers.value.map(user => [user.userId, user]) + ); + + const result = baseList.map(item => { + const userId = item.userId; + const user = userMap.get(userId); + + if (user) { + return { + ...user, + isDept: false + }; + } + + // 找不到对应用户时,至少保证选择器可用 + return { + userId: item.userId, + username: item.username, + userEmail: item.userEmail, + isDept: false + }; + }); + + return result; }); // 监听模板选择变化 @@ -488,7 +518,10 @@ async function fetchAllUsers(): Promise> { deptName: user.deptName, parentID: user.parentID })); - + + // 缓存完整用户列表,给 selectedRecipients 使用 + allUsers.value = users; + return { ...result, dataList: users diff --git a/schoolNewsWeb/src/views/admin/manage/crontab/TaskManagementView.vue b/schoolNewsWeb/src/views/admin/manage/crontab/TaskManagementView.vue deleted file mode 100644 index facd306..0000000 --- a/schoolNewsWeb/src/views/admin/manage/crontab/TaskManagementView.vue +++ /dev/null @@ -1,633 +0,0 @@ - - - - - -