feat(admin): 新增全套运营管理功能,修复核心路由bug及后端seed问题
修复Vue Admin布局中RouterView未绑定唯一key的问题,解决RBAC系统资源页面切换后内容不刷新的ISSUE-001故障,新增routeViewKey工具函数区分路由实例 完善路由配置,新增admin空路径路由,修复路由命名空路径告警 新增媒体管理、运维发布/重置页面,补全全站路由注册与动态路由过滤逻辑 新增玩法、线索、管家、系统资源管理的全套工具函数、业务组件及单元测试用例 修复后端app/seed.py中媒体资源重复检测未考虑会话内pending资源的bug,新增对应测试验证修复逻辑 修正alembic迁移版本0015的依赖关系,删除废弃的旧迁移文件 优化后端系统接口的字典序列化逻辑,简化重复代码 添加QA验收报告与相关测试截图,完善项目测试覆盖
This commit is contained in:
1 parent
fa6fd2a8eb
commit
efab6d1398
73 files changed
+3963
-788
No files matched your search
@@ -0,0 +1,40 @@
|
||||
import { ref, watch, type Ref } from "vue";
|
||||
import { getSystemResource } from "@/api/client";
|
||||
|
||||
export type SystemResourceResponse = { items: unknown[] };
|
||||
export type SystemResourceFetcher = (resource: string) => Promise<SystemResourceResponse>;
|
||||
|
||||
function errorMessage(error: unknown) {
|
||||
return error instanceof Error ? error.message : "系统数据加载失败";
|
||||
}
|
||||
|
||||
export function useSystemResource(
|
||||
resource: Readonly<Ref<string>>,
|
||||
fetcher: SystemResourceFetcher = getSystemResource,
|
||||
) {
|
||||
const items = ref<unknown[]>([]);
|
||||
const loading = ref(true);
|
||||
const error = ref("");
|
||||
let requestVersion = 0;
|
||||
|
||||
const load = async () => {
|
||||
const currentVersion = ++requestVersion;
|
||||
loading.value = true;
|
||||
error.value = "";
|
||||
try {
|
||||
const response = await fetcher(resource.value);
|
||||
if (currentVersion !== requestVersion) return;
|
||||
items.value = response.items;
|
||||
} catch (err) {
|
||||
if (currentVersion !== requestVersion) return;
|
||||
items.value = [];
|
||||
error.value = errorMessage(err);
|
||||
} finally {
|
||||
if (currentVersion === requestVersion) loading.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
watch(resource, load, { immediate: true });
|
||||
|
||||
return { items, loading, error, reload: load };
|
||||
}
|
||||
Reference in new issue
Block a user