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.
157 lines
10 KiB
157 lines
10 KiB
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" })] })); |
|
}
|
|
|