import React, { useEffect, useState } from 'react' import Container, { ContainerBody } from 'components/Container' import Helmet from 'react-helmet' import Box from 'components/Box' import styles from 'containers/DataManagerView/index.less' import { Button, Divider, Dropdown, Icon, Menu, message, Popconfirm, Spin, Table } from 'antd' import classnames from 'classnames' import request from 'utils/request' import api from 'utils/api' import { ColumnProps } from 'antd/lib/table' import { IClassification, IQualityTask } from 'containers/DataGovernanceQualityAudit/types' import ClassificationsFormModal from 'containers/DataGovernanceQualityAudit/components/ClassificationsFormModal' import QualityTaskFormModal from 'containers/DataGovernanceQualityAudit/components/QualityTaskFormModal' import ScheduleFormModal from 'containers/DataGovernanceQualityAudit/components/ScheduleFormModal' // import header from 'containers/Display/Editor/Header' import { RouteComponentProps, withRouter } from 'react-router-dom' function DataGovernanceQualityAudit(props: RouteComponentProps) { const { history, match } = props const [tableLoading, setTableLoading] = useState(false) const [treeLoading, setTreeLoading] = useState(false) const [selectedKey, setSelectedKey] = useState() const [qualityTasks, setQualityTasks] = useState([]) const [qtVisible, setQtVisible] = useState(false) const [qtLoading, setQtLoading] = useState(false) // eslint-disable-next-line no-undef const [qtForm, setQtForm] = useState>({}) const [classifications, setClassifications] = useState([]) const [cfVisible, setCfVisible] = useState(false) const [cfLoading, setCfLoading] = useState(false) const [cfForm, setCfForm] = useState({}) const [scVisible, setScVisible] = useState(false) const [scLoading, setSCLoading] = useState(false) const [scForm, setSCForm] = useState({}) const tableColumns: Array> = [ { title: '任务名称', dataIndex: 'taskName' }, { title: '元数据名称', dataIndex: 'metadataName' }, { title: '稽核字段个数', dataIndex: 'auditorCount' }, { title: '操作', render: (_, data) => ( <> { setQtVisible(true) setQtForm(data) }} > 编辑 { // eslint-disable-next-line react/prop-types history.push(`/project/${match.params.projectId}/dataGovernance/auditAnalysiss?systemId=${data.pId}&starTime=${data.startTime}&endTime=${data.endTime}`) }} > 稽查历史 { setQtForm(data) setScVisible(true) }} > 设置调度 handleSetDispatchRightNow(data)} > 立即稽查 handleDeleteTask(data.id)} > 删除 } > {' '} 更多 ) } ] const handleEditTreeItem = (form: IClassification) => { setCfForm(form) setCfVisible(true) } const handleDeleteTreeItem = async(c: IClassification) => { try { setTreeLoading(true) const data = await request(`${api.deleteAuditClassification}${c.id}`, { method: 'DELETE' }) // @ts-ignore if (data?.header?.code === 200) { message.success({ content: '删除成功' }) await queryClassifications() } else { // @ts-ignore // tslint:disable-next-line:no-unused-expression data?.header?.msg && message.error({ content: data?.header?.msg }) } } finally { setTreeLoading(false) } } const renderTree = (catalogues: IClassification[]) => ( <> {catalogues.map((c, idx) => (
{ setSelectedKey(c.id) }} > {c.name} ( handleEditTreeItem(c)}> 编辑 handleDeleteTreeItem(c)} > 删除 )} trigger={['click']} >
))} ) const handleSetDispatchRightNow = async(data: IQualityTask) => { try { setTableLoading(true) const result = await request(`${api.setDispatchRightNow}${data.id}`, { method: 'GET' }).catch((err) => { if (err?.response?.data?.header?.msg) { message.error({ content: err?.response?.data?.header?.msg }) } }) // @ts-ignore if (result?.header?.code === 200) { message.success({ content: '立即稽核完成' }) } } finally { setTableLoading(false) } } const handleDispatch = async(form) => { try { setSCLoading(true) const result = await request(`${api.setDispatch}${qtForm.id}`, { method: 'PUT', data: { // @ts-ignore projectId: match.params?.projectId, name: qtForm.taskName, // taskName: qtForm.taskName, cronExpression: form.cronExpression, startDate: form.startDate[0].format('YYYY-MM-DD hh:mm:ss'), endDate: form.startDate[1].format('YYYY-MM-DD hh:mm:ss'), periodUnit: form.periodUnit, jobStatus: form.jobStatus ? 'started' : 'new', jobType: 'auditor' } }) // @ts-ignore if (result.header.code === 200) { setScVisible(false); message.success({ content: '设置调度成功' }) queryQualityTasks() } } finally { setSCLoading(false) } } const queryClassifications = async() => { try { setTreeLoading(true) const data = await request(api.getAuditClassification, { method: 'GET' }) // @ts-ignore setClassifications(data?.payload ?? []) // @ts-ignore setSelectedKey(data?.payload?.[0]?.id) } finally { setTreeLoading(false) } } const queryQualityTasks = async() => { try { setTableLoading(true) const data = await request(`${api.getQualityTask}?pId=${selectedKey}`, { method: 'GET' }) // @ts-ignore setQualityTasks(data?.payload ?? []) } finally { setTableLoading(false) } } const handleSaveCfForm = async(form: IClassification) => { try { setCfLoading(true) const url = cfForm.id ? api.updateAuditClassification + cfForm.id : api.createAuditClassification const result = await request(url, { method: cfForm.id ? 'PUT' : 'POST', data: { ...cfForm, ...form } }) // @ts-ignore if (result?.header?.code === 200) { setCfVisible(false) await queryClassifications() } } finally { setCfLoading(false) } } const handleSaveQtForm = async(view) => { try { setQtLoading(true) const url = qtForm?.id ? api.updateQualityTask + qtForm?.id : api.createQualityTask const result = await request(url, { method: qtForm?.id ? 'PUT' : 'POST', data: { ...qtForm, ...view } }) // @ts-ignore if (result?.header?.code === 200) { setQtVisible(false) await queryQualityTasks() } } finally { setQtLoading(false) } } const handleDeleteTask = async(id: number) => { try { setTableLoading(true) const data = await request(`${api.deleteQualityTask}${id}`, { method: 'DELETE' }) // @ts-ignore if (data.header.code === 200) { message.success({ content: '删除成功' }) queryQualityTasks() } } finally { setTableLoading(false) } } useEffect(() => { queryClassifications() }, []) useEffect(() => { if (selectedKey) { queryQualityTasks() } }, [selectedKey]) return ( 质量稽核
数据质量
{ setCfForm({}) setCfVisible(true) }} >
{renderTree(classifications)}

setCfVisible(false)} /> setQtVisible(false)} /> setScVisible(false)} /> ) } export default withRouter(DataGovernanceQualityAudit)