feat(menu): 添加菜单缓存刷新功能和拖拽排序支持

- 在SysMenuController中添加refreshCache和refreshCurrentUserMenuCache接口
- 实现菜单缓存的按需刷新和用户级别缓存清理功能
- 优化菜单列表查询的缓存key策略,支持更精确的缓存命中
- 为菜单树查询添加缓存注解提升性能
- 在菜单增删改操作中完善缓存清理逻辑
- 添加allocateMenuToRole方法实现菜单角色分配功能
- 在前端DictTag组件中修复标签类型验证逻辑
- 为首页配置页面添加拖拽排序功能,支持快捷功能重新排列
- 集成Sortable.js实现拖拽交互和排序保存
- 优化菜单管理页面的缓存刷新机制和数据展示
- 完善配置更新事件处理,支持实时配置同步
This commit is contained in:
2026-02-05 23:07:31 +08:00
parent cd6c015d8f
commit f3d56bff45
8 changed files with 356 additions and 24 deletions

View File

@@ -963,9 +963,46 @@ const handleStorageChange = (event) => {
};
// 监听配置更新事件
const handleConfigUpdate = () => {
const handleConfigUpdate = (event) => {
console.log('检测到快捷功能配置更新事件,正在重新加载...');
loadUserQuickAccessConfig();
// 如果事件携带了最新配置数据,则直接使用
if (event && event.detail && event.detail.config) {
console.log('使用事件传递的最新配置数据:', event.detail.config);
// 直接更新本地存储中的配置
localStorage.setItem('homeFeaturesConfig', JSON.stringify(event.detail.config));
// 更新缓存时间戳
localStorage.setItem('homeFeaturesConfigCache', JSON.stringify(event.detail.config));
localStorage.setItem('homeFeaturesConfigCacheTimestamp', Date.now().toString());
// 使用最新配置更新首页显示
updateQuickAccessData(event.detail.config);
} else {
// 否则重新加载配置
loadUserQuickAccessConfig();
}
};
// 直接更新快捷访问数据
const updateQuickAccessData = async (configData) => {
quickAccessLoading.value = true;
try {
console.log('使用最新配置数据更新快捷访问...', configData);
// 转换菜单ID为快捷访问格式
const convertedFeatures = await convertMenuIdsToQuickAccess(configData);
console.log('转换后的功能:', convertedFeatures);
if (convertedFeatures && convertedFeatures.length > 0) {
quickAccessData.value = convertedFeatures;
} else {
// 如果转换失败,使用默认配置
quickAccessData.value = getDefaultQuickAccessConfig();
}
} catch (error) {
console.error('更新快捷访问数据失败:', error);
// 出错时使用默认配置
quickAccessData.value = getDefaultQuickAccessConfig();
} finally {
quickAccessLoading.value = false;
}
};
onMounted(async () => {