import React, { useEffect, useState } from 'react' import Helmet from 'react-helmet' import Container, { ContainerBody } from 'components/Container' import Box from 'components/Box' import { Button, Divider, Icon, message, Popconfirm, Spin, Table } from 'antd' import { ColumnProps } from 'antd/lib/table' import { compose } from 'redux' import request from 'utils/request' import api from 'utils/api' import { IDataSubject } from 'containers/DataGovernanceMarkRule/types' import DataSubjectFormModal from 'containers/DataGovernanceMarkRule/components/DataSubjectFormModal' import { AuditClassificationFormModal } from 'containers/DataGovernanceMarkRule/components/AuditClassificationFormModal' import styles from 'containers/DataManagerView/index.less' import classnames from 'classnames' import { IDictData } from 'containers/DataManagerDictionary/types' import { isNumber } from 'lodash' function DataDictionary() { const [tableLoading, setTableLoading] = useState(false) const [dataSubject, setDataSubject] = useState([]) const [dataSubjectFormVisible, setDataSubjectFormVisible] = useState(false) const [dataSubjectFormLoading, setDataSubjectFormLoading] = useState(false) const [dataSubjectForm, setDataSubjectForm] = useState(null) const [auditLoading, setAuditLoadingLoading] = useState(false) const [selectedSubjectsKey, setSelectedSubjectsKey] = useState() const [treeLoading, setTreeLoading] = useState(false) const [subjects, setSubject] = useState([ { dictLabel: '全部主题', dictCode: -1 } ]) const tableColumns: Array> = [ { title: '标准主题', dataIndex: 'standardTheme' }, { title: '标准编码', dataIndex: 'standardCode' }, { title: '标准名称', dataIndex: 'standardName' }, { title: '别名', dataIndex: 'standardAlias' }, { title: '英文名称', dataIndex: 'englishName' }, { title: '管理部门', dataIndex: 'deptName' }, { title: '管理人员', dataIndex: 'management' }, { title: '操作', render: (_, data) => ( <> { setAuditLoadingLoading(true) setDataSubjectForm(data) }} > 列表 { setDataSubjectFormVisible(true) setDataSubjectForm(data) }} > 修改 handleDeleteDataSubject(data.id)} > 删除 ) } ] const querySubjects = async () => { try { setTreeLoading(true) const data = await request(`${api.getSubjects}data_standard`, { method: 'GET' }) const defaultSubject = [{ dictLabel: '全部主题', dictCode: -1 }] setSubject( // @ts-ignore data?.payload ? [...defaultSubject, ...data?.payload] : defaultSubject ) setSelectedSubjectsKey(-1) } finally { setTreeLoading(false) } } const queryDataBySelectedSubject = async () => { try { setTableLoading(true) const data = await request( `${api.getDataSubject}?pId=${ selectedSubjectsKey === -1 ? '' : selectedSubjectsKey }`, { method: 'GET' } ) // @ts-ignore setDataSubject(data?.payload ?? []) } finally { setTableLoading(false) } } const handleDeleteDataSubject = async (id) => { try { setTableLoading(true) await request(`${api.deleteDataSubject}/${id}`, { method: 'delete' }) await queryDataBySelectedSubject() } finally { setTableLoading(false) } } const handleSaveDataSubject = async (dt: IDataSubject) => { // // 0=正常,1=停用 try { setDataSubjectFormLoading(true) const url = dataSubjectForm?.id ? `${api.updateDataSubject}/${dataSubjectForm.id}` : api.createDataSubject await request(url, { method: dataSubjectForm?.id ? 'PUT' : 'POST', data: { ...(dataSubjectForm ?? {}), ...dt } }) message.success({ content: '成功' }) setDataSubjectFormVisible(false) await queryDataBySelectedSubject() } finally { setDataSubjectFormLoading(false) } } const renderTree = (catalogues: IDictData[]) => ( <> {catalogues.map((c, idx) => (
{ setSelectedSubjectsKey(c.dictCode) }} > {c.dictLabel}
))} ) useEffect(() => { async function query() { await querySubjects() // await queryDataBySelectedSubject() } query() }, []) useEffect(() => { if (isNumber(selectedSubjectsKey)) { queryDataBySelectedSubject() } }, [selectedSubjectsKey]) return ( 规则制定
主题
{renderTree(subjects)}

setAuditLoadingLoading(false)} /> setDataSubjectFormVisible(false)} /> ) } export default compose()(DataDictionary)