237 lines
11 KiB
JavaScript
237 lines
11 KiB
JavaScript
// 系统管理模块种子数据:机构 / 用户 / 角色 / 权限 / 用户-角色绑定 / 角色-权限绑定
|
|
// 权限树严格对应 src/router/componentRegistry.js 中 routePathComponentMap 的二级页面节点
|
|
// (2026-07-23 新增"个人开户申请" id=67,对应 /wallet/personal-open 列表页;
|
|
// 2026-07-30 新增"动态字典管理" id=69,对应 /base-config/dict 列表页,该模块后端接口尚未
|
|
// 提供,契约见《缺失的后端接口.md》Part 14,此处按前端设计契约同步 mock),
|
|
// 按钮权限仅种入前端实际使用 v-permission 指令的 code(阶段1-3),阶段4-7列表页未使用
|
|
// v-permission 指令,不编造按钮权限。
|
|
// 另外为全部 17 个二级页面各补充一条"查看XX"按钮权限(viewButtonDefs 生成 id 51-66,
|
|
// "个人开户申请"的查看按钮单独手工分配 id 68,避免与新增页面 id 67 冲突),仅作为权限
|
|
// 字典项补全,用于角色权限树勾选("页面+查看"组合即可实现只读角色),不对应任何真实前端按钮,
|
|
// 不做 v-permission 拦截。
|
|
import { initCounter } from '../utils/id.js'
|
|
|
|
// ---------------- 机构(organization) ----------------
|
|
// 注意:swagger 中机构自身的 organizationId 是字符串业务编码,与主键 id(int64)是两个不同字段;
|
|
// 其他模块外键 organizationId 均为 int64,引用的是机构的 id 主键(非本表 organizationId 字符串)。
|
|
export const organizations = [
|
|
{ id: 1, organizationId: 'ORG0001', organizationName: '总部', parentId: null, isBuiltIn: true, remark: '系统根机构' },
|
|
{ id: 2, organizationId: 'ORG0002', organizationName: '华东分部', parentId: 1, isBuiltIn: false, remark: '' },
|
|
{ id: 3, organizationId: 'ORG0003', organizationName: '华南分部', parentId: 1, isBuiltIn: false, remark: '' }
|
|
]
|
|
initCounter('organization', 4)
|
|
|
|
// ---------------- 用户(user) ----------------
|
|
// password 字段仅供 mock 登录校验使用,不会出现在任何响应 Vo 中
|
|
export const users = [
|
|
{
|
|
id: 1,
|
|
username: 'admin',
|
|
password: 'Admin@123',
|
|
realName: '系统管理员',
|
|
phone: '13800000001',
|
|
organizationId: 1,
|
|
status: 'ACTIVE',
|
|
email: 'admin@fryl.com',
|
|
userType: 'ADMIN',
|
|
lastLoginTime: null,
|
|
forceChangePwd: false
|
|
}
|
|
]
|
|
initCounter('user', 2)
|
|
|
|
// ---------------- 角色(role) ----------------
|
|
export const roles = [{ id: 1, roleName: '系统管理员', organizationId: 1, isBuiltIn: true }]
|
|
initCounter('role', 2)
|
|
|
|
// user_id -> [roleId]
|
|
export const userRoles = [{ id: 1, userId: 1, roleId: 1 }]
|
|
initCounter('userRole', 2)
|
|
|
|
// ---------------- 权限(permission) ----------------
|
|
// level 0: 8个一级分组;level 1: 17个二级页面(与 componentRegistry.js 逐一对应);
|
|
// level 2: 26个按钮权限(仅阶段1-3实际使用 v-permission 的模块)+17个"查看"权限
|
|
const groups = [
|
|
{ id: 1, permissionName: '系统管理', sortOrder: 1, icon: 'SettingOutlined' },
|
|
{ id: 2, permissionName: '基础配置', sortOrder: 2, icon: 'ToolOutlined' },
|
|
{ id: 3, permissionName: '客户管理', sortOrder: 3, icon: 'TeamOutlined' },
|
|
{ id: 4, permissionName: '钱包管理', sortOrder: 4, icon: 'WalletOutlined' },
|
|
{ id: 5, permissionName: '授信管理', sortOrder: 5, icon: 'CreditCardOutlined' },
|
|
{ id: 6, permissionName: '商户中心', sortOrder: 6, icon: 'ShopOutlined' },
|
|
{ id: 7, permissionName: '订单管理', sortOrder: 7, icon: 'FileTextOutlined' },
|
|
{ id: 8, permissionName: '支付管理', sortOrder: 8, icon: 'PayCircleOutlined' }
|
|
]
|
|
|
|
const pages = [
|
|
{ id: 9, parentId: 1, permissionName: '用户管理', routePath: '/system/user', sortOrder: 1 },
|
|
{ id: 10, parentId: 1, permissionName: '角色管理', routePath: '/system/role', sortOrder: 2 },
|
|
{ id: 11, parentId: 1, permissionName: '机构管理', routePath: '/system/org', sortOrder: 3 },
|
|
{ id: 12, parentId: 1, permissionName: '权限管理', routePath: '/system/permission', sortOrder: 4 },
|
|
{ id: 13, parentId: 2, permissionName: '核心企业管理', routePath: '/base-config/channel', sortOrder: 1 },
|
|
{ id: 14, parentId: 2, permissionName: '客户经理管理', routePath: '/base-config/manager', sortOrder: 2 },
|
|
{ id: 69, parentId: 2, permissionName: '动态字典管理', routePath: '/base-config/dict', sortOrder: 3 },
|
|
{ id: 15, parentId: 3, permissionName: '个人客户管理', routePath: '/customer/personal', sortOrder: 1 },
|
|
{ id: 16, parentId: 3, permissionName: '企业客户管理', routePath: '/customer/enterprise', sortOrder: 2 },
|
|
{ id: 17, parentId: 4, permissionName: '账户列表', routePath: '/wallet/account', sortOrder: 1 },
|
|
{ id: 18, parentId: 4, permissionName: '企业开户申请', routePath: '/wallet/enterprise-open', sortOrder: 2 },
|
|
{ id: 67, parentId: 4, permissionName: '个人开户申请', routePath: '/wallet/personal-open', sortOrder: 3 },
|
|
{ id: 19, parentId: 5, permissionName: '贷款申请', routePath: '/credit/loan-application', sortOrder: 1 },
|
|
{ id: 20, parentId: 6, permissionName: '商户管理', routePath: '/merchant/management', sortOrder: 1 },
|
|
{ id: 21, parentId: 6, permissionName: '发票管理', routePath: '/merchant/invoice', sortOrder: 2 },
|
|
{ id: 22, parentId: 7, permissionName: '汇总订单', routePath: '/order/summary', sortOrder: 1 },
|
|
{ id: 23, parentId: 7, permissionName: '原始订单', routePath: '/order/original', sortOrder: 2 },
|
|
{ id: 24, parentId: 8, permissionName: '订单支付', routePath: '/payment/order-payment', sortOrder: 1 }
|
|
]
|
|
|
|
const buttonDefs = [
|
|
['user:add', '新增用户', 9],
|
|
['user:delete', '删除用户', 9],
|
|
['user:edit', '编辑用户', 9],
|
|
['user:lock', '锁定用户', 9],
|
|
['user:unlock', '解锁用户', 9],
|
|
['user:changePwd', '修改密码', 9],
|
|
['user:resetPwd', '重置密码', 9],
|
|
['role:add', '新增角色', 10],
|
|
['role:delete', '删除角色', 10],
|
|
['role:edit', '编辑角色', 10],
|
|
['org:add', '新增机构', 11],
|
|
['org:delete', '删除机构', 11],
|
|
['org:edit', '编辑机构', 11],
|
|
['permission:add', '新增权限', 12],
|
|
['permission:edit', '编辑权限', 12],
|
|
['permission:delete', '删除权限', 12],
|
|
['channel:add', '新增核心企业', 13],
|
|
['channel:delete', '删除核心企业', 13],
|
|
['channel:edit', '编辑核心企业', 13],
|
|
['manager:add', '新增客户经理', 14],
|
|
['manager:delete', '删除客户经理', 14],
|
|
['manager:edit', '编辑客户经理', 14],
|
|
['customer-personal:add', '新增个人客户', 15],
|
|
['customer-personal:edit', '编辑个人客户', 15],
|
|
['customer-enterprise:add', '新增企业客户', 16],
|
|
['customer-enterprise:edit', '编辑企业客户', 16]
|
|
]
|
|
|
|
// "查看"按钮权限:仅作为权限字典项补全,用于角色权限树勾选,不对应任何真实前端按钮,
|
|
// 不在前端做 v-permission 拦截。覆盖 pages 中 id 9-24 共16个二级页面,排在各页面按钮组最前。
|
|
const viewButtonDefs = [
|
|
['user:view', '查看用户', 9],
|
|
['role:view', '查看角色', 10],
|
|
['org:view', '查看机构', 11],
|
|
['permission:view', '查看权限', 12],
|
|
['channel:view', '查看核心企业', 13],
|
|
['manager:view', '查看客户经理', 14],
|
|
['customer-personal:view', '查看个人客户', 15],
|
|
['customer-enterprise:view', '查看企业客户', 16],
|
|
['wallet-account:view', '查看账户', 17],
|
|
['wallet-enterprise-open:view', '查看企业开户申请', 18],
|
|
['credit-loan:view', '查看贷款申请', 19],
|
|
['merchant:view', '查看商户', 20],
|
|
['invoice:view', '查看发票', 21],
|
|
['order-summary:view', '查看汇总订单', 22],
|
|
['order-original:view', '查看原始订单', 23],
|
|
['payment:view', '查看订单支付', 24]
|
|
]
|
|
|
|
const buttons = buttonDefs.map(([permissionCode, permissionName, parentId], index) => ({
|
|
id: 25 + index,
|
|
parentId,
|
|
permissionName,
|
|
permissionCode,
|
|
sortOrder: index + 1
|
|
}))
|
|
|
|
// "查看"按钮权限的 id 顺接现有最大权限 id(50)之后,sortOrder 设为 0,排在同页面其它按钮之前
|
|
const viewButtons = viewButtonDefs
|
|
.map(([permissionCode, permissionName, parentId], index) => ({
|
|
id: 51 + index,
|
|
parentId,
|
|
permissionName,
|
|
permissionCode,
|
|
sortOrder: 0
|
|
}))
|
|
// "个人开户申请"(id 67)是本次(2026-07-23)新增页面,其"查看"权限单独手工分配 id 68,
|
|
// 不并入上面按数组下标自动生成 id 的 viewButtonDefs,避免下标+51 的公式与页面 id 67 冲突。
|
|
.concat([{ id: 68, parentId: 67, permissionName: '查看个人开户申请', permissionCode: 'wallet-personal-open:view', sortOrder: 0 }])
|
|
|
|
// "动态字典管理"(id 69)是本次(2026-07-30)新增页面,按钮权限单独手工分配 id 70-73,
|
|
// 不并入上面按数组下标自动生成 id 的 buttonDefs/viewButtonDefs,避免下标公式与已有 id 冲突。
|
|
const dictButtons = [
|
|
{ id: 70, parentId: 69, permissionName: '新增字典', permissionCode: 'dict:add', sortOrder: 1 },
|
|
{ id: 71, parentId: 69, permissionName: '编辑字典', permissionCode: 'dict:edit', sortOrder: 2 },
|
|
{ id: 72, parentId: 69, permissionName: '删除字典', permissionCode: 'dict:delete', sortOrder: 3 },
|
|
{ id: 73, parentId: 69, permissionName: '查看动态字典管理', permissionCode: 'dict:view', sortOrder: 0 }
|
|
]
|
|
|
|
export const permissions = [
|
|
...groups.map((g) => ({
|
|
id: g.id,
|
|
permissionType: 'PAGE',
|
|
permissionName: g.permissionName,
|
|
permissionCode: `menu:group:${g.id}`,
|
|
parentId: null,
|
|
level: 0,
|
|
sortOrder: g.sortOrder,
|
|
icon: g.icon,
|
|
routePath: '',
|
|
pageResourcePathList: [],
|
|
apiResourcePathList: []
|
|
})),
|
|
...pages.map((p) => ({
|
|
id: p.id,
|
|
permissionType: 'PAGE',
|
|
permissionName: p.permissionName,
|
|
permissionCode: `menu:page:${p.id}`,
|
|
parentId: p.parentId,
|
|
level: 1,
|
|
sortOrder: p.sortOrder,
|
|
icon: '',
|
|
routePath: p.routePath,
|
|
pageResourcePathList: [p.routePath],
|
|
apiResourcePathList: []
|
|
})),
|
|
...buttons.map((b) => ({
|
|
id: b.id,
|
|
permissionType: 'BUTTON',
|
|
permissionName: b.permissionName,
|
|
permissionCode: b.permissionCode,
|
|
parentId: b.parentId,
|
|
level: 2,
|
|
sortOrder: b.sortOrder,
|
|
icon: '',
|
|
routePath: '',
|
|
pageResourcePathList: [],
|
|
apiResourcePathList: []
|
|
})),
|
|
...viewButtons.map((b) => ({
|
|
id: b.id,
|
|
permissionType: 'BUTTON',
|
|
permissionName: b.permissionName,
|
|
permissionCode: b.permissionCode,
|
|
parentId: b.parentId,
|
|
level: 2,
|
|
sortOrder: b.sortOrder,
|
|
icon: '',
|
|
routePath: '',
|
|
pageResourcePathList: [],
|
|
apiResourcePathList: []
|
|
})),
|
|
...dictButtons.map((b) => ({
|
|
id: b.id,
|
|
permissionType: 'BUTTON',
|
|
permissionName: b.permissionName,
|
|
permissionCode: b.permissionCode,
|
|
parentId: b.parentId,
|
|
level: 2,
|
|
sortOrder: b.sortOrder,
|
|
icon: '',
|
|
routePath: '',
|
|
pageResourcePathList: [],
|
|
apiResourcePathList: []
|
|
}))
|
|
]
|
|
initCounter('permission', 74)
|
|
|
|
// 系统管理员角色绑定全部权限(id 1)
|
|
export const rolePermissions = permissions.map((p) => ({ roleId: 1, permissionId: p.id }))
|