Prechádzať zdrojové kódy

feat: 后台功能权限增加数据权限

fix: 合并的数据修复

fix: 编辑材价名称

fix: 修复权限数据权限问题
outaozhen 3 rokov pred
rodič
commit
5caf5765fa

+ 89 - 0
src/pages/Permission/BackRole/components/DataTabs/index.tsx

@@ -0,0 +1,89 @@
+import { querySubject } from '@/services/api/subject'
+import { queryRoleBgDetailByID, setRoleBgPermission } from '@/services/permission'
+import { useRequest } from '@umijs/max'
+import type { CheckboxValueType } from 'antd/es/checkbox/Group'
+import { Affix, Button, Checkbox, message, Space, Spin } from 'antd'
+import React, { useEffect, useState } from 'react'
+import { OperationType } from '@/pages/Permission/FrontRole/components/PermTabs'
+
+const DataTabs = ({ currentPermData: { ID } }) => {
+  const [state, setState] = useState({
+    value: '',
+    subjectList: ''
+  })
+  console.log(state.value)
+
+  const { run: trySubjectList } = useRequest(() => querySubject(), {
+    manual: true,
+    onSuccess: result => {
+      setState({ ...state, subjectList: result?.items })
+    }
+  })
+  const { loading } = useRequest(() => queryRoleBgDetailByID({ ID }), {
+    refreshDeps: [ID],
+    onSuccess: result => {
+      setState({ ...state, value: result.dataPermission })
+    }
+  })
+  const { run: trySetRoleBgPermission, loading: submitStauts } = useRequest(
+    (params: API.RolePermissionParams) => setRoleBgPermission(params),
+    {
+      manual: true,
+      onSuccess: () => {
+        message.success('设置成功')
+      }
+    }
+  )
+  const onChange = (e: CheckboxValueType) => {
+    setState({ ...state, value: e })
+  }
+  const handleSubmit = () => {
+    const params = {
+      ID,
+      operation: OperationType.DATA,
+      dataPermission: state.value
+    }
+    trySetRoleBgPermission(params)
+  }
+  useEffect(() => {
+    trySubjectList()
+  }, [])
+  return (
+    <>
+      <div style={{ height: 'calc(100vh - 250px)' }} className="overflow-y-auto">
+        <Spin spinning={loading}>
+          <div className="my-2">
+            {/* {state.subjectList ? (
+              <Checkbox.Group
+                onChange={onChange}
+                options={state.subjectList.map(item => ({ label: item.name, value: item.ID }))}
+                value={state.value}
+                defaultChecked={state.value}
+              />
+            ) : null} */}
+            {state.subjectList ? (
+              <Checkbox.Group onChange={onChange} value={state.value} defaultChecked={state.value}>
+                <Space direction="vertical">
+                  {state.subjectList.map(item => {
+                    return (
+                      <Checkbox key={item.ID} value={item.ID}>
+                        {item.name}
+                      </Checkbox>
+                    )
+                  })}
+                </Space>
+              </Checkbox.Group>
+            ) : null}
+          </div>
+        </Spin>
+      </div>
+      <Affix offsetBottom={10}>
+        <Button type="primary" onClick={handleSubmit} loading={submitStauts}>
+          提交
+        </Button>
+      </Affix>
+    </>
+  )
+}
+
+export default DataTabs

+ 8 - 0
src/pages/Permission/BackRole/index.tsx

@@ -8,6 +8,7 @@ import RoleLeftMenu, { RoleType } from './components/RoleLeftMenu'
 import PermTabs from './components/PermTabs'
 import type { ColumnsType } from 'antd/lib/table'
 import ConnectModal from './components/ConnectModal'
+import DataTabs from './components/DataTabs'
 const { TabPane } = Tabs
 
 const Role = () => {
@@ -156,6 +157,13 @@ const Role = () => {
                 }}
               />
             </TabPane>
+            <TabPane tab="数据权限" key="3">
+              <DataTabs
+                currentPermData={{
+                  ID: state.currentRoleID
+                }}
+              />
+            </TabPane>
           </Tabs>
         </div>
       </div>

+ 2 - 2
src/pages/Permission/FrontRole/components/DataTabs/index.tsx

@@ -4,7 +4,7 @@ import { Affix, Button, message, Radio, Space, Spin } from 'antd'
 import React, { useState } from 'react'
 import type { RadioChangeEvent } from 'antd'
 import { DataPermission } from '@/enums/access'
-import { operationType } from '../PermTabs'
+import { OperationType } from '../PermTabs'
 
 const DataTabs = ({ currentPermData: { ID } }) => {
   const [state, setState] = useState({
@@ -31,7 +31,7 @@ const DataTabs = ({ currentPermData: { ID } }) => {
   const handleSubmit = () => {
     const params = {
       ID,
-      operation: operationType.DATA,
+      operation: OperationType.DATA,
       dataPermission: state.value
     }
     trySetRolePermission(params)

+ 3 - 3
src/pages/Permission/FrontRole/components/PermTabs/index.tsx

@@ -5,7 +5,7 @@ import { queryRoleDetailByID, setRolePermission } from '@/services/permission'
 import { FrontPermission } from '@/enums/access'
 
 /** 权限参数枚举 */
-export enum operationType {
+export enum OperationType {
   /** 功能权限 */
   FRONT = 'front',
   /** 数据权限 */
@@ -57,7 +57,7 @@ const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID } }) => {
   const handleSubmit = () => {
     const params = {
       ID,
-      operation: operationType.FRONT,
+      operation: OperationType.FRONT,
       frontPermission: filterPermission(permission)
     }
     trySetRolePermission(params)
@@ -236,7 +236,7 @@ const PermTabs: React.FC<PermTabsProps> = ({ currentPermData: { ID } }) => {
                   <Checkbox
                     checked={permission.includes(FrontPermission.CJK_EDIT)}
                     onChange={e => handleFrontOnchange(e.target.checked, FrontPermission.CJK_EDIT)}>
-                    编辑
+                    编辑材价
                   </Checkbox>
                 </div>
               </div>

+ 1 - 1
src/services/api/business.ts

@@ -58,7 +58,7 @@ export async function moveTemplate(params: { ID: string; moveID: string }) {
 
 /** 编号规则生成器查询详情 */
 export async function queryRuleCodeList(params: { tab: string; subjectID: string }) {
-  return request('/RuleCode/list', {
+  return request('/RuleCode/detail', {
     method: 'GET',
     params
   })