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, Fragment as _Fragment } from "react/jsx-runtime"; import { CardForm } from '@component/ui'; import { ProForm, ProFormDatePicker, ProFormSelect, ProFormText, ProFormTextArea, ProFormTreeSelect, ProFormDependency, } from '@ant-design/pro-components'; import { getAqServiceStandard } from 'actions/service.action'; import React, { useRef, useState } from 'react'; import { checkPolicy, getExpertList, } from './action'; import { getExecutedOrganList } from 'actions/base.action'; import { Button, Divider, Form, Input, Space } from 'antd'; import { useReportContext } from './context'; import { getStorage } from "@component/utils"; import { PlusOutlined } from "@ant-design/icons"; import { concat, find, isEmpty, omit, uniqueId } from "lodash"; export default function () { const [organId, setOrganId] = React.useState(); const form = Form.useFormInstance(); const { poltform } = useReportContext(); const [userOptions, setUserOptions] = useState([]); const organInputRef = useRef(null); const expertInputRef = useRef(null); const [organ_items, set_organ_items] = useState([]); const [expert_items, set_expert_items] = useState([]); const [organ_name, set_organ_name] = useState(''); const [expert_name, set_expert_name] = useState(''); function onOrganChange(value) { return __awaiter(this, void 0, void 0, function* () { form.resetFields(['user']); setOrganId([]); setOrganId(value.value); const options = yield getExpertList({ serviceOrganId: value.value, certificationStatus: 3, }); console.log('options', options); setUserOptions(options); }); } function onOrganNameChange(event) { set_organ_name(event.target.value); } function onExpertNameChange(event) { set_expert_name(event.target.value); } function addOrganItem() { if (organ_name && !find(organ_items, ['label', organ_name])) { set_organ_items([ ...organ_items, { value: uniqueId(), label: organ_name, }, ]); } } function addExpertItem() { if (expert_name && !find(expert_items, ['label', expert_name])) { set_expert_items([ ...expert_items, { value: uniqueId(), label: expert_name, }, ]); } } return (_jsxs(CardForm, { children: [_jsx(ProForm.Item, { noStyle: true, name: "serviceObjectType", hidden: true }), _jsx(ProFormDependency, Object.assign({ name: [''] }, { children: ({}, { setFieldsValue }) => (_jsx(ProFormText, { name: "policyNumber", label: "\u4FDD\u5355\u53F7", formItemProps: { validateTrigger: ['onChange', 'onBlur'], }, rules: [ { required: true }, { validateTrigger: 'onBlur', validator: (_, value) => __awaiter(this, void 0, void 0, function* () { const result = yield checkPolicy({ policyNumber: value }); if (result) { return Promise.resolve(); } else { return Promise.reject('保单不存在'); } }), }, ], placeholder: "\u8BF7\u8F93\u5165\u4FDD\u5355\u53F7", fieldProps: { onChange: (e) => __awaiter(this, void 0, void 0, function* () { var _a; const value = (_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.value; const data = yield checkPolicy({ policyNumber: value }); if (data) { setFieldsValue({ customerName: data === null || data === void 0 ? void 0 : data.customerName }); } else { setFieldsValue({ customerName: null }); } }) } })) })), _jsx(ProForm.Item, Object.assign({ noStyle: true, shouldUpdate: true }, { children: (form) => { return (_jsx(ProFormSelect, { name: "aqServiceStandardCategory", label: "\u670D\u52A1\u6807\u51C6\u7C7B\u522B", request: getAqServiceStandard, placeholder: "\u8BF7\u9009\u62E9\u670D\u52A1\u6807\u51C6\u7C7B\u522B", rules: [{ required: true, message: '请选择服务标准类别' }], fieldProps: { labelInValue: true, } })); } })), poltform == 'insure' && (_jsxs(_Fragment, { children: [_jsx(ProFormTreeSelect, { fieldProps: { showSearch: true, onChange: onOrganChange, allowClear: true, labelInValue: true, dropdownRender: (menu) => (_jsxs(_Fragment, { children: [menu, _jsx(Divider, { style: { margin: '8px 0' } }), _jsxs(Space, Object.assign({ style: { padding: '0 8px 4px' } }, { children: [_jsx(Input, { placeholder: "\u8BF7\u8F93\u5165\u670D\u52A1\u673A\u6784", ref: organInputRef, value: organ_name, onChange: onOrganNameChange }), _jsx(Button, Object.assign({ type: "text", icon: _jsx(PlusOutlined, {}), onClick: addOrganItem }, { children: "\u6DFB\u52A0\u670D\u52A1\u673A\u6784" }))] }))] })), }, name: "organ", label: "\u670D\u52A1\u673A\u6784", params: { items: organ_items }, request: (params) => __awaiter(this, void 0, void 0, function* () { return getExecutedOrganList(omit(params, ['items'])).then(data => { if (!isEmpty(data)) { return concat([], params.items, data); } return organ_items; }); }), placeholder: "\u8BF7\u9009\u62E9\u670D\u52A1\u673A\u6784", rules: [{ required: true, message: '请选择服务机构' }] }), _jsx(ProFormSelect, { name: "user", label: "\u670D\u52A1\u4E13\u5BB6", placeholder: "\u8BF7\u9009\u62E9\u670D\u52A1\u4E13\u5BB6", rules: [{ required: true, message: '请选择服务专家' }], fieldProps: { labelInValue: true, options: concat([], userOptions, expert_items), notFoundContent: organId ? '暂无数据' : '请选择服务专家', dropdownRender: (menu) => (_jsxs(_Fragment, { children: [menu, _jsx(Divider, { style: { margin: '8px 0' } }), _jsxs(Space, Object.assign({ style: { padding: '0 8px 4px' } }, { children: [_jsx(Input, { placeholder: "\u8BF7\u9009\u62E9\u670D\u52A1\u4E13\u5BB6", ref: expertInputRef, value: expert_name, onChange: onExpertNameChange }), _jsx(Button, Object.assign({ type: "text", icon: _jsx(PlusOutlined, {}), onClick: addExpertItem }, { children: "\u6DFB\u52A0\u670D\u52A1\u4E13\u5BB6" }))] }))] })), } })] })), poltform == 'expert' && (getStorage('roleId') == '10000000003' || getStorage('roleId') == '10000000001') && (_jsx(ProFormSelect, { name: "user", label: "\u670D\u52A1\u4E13\u5BB6", placeholder: "\u8BF7\u9009\u62E9\u670D\u52A1\u4E13\u5BB6", rules: [{ required: true, message: '请选择服务专家' }], request: () => { return getExpertList({ serviceOrganId: getStorage('organId'), certificationStatus: 3, }); return []; }, fieldProps: { labelInValue: true, } })), _jsx(ProFormText, { name: "customerName", label: "\u5BA2\u6237\u540D\u79F0", readonly: true, rules: [{ required: true }], placeholder: "\u8BF7\u8F93\u5165\u5BA2\u6237\u540D\u79F0" }), _jsx(ProFormText, { name: "address", label: "\u670D\u52A1\u5730\u5740", rules: [{ required: true }], placeholder: "\u8BF7\u8F93\u5165\u670D\u52A1\u5730\u5740" }), _jsx(ProFormDatePicker, { name: "serviceStartAt", label: "\u670D\u52A1\u65E5\u671F", fieldProps: { style: { width: '100%', }, }, placeholder: "\u8BF7\u9009\u62E9\u670D\u52A1\u65E5\u671F", rules: [{ required: true, message: '请选择服务日期' }] }), _jsx(ProFormText, { name: "actualServiceCost", label: "\u5B9E\u9645\u652F\u4ED8\u91D1\u989D(\u5143)", rules: [{ required: true }], placeholder: "\u8BF7\u8F93\u5165\u5B9E\u9645\u652F\u4ED8\u91D1\u989D" }), _jsx(ProFormTextArea, { labelCol: { span: 3, }, colProps: { span: 24, }, fieldProps: { maxLength: 500, showCount: true, }, name: "serviceContent", label: "\u670D\u52A1\u5185\u5BB9\u7B80\u8FF0", placeholder: "\u8BF7\u8F93\u5165\u670D\u52A1\u5185\u5BB9\u7B80\u8FF0" }), _jsx(ProFormTextArea, { labelCol: { span: 3, }, colProps: { span: 24, }, fieldProps: { maxLength: 500, showCount: true, }, name: "remark", label: "\u5907\u6CE8", placeholder: "\u8BF7\u8F93\u5165\u5907\u6CE8" })] })); }