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 { PlusOutlined } from '@ant-design/icons';
import { ModalForm, ProForm, ProFormDependency, ProFormItem, ProFormSelect, ProFormText, ProFormTextArea, ProFormUploadButton, } from '@ant-design/pro-components';
import { Form, message } from 'antd';
import { FormUpload } from '@component/ui';
import { useRequest } from 'ahooks';
import { getDictValList } from 'actions/base.action';
import { omit } from 'lodash';
import { hiddenTroubleGrade } from '../../CONST';
import { getToken, getUploadList, getUploadValueFromEvent, jsonString, themeMessage, } from '@component/utils';
import { useServiceContext } from '../../context';
import React, { useCallback } from 'react';
import { getFormTypeList } from 'insure/src/actions/industry.checklist.action';
import { Link } from 'react-router-dom';
export default ({ title, onCancel, init, item, service, serviceid }) => {
    var _a, _b;
    // 专家端使用serviceId 使用props中的
    const serviceId = (_b = (_a = useServiceContext()) === null || _a === void 0 ? void 0 : _a.serviceId) !== null && _b !== void 0 ? _b : serviceid;
    const [form] = Form.useForm();
    const { runAsync, loading } = useRequest(service, {
        manual: true,
        onSuccess(result) {
            themeMessage(result);
            if (result.type === 'success') {
                init && init();
                onCancel();
            }
        },
        onError(result) {
            message.error(result.message);
        },
    });
    function onFinish(values) {
        return __awaiter(this, void 0, void 0, function* () {
            const classify = values.classify;
            values.formTypePid = values === null || values === void 0 ? void 0 : values.formTypeP.value;
            values.formTypePname = values === null || values === void 0 ? void 0 : values.formTypeP.label;
            values.formTypeId = values === null || values === void 0 ? void 0 : values.formType.value;
            values.formTypeName = values === null || values === void 0 ? void 0 : values.formType.label;
            return runAsync(Object.assign({}, omit(values, [
                'classify',
                'attachments',
                'dangerTypeName',
                'formTypeP',
                'formType',
            ]), {
                classifyId: classify.value,
                classifyName: classify.label,
                dangerTypeId: values.dangerTypeName.value,
                dangerTypeName: values.dangerTypeName.label,
                attachments: JSON.stringify(getUploadList(values.attachments)),
                serviceId,
            }));
        });
    }
    const request = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
        return Object.assign(Object.assign({}, item), { classify: {
                value: item.classifyId,
                label: item.classifyName,
            }, dangerTypeName: {
                value: item.dangerTypeId,
                label: item.classifyName,
            }, formTypeP: {
                value: item === null || item === void 0 ? void 0 : item.formTypeId,
                label: item === null || item === void 0 ? void 0 : item.formTypePname,
            }, formType: {
                value: item === null || item === void 0 ? void 0 : item.formTypePid,
                label: item === null || item === void 0 ? void 0 : item.formTypeName,
            }, attachments: yield jsonString(item.attachments) });
    }), [item]);
    return (_jsxs(ModalForm, Object.assign({ visible: true, title: title, form: form, request: request, autoFocusFirstInput: true, modalProps: {
            destroyOnClose: true,
            confirmLoading: loading,
            maskClosable: false,
            onCancel: onCancel,
            bodyStyle: {
                height: 600,
                overflow: 'auto',
            },
        }, submitTimeout: 2000, onFinish: onFinish }, { children: [_jsx(ProFormItem, { name: "hiddenDangerId", hidden: true }), _jsx(ProFormText, { rules: [{ required: true }], name: "description", label: "\u9690\u60A3\u63CF\u8FF0", fieldProps: {
                    showCount: true,
                    maxLength: 1200,
                } }), _jsx(ProForm.Item, Object.assign({ noStyle: true, shouldUpdate: true }, { children: ({ setFieldValue }) => {
                    return (_jsx(ProFormSelect, { name: "formTypeP", label: "\u4E00\u7EA7\u7C7B\u522B", placeholder: "\u8BF7\u9009\u62E9\u4E00\u7EA7\u7C7B\u522B", request: getFormTypeList, formItemProps: {
                            extra: (_jsx(Link, Object.assign({ to: "/app/serviceAssist/template/industryType" }, { children: "\u6CA1\u6709\u6570\u636E? \u53BB\u521B\u5EFA" }))),
                        }, fieldProps: {
                            labelInValue: true,
                            onChange() {
                                setFieldValue('formType', null);
                            },
                        }, rules: [{ required: true, message: '请选择一级类别' }] }));
                } })), _jsx(ProFormDependency, Object.assign({ name: ['formTypeP'] }, { children: ({ formTypeP }) => {
                    var _a;
                    return (_jsx(ProFormSelect, { name: "formType", label: "\u4E8C\u7EA7\u7C7B\u522B", placeholder: "\u8BF7\u9009\u62E9\u4E8C\u7EA7\u7C7B\u522B", params: { parentId: (_a = formTypeP === null || formTypeP === void 0 ? void 0 : formTypeP.value) !== null && _a !== void 0 ? _a : null }, request: (params) => (formTypeP ? getFormTypeList(params) : []), fieldProps: {
                            labelInValue: true,
                        }, rules: [{ required: true, message: '请选择二级类别' }] }));
                } })), _jsx(ProFormSelect, { rules: [{ required: true }], label: "\u9690\u60A3\u7C7B\u578B", name: "classify", request: getDictValList, params: { dictId: '20' }, fieldProps: {
                    labelInValue: true,
                } }), _jsx(ProFormSelect, { rules: [{ required: true }], label: "\u9690\u60A3\u7B49\u7EA7", name: "hiddenTroubleGrade", options: hiddenTroubleGrade }), _jsx(ProFormSelect, { rules: [{ required: true }], label: "\u9690\u60A3\u5206\u7C7B", name: "dangerTypeName", request: getDictValList, params: { dictId: '24' }, fieldProps: {
                    labelInValue: true,
                } }), _jsx(ProFormText, { rules: [{ required: true }], name: "discoveredAddress", label: "\u9690\u60A3\u6240\u5728\u573A\u6240\u90E8\u4F4D", fieldProps: {
                    showCount: true,
                    maxLength: 40,
                } }), _jsx(ProFormTextArea, { label: "\u6574\u6539\u5EFA\u8BAE", name: "rectifyRemark", fieldProps: {
                    showCount: true,
                    maxLength: 4000,
                } }), _jsx(FormUpload, { name: "attachments", label: "\u73B0\u573A\u7167\u7247", max: 20, fieldProps: {
                    accept: 'image/*',
                }, params: {
                    bizNo: (item === null || item === void 0 ? void 0 : item.hiddenDangerId) || '',
                    type: '8',
                } })] })));
};