You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

102 lines
4.0 KiB

import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
import { ProCard, ProTable } from '@ant-design/pro-components';
import { useRef } from 'react';
import { Space, Button, Popconfirm, message } from 'antd';
import { initial } from 'lodash';
import { getList, onAdd, onDelete } from './action';
import Form from './form';
import { useServiceContext } from '../../context';
import { PlusCircleOutlined } from '@ant-design/icons';
import { useRequest, useToggle } from 'ahooks';
import { CardForm, CardDetail } from '@component/ui';
import { themeMessage } from '@component/utils';
export default ({ readonly, title, required }) => {
const actionRef = useRef();
const [value, { set }] = useToggle({
visible: false,
});
const { serviceId } = useServiceContext();
const { runAsync, confirmLoading } = useRequest(onDelete, {
manual: true,
onSuccess(result) {
themeMessage(result);
if (result.type === 'success') {
init && init();
}
},
onError(result) {
message.error(result.message);
},
});
const columns = [
{
title: '企业名称',
dataIndex: 'customerName',
ellipsis: true,
search: false,
},
{
title: '姓名',
dataIndex: 'userName',
ellipsis: true,
search: false,
},
{
title: '电话',
dataIndex: 'phone',
ellipsis: true,
search: false,
},
{
title: '部门',
dataIndex: 'groupName',
ellipsis: true,
search: false,
},
{
title: '职务',
dataIndex: 'userPosition',
ellipsis: true,
search: false,
},
{
title: '操作',
ellipsis: true,
search: false,
render(_, item) {
return (_jsx(Popconfirm, Object.assign({ placement: "top", title: "\u786E\u8BA4\u5220\u9664\u5417\uFF1F", onConfirm: () => handleDelete(item), okText: "\u786E\u8BA4", cancelText: "\u53D6\u6D88", okButtonProps: { loading: confirmLoading } }, { children: _jsx(Button, Object.assign({ type: "link", danger: true, size: "small" }, { children: "\u5220\u9664" })) })));
},
},
];
function init() {
var _a;
(_a = actionRef.current) === null || _a === void 0 ? void 0 : _a.reload();
}
function handleDelete(item) {
return runAsync({
Id: item.id,
});
}
function onCancel() {
set({
visible: false,
});
}
if (readonly) {
return (_jsx(CardDetail, Object.assign({ title: title }, { children: _jsx(ProTable, { cardProps: {
bodyStyle: {
padding: 0,
},
}, rowKey: "id", actionRef: actionRef, params: { serviceId }, options: false, search: false, pagination: false, columns: initial(columns), request: getList }) })));
}
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 })), _jsx(ProTable, { cardProps: {
bodyStyle: {
padding: 0,
},
}, rowKey: "id", actionRef: actionRef, params: { serviceId }, options: false, search: false, pagination: false, columns: columns, request: getList })] })));
};