abp-vnext-pro 实战(一,如何增加菜单项)

发布时间 2023-07-21 16:42:24作者: Gu

1. 在前端的vben admin 目录新增菜单

直接在 src/router/routes/modules 内新增一个模块文件即可。不需要手动引入,放在src/router/routes/modules 内的文件会自动被加载。

import type { AppRouteModule } from '/@/router/types';
import { LAYOUT } from '/@/router/constant';
import { t } from '/@/hooks/web/useI18n';
const tenant: AppRouteModule = {
  path: '/crm',
  name: 'CRM',
  component: LAYOUT,
  meta: {
    orderNo: 40,
    icon: 'ant-design:contacts-outlined',
    title: t('routes.crm.module'),
    policy: 'AbpTenantManagement',
  },
  children: [
    {
      path: 'Tenant',
      name: 'Tenant',
      component: () => import('/@/views/tenants/Tenant.vue'),
      meta: {
        title: t('routes.crm.clientInfo'),
        icon: 'ant-design:switcher-filled',
        policy: 'AbpTenantManagement.Tenants',
      },
    },
        {
      path: 'Tenant',
      name: 'Tenant',
      component: () => import('/@/views/tenants/Tenant.vue'),
      meta: {
        title: t('routes.crm.clientInfo'),
        icon: 'ant-design:switcher-filled',
        policy: 'AbpTenantManagement.Tenants',
      },
    },
        {
      path: 'Tenant',
      name: 'Tenant',
      component: () => import('/@/views/tenants/Tenant.vue'),
      meta: {
        title: t('routes.crm.clientInfo'),
        icon: 'ant-design:switcher-filled',
        policy: 'AbpTenantManagement.Tenants',
      },
    },
  ],
};

export default tenant;

2. 菜单名字的本地化,t('routes.模块名字.变量名字') 来表示,

在vben28\src\locales\lang\zh-CN\routes\[模块名字].ts

export default {
  module: 'CRM企业版',
  clientInfo: '客户信息',
  name: '客户名称',
  code: '客户编号',
  industry: '所属行业',
  owner: '跟进人',
  contact: '客户联系人',
  contactTel: '客户联系电话',
  contactEmail: '客户邮件',
  project_name: '项目名称',
  project_progress: '进度',
  project_owner: '负责人',
  project_participant: '参与人',
  project_startDate: '开始日期',
  project_endDate: '结束日期',
  project_status: '项目状态',
};

3.  后端要对前端的菜单做权限控制,没有权限的就不能看到

 角色权限在Application.Contracts\Permissions 目录定义CRMPermissionDefinitionProvider.cs,CRMPermission.cs

在Domain.Shared\Localization目录定义CRMREsource.cs, 新建CRM目录和zh-Hans.json文件

在Domain.Shared\ERPDomainSharedModule.cs 文件里的ConfigureServices方法里增加

            Configure<AbpExceptionLocalizationOptions>(options => { options.MapCodeNamespace(ERPDomainSharedConsts.NameSpace, typeof(ERPResource)); });
            
            Configure<AbpLocalizationOptions>(options =>
            {
                options.Resources
                    .Add<CRMResource>(ERPDomainSharedConsts.DefaultCultureName)
                    .AddVirtualJson("/Localization/CRM");

                options.DefaultResourceType = typeof(CRMResource);
            });

            Configure<AbpExceptionLocalizationOptions>(options => { options.MapCodeNamespace(ERPDomainSharedConsts.NameSpace, typeof(CRMResource)); });