feat(system): 实现RuoYi风格的RBAC管理页面
新增系统资源工具函数库,包含树形结构构建、树过滤和数据范围中文标签转换;重构系统资源编辑器组件,改用树形选择器优化权限配置并新增表单验证;重构系统管理页面布局,统一使用RuoYi风格样式,新增多维度筛选搜索功能,优化各资源表格展示;新增用户密码重置功能,移除过时的useSystemResource钩子并更新测试用例。
This commit is contained in:
1 parent
994d07cfca
commit
f087663b5b
5 files changed
+350
-52
No files matched your search
@@ -1,25 +1,29 @@
|
||||
import { nextTick, ref } from "vue";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { useSystemResource } from "./system-resource";
|
||||
import { buildSystemTree, dataScopeLabel, filterSystemTree } from "@/lib/system-resource";
|
||||
|
||||
describe("system resource loader", () => {
|
||||
it("reloads records when the route resource changes", async () => {
|
||||
const resource = ref("users");
|
||||
const requestedResources: string[] = [];
|
||||
const state = useSystemResource(resource, async (name) => {
|
||||
requestedResources.push(name);
|
||||
return { items: [name] };
|
||||
});
|
||||
describe("system resource tree helpers", () => {
|
||||
const items = [
|
||||
{ id: "root", name: "系统管理", parentId: null, sortOrder: 10 },
|
||||
{ id: "child", name: "用户管理", parentId: "root", sortOrder: 20 },
|
||||
{ id: "other", name: "首页", parentId: null, sortOrder: 5 },
|
||||
];
|
||||
|
||||
await nextTick();
|
||||
await Promise.resolve();
|
||||
expect(requestedResources).toEqual(["users"]);
|
||||
expect(state.items.value).toEqual(["users"]);
|
||||
it("builds a stable parent-child tree ordered by sort", () => {
|
||||
expect(buildSystemTree(items)).toEqual([
|
||||
{ ...items[2], children: [] },
|
||||
{ ...items[0], children: [{ ...items[1], children: [] }] },
|
||||
]);
|
||||
});
|
||||
|
||||
resource.value = "roles";
|
||||
await nextTick();
|
||||
await Promise.resolve();
|
||||
expect(requestedResources).toEqual(["users", "roles"]);
|
||||
expect(state.items.value).toEqual(["roles"]);
|
||||
it("keeps matching ancestors when filtering a tree", () => {
|
||||
expect(filterSystemTree(buildSystemTree(items), "用户")).toEqual([
|
||||
{ ...items[0], children: [{ ...items[1], children: [] }] },
|
||||
]);
|
||||
});
|
||||
|
||||
it("uses RuoYi-compatible Chinese labels for data scope", () => {
|
||||
expect(dataScopeLabel("all")).toBe("全部数据");
|
||||
expect(dataScopeLabel("dept_and_children")).toBe("本部门及以下");
|
||||
expect(dataScopeLabel("custom_dept")).toBe("自定义数据");
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user