import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { ModalForm, ProDescriptions, ProFormTextArea, ProTable, ProCard, FooterToolbar, } from '@ant-design/pro-components';
import { dateFormatter, getStorage, phoneEncryption, useRoutes, themeMessage, } from '@component/utils';
import { useRequest } from 'ahooks';
import { formatImageUrl } from '@component/utils';
import { DescriptionsDetail } from '@component/ui';
import { CardDetail } from '@component/ui';
import { PreviewFile } from '@component/ui';
import { Button, message, Upload, Modal, Divider } from 'antd';
import { getDetail, onAuditServiceApply, getServiceCondition, getServiceApply, } from './action';
import React, { useState } from 'react';
import { compact } from 'lodash';
import moment from 'moment/moment';
export default function ({ params, serviceUrl }) {
    const { historyBack, historyPush, historyReplace } = useRoutes();
    const [hiddenNumFlag, setHiddenNumFlag] = useState(false);
    const { data = {}, loading } = useRequest(getDetail, {
        defaultParams: {
            id: params.id,
        },
        onSuccess: (data) => {
            if ((data === null || data === void 0 ? void 0 : data.serviceClassifyType) == 'jizhongfuwu') {
                setHiddenNumFlag(true);
            }
        },
    });
    const { runAsync } = useRequest(onAuditServiceApply, {
        manual: true,
        onSuccess(result) {
            themeMessage(result);
        },
        onError(result) {
            message.error(result.message);
        },
    });
    const review = [
        { status: '5', title: '退回至下一级', danger: true },
        { status: '2', title: '驳回修改', danger: true },
        { status: '4', title: '提交上级审核' },
        { status: '3', title: '审核通过' },
    ];
    function onFinish(values, status) {
        values.ids = params.id;
        values.status = status;
        if (status == '4' || status == '2') {
            Modal.confirm({
                content: '即将提交审核,确定要提交吗?',
                onOk() {
                    return runAsync(values).then((res) => {
                        if (res.type === 'success') {
                            historyBack();
                        }
                    });
                },
            });
            return;
        }
        if (data.applyStatus == '4') {
            Modal.confirm({
                content: '即将提交审核,确定要提交吗?',
                onOk() {
                    return runAsync(values).then((res) => {
                        if (res.type === 'success') {
                            historyBack();
                        }
                    });
                },
            });
        }
        else {
            Modal.confirm({
                content: '审核通过后,可进行服务调度,去调度表示审核通过并调度',
                onOk() {
                    return runAsync(values).then((res) => {
                        if (res.type === 'success') {
                            historyReplace('distribution', {
                                id: data === null || data === void 0 ? void 0 : data.serviceProjectId,
                            });
                        }
                    });
                },
            });
        }
    }
    const columns = [
        {
            title: '服务名称',
            dataIndex: 'serviceName',
            ellipsis: true,
        },
        {
            title: '被服务对象',
            dataIndex: 'customerName',
            ellipsis: true,
        },
        {
            title: '标准分类',
            dataIndex: 'aqServiceName',
            ellipsis: true,
        },
        {
            title: '服务活动',
            dataIndex: 'serviceTypeName',
            ellipsis: true,
        },
        {
            title: '服务费(元)',
            dataIndex: 'servicePrice',
            ellipsis: true,
        },
        {
            title: '服务机构',
            dataIndex: 'executedOrganName',
            ellipsis: true,
        },
        {
            title: '服务人员',
            dataIndex: 'userName',
            ellipsis: true,
        },
        {
            title: '状态',
            dataIndex: 'status',
            valueEnum: {
                1: {
                    text: '待执行',
                },
                2: {
                    text: '已签到',
                },
                3: {
                    text: '已提交',
                },
                10: {
                    text: '平台待审核',
                },
                11: {
                    text: '已完成',
                },
                12: {
                    text: '平台驳回',
                },
                20: {
                    text: '机构待审核',
                },
                21: {
                    text: '机构通过',
                },
            },
        },
        {
            title: '完成时间',
            dataIndex: 'completedAt',
            ellipsis: true,
            renderText: dateFormatter,
        },
        {
            title: '操作',
            valueType: 'option',
            fixed: 'right',
            width: 70,
            align: 'center',
            key: 'option',
            render: (_, record) => [
                _jsx("a", Object.assign({ onClick: () => historyPush(serviceUrl, {
                        serviceId: record.serviceId,
                    }) }, { children: "\u67E5\u770B" })),
            ],
        },
    ];
    const serviceColum = React.useMemo(() => [
        {
            dataIndex: 'policyNumber',
            title: '保单号',
        },
        {
            dataIndex: 'serviceObjectName',
            title: '被服务对象',
        },
        {
            dataIndex: 'belongToHandlerOrganName',
            title: '归属机构',
        },
        {
            dataIndex: 'belongToHandlerUserName',
            title: '归属经办人',
            renderText(_, item) {
                return compact([
                    item.belongToHandlerUserName,
                    item.belongToHandlerCode,
                ]).join(',');
            },
        },
        {
            dataIndex: 'startDate',
            title: '起保日期',
            renderText: dateFormatter,
        },
        {
            dataIndex: 'doneDate',
            title: '终保日期',
            renderText: dateFormatter,
        },
        {
            dataIndex: 'duePremium',
            title: '保费(元)',
        },
        {
            dataIndex: 'paidInPremium',
            title: '实收保费(元)',
        },
        {
            dataIndex: 'contactsName',
            title: '企业联系人',
        },
        {
            dataIndex: 'contactsPhone',
            title: '企业联系电话',
            render: (_, record) => record.contactsPhone && phoneEncryption(record.contactsPhone),
        },
        {
            dataIndex: 'email',
            title: '企业邮箱',
        },
        {
            dataIndex: 'typePname',
            title: '管理分类',
        },
    ], []);
    const desColum = React.useMemo(() => [
        {
            title: '服务名称',
            key: 'serviceProjectName',
            dataIndex: 'serviceProjectName',
        },
        {
            title: '标准分类',
            key: 'aqServiceName',
            dataIndex: 'aqServiceName',
        },
        {
            title: '价格方案',
            key: 'serviceSchemeName',
            dataIndex: 'serviceSchemeName',
        },
        {
            title: '服务价格(元)',
            key: 'servicePrice',
            dataIndex: 'servicePrice',
        },
        {
            title: '服务活动',
            key: 'serviceTypeName',
            dataIndex: 'serviceTypeName',
        },
        {
            title: '申请类型',
            key: 'applySource',
            dataIndex: 'applySource',
            valueEnum: {
                insure: '内部创建',
                company: '企业申请',
                policy: '基于保单申请',
            },
        },
        {
            title: '申请时间',
            key: 'createdAt',
            dataIndex: 'createdAt',
            renderText: dateFormatter,
        },
        {
            title: '期望服务时间',
            key: 'estimatedServiceAt',
            dataIndex: 'estimatedServiceAt',
            renderText: (str) => moment(str).format('YYYY-MM-DD'),
        },
        {
            title: '申请状态',
            key: 'applyStatus',
            dataIndex: 'applyStatus',
            valueEnum: {
                1: '待审核',
                2: '驳回',
                3: '通过',
                4: '已受理',
                '-1': '暂存',
            },
        },
        {
            title: '已服务次数',
            key: 'serviceNum',
            dataIndex: 'serviceNum',
            hideInDescriptions: hiddenNumFlag,
        },
        {
            title: '已申请次数',
            key: 'applyNum',
            dataIndex: 'applyNum',
            hideInDescriptions: hiddenNumFlag,
        },
        {
            title: '隐患排查次数',
            key: 'hiddenServiceQuantity',
            dataIndex: 'hiddenServiceQuantity',
            hideInDescriptions: hiddenNumFlag,
        },
        {
            title: '风险辨识次数',
            key: 'riskServiceQuantity',
            dataIndex: 'riskServiceQuantity',
            hideInDescriptions: hiddenNumFlag,
        },
        {
            title: '服务地址',
            key: 'serviceAddress',
            dataIndex: 'serviceAddress',
        },
        {
            title: '最近服务时间',
            key: 'latelyDate',
            dataIndex: 'latelyDate',
            renderText: dateFormatter,
        },
        {
            title: '备注',
            key: 'remark',
            dataIndex: 'remark',
        },
        {
            title: '服务模式',
            key: 'form',
            dataIndex: 'form',
            valueEnum: {
                1: '线上',
                2: '线下',
            },
        },
    ], [data]);
    return (_jsxs("div", Object.assign({ className: "page-content-detail-tabs" }, { children: [_jsx(CardDetail, Object.assign({ title: "\u57FA\u672C\u4FE1\u606F", loading: loading }, { children: _jsx(DescriptionsDetail, Object.assign({ dataSource: data, layout: "horizontal", column: 2, columns: desColum }, { children: _jsx(ProDescriptions.Item, Object.assign({ label: "\u9644\u4EF6" }, { children: _jsx(PreviewFile, { disabled: true, listType: "picture-card", fileList: formatImageUrl(data === null || data === void 0 ? void 0 : data.attachmentPath) }) })) })) })), _jsx(Divider, { className: "self-pro-divider" }), _jsx(CardDetail, Object.assign({ title: "\u88AB\u670D\u52A1\u5BF9\u8C61", loading: loading }, { children: (data === null || data === void 0 ? void 0 : data.serviceApplyId) && (_jsx(ProTable, { params: {
                        serviceApplyId: data === null || data === void 0 ? void 0 : data.serviceApplyId,
                    }, tableClassName: "tableClassName", request: getServiceApply, columns: serviceColum, search: false, toolBarRender: false, pagination: {
                        defaultPageSize: 5,
                    } })) })), _jsx(Divider, { className: "self-pro-divider" }), _jsx(CardDetail, Object.assign({ title: "\u5386\u53F2\u670D\u52A1\u60C5\u51B5" }, { children: (data === null || data === void 0 ? void 0 : data.policyNumber) && (_jsx(ProTable, { params: {
                        policyNumber: data === null || data === void 0 ? void 0 : data.policyNumber,
                    }, request: getServiceCondition, tableClassName: "tableClassName", columns: columns, search: false, toolBarRender: false, pagination: {
                        defaultPageSize: 5,
                    } })) })), (params === null || params === void 0 ? void 0 : params.review) && (_jsxs(FooterToolbar, { children: [review.map((item) => {
                        if (getStorage('isSup') != 1 && item.status == '4') {
                            return;
                        }
                        if ((data === null || data === void 0 ? void 0 : data.visibleReturnedBtn) != 2 && item.status == '5')
                            return;
                        return (_jsx(ModalForm, Object.assign({ title: "\u5BA1\u6838\u610F\u89C1", layout: "horizontal", labelCol: { span: 4 }, wrapperCol: { span: 16 }, submitTimeout: 2000, onFinish: (values) => onFinish(values, item.status), trigger: item.danger ? (_jsx(Button, Object.assign({ danger: true }, { children: item.title }))) : (_jsx(Button, Object.assign({ type: "primary" }, { children: item.title }))) }, { children: _jsx(ProFormTextArea, { name: "auditOpinion", fieldProps: {
                                    maxLength: 500,
                                    showCount: true,
                                }, label: "\u5BA1\u6838\u610F\u89C1", rules: [{ required: true, message: '请输入审核意见' }], placeholder: "\u8BF7\u8F93\u5165\u5BA1\u6838\u610F\u89C1" }) })));
                    }), _jsx(Button, Object.assign({ danger: true, onClick: () => historyBack('/app/preventiveServices/serviceApply/serviceApplyAudit') }, { children: "\u9000\u51FA" }))] }))] })));
}