import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime"; import { ProTable } from '@ant-design/pro-components'; import { useEffect, useRef, useState } from 'react'; import { Space, Button, Popconfirm, message } from 'antd'; import { getHiddenList, getHiddenDetailList, onAdd, onDelete } from './action'; import Form from './form'; import { PlusCircleOutlined } from '@ant-design/icons'; import { hiddenDangerStatus, getHiddenTroubleGrade } from '../CONST'; import { useRequest, useToggle } from 'ahooks'; import { dateFormatter, themeMessage } from '@component/utils'; import { CardForm } from '@component/ui'; import { isEmpty, map } from 'lodash'; export default ({ title, required, serviceId, setHiddenIds, readonly, type, }) => { const actionRef = useRef(); const [value, { set }] = useToggle({ visible: false, }); const [dataSource, setDataSource] = useState([]); const [hiddenIds, set_hiddenIds] = useState([]); const isMount = useRef(!serviceId ? true : false); const [loading, setLoading] = useState(false); const { runAsync, confirmLoading } = useRequest(onDelete, { manual: true, onSuccess(result, params) { themeMessage(result); if (result.type === 'success') { // 刷新列表 set_hiddenIds(hiddenIds.filter((i) => i != params[0].hiddenDangerId)); } }, onError(result) { message.error(result.message); }, }); const { run: get_list } = useRequest(getHiddenList, { manual: true, defaultParams: { serviceId, }, onSuccess(result) { setLoading(false); setDataSource(result === null || result === void 0 ? void 0 : result.data); setHiddenIds(result === null || result === void 0 ? void 0 : result.data); }, onError(result) { setLoading(false); message.error(result.message); }, }); const { runAsync: get_Detail_list } = useRequest(getHiddenDetailList, { manual: true, }); const columns = [ { title: '隐患编号', dataIndex: 'hiddenNumber', ellipsis: true, }, { title: '隐患描述', dataIndex: 'description', ellipsis: true, search: false, }, { title: '隐患类型', dataIndex: 'classifyName', ellipsis: true, search: false, }, { title: '隐患分类', dataIndex: 'dangerTypeName', ellipsis: true, search: false, }, { title: '隐患等级', dataIndex: 'hiddenTroubleGrade', ellipsis: true, search: false, render: (_, item) => { return getHiddenTroubleGrade(item.hiddenTroubleGrade); }, }, { title: '隐患所在场所/部位', dataIndex: 'discoveredAddress', ellipsis: true, search: false, }, { title: '整改状态', dataIndex: 'hiddenDangerStatus', ellipsis: true, search: false, render: (_, item) => { return hiddenDangerStatus[item.hiddenDangerStatus]; }, }, { title: '更新时间', dataIndex: 'changedAt', ellipsis: true, search: false, renderText: dateFormatter, }, { title: '操作', dataIndex: 'policyNumber', hideInTable: readonly, ellipsis: true, search: false, fixed: 'right', render(_, item) { return (_jsx(Space, { children: _jsx(Popconfirm, Object.assign({ placement: "top", title: "\u786E\u8BA4\u5220\u9664\u5417\uFF1F", onConfirm: () => handleDelete(item), okText: "\u786E\u8BA4", cancelText: "\u53D6\u6D88", getPopupContainer: (node) => { return document.body; }, okButtonProps: { loading: confirmLoading } }, { children: _jsx(Button, Object.assign({ type: "link", danger: true, size: "small" }, { children: "\u5220\u9664" })) })) })); }, }, ]; function init(ids) { set_hiddenIds([...hiddenIds, ids]); } function handleDelete(item) { return runAsync({ hiddenDangerId: item.hiddenDangerId, }); } function onCancel() { set({ visible: false, }); } useEffect(() => { if (!isMount.current && type != 'add') { get_Detail_list({ serviceId }).then((res) => { const ids = map(res === null || res === void 0 ? void 0 : res.data, (item) => item.hiddenDangerId); if (!isEmpty(ids)) { setLoading(true); set_hiddenIds(ids); } }); } }, []); useEffect(() => { if (!isMount.current) { get_list({ ids: hiddenIds.join(',') }); } if (isMount.current) { isMount.current = false; } }, [JSON.stringify(hiddenIds)]); return (_jsxs(CardForm, Object.assign({ gutter: [10, 10], title: _jsxs(_Fragment, { children: [required && _jsx("i", Object.assign({ style: { color: 'red' } }, { children: "*" })), title] }), extra: !readonly && (_jsx(Button, Object.assign({ type: "link", size: "small", icon: _jsx(PlusCircleOutlined, {}), onClick: () => set({ item: null, title: '企业现场隐患添加', service: onAdd, visible: true, }) }, { children: "\u6DFB\u52A0" }))) }, { children: [value.visible && (_jsx(Form, { item: value.item, title: value.title, service: value.service, init: init, onCancel: onCancel, serviceid: serviceId })), _jsx(ProTable, { cardProps: { bodyStyle: { padding: 0, }, }, rowKey: "hiddenDangerId", actionRef: actionRef, options: false, search: false, pagination: { pageSize: 10 }, columns: columns, dataSource: dataSource, loading: loading })] }))); };