|
@@ -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
|