浏览代码

feat: 新建固定角色-业务配置员权限的设置

outaozhen 3 年之前
父节点
当前提交
2f3a0a65b7

+ 4 - 0
config/routes.ts

@@ -34,6 +34,8 @@
       {
         path: '/project/management',
         name: 'management',
+        access: 'authRouteFilter',
+        validatePerm: true,
         routes: [
           {
             path: '/project/management',
@@ -120,6 +122,8 @@
       {
         path: 'process',
         name: 'process',
+        access: 'authRouteFilter',
+        validatePerm: true,
         component: './Business/Process'
       }
     ]

+ 12 - 2
src/access.ts

@@ -2,8 +2,18 @@
  * @see https://umijs.org/zh-CN/plugins/plugin-access
  * */
 export default function access(initialState: { currentUser?: API.CurrentUser | undefined }) {
-  const { currentUser } = initialState || {};
+  const { currentUser, permission = [] } = initialState || {}
+  const authRouteFilter = route => {
+    if (permission.includes(`${route.name}`)) {
+      // if (route.validatePerm) {
+      //   return route
+      // }
+      return true
+    }
+    return false
+  }
   return {
     canAdmin: currentUser && currentUser.access === 'admin',
-  };
+    authRouteFilter
+  }
 }

+ 1 - 1
src/components/RightContent/AvatarDropdown.tsx

@@ -39,7 +39,7 @@ const AvatarDropdown: React.FC<GlobalHeaderRightProps> = ({ menu }) => {
     }) => {
       const { key } = event
       if (key === 'logout' && initialState) {
-        setInitialState({ ...initialState, currentUser: undefined })
+        setInitialState({ ...initialState, currentUser: undefined, permission: [] })
         localStorage.removeItem('TOKEN_ID')
         loginOut()
         return

+ 102 - 63
src/pages/Permission/Role/components/PermTabs/index.tsx

@@ -1,4 +1,4 @@
-import { Card, Tabs, Checkbox, Affix, Button, message, Spin } from 'antd'
+import { Card, Tabs, Checkbox, Button, message, Spin } from 'antd'
 import React, { useState } from 'react'
 import { queryRoleDetailByID, setRolePermission } from '@/services/permission'
 import { useRequest } from '@umijs/max'
@@ -12,6 +12,10 @@ type PermTabsProps = {
     roleType: RoleType
   }
 }
+export enum OperationType {
+  FRONT = 'front', // 前台
+  BACKSTAGE = 'backstage' // 后台
+}
 const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID, roleType } }) => {
   const [state, setState] = useState({
     frontPermission: [], // 前台权限
@@ -52,10 +56,18 @@ const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID, roleType } }
       })
     }
   }
-  const handleSubmit = () => {
+  const handleSubmitFront = () => {
+    trySetRolePermission({
+      ID,
+      operation: OperationType.FRONT,
+      frontPermission: state.frontPermission
+    })
+  }
+
+  const handleSubmitBackstage = () => {
     trySetRolePermission({
       ID,
-      frontPermission: state.frontPermission,
+      operation: OperationType.BACKSTAGE,
       backstagePermission: state.backstagePermission
     })
   }
@@ -202,19 +214,21 @@ const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID, roleType } }
               </Card>
             </div>
           </Spin>
+          <Button type="primary" onClick={handleSubmitFront} loading={submitStauts}>
+            提交
+          </Button>
         </TabPane>
         <TabPane tab="后台" key="4" className="tab-height overflow-y-auto">
           <Spin spinning={loading}>
             <div className="shadow-md mb-4">
-              <Card size="small" type="inner" title="项目">
+              <Card size="small" type="inner" title="项目审批设置">
                 <div>
                   <h4>项目管理</h4>
                   <div className="my-2">
                     <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'password')}
-                      checked={state.backstagePermission.includes('updatePsw')}
-                      disabled>
-                      密码修改
+                      onChange={e => handleBackOnchange(e.target.checked, 'management')}
+                      checked={state.backstagePermission.includes('management')}>
+                      查看项目
                     </Checkbox>
                     <Checkbox
                       onChange={e => handleBackOnchange(e.target.checked, 'addBa1')}
@@ -246,9 +260,8 @@ const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID, roleType } }
                   <h4 className="pt-3">审批流程模板</h4>
                   <div className="my-2">
                     <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'accessBa2')}
