import {
  MyBetaModalFormProps,
  MyButtons,
  MyFormItems,
  MyModalFormProps,
  rulesHelper,
} from '@/common';
import { Apis } from '@/gen/Apis';
import {
  HouseOccupantsCardTypeEnum,
  HouseOccupantsHouseRelationEnum,
} from '@/gen/Enums';
import { BetaSchemaForm, ProCard } from '@ant-design/pro-components';
import { Form, message } from 'antd';

export default function Create(props: MyBetaModalFormProps) {
  const [form] = Form.useForm();
  return (
    <BetaSchemaForm<ApiTypes.Archive.HouseRegisters.Store>
      {...MyModalFormProps.props}
      title={`${props.title}`}
      wrapperCol={{ span: 24 }}
      width="900px"
      form={form}
      trigger={
        <MyButtons.Default title={props.title} type="primary" size="middle" />
      }
      onOpenChange={(open: any) => {
        if (open) {
          form.resetFields(); // 清空表单数据
        }
      }}
      onFinish={async (values: any) =>
        Apis.Archive.HouseRegisters.Store({
          ...values,
          asset_houses_id: props?.item?.asset_houses_id,
          type: 'Delivery',
          house_status: props?.item?.status,
          customer_info: values.customer_info?.map((res: any) => {
            return {
              ...res,
              house_relation: 'Owner',
              relation_with_owner: 'Self',
            };
          }),
        })
          .then(() => {
            props.reload?.();
            message.success(props.title + '成功');
            return true;
          })
          .catch(() => false)
      }
      columns={[
        {
          valueType: 'formList',
          dataIndex: 'customer_info',
          colProps: { span: 24 },
          fieldProps: {
            copyIconProps: false,
            creatorButtonProps: {
              creatorButtonText: '增加产权人',
              style: { color: 'red' },
              danger: true,
            },
            itemRender: (
              { listDom, action }: any,
              { index }: { index: number },
            ) => {
              return (
                <ProCard
                  bordered
                  style={{ marginBlockEnd: 8 }}
                  title={`产权人${index + 1}`}
                  extra={action}
                  bodyStyle={{ paddingBlockEnd: 0 }}
                >
                  {listDom}
                </ProCard>
              );
            },
          },
          columns: [
            {
              valueType: 'group',
              columns: [
                {
                  title: '姓名',
                  dataIndex: 'name',
                  colProps: { span: 5 },
                  formItemProps: { ...rulesHelper.text },
                },
                {
                  title: '手机号',
                  dataIndex: 'phone',
                  colProps: { span: 5 },
                  fieldProps: {
                    maxLength: 11,
                  },
                  formItemProps: { ...rulesHelper.phone },
                },
                MyFormItems.EnumSelect({
                  key: 'card_type',
                  title: '证件类型',
                  colProps: { span: 6 },
                  valueEnum: HouseOccupantsCardTypeEnum,
                  required: true,
                }),
                {
                  title: '证件号码',
                  dataIndex: 'id_card',
                  colProps: { span: 8 },
                  fieldProps: {
                    maxLength: 18,
                  },
                  formItemProps: { ...rulesHelper.text },
                },
                MyFormItems.EnumRadio({
                  key: 'house_relation',
                  title: '住户类型',
                  colProps: { span: 6 },
                  valueEnum: HouseOccupantsHouseRelationEnum,
                  fieldProps: {
                    defaultValue: 'Owner',
                  },
                  hideInForm: true,
                }),
                {
                  valueType: 'group',
                  columns: [
                    MyFormItems.UploadImages({
                      key: 'card_front_image',
                      title: '证件正面',
                      max: 1,
                      colProps: { span: 4 },
                      formItemProps: { ...rulesHelper.text },
                    }),
                    MyFormItems.UploadImages({
                      key: 'card_back_image',
                      title: '证件反面',
                      max: 1,
                      colProps: { span: 8 },
                      formItemProps: { ...rulesHelper.text },
                    }),
                    {
                      title: '是否入住',
                      dataIndex: 'is_live_in',
                      colProps: { span: 6 },
                      valueType: 'switch',
                    },
                    {
                      name: ['is_live_in'],
                      valueType: 'dependency',
                      columns: ({ is_live_in }: any) => {
                        return is_live_in
                          ? [
                              {
                                title: '入住日期',
                                dataIndex: 'move_in_date',
                                valueType: 'date',
                                colProps: { span: 6 },
                                fieldProps: {
                                  style: { width: '100%' },
                                },
                                formItemProps: { ...rulesHelper.text },
                              },
                            ]
                          : [];
                      },
                    },
                  ],
                },
              ],
            },
          ],
        },
      ]}
    />
  );
}
