import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime"; import { Form } from 'antd'; import { EditableProTable, ProFormItem } from '@ant-design/pro-components'; import { compact, isEmpty, pick, map, uniqueId, includes, find } from 'lodash'; import SelectedPolicy from './selected.policys'; import { getIndustryList } from './action'; import { useState } from 'react'; import { useRoutes } from '@component/utils'; const editColumns = [ { title: '保单号', dataIndex: 'policyNumber', readonly: true, }, { title: '被服务对象', dataIndex: 'serviceObjectName', renderText: (_, record) => record.customerName || record.serviceObjectName || '-', readonly: true, }, { title: '归属机构', dataIndex: 'belongToHandlerOrganName', renderText: (_, record) => record.insuranceName || record.belongToHandlerOrganName || '-', readonly: true, }, { title: '归属经办人', dataIndex: 'belongToHandlerUserName', readonly: true, renderText(_, item) { return compact([ item.belongToHandlerUserName, item.belongToHandlerCode, ]).join(','); }, }, { title: (_jsxs(_Fragment, { children: [_jsx("span", Object.assign({ style: { color: 'red' } }, { children: "*" })), "\u7BA1\u7406\u5206\u7C7B"] })), dataIndex: 'type', valueType: 'select', request: getIndustryList, fieldProps: { placeholder: '请输入选择管理分类', labelInValue: true }, }, { title: '企业联系人', dataIndex: 'contactsName', valueType: 'text', fieldProps: { placeholder: '请输入企业联系人' }, }, { title: '企业联系电话', dataIndex: 'contactsPhone', valueType: 'text', fieldProps: { placeholder: '请输入企业联系电话' }, }, { title: '企业邮箱', dataIndex: 'email', valueType: 'text', fieldProps: { placeholder: '请输入企业邮箱' }, }, { title: '操作', valueType: 'option', width: 70, fixed: 'right', render: () => { return null; }, }, ]; export default function ({ disabled, flag = false, setFlag }) { const form = Form.useFormInstance(); const serviceTypeId = Form.useWatch('serviceTypeId', form); const aqServiceStandardCategory = Form.useWatch('aqServiceStandardCategory', form); const serviceObject = Form.useWatch('serviceObject', form); const serviceClassifyType = serviceTypeId === null || serviceTypeId === void 0 ? void 0 : serviceTypeId.serviceClassifyType; const [isShow, setIsShow] = useState(false); const { paramsParse } = useRoutes(); function onOk(selectedRowOptions) { var _a; if (!isEmpty(selectedRowOptions)) { const data = []; const selected = selectedRowOptions.map((item) => { return Object.assign(Object.assign({}, pick(item, [ 'policyId', 'policyNumber', 'customerId', 'customerName', 'contactsName', 'contactsPhone', 'belongToHandlerOrganId', 'belongToHandlerOrganName', 'belongToHandlerCode', 'belongToHandlerUserName', 'belongToHandlerNumber', 'insuranceId', 'insuranceName', 'serviceObjectId', 'serviceObjectName', ])), { contactsName: item.contactsName || '', contactsPhone: item.phone || item.contactsPhone || '', email: item.email || '', type: item.typePid ? { value: item.typePid, label: item.typePname, } : null }); }); for (const selectedElement of selected) { const item = find(serviceObject, [ 'policyId', selectedElement.policyId, ]); if (item) { data.push(item); } else { selectedElement.id = uniqueId(); data.push(selectedElement); } } form.setFieldsValue({ serviceObject: data, }); if (isShow) { form.setFieldsValue({ address: null, }); } if (serviceClassifyType !== 'jizhongfuwu') { if ((paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.reSubmit) && flag) return setFlag(false); if (isShow) { form.setFieldValue('serviceName', `${((_a = selectedRowOptions[0]) === null || _a === void 0 ? void 0 : _a.customerName) || ''}${(aqServiceStandardCategory === null || aqServiceStandardCategory === void 0 ? void 0 : aqServiceStandardCategory.label) || ''}`); } } } } return (_jsx(SelectedPolicy, Object.assign({ disabled: disabled, name: "serviceObject", serviceClassifyType: serviceClassifyType, onConfirm: onOk, rowSelectionType: serviceClassifyType === 'jizhongfuwu' ? 'checkbox' : 'radio' }, { children: ({ handleOpen, setSelectedRowOptions }) => (_jsx(_Fragment, { children: _jsx(ProFormItem, Object.assign({ label: "\u9009\u62E9\u4FDD\u5355", required: true, labelCol: { span: 3, }, name: "serviceObject", trigger: "onValuesChange", rules: [ () => ({ validator(_, value) { var _a; if (isEmpty(value)) { return Promise.reject(new Error('请选择保单')); } let message = ''; for (const valueElement of value) { // if (!valueElement.contactsName) { // message = '请输入企业联系人'; // break; // } // // if (!valueElement.contactsPhone) { // message = '请输入企业联系电话'; // break; // } // // if (!phoneReg.test(valueElement.contactsPhone)) { // message = '请输入正确的企业联系电话'; // break; // } // if (!valueElement.email) { // message = '请输入企业邮箱'; // break; // } // if (!emailReg.test(valueElement.email)) { // message = '请输入正确的企业邮箱'; // break; // } if (!((_a = valueElement === null || valueElement === void 0 ? void 0 : valueElement.type) === null || _a === void 0 ? void 0 : _a.value)) { message = '请选择管理分类'; break; } } if (message) { return Promise.reject(new Error(message)); } return Promise.resolve(); }, }), ], colProps: { span: 24, } }, { children: _jsx(EditableProTable, { tableStyle: { display: isEmpty(serviceObject) ? 'none' : 'block', marginBottom: 10, }, size: "small", tableClassName: "tableClassName", rowKey: "id", toolBarRender: false, columns: editColumns, recordCreatorProps: { creatorButtonText: '选择保单', disabled: disabled || !serviceClassifyType, onClick: () => { handleOpen(); setIsShow(true); }, parentKey: Date.now(), style: { margin: 0, }, }, editable: { type: 'multiple', editableKeys: map(serviceObject, 'id'), actionRender: (row, config, defaultDoms) => { if (disabled) { return null; } return [defaultDoms.delete]; }, onChange: (editableKeys, editableOptions) => { form.setFieldsValue({ serviceObject: editableOptions, }); setSelectedRowOptions(editableOptions); }, } }) })) })) }))); }