-                      checked={state.backstagePermission.includes('updatePsw')}
-                      disabled>
+                      onChange={e => handleBackOnchange(e.target.checked, 'viewApporvalTemplate')}
+                      checked={state.backstagePermission.includes('viewApporvalTemplate')}>
                       查看流程
                     </Checkbox>
                     <Checkbox
@@ -265,29 +278,6 @@ const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID, roleType } }
                     </Checkbox>
                   </div>
                 </div>
-                <div>
-                  <h4 className="pt-3">项目创建人</h4>
-                  <div className="my-2">
-                    <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'accessBa3')}
-                      checked={state.backstagePermission.includes('updatePsw')}
-                      disabled>
-                      查看创建人
-                    </Checkbox>
-                    <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'addBa3')}
-                      checked={state.backstagePermission.includes('updatePsw')}
-                      disabled>
-                      新建创建人
-                    </Checkbox>
-                    <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'deleteBa3')}
-                      checked={state.backstagePermission.includes('updatePsw')}
-                      disabled>
-                      删除创建人
-                    </Checkbox>
-                  </div>
-                </div>
               </Card>
             </div>
             <div className="shadow-md mb-4">
@@ -296,9 +286,8 @@ const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID, roleType } }
                   <h4>单位管理</h4>
                   <div className="my-2">
                     <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'accessBa4')}
-                      checked={state.backstagePermission.includes('updatePsw')}
-                      disabled>
+                      onChange={e => handleBackOnchange(e.target.checked, 'viewCompany')}
+                      checked={state.backstagePermission.includes('viewCompany')}>
                       查看单位
                     </Checkbox>
                     <Checkbox
@@ -331,9 +320,8 @@ const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID, roleType } }
                   <h4 className="pt-3">人员管理</h4>
                   <div className="my-2">
                     <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'accessBa5')}
-                      checked={state.backstagePermission.includes('updatePsw')}
-                      disabled>
+                      onChange={e => handleBackOnchange(e.target.checked, 'viewAccount')}
+                      checked={state.backstagePermission.includes('viewAccount')}>
                       查看人员
                     </Checkbox>
                     <Checkbox
@@ -347,58 +335,107 @@ const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID, roleType } }
               </Card>
             </div>
             <div className="shadow-md mb-4">
-              <Card size="small" type="inner" title="业务设置">
+              <Card size="small" type="inner" title="业务审批设置">
                 <div>
-                  <h4>项目信息</h4>
+                  <h4>业务管理</h4>
                   <div className="my-2">
                     <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'accessBa6')}
-                      checked={state.backstagePermission.includes('updatePsw')}
-                      disabled>
+                      onChange={e => handleBackOnchange(e.target.checked, 'viewBusiness')}
+                      checked={state.backstagePermission.includes('viewBusiness')}>
                       查看信息
                     </Checkbox>
+                  </div>
+                </div>
+                <div>
+                  <h4 className="pt-3">流程用户配置</h4>
+                  <div className="my-2">
                     <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'editBa6')}
-                      checked={state.backstagePermission.includes('updatePsw')}
-                      disabled>
-                      编辑信息
+                      onChange={e => handleBackOnchange(e.target.checked, 'process')}
+                      checked={state.backstagePermission.includes('process')}>
+                      查看信息
                     </Checkbox>
                   </div>
                 </div>
                 <div>
-                  <h4 className="pt-3">企事业单位信息</h4>
+                  <h4 className="pt-3">资料清单配置</h4>
                   <div className="my-2">
                     <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'accessBa7')}
+                      onChange={e => handleBackOnchange(e.target.checked, 'viewDataList')}
+                      checked={state.backstagePermission.includes('viewDataList')}>
+                      查看信息
+                    </Checkbox>
+                  </div>
+                </div>
+              </Card>
+            </div>
+            <div className="shadow-md mb-4">
+              <Card size="small" type="inner" title="表单设置">
+                <div>
+                  <h4>基础数据设置</h4>
+                  <div className="my-2">
+                    <Checkbox
+                      onChange={e => handleBackOnchange(e.target.checked, 'viewFormProject')}
+                      checked={state.backstagePermission.includes('viewFormProject')}>
+                      查看项目信息
+                    </Checkbox>
+                    <Checkbox
+                      onChange={e => handleBackOnchange(e.target.checked, 'editBa6')}
                       checked={state.backstagePermission.includes('updatePsw')}
                       disabled>
