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.
 
 
 
 

181 lines
9.8 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 } from "react/jsx-runtime";
import { PageContainer } from '@ant-design/pro-components';
import React, { useRef, useState } from 'react';
import { Button, Divider, message, Modal } from 'antd';
import { useRequest } from 'ahooks';
import { getStorage, getUploadList, jsonString, themeMessage, useRoutes, } from '@component/utils';
import { saveReport, submitReport, getServiceDetail } from './action';
import { omit, map, isEmpty } from 'lodash';
import moment from 'moment';
import { CardForm, FormUpload, GridForm, ReactRouterPrompt, } from '@component/ui';
import Base from './base.form';
import HiddenInformation from './hidden.information';
import RiskControl from './risk.control';
import { Context } from './context';
export default function (props) {
return (_jsx(PageContainer, Object.assign({ header: {
title: null,
} }, { children: _jsx("div", Object.assign({ className: "page-content-detail" }, { children: _jsx(ExpertReportForm, Object.assign({}, props)) })) })));
}
export function ExpertReportForm({ type, poltform, reSubmit }) {
const { paramsParse, historyBack } = useRoutes();
const { serviceId = null } = paramsParse;
const formRef = useRef(null);
const [isLeave, setLeave] = useState(serviceId ? false : true);
const [riskIds, setRiskIds] = useState([]);
const [hiddenIds, setHiddenIds] = useState([]);
const readonly = serviceId && type == 'detail';
const { runAsync: runSubmit } = useRequest(submitReport, {
manual: true,
onSuccess(result) {
themeMessage(result, historyBack);
},
onError(result) {
message.error(result.message);
},
});
const { runAsync: runSave } = useRequest(saveReport, {
manual: true,
onSuccess(result) {
themeMessage(result, historyBack, '补录报告保存成功!');
},
onError(result) {
message.error(result.message);
},
});
function onSave() {
return __awaiter(this, void 0, void 0, function* () {
const values = formRef.current.getFieldsValue();
if (Object.values(values).every(item => isEmpty(item))) {
return message.error('请先填写信息!');
}
const params = formatParams(values);
params.serviceId = serviceId;
Modal.confirm({
content: '确认是否保存?',
onOk() {
return __awaiter(this, void 0, void 0, function* () {
setLeave(false);
return runSave(params);
});
},
});
});
}
// 驳回后重新提交
function onFinish(values) {
return __awaiter(this, void 0, void 0, function* () {
const params = formatParams(values);
params.serviceId = serviceId;
Modal.confirm({
content: '确认是否提交?',
onOk() {
return __awaiter(this, void 0, void 0, function* () {
setLeave(false);
return runSubmit(params);
});
},
});
});
}
function formatParams(values) {
const params = Object.assign({}, values);
if (poltform == 'expert') {
params.userName = getStorage('userName');
params.userId = getStorage('userId');
}
if (params === null || params === void 0 ? void 0 : params.aqServiceStandardCategory) {
params.aqServiceId =
params.aqServiceStandardCategory.value;
params.aqServiceName =
params.aqServiceStandardCategory.label;
}
params.riskIds = map(riskIds, (item) => item === null || item === void 0 ? void 0 : item.riskId).join(',');
params.hiddenDangerIds = map(hiddenIds, (item) => item === null || item === void 0 ? void 0 : item.hiddenDangerId).join(',');
if (values.organ && poltform == 'insure') {
params.organId = values.organ.value;
params.organName = values.organ.label;
}
if (values.serviceReportUrl) {
params.serviceReportUrl = JSON.stringify(getUploadList(values.serviceReportUrl));
}
if (values.serviceResultsAtts) {
params.serviceResultsAtts = JSON.stringify(getUploadList(values.serviceResultsAtts));
}
if (params.user) {
params.userName = params.user.name || params.user.label;
params.userId = params.user.value;
}
if (params.serviceStartAt) {
params.serviceStartAt = moment(params.serviceStartAt).format('YYYY-MM-DD HH:mm:ss');
}
return omit(params, ['user', 'aqServiceStandardCategory', 'organ', 'serviceType']);
}
function request() {
return getServiceDetail({ serviceId }).then((res) => __awaiter(this, void 0, void 0, function* () {
return {
policyNumber: res === null || res === void 0 ? void 0 : res.policyNumber,
aqServiceStandardCategory: {
label: res === null || res === void 0 ? void 0 : res.aqServiceName,
value: res === null || res === void 0 ? void 0 : res.aqServiceId,
},
user: {
label: res === null || res === void 0 ? void 0 : res.userName,
value: res === null || res === void 0 ? void 0 : res.userId,
},
organ: {
label: res === null || res === void 0 ? void 0 : res.executedOrganName,
value: res === null || res === void 0 ? void 0 : res.executedOrganId
},
customerName: res === null || res === void 0 ? void 0 : res.customerName,
address: res === null || res === void 0 ? void 0 : res.address,
serviceStartAt: res === null || res === void 0 ? void 0 : res.serviceStartAt,
remark: res === null || res === void 0 ? void 0 : res.remark,
serviceContent: res === null || res === void 0 ? void 0 : res.serviceContent,
serviceReportUrl: (yield jsonString(res === null || res === void 0 ? void 0 : res.serviceReportUrl)) || [],
serviceResultsAtts: (yield jsonString(res === null || res === void 0 ? void 0 : res.serviceResultsAtts)) || [],
actualServiceCost: res === null || res === void 0 ? void 0 : res.actualServiceCost
};
}));
}
return (_jsx(Context.Provider, Object.assign({ value: { poltform, type } }, { children: _jsxs(GridForm, Object.assign({ formRef: formRef, isExit: false,
/* 驳回后提交报告*/
onFinish: onFinish, readonly: readonly, request: serviceId && request, initialValues: {
form: '2',
}, submitter: !readonly
? {
searchConfig: {
submitText: '提交报告',
},
}
: {
render() {
return null;
},
}, renderAction: () => {
// 驳回后提交报告
if (reSubmit)
return null;
return (!readonly && (_jsx(Button, Object.assign({ type: "primary", onClick: onSave }, { children: "\u4FDD\u5B58" }))));
} }, { children: [_jsx(ReactRouterPrompt, { when: isLeave }), _jsx(Base, {}), _jsx(Divider, { className: "self-pro-divider-form" }), _jsx(RiskControl, { title: "\u98CE\u9669\u8BC4\u4F30\u53CA\u7BA1\u63A7", serviceId: serviceId, setRiskIds: setRiskIds, readonly: readonly, type: type }), _jsx(Divider, { className: "self-pro-divider-form" }), _jsx(HiddenInformation, { title: "\u73B0\u573A\u4E8B\u6545\u9690\u60A3\u4FE1\u606F", serviceId: serviceId, setHiddenIds: setHiddenIds, readonly: readonly, type: type }), _jsxs(CardForm, Object.assign({ title: "\u76F8\u5173\u9644\u4EF6" }, { children: [_jsx(FormUpload, { rules: [{ required: true }], name: "serviceReportUrl", label: "\u62A5\u544A\u5185\u5BB9\u6587\u4EF6", max: 1, fieldProps: {
accept: 'image/*,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel',
multiple: false,
}, params: {
bizNo: serviceId ? serviceId : '',
type: '18',
} }), _jsx(FormUpload, { name: "serviceResultsAtts", label: "\u670D\u52A1\u76F8\u5173\u9644\u4EF6", max: 20, fieldProps: {
accept: 'image/*,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel',
}, extra: '培训人员清单、设备安装清单', params: {
bizNo: serviceId ? serviceId : '',
type: '14',
} })] }))] })) })));
}