lanjianrong 5 anni fa
parent
commit
6dd276d6a0

+ 14 - 16
config/routes.js

@@ -39,28 +39,27 @@ export default [
       {
         path: '/customer',
         redirect: '/customer/company'
-        // authority: ['admin', 'company_access']
       },
       {
         path: '/customer/company',
         name: 'company',
         icon: 'icon-building',
-        component: './Customer/Company'
-        // authority: ['admin', 'company_access']
+        component: './Customer/Company',
+        access: 'authRouteFilter'
       },
       {
         path: '/customer/client',
         name: 'client',
         icon: 'icon-address-book',
-        component: './Customer/Client'
-        // authority: ['admin', 'client_access']
+        component: './Customer/Client',
+        access: 'authRouteFilter'
       },
       {
         path: '/customer/business',
         name: 'business',
         icon: 'icon-usd-circle',
-        component: './Customer/Business'
-        // authority: ['admin', 'business_access']
+        component: './Customer/Business',
+        access: 'authRouteFilter'
       },
       {
         path: '/customer/test',
@@ -124,21 +123,20 @@ export default [
     ]
   },
   {
-    path: '/staff',
-    name: 'staff',
+    path: '/hr',
+    name: 'hr',
     icon: 'icon-users',
     routes: [
       {
-        path: '/staff',
-        redirect: '/staff/employee'
-        // authority: ['admin', 'department_access']
+        path: '/hr',
+        redirect: '/hr/employee'
       },
       {
-        path: '/staff/employee',
-        name: 'employee',
+        path: '/hr/employee',
+        name: 'Employee',
         icon: 'icon-users',
-        component: './Staff/Employee'
-        // authority: ['admin', 'department_access']
+        component: './Hr/Employee',
+        access: 'authRouteFilter'
       }
     ]
   },

+ 12 - 2
src/access.ts

@@ -1,6 +1,16 @@
+// eslint-disable-next-line func-names
 export default function (initialState) {
-  const { currentUser } = initialState || {}
+  const { roles = [], currentUser = {} } = initialState || {}
+  const authRouteFilter = route => {
+    if (currentUser.isAdmin) {
+      return true
+    }
+    if (roles.filter(r => r.endsWith('_access')).includes(`${route.name}_access`)) {
+      return true
+    }
+    return false
+  }
   return {
-    canAdmin: currentUser && currentUser.access === 'admin'
+    authRouteFilter
   }
 }

+ 2 - 2
src/pages/Customer/Business/components/ChangeStaff/index.jsx

@@ -4,9 +4,9 @@ import { LinkOne, Switch } from '@icon-park/react'
 import { Card, Tooltip } from 'antd'
 import { useDispatch } from 'dva'
 import consts from '@/consts'
-import StaffModal from '@/pages/Staff/Employee/components/StaffModal'
+import StaffModal from '@/pages/Hr/Employee/components/StaffModal'
 import styles from './index.less'
-import EmployeeDetail from '@/pages/Staff/Employee/components/EmployeeDetail'
+import EmployeeDetail from '@/pages/Hr/Employee/components/EmployeeDetail'
 
 const ChangeStaff = props => {
   const dispatch = useDispatch()

src/pages/Staff/Employee/components/AddStaff/index.jsx → src/pages/Hr/Employee/components/AddStaff/index.jsx


+ 1 - 1
src/pages/Staff/Employee/components/ChangeSupervisor/index.jsx

@@ -4,7 +4,7 @@ import { useModal } from '@/components/Modal'
 import { Card, Tooltip } from 'antd'
 import consts from '@/basic/consts'
 import { useDispatch } from 'dva'
-import StaffModal from '@/pages/Staff/Employee/components/StaffModal'
+import StaffModal from '@/pages/Hr/Employee/components/StaffModal'
 import styles from './index.less'
 import { apiChangeSupervisor } from '@/services/staff'
 

src/pages/Staff/Employee/components/ChangeSupervisor/index.less → src/pages/Hr/Employee/components/ChangeSupervisor/index.less


+ 1 - 1
src/pages/Staff/Employee/components/EmployeeDetail/EmployeeForm.jsx

@@ -1,7 +1,7 @@
 import React from 'react'
 import { Col, Row } from 'antd'
 import EditableForm from '@/components/EditableForm'
-import ChangeSupervisor from '@/pages/Staff/Employee/components/ChangeSupervisor'
+import ChangeSupervisor from '@/pages/Hr/Employee/components/ChangeSupervisor'
 
 const EmployeeForm = props => {
   const { staff } = props

src/pages/Staff/Employee/components/EmployeeDetail/EmployeeLowerList.jsx → src/pages/Hr/Employee/components/EmployeeDetail/LowerList.jsx


src/pages/Staff/Employee/components/EmployeeDetail/EmployeeTabList.jsx → src/pages/Hr/Employee/components/EmployeeDetail/TabList.jsx


+ 3 - 4
src/pages/Staff/Employee/components/EmployeeDetail/index.jsx

@@ -2,14 +2,13 @@ import React, { useState, useEffect } from 'react'
 import { Col, Row } from 'antd'
 import consts from '@/consts'
 import { connect } from 'dva'
-import EmployeeForm from './EmployeeForm.jsx'
-import EmployeeLowerList from './EmployeeLowerList.jsx'
-import EmployeeTabList from './EmployeeTabList.jsx'
+import EmployeeForm from './Form.jsx'
+import EmployeeLowerList from './LowerList.jsx'
+import EmployeeTabList from './TabList.jsx'
 import { apiStaffDetail } from '@/services/staff'
 
 const EmployeeDetail = props => {
   const { dispatch, shouldUpdate, visible, dataId = '' } = props
-  // console.log(dataId)
   const [state, setState] = useState({
     loading: false,
     staff: {},

src/pages/Staff/Employee/components/RoleMenu/index.jsx → src/pages/Hr/Employee/components/RoleMenu/index.jsx


src/pages/Staff/Employee/components/StaffModal/index.jsx → src/pages/Hr/Employee/components/StaffModal/index.jsx


src/pages/Staff/Employee/components/StaffModal/index.less → src/pages/Hr/Employee/components/StaffModal/index.less


+ 2 - 2
src/pages/Staff/Employee/index.jsx

@@ -3,10 +3,10 @@ import consts from '@/consts'
 import ProTable from '@ant-design/pro-table'
 import { Button, Popconfirm, message } from 'antd'
 import { useModal } from '@/components/Modal'
-import RoleMenu from '@/pages/Staff/Employee/components/RoleMenu'
+import RoleMenu from '@/pages/Hr/Employee/components/RoleMenu'
 import { queryStaff } from '@/services/staff'
 import { useTableScroll } from '@/hooks/useAutoTable'
-import EmployeeDetail from '@/pages/Staff/Employee/components/EmployeeDetail'
+import EmployeeDetail from '@/pages/Hr/Employee/components/EmployeeDetail'
 import { delDepartment } from '@/services/department'
 import { connect } from 'dva'
 

src/pages/Staff/model.js → src/pages/Hr/model.js