-                      查看信息
+                      编辑项目信息
                     </Checkbox>
                     <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'editBa7')}
+                      onChange={e => handleBackOnchange(e.target.checked, 'editBa6')}
                       checked={state.backstagePermission.includes('updatePsw')}
                       disabled>
-                      编辑信息
+                      查看企事业单位信息
+                    </Checkbox>
+                    <Checkbox
+                      onChange={e => handleBackOnchange(e.target.checked, 'editBa6')}
+                      checked={state.backstagePermission.includes('updatePsw')}
+                      disabled>
+                      编辑企事业单位信息
+                    </Checkbox>
+                    <Checkbox
+                      onChange={e => handleBackOnchange(e.target.checked, 'editBa6')}
+                      checked={state.backstagePermission.includes('updatePsw')}
+                      disabled>
+                      查看人员信息
+                    </Checkbox>
+                    <Checkbox
+                      onChange={e => handleBackOnchange(e.target.checked, 'editBa6')}
+                      checked={state.backstagePermission.includes('updatePsw')}
+                      disabled>
+                      编辑人员信息
                     </Checkbox>
                   </div>
                 </div>
                 <div>
-                  <h4 className="pt-3">人员信息</h4>
+                  <h4 className="pt-3">数据源设置</h4>
                   <div className="my-2">
                     <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'accessBa8')}
-                      checked={state.backstagePermission.includes('updatePsw')}
-                      disabled>
+                      onChange={e => handleBackOnchange(e.target.checked, 'viewDataSource')}
+                      checked={state.backstagePermission.includes('viewDataSource')}>
                       查看信息
                     </Checkbox>
                     <Checkbox
-                      onChange={e => handleBackOnchange(e.target.checked, 'editBa8')}
+                      onChange={e => handleBackOnchange(e.target.checked, 'editBa7')}
                       checked={state.backstagePermission.includes('updatePsw')}
                       disabled>
                       编辑信息
                     </Checkbox>
                   </div>
                 </div>
+                <div>
+                  <h4 className="pt-3">预算业务表单设置</h4>
+                  <div className="my-2">
+                    <Checkbox
+                      onChange={e => handleBackOnchange(e.target.checked, 'viewBudget')}
+                      checked={state.backstagePermission.includes('viewBudget')}>
+                      查看信息
+                    </Checkbox>
+                  </div>
+                </div>
               </Card>
             </div>
             <div className="shadow-md mb-4">
@@ -408,8 +445,7 @@ const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID, roleType } }
                   <div className="my-2">
                     <Checkbox
                       onChange={e => handleBackOnchange(e.target.checked, 'accessBa9')}
-                      checked={state.backstagePermission.includes('updatePsw')}
-                      disabled>
+                      checked={state.backstagePermission.includes('updatePsw')}>
                       查看信息
                     </Checkbox>
                     <Checkbox
@@ -423,13 +459,16 @@ const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID, roleType } }
               </Card>
             </div>
           </Spin>
+          <Button type="primary" onClick={handleSubmitBackstage} loading={submitStauts}>
+            提交
+          </Button>
         </TabPane>
       </Tabs>
-      <Affix offsetBottom={10}>
+      {/* <Affix offsetBottom={10}>
         <Button type="primary" onClick={handleSubmit} loading={submitStauts}>
           提交
         </Button>
-      </Affix>
+      </Affix> */}
     </div>
   )
 }

+ 0 - 1
src/pages/Permission/Role/components/RoleLeftMenu/index.tsx

@@ -119,7 +119,6 @@ const RoleLeftMenu: React.FC<RoleLeftMenuProps> = ({
   }
 
   const virtualHeight = document.getElementById('role-list')?.clientHeight
-  console.log(virtualHeight)
 
   if (!menuRoles?.length || isNullOrUnDef(defaultActiveRole)) return null
   return (

+ 1 - 1
src/pages/user/Login/index.tsx

@@ -38,7 +38,7 @@ const Login: React.FC = () => {
 
   /** 此方法会跳转到 redirect 参数所在的位置 */
   const goto = userInfo => {
-    console.log(userInfo)
+    // console.log(userInfo)
 
     if (!history || !userInfo) return
     const searchParams = createSearchParams(window.location.search)