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.
333 lines
20 KiB
333 lines
20 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 { ProForm, ProFormDatePicker, ProFormItem, ProFormRadio, ProFormSelect, ProFormText, ProFormTextArea } from "@ant-design/pro-components"; |
|
import React, { useRef, useState, useEffect } from "react"; |
|
import { Button, Col, Divider, message, Modal } from "antd"; |
|
import { useRequest } from "ahooks"; |
|
import { getAqServiceStandard, getPriceListByOrgan, getServiceType, onCreate, getDetail, editServiceApply, saveServiceApply } from "./action"; |
|
import { jsonString, logoutOut, setToken } from "@component/utils"; |
|
import SelectedPolicy from "./selected.policy"; |
|
import SelectedAddress from "./selected.address"; |
|
import { compact, isEmpty, pick, pickBy } from "lodash"; |
|
import moment from "moment"; |
|
import { CardForm, FormUpload, GridForm, ReactRouterPrompt } from "@component/ui"; |
|
import { getUploadList, themeMessage, useRoutes, setStorage } from "@component/utils"; |
|
import { getUserInfo } from 'userContext'; |
|
import Multiplex from "./multiplex"; |
|
export default function Form({ disabled }) { |
|
const formRef = useRef(null); |
|
const { paramsParse, historyBack } = useRoutes(); |
|
const [isLeave, setLeave] = useState(true); |
|
let [flag, setFlag] = useState(true); |
|
const { runAsync } = useRequest(onCreate, { |
|
manual: true, |
|
onSuccess(result) { |
|
themeMessage(result, historyBack); |
|
}, |
|
onError(result) { |
|
message.error(result.message); |
|
} |
|
}); |
|
const { run, runAsync: editRun } = useRequest(editServiceApply, { |
|
manual: true, |
|
onSuccess(result) { |
|
themeMessage(result, historyBack); |
|
}, |
|
onError(result) { |
|
message.error(result.message); |
|
}, |
|
}); |
|
const { runAsync: saveRun } = useRequest(saveServiceApply, { |
|
manual: true, |
|
onSuccess(result) { |
|
themeMessage(result, historyBack); |
|
}, |
|
onError(result) { |
|
message.error(result.message); |
|
}, |
|
}); |
|
useEffect(() => { |
|
if (paramsParse.token) { |
|
setToken(paramsParse.token); |
|
} |
|
}, [paramsParse]); |
|
useRequest(getUserInfo, { |
|
onSuccess({ userInfo, menu }) { |
|
if (userInfo) { |
|
setStorage(userInfo); |
|
} |
|
}, |
|
onError(ERROR) { |
|
console.log(ERROR, 'ERROR'); |
|
logoutOut(navigate, 'logoutOut'); |
|
}, |
|
}); |
|
function getValues(values) { |
|
var _a, _b; |
|
const params = pick(values, ['form']); |
|
if (values.serviceId) { |
|
params.serviceId = values.serviceId; |
|
} |
|
if (values.remark) { |
|
params.remark = values.remark; |
|
} |
|
if (values.servicePrice) { |
|
params.servicePrice = values.servicePrice; |
|
} |
|
if (values.serviceSchemeId) { |
|
params.serviceSchemeId = values.serviceSchemeId.value; |
|
params.serviceSchemeName = values.serviceSchemeId.label; |
|
} |
|
if (values.serviceName) { |
|
params.serviceName = |
|
(values === null || values === void 0 ? void 0 : values.serviceName) && (values === null || values === void 0 ? void 0 : values.serviceName.replace(/[\<\>]/g, '')); |
|
} |
|
if (values.address) { |
|
params.geoLng = (_a = values.address) === null || _a === void 0 ? void 0 : _a.geoLng; |
|
params.geoLat = (_b = values.address) === null || _b === void 0 ? void 0 : _b.geoLat; |
|
params.address = |
|
values.address.address || values.address.label || values.address; |
|
} |
|
if (values.executedAt) { |
|
params.executedAt = moment(values.executedAt).format('YYYY-MM-DD HH:mm:ss'); |
|
//params.executedAt = moment(values.executedAt).format('YYYY-MM-DD') + ' 00:00:00'; |
|
} |
|
if (values.serviceTypeId) { |
|
params.serviceTypeId = values.serviceTypeId.value; |
|
} |
|
if (values.attachmentPath) { |
|
params.attachmentPath = JSON.stringify(getUploadList(values.attachmentPath)); |
|
} |
|
if (values.serviceObject && !isEmpty(values.serviceObject)) { |
|
params.serviceObject = JSON.stringify(values.serviceObject.map((item) => { |
|
var _a, _b; |
|
return (Object.assign(Object.assign({}, pick(item, [ |
|
'policyId', |
|
'policyNumber', |
|
'contactsName', |
|
'contactsPhone', |
|
'belongToHandlerCode', |
|
'belongToHandlerUserName', |
|
'belongToHandlerNumber', |
|
'email', |
|
])), { belongToHandlerOrganId: item.insuranceId, belongToHandlerOrganName: item.insuranceName, typePid: (_a = item.type) === null || _a === void 0 ? void 0 : _a.value, typePname: (_b = item.type) === null || _b === void 0 ? void 0 : _b.label, serviceObjectId: item.customerId || (item === null || item === void 0 ? void 0 : item.serviceObjectId), serviceObjectName: item.customerName || (item === null || item === void 0 ? void 0 : item.serviceObjectName) })); |
|
})); |
|
} |
|
return params; |
|
} |
|
function onFinish(values) { |
|
return __awaiter(this, void 0, void 0, function* () { |
|
const params = getValues(values); |
|
Modal.confirm({ |
|
content: '请确认是否提交?', |
|
onOk() { |
|
return __awaiter(this, void 0, void 0, function* () { |
|
setLeave(false); |
|
return (paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.applyStatus) == '2' || |
|
(paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.applyStatus) == '-1' |
|
? editRun(Object.assign(Object.assign({}, params), { serviceApplyId: paramsParse.id })) |
|
: runAsync(params); |
|
}); |
|
}, |
|
}); |
|
}); |
|
} |
|
function onSave() { |
|
var _a; |
|
const values = formRef.current.getFieldsValue(); |
|
const keys = Object.keys(pickBy(values, (item) => !isEmpty(item))); |
|
if (!formRef.current.isFieldsTouched(keys)) { |
|
message.warning('不能直接进行暂存操作', 3); |
|
return; |
|
} |
|
const params = getValues(values); |
|
if (values.aqServiceStandardCategory) { |
|
params.aqServiceId = |
|
(_a = values.aqServiceStandardCategory) === null || _a === void 0 ? void 0 : _a.value; |
|
} |
|
Modal.confirm({ |
|
content: '请确认是否暂存?', |
|
onOk() { |
|
return __awaiter(this, void 0, void 0, function* () { |
|
setLeave(false); |
|
return (paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.applyStatus) == '2' || |
|
(paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.applyStatus) == '-1' |
|
? saveRun(Object.assign(Object.assign({}, params), { serviceApplyId: paramsParse.id })) |
|
: saveRun(params); |
|
}); |
|
}, |
|
}); |
|
} |
|
function handleChangeServiceType(option, form) { |
|
var _a; |
|
if ((option === null || option === void 0 ? void 0 : option.serviceClassifyType) !== "jizhongfuwu") { |
|
const customerName = ((_a = form.getFieldValue("serviceObject")[0]) === null || _a === void 0 ? void 0 : _a.customerName) || ""; |
|
form.setFieldsValue({ |
|
serviceName: (option === null || option === void 0 ? void 0 : option.label) |
|
? `${customerName}${(option === null || option === void 0 ? void 0 : option.label) || ""}` |
|
: "", |
|
serviceObjectType: "1" |
|
}); |
|
} |
|
else { |
|
form.setFieldsValue({ |
|
serviceName: option === null || option === void 0 ? void 0 : option.label, |
|
serviceObjectType: "2" |
|
}); |
|
} |
|
} |
|
const disabledDate = (current) => { |
|
return current && current.unix() < moment().unix(); |
|
}; |
|
function request() { |
|
return __awaiter(this, void 0, void 0, function* () { |
|
if (paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.id) { |
|
return getDetail({ id: paramsParse.id }).then((data) => __awaiter(this, void 0, void 0, function* () { |
|
return { |
|
serviceId: data.serviceProjectId, |
|
attachmentPath: data.attachmentPath |
|
? yield jsonString(data.attachmentPath) |
|
: null, |
|
executedAt: data.estimatedServiceAt |
|
? moment(data.estimatedServiceAt) |
|
: undefined, |
|
remark: data.remark, |
|
servicePrice: data.servicePrice, |
|
serviceName: data.serviceProjectName, |
|
form: data.form ? String(data.form) : '2', |
|
aqServiceStandardCategory: { |
|
value: data.aqServiceId, |
|
label: data.aqServiceName, |
|
}, |
|
serviceTypeId: !isEmpty(compact([ |
|
data === null || data === void 0 ? void 0 : data.serviceTypeId, |
|
data === null || data === void 0 ? void 0 : data.serviceTypeName, |
|
data === null || data === void 0 ? void 0 : data.serviceClassifyType, |
|
])) |
|
? { |
|
value: data === null || data === void 0 ? void 0 : data.serviceTypeId, |
|
label: data === null || data === void 0 ? void 0 : data.serviceTypeName, |
|
serviceClassifyType: data === null || data === void 0 ? void 0 : data.serviceClassifyType, |
|
} |
|
: null, |
|
serviceSchemeId: !isEmpty(compact([data === null || data === void 0 ? void 0 : data.serviceSchemeId, data === null || data === void 0 ? void 0 : data.serviceSchemeName])) |
|
? { |
|
value: data === null || data === void 0 ? void 0 : data.serviceSchemeId, |
|
label: data === null || data === void 0 ? void 0 : data.serviceSchemeName, |
|
} |
|
: null, |
|
address: !isEmpty(data === null || data === void 0 ? void 0 : data.address) || !isEmpty(data === null || data === void 0 ? void 0 : data.serviceAddress) |
|
? { |
|
value: data === null || data === void 0 ? void 0 : data.serviceAddress, |
|
label: data === null || data === void 0 ? void 0 : data.serviceAddress, |
|
address: data === null || data === void 0 ? void 0 : data.address, |
|
geoLat: data === null || data === void 0 ? void 0 : data.serviceAddressLat, |
|
geoLng: data === null || data === void 0 ? void 0 : data.serviceAddressLng, |
|
} |
|
: null, |
|
}; |
|
})); |
|
} |
|
const data = { |
|
form: '2', |
|
}; |
|
if (!isEmpty(compact([ |
|
paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.aqServiceId, |
|
paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.aqServiceName, |
|
]))) { |
|
data.aqServiceStandardCategory = { |
|
value: paramsParse.aqServiceId, |
|
label: paramsParse.aqServiceName, |
|
}; |
|
} |
|
if (!isEmpty(compact([ |
|
paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.serviceTypeId, |
|
paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.serviceTypeName, |
|
paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.serviceClassifyType, |
|
]))) { |
|
data.serviceTypeId = { |
|
value: paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.serviceTypeId, |
|
label: paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.serviceTypeName, |
|
serviceClassifyType: paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.serviceClassifyType, |
|
}; |
|
} |
|
if (!isEmpty(compact([paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.serviceName, paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.serviceObjectType]))) { |
|
data.serviceName = paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.serviceName; |
|
data.serviceObjectType = paramsParse.serviceObjectType; |
|
} |
|
return data; |
|
}); |
|
} |
|
return (_jsx("div", { children: _jsxs(GridForm, Object.assign({ request: request, formRef: formRef, onFinish: onFinish, renderAction: () => { |
|
return (_jsxs(_Fragment, { children: [_jsx(Multiplex, { form: formRef }), _jsx(Button, Object.assign({ type: "primary", ghost: true, onClick: onSave }, { children: "\u6682\u5B58" }))] })); |
|
}, submitter: { |
|
searchConfig: { |
|
submitText: (paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.applyStatus) == '2' ? '重新提交' : '提交', |
|
}, |
|
} }, { children: [_jsx(ReactRouterPrompt, { when: isLeave }), _jsxs(CardForm, { children: [_jsx(ProFormItem, { name: "serviceId", hidden: true }), _jsx(ProForm.Item, Object.assign({ noStyle: true, shouldUpdate: true }, { children: (form) => { |
|
return (_jsx(ProFormSelect, { name: "aqServiceStandardCategory", label: "\u6807\u51C6\u5206\u7C7B", request: getAqServiceStandard, placeholder: "\u8BF7\u9009\u62E9\u6807\u51C6\u5206\u7C7B", rules: [{ required: true }], fieldProps: { |
|
labelInValue: true, |
|
onChange: (_, o) => { |
|
form.setFieldsValue({ |
|
serviceTypeId: undefined |
|
}); |
|
handleChangeServiceType(o, form); |
|
} |
|
} })); |
|
} })), _jsx(ProForm.Item, Object.assign({ noStyle: true, shouldUpdate: true }, { children: (form) => { |
|
var _a; |
|
return (_jsx(ProFormSelect, { name: "serviceTypeId", label: "\u670D\u52A1\u6D3B\u52A8", params: { |
|
aqServiceId: (_a = form.getFieldValue("aqServiceStandardCategory")) === null || _a === void 0 ? void 0 : _a.value |
|
}, request: getServiceType, placeholder: "\u8BF7\u9009\u62E9\u670D\u52A1\u6D3B\u52A8", rules: [{ required: true }], fieldProps: { |
|
labelInValue: true |
|
} })); |
|
} })), _jsx(Col, Object.assign({ span: 24 }, { children: _jsx(SelectedPolicy, { disabled: disabled, flag: flag, setFlag: setFlag }) })), _jsx(ProFormText, { name: "serviceName", label: "\u9879\u76EE\u540D\u79F0", rules: [{ required: true }], placeholder: "\u8BF7\u8F93\u5165\u9879\u76EE\u540D\u79F0" }), _jsx(SelectedAddress, {}), _jsx(ProForm.Item, Object.assign({ noStyle: true, shouldUpdate: true }, { children: (form) => { |
|
var _a, _b; |
|
return (_jsx(ProFormSelect, { name: "serviceSchemeId", label: "\u4EF7\u683C\u65B9\u6848", params: { |
|
serviceTypeId: (_a = form.getFieldValue("serviceTypeId")) === null || _a === void 0 ? void 0 : _a.value, |
|
aqServiceId: (_b = form.getFieldValue("aqServiceStandardCategory")) === null || _b === void 0 ? void 0 : _b.value |
|
}, request: getPriceListByOrgan, placeholder: "\u8BF7\u9009\u62E9\u670D\u52A1\u8BA1\u8D39\u65B9\u6848", fieldProps: { |
|
labelInValue: true, |
|
onChange: (value, options) => { |
|
form.setFieldValue("servicePrice", options.servicePrice); |
|
} |
|
} })); |
|
} })), _jsx(ProFormText, { name: "servicePrice", label: "\u670D\u52A1\u4EF7\u683C(\u5143)", rules: [{ required: true }], placeholder: "\u8BF7\u8F93\u5165\u9879\u670D\u52A1\u4EF7\u683C" }), _jsx(ProFormRadio.Group, { label: "\u670D\u52A1\u6A21\u5F0F", name: "form", rules: [{ required: true }], options: [ |
|
{ |
|
value: "1", |
|
label: "线上" |
|
}, |
|
{ |
|
value: "2", |
|
label: "线下" |
|
} |
|
] }), _jsx(ProFormDatePicker, { label: "\u671F\u671B\u670D\u52A1\u65F6\u95F4", name: "executedAt", fieldProps: { |
|
// format: (value) => value.format('YYYY-MM-DD'), |
|
style: { |
|
width: "100%" |
|
}, |
|
disabledDate: disabledDate |
|
}, placeholder: "\u8BF7\u9009\u62E9\u671F\u671B\u670D\u52A1\u65F6\u95F4", rules: [{ required: true }] }), _jsx(ProFormTextArea, { labelCol: { |
|
span: 3 |
|
}, colProps: { |
|
span: 24 |
|
}, name: "remark", label: "\u5907\u6CE8", placeholder: "\u8BF7\u8F93\u5165\u5907\u6CE8", fieldProps: { |
|
maxLength: 500, |
|
showCount: true |
|
} })] }), _jsx(Divider, { className: "self-pro-divider-form" }), _jsx(CardForm, Object.assign({ title: "\u76F8\u5173\u9644\u4EF6" }, { children: _jsx(FormUpload, { max: 20, label: "\u9644\u4EF6", name: "attachmentPath", formItemProps: { |
|
extra: "最多上传20个附件,(支持格式:jpg,png,jpeg,pdf,word,Excel)" |
|
}, params: { |
|
type: "7", |
|
bizNo: paramsParse === null || paramsParse === void 0 ? void 0 : paramsParse.id |
|
}, fieldProps: { |
|
accept: "image/*,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" |
|
} }) }))] })) })); |
|
}
|
|
|