var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { ModalForm, ProCard, ProFormSelect, ProFormList, ProFormItem, ProFormText, ProFormTextArea, } from '@ant-design/pro-components'; import { FormUpload } from '@component/ui'; import { Form, message, Divider } from 'antd'; import { useCallback } from 'react'; import { useRequest } from 'ahooks'; import { getDictValList } from 'actions/base.action'; import { map, pick } from 'lodash'; import { severityData, frequencyData, getGrade } from '../CONST'; import { getUploadList, jsonString } from '@component/utils'; export default ({ title, init, item, service, params, onCancel, serviceId, }) => { const [form] = Form.useForm(); const { runAsync, loading } = useRequest(service, { manual: true, onSuccess(result) { // themeMessage(result); if (result.type === 'success') { // 保存风险id init && init(result.data); onCancel(); } }, onError(result) { message.error(result.message); }, }); function onFinish(values) { return __awaiter(this, void 0, void 0, function* () { return runAsync(Object.assign({}, params, Object.assign(Object.assign({}, values), { serviceId, attachmentIds: JSON.stringify(getUploadList(values.attachmentIds)), riskAccidents: JSON.stringify(map(values.riskAccidents, (item) => { return { accidentTypeId: item.accidentType.value, accidentTypeName: item.accidentType.label, severity: item.severity, frequency: item.frequency, riskAccidentRelationId: item.riskAccidentRelationId, conventionMeasures: item.conventionMeasures, emergencyMeasures: item.emergencyMeasures, riskGrade: getGrade(item.severity, item.frequency), }; })) }))); }); } const request = useCallback(() => __awaiter(void 0, void 0, void 0, function* () { var _a; if (item) { return Object.assign(Object.assign({}, pick(item, [ 'riskId', 'riskName', 'riskContent', 'discoveredAddress', ])), { attachmentIds: yield jsonString(item.attachmentIds), riskAccidents: (_a = item.list) === null || _a === void 0 ? void 0 : _a.map((sub) => ({ accidentType: { value: sub.accidentTypeId, label: sub.accidentTypeName, }, severity: sub.severity, frequency: sub.frequency, conventionMeasures: sub.conventionMeasures, emergencyMeasures: sub.emergencyMeasures, riskAccidentRelationId: sub.riskAccidentRelationId, })) }); } return {}; }), [item]); return (_jsxs(ModalForm, Object.assign({ request: request, title: title, visible: true, form: form, autoFocusFirstInput: true, modalProps: { destroyOnClose: true, maskClosable: false, confirmLoading: loading, onCancel: onCancel, bodyStyle: { height: 600, overflow: 'auto', }, }, submitTimeout: 2000, onFinish: onFinish }, { children: [_jsx(ProFormItem, { name: "riskId", hidden: true }), _jsx(ProFormText, { rules: [{ required: true }], name: "riskName", label: "\u98CE\u9669\u540D\u79F0", fieldProps: { showCount: true, maxLength: 40, } }), _jsx(ProFormTextArea, { rules: [{ required: true }], label: "\u98CE\u9669\u63CF\u8FF0", name: "riskContent", fieldProps: { showCount: true, maxLength: 4000, } }), _jsx(ProFormText, { rules: [{ required: true }], name: "discoveredAddress", label: "\u98CE\u9669\u6240\u5728\u573A\u6240/\u90E8\u4F4D", fieldProps: { showCount: true, maxLength: 40, } }), _jsx(FormUpload, { name: "attachmentIds", label: "\u73B0\u573A\u7167\u7247", max: 20, params: { bizNo: (item === null || item === void 0 ? void 0 : item.riskId) || '', type: '10', }, fieldProps: { accept: 'image/*', } }), _jsxs(ProFormList, Object.assign({ name: "riskAccidents", rules: [ { validator: (_, names) => __awaiter(void 0, void 0, void 0, function* () { if (!names || names.length < 1) { return Promise.reject(new Error('请添加风险评估及管控')); } }), }, ], required: true, label: "\u98CE\u9669\u8BC4\u4F30\u53CA\u7BA1\u63A7", style: { marginBottom: 0 }, min: 1, copyIconProps: false, creatorButtonProps: { creatorButtonText: '添加风险评估及管控', }, itemRender: ({ listDom, action }, { index }) => (_jsxs(ProCard, Object.assign({ size: "small", style: { marginBottom: 8 }, title: `评估${index + 1}`, extra: action, bodyStyle: { paddingBottom: 0 } }, { children: [listDom, _jsx(Divider, { className: "self-pro-divider" })] }))) }, { children: [_jsx(ProFormItem, { name: "riskAccidentRelationId", hidden: true }), _jsx(ProFormSelect, { rules: [{ required: true }], label: "\u4E8B\u6545\u7C7B\u578B", name: "accidentType", request: getDictValList, params: { dictId: 19, }, options: severityData, fieldProps: { labelInValue: true, } }), _jsx(ProFormSelect, { rules: [{ required: true }], label: "\u540E\u679C\u4E25\u91CD\u6027", name: "severity", options: severityData }), _jsx(ProFormSelect, { rules: [{ required: true }], label: "\u4E8B\u6545\u53D1\u751F\u9891\u7387", options: frequencyData, name: "frequency" }), _jsx(ProFormTextArea, { label: "\u65E5\u5E38\u9632\u8303\u63AA\u65BD", name: "conventionMeasures", fieldProps: { showCount: true, maxLength: 2000, } }), _jsx(ProFormTextArea, { label: "\u5E94\u6025\u63AA\u65BD", name: "emergencyMeasures", fieldProps: { showCount: true, maxLength: 2000, } })] }))] }))); };