前端在界面上要展示一个三维的对象数组选项列表:
后端底层定义的是一个枚举类型:
enum Permission {
// 周转物 周转物列表
PERMISSION_XXX_YYY_ZZZ_20 = 20; // 查看周转物
PERMISSION_XXX_YYY_ZZZ_21 = 21; // 新建周转物
PERMISSION_XXX_YYY_ZZZ_22 = 22; // 编辑周转物
PERMISSION_XXX_YYY_ZZZ_23 = 23; // 删除周转物
// 周转物 借出归还记录
PERMISSION_XXX_YYY_ZZZ_30 = 30; // 查看借出条目
PERMISSION_XXX_YYY_ZZZ_31 = 31; // 新建借出条目
PERMISSION_XXX_YYY_ZZZ_32 = 32; // 编辑借出条目
PERMISSION_XXX_YYY_ZZZ_33 = 33; // 删除借出条目
...
}
后端枚举的命名规范是根据他们微服务的模块来命名的。目前我的想法是前端定义一个三维对象数组,来达到和后端的枚举值一一对应:
interface PermissionOption {
text: string
value: string
children: {
text: string
value: string
children: { text: string; value: string }[]
}[]
}
export const permissionOptionList: PermissionOption[] = [
{
text: '周转物',
value: 'product',
children: [
{
text: '周转物列表',
value: 'product_quotation',
children: [
{ text: '查看周转物', value: 'PERMISSION_XXX_YYY_ZZZ_20' },
{ text: '新建周转物', value: 'PERMISSION_XXX_YYY_ZZZ_21' },
{ text: '编辑周转物', value: 'PERMISSION_XXX_YYY_ZZZ_22' },
{ text: '删除周转物', value: 'PERMISSION_XXX_YYY_ZZZ_23' },
],
},
{
text: '借出归还记录',
value: 'product_product',
children: [
{ text: '查看借出条目', value: 'PERMISSION_XXX_YYY_ZZZ_30' },
{ text: '新建借出条目', value: 'PERMISSION_XXX_YYY_ZZZ_31' },
{ text: '编辑借出条目', value: 'PERMISSION_XXX_YYY_ZZZ_32' },
{ text: '删除借出条目', value: 'PERMISSION_XXX_YYY_ZZZ_34' },
],
},
],
}
]
但是这样做的问题是这个选项列表很长,前端这样去定义一个三维对象数组很累。而且当界面的选项需要做改动的时候,前后端要维护两套数据,感觉不太好。请问有什么更好的解决方案吗?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…