Browse Source

完善 权限

main
kely 11 months ago
parent
commit
77ba2d5400
  1. 12
      web-admin-app/src/app/app.config.ts
  2. 89
      web-admin-app/src/app/app.routes.ts
  3. 234
      web-admin-app/src/app/pages/fixed-asset/fixed-asset.component.html
  4. 2
      web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-ledger/fixed-asset-ledger.component.html
  5. 7
      web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-ledger/fixed-asset-ledger.component.ts
  6. 40
      web-admin-app/src/app/pages/flow/flow-layout/flow-layout.component.html
  7. 21
      web-admin-app/src/app/pages/system/index/system.component.html
  8. 8
      web-admin-app/src/app/shared/permission/permission.guard.ts
  9. BIN
      web-admin-app/src/favicon.ico

12
web-admin-app/src/app/app.config.ts

@ -15,6 +15,18 @@ import { ServerPaginatedTableService } from './shared/components/server-paginate
registerLocaleData(zh)
const disabledLog = () => {
const originalLog = console.log
const isEnabled = localStorage.getItem('_log')
if (isEnabled) {
console.log = originalLog
} else {
console.log = () => {}
}
}
disabledLog()
export function initializeApp(configService: ServerPaginatedTableService) {
return () => {
configService.initial()

89
web-admin-app/src/app/app.routes.ts

@ -66,15 +66,16 @@ export const routes: Routes = [
path: 'login',
component: LoginComponent,
},
{
path: 'forbidden',
component: ForbiddenComponent,
},
{
path: '',
component: LayoutComponent,
canActivate: [authGuard],
children: [
{
path: 'forbidden',
component: ForbiddenComponent,
},
{
path: '',
pathMatch: 'full',
@ -115,7 +116,17 @@ export const routes: Routes = [
path: 'system',
component: SystemComponent,
title: '系统管理',
canActivate: [permissionGuard],
data: {
permission: {
only: ['system-user:view', 'system-role:view', 'system-flow-form:view'],
},
},
children: [
{
path: '403',
component: ForbiddenComponent,
},
{
path: '',
pathMatch: 'full',
@ -126,19 +137,33 @@ export const routes: Routes = [
component: OrgSettingComponent,
canActivate: [permissionGuard],
title: '组织架构',
data: {},
data: {
permission: {
only: ['system-user:view'],
redirectTo: '/system/403',
},
},
},
{
path: 'role',
component: SystemRoleComponent,
canActivate: [permissionGuard],
title: '角色管理',
data: {},
data: {
permission: {
only: ['system-role:view'],
},
},
},
{
path: 'flow',
canActivate: [permissionGuard],
title: '流程管理',
data: {
permission: {
only: ['system-flow-form:view'],
},
},
children: [
{
path: '',
@ -181,6 +206,10 @@ export const routes: Routes = [
title: '固资管理',
component: FixedAssetComponent,
children: [
{
path: '403',
component: ForbiddenComponent,
},
{
path: '',
pathMatch: 'full',
@ -190,7 +219,26 @@ export const routes: Routes = [
path: 'ledger',
title: '资产台账',
component: FixedAssetLedgerComponent,
canActivate: [permissionGuard],
data: {
permission: {
only: [
'ledger-asset-search:view',
'ledger-storage:view',
'ledger-asset-belong:view',
'ledger-asset-org:view',
'ledger-asset-position:view',
'ledger-asset-category:view',
'ledger-asset-my-own:view',
],
redirectTo: '/fixed-asset/403',
},
},
children: [
{
path: '403',
component: ForbiddenComponent,
},
{
path: '',
pathMatch: 'full',
@ -200,6 +248,14 @@ export const routes: Routes = [
path: 'asset-search',
title: '资产公共台账',
component: FixedAssetSearchComponent,
canActivate: [permissionGuard],
data: {
permission: {
only: ['ledger-asset-search:view'],
redirectTo: '/fixed-asset/ledger/403',
},
},
},
{
path: 'storage',
@ -460,7 +516,21 @@ export const routes: Routes = [
path: 'asset-flow',
title: '固资流程',
component: FlowLayoutComponent,
data: {
permission: {
only: [
'asset-flow-home:view',
'asset-flow-my-apply:view',
'asset-flow-my-todo:view',
'asset-flow-my-finished:view',
],
},
},
children: [
{
path: '403',
component: ForbiddenComponent,
},
{
path: '',
pathMatch: 'full',
@ -470,6 +540,13 @@ export const routes: Routes = [
path: 'index',
title: '流程首页',
component: FlowMainComponent,
canActivate: [permissionGuard],
data: {
permission: {
only: ['asset-flow-home:view'],
redirectTo: '/asset-flow/403',
},
},
},
{
path: 'my-apply',

234
web-admin-app/src/app/pages/fixed-asset/fixed-asset.component.html

@ -2,39 +2,120 @@
class="menu bg-white shadow fixed left-0 top-12 bottom-0 z-20 w-48 flex-shrink-0 py-3 overflow-y-auto overflow-x-hidden"
>
<ul nz-menu nzMode="inline">
<li nz-menu-item [nzPaddingLeft]="12" [routerLink]="['/fixed-asset/ledger']" nzMatchRouter>固资台账</li>
<li
nz-menu-item
*appPermission="[
'ledger-asset-search:view',
'ledger-storage:view',
'ledger-asset-belong:view',
'ledger-asset-org:view',
'ledger-asset-position:view',
'ledger-asset-category:view',
'ledger-asset-my-own:view'
]"
[nzPaddingLeft]="12"
[routerLink]="['/fixed-asset/ledger']"
nzMatchRouter
>
固资台账
</li>
<li
nz-submenu
[nzOpen]="openedSubmenu.startsWith('/fixed-asset/manage/')"
[nzPaddingLeft]="12"
nzTitle="固资管理"
*appPermission="[
'fixed-asset-manage:view',
'fixed-asset-manage-entry:view',
'fixed-asset-manage-distribution:view',
'fixed-asset-manage-return:view',
'fixed-asset-manage-borrow:view',
'fixed-asset-manage-revert:view',
'fixed-asset-manage-allot:view',
'fixed-asset-manage-transfer:view',
'fixed-asset-manage-scrap:view'
]"
>
<ul>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/manage/list']" nzMatchRouter>
<li
*appPermission="['fixed-asset-manage:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/manage/list']"
nzMatchRouter
>
资产管理
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/manage/entry']" nzMatchRouter>
<li
*appPermission="['fixed-asset-manage-entry:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/manage/entry']"
nzMatchRouter
>
资产入库
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/manage/distribution']" nzMatchRouter>
<li
*appPermission="['fixed-asset-manage-distribution:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/manage/distribution']"
nzMatchRouter
>
资产领用
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/manage/return']" nzMatchRouter>
<li
*appPermission="['fixed-asset-manage-return:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/manage/return']"
nzMatchRouter
>
资产退库
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/manage/borrow']" nzMatchRouter>
<li
*appPermission="['fixed-asset-manage-borrow:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/manage/borrow']"
nzMatchRouter
>
资产借用
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/manage/revert']" nzMatchRouter>
<li
*appPermission="['fixed-asset-manage-revert:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/manage/revert']"
nzMatchRouter
>
资产归还
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/manage/allot']" nzMatchRouter>
<li
*appPermission="['fixed-asset-manage-allot:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/manage/allot']"
nzMatchRouter
>
资产调拨
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/manage/transfer']" nzMatchRouter>
<li
*appPermission="['fixed-asset-manage-transfer:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/manage/transfer']"
nzMatchRouter
>
资产转移
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/manage/scrap']" nzMatchRouter>
<li
*appPermission="['fixed-asset-manage-scrap:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/manage/scrap']"
nzMatchRouter
>
资产报废
</li>
@ -73,16 +154,39 @@
[nzPaddingLeft]="12"
nz-submenu
nzTitle="维护维保"
*appPermission="[
'fixed-asset-repair-type:view',
'fixed-asset-repair-list:view',
'fixed-asset-repair-fault:view'
]"
[nzOpen]="openedSubmenu.startsWith('/fixed-asset/repair/')"
>
<ul>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/repair/type']" nzMatchRouter>
<li
*appPermission="['fixed-asset-repair-type:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/repair/type']"
nzMatchRouter
>
维修类型
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/repair/list']" nzMatchRouter>
<li
*appPermission="['fixed-asset-repair-list:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/repair/list']"
nzMatchRouter
>
维修登记
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/repair/fault']" nzMatchRouter>
<li
*appPermission="['fixed-asset-repair-fault:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/repair/fault']"
nzMatchRouter
>
故障登记
</li>
</ul>
@ -95,12 +199,25 @@
nz-submenu
nzTitle="盘点管理"
[nzOpen]="openedSubmenu.startsWith('/fixed-asset/stocktaking/')"
*appPermission="['stocktaking-plan:view', 'stocktaking-job:view']"
>
<ul>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/stocktaking/plan']" nzMatchRouter>
<li
*appPermission="['stocktaking-plan:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/stocktaking/plan']"
nzMatchRouter
>
盘点计划
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/stocktaking/job']" nzMatchRouter>
<li
*appPermission="['stocktaking-job:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/stocktaking/job']"
nzMatchRouter
>
盘点任务
</li>
</ul>
@ -112,15 +229,39 @@
nz-submenu
nzTitle="预警中心"
[nzOpen]="openedSubmenu.startsWith('/fixed-asset/alert/')"
*appPermission="[
'alert-borrow:view',
'alert-maintenance:view',
'alert-inventory-safety:view',
'alert-inventory-up:view',
'alert-inventory-down:view'
]"
>
<ul>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/alert/borrow']" nzMatchRouter>
<li
*appPermission="['alert-borrow:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/alert/borrow']"
nzMatchRouter
>
借用预警
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/alert/maintenance']" nzMatchRouter>
<li
*appPermission="['alert-maintenance:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/alert/maintenance']"
nzMatchRouter
>
维保到期预警
</li>
<li
*appPermission="[
'alert-inventory-safety:view',
'alert-inventory-up:view',
'alert-inventory-down:view'
]"
nzMatchRouter
[nzPaddingLeft]="24"
nz-submenu
@ -129,6 +270,7 @@
>
<ul>
<li
*appPermission="['alert-inventory-safety:view']"
nz-menu-item
[nzPaddingLeft]="36"
[routerLink]="['/fixed-asset/alert/inventory/safety']"
@ -137,6 +279,7 @@
安全库存
</li>
<li
*appPermission="['alert-inventory-up:view']"
nz-menu-item
[nzPaddingLeft]="36"
[routerLink]="['/fixed-asset/alert/inventory/up']"
@ -145,6 +288,7 @@
安全库存上限
</li>
<li
*appPermission="['alert-inventory-down:view']"
nz-menu-item
[nzPaddingLeft]="36"
[routerLink]="['/fixed-asset/alert/inventory/down']"
@ -163,27 +307,71 @@
nz-submenu
nzTitle="基础数据"
[nzOpen]="openedSubmenu.startsWith('/fixed-asset/basic/')"
*appPermission="[
'basic-category:view',
'basic-manufacturer:view',
'basic-supplier:view',
'basic-maintainer:view',
'basic-save-position:view',
'basic-warehouse:view'
]"
>
<ul>
<!-- <li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/basic/goods-stock']" nzMatchRouter>
物品档案
</li> -->
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/basic/category']" nzMatchRouter>
<li
*appPermission="['basic-category:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/basic/category']"
nzMatchRouter
>
物品分类
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/basic/manufacturer']" nzMatchRouter>
<li
*appPermission="['basic-manufacturer:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/basic/manufacturer']"
nzMatchRouter
>
生产商
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/basic/supplier']" nzMatchRouter>
<li
*appPermission="['basic-supplier:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/basic/supplier']"
nzMatchRouter
>
供应商
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/basic/maintainer']" nzMatchRouter>
<li
*appPermission="['basic-maintainer:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/basic/maintainer']"
nzMatchRouter
>
维保商
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/basic/save-position']" nzMatchRouter>
<li
*appPermission="['basic-save-position:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/basic/save-position']"
nzMatchRouter
>
存放位置
</li>
<li nz-menu-item [nzPaddingLeft]="24" [routerLink]="['/fixed-asset/basic/warehouse']" nzMatchRouter>
<li
*appPermission="['basic-warehouse:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/basic/warehouse']"
nzMatchRouter
>
存放仓库
</li>
</ul>

2
web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-ledger/fixed-asset-ledger.component.html

@ -12,7 +12,7 @@
</nz-tabset> -->
<ul class="flex bg-white tabs">
@for (t of tabs; track $index) {
<li [ngClass]="{ active: tab === t.path }">
<li [ngClass]="{ active: tab === t.path }" *appPermission="t.permission">
<button nz-button nzType="text" [routerLink]="t.path">{{ t.title }}</button>
</li>
}

7
web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-ledger/fixed-asset-ledger.component.ts

@ -8,22 +8,27 @@ const tabs = [
{
path: 'asset-search',
title: '资产公共台账',
permission: ['ledger-asset-search:view'],
},
{
path: 'storage',
title: '资产库存台账',
permission: ['ledger-storage:view'],
},
{
path: 'asset-belong',
title: '归属组织台账',
permission: ['ledger-asset-belong:view'],
},
{
path: 'asset-org',
title: '使用组织台账',
permission: ['ledger-asset-org:view'],
},
{
path: 'asset-position',
title: '存放位置台账',
permission: ['ledger-asset-position:view'],
},
// {
// path: 'asset-employee',
@ -32,10 +37,12 @@ const tabs = [
{
path: 'asset-category',
title: '分类查询台账',
permission: ['ledger-asset-category:view'],
},
{
path: 'asset-my-own',
title: '所管资产台账',
permission: ['ledger-asset-my-own:view'],
},
]

40
web-admin-app/src/app/pages/flow/flow-layout/flow-layout.component.html

@ -2,10 +2,42 @@
class="menu bg-white shadow fixed left-0 top-12 bottom-0 z-20 w-48 flex-shrink-0 py-3 overflow-y-auto overflow-x-hidden"
>
<ul nz-menu nzMode="inline">
<li nz-menu-item [nzPaddingLeft]="12" [routerLink]="['/asset-flow/index']" nzMatchRouter>流程首页</li>
<li nz-menu-item [nzPaddingLeft]="12" [routerLink]="['/asset-flow/my-apply']" nzMatchRouter>我的申请</li>
<li nz-menu-item [nzPaddingLeft]="12" [routerLink]="['/asset-flow/my-todo']" nzMatchRouter>待我处理</li>
<li nz-menu-item [nzPaddingLeft]="12" [routerLink]="['/asset-flow/my-finished']" nzMatchRouter>我已处理</li>
<li
*appPermission="['asset-flow-home:view']"
nz-menu-item
[nzPaddingLeft]="12"
[routerLink]="['/asset-flow/index']"
nzMatchRouter
>
流程首页
</li>
<li
*appPermission="['asset-flow-my-apply:view']"
nz-menu-item
[nzPaddingLeft]="12"
[routerLink]="['/asset-flow/my-apply']"
nzMatchRouter
>
我的申请
</li>
<li
*appPermission="['asset-flow-my-todo:view']"
nz-menu-item
[nzPaddingLeft]="12"
[routerLink]="['/asset-flow/my-todo']"
nzMatchRouter
>
待我处理
</li>
<li
*appPermission="['asset-flow-my-finished:view']"
nz-menu-item
[nzPaddingLeft]="12"
[routerLink]="['/asset-flow/my-finished']"
nzMatchRouter
>
我已处理
</li>
</ul>
</div>

21
web-admin-app/src/app/pages/system/index/system.component.html

@ -2,9 +2,26 @@
class="menu bg-white shadow fixed left-0 top-12 bottom-0 z-20 w-48 flex-shrink-0 py-3 overflow-y-auto overflow-x-hidden"
>
<ul nz-menu nzMode="inline">
<li nz-menu-item [nzPaddingLeft]="12" [routerLink]="['/system/user']" nzMatchRouter>组织架构</li>
<li nz-menu-item [nzPaddingLeft]="12" [routerLink]="['/system/role']" nzMatchRouter>角色管理</li>
<li
*appPermission="['system-user:view']"
nz-menu-item
[nzPaddingLeft]="12"
[routerLink]="['/system/user']"
nzMatchRouter
>
组织架构
</li>
<li
*appPermission="['system-role:view']"
nz-menu-item
[nzPaddingLeft]="12"
[routerLink]="['/system/role']"
nzMatchRouter
>
角色管理
</li>
<li
*appPermission="['system-flow-form:view']"
nzMatchRouter
[nzPaddingLeft]="12"
nz-submenu

8
web-admin-app/src/app/shared/permission/permission.guard.ts

@ -5,11 +5,17 @@ import { PermissionService } from './permission.service'
export const permissionGuard: CanActivateFn = (route, state) => {
const userPermission = inject(PermissionService)
const router = inject(Router)
const routePermission = route.data?.['permission']
const routePermission = route.data?.['permission']?.only
if (Array.isArray(routePermission)) {
if (userPermission.hasPermission(routePermission)) {
return true
}
const redirectTo = route.data?.['permission']?.redirectTo
console.log('redirectTo', redirectTo)
if (redirectTo) {
return router.createUrlTree([redirectTo])
}
return router.createUrlTree(['/', 'forbidden'])
}
return true

BIN
web-admin-app/src/favicon.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Loading…
Cancel
Save