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

export default function Delivery(props: MyBetaModalFormProps) {
  const [form] = Form.useForm();

  return (
    <BetaSchemaForm<ApiTypes.Archive.HouseRegisters.Store>
      {...MyModalFormProps.props}
      title={`${props.title}`}
      wrapperCol={{ span: 24 }}
      width="1000px"
      trigger={
        <MyButtons.View
          title={props.title}
          size={props.item?.size || 'small'}
          type="primary"
        />
      }
      key={new Date().getTime()}
      form={form}
      onOpenChange={(open: any) => {
        if (open) {
          form.resetFields(); // 清空表单数据
        }
      }}
      onFinish={async (values: any) =>
        Apis.Archive.HouseRegisters.Store({
          ...values,
          asset_houses_id: props?.item?.id,
          type: HouseRegistersTypeEnum.AddOwner.value,
          customer_info: values.customer_info?.map((res: any) => {
            return {
              ...res,
              house_relation: 'Owner',
              relation_with_owner: 'Self',
              residential_relation: 'PropertyOwner',
            };
          }),
        })
          .then(() => {
            props.reload?.();
            message.success(props.title + '成功');
            return true;
          })
          .catch(() => false)
      }
      columns={[
        // MyFormItems.EnumRadio({
        //   key: 'customer_type',
        //   title: '产权归属类型',
        //   colProps: { span: 12 },
        //   valueEnum: HouseRegistersCustomerTypeEnum,
        // }),
        MyFormItems.UploadImages({
          key: 'ownership_info',
          title: '产权文件',
          tooltip: '上限9张',
          // uploadType: 'file',
          max: 9,
          colProps: { span: 24 },
          formItemProps: { ...rulesHelper.array },
        }),
        {
          valueType: 'formList',
          dataIndex: 'customer_info',
          colProps: { span: 24 },
          initialValue: [''],
          fieldProps: {
            copyIconProps: false,
            creatorButtonProps: {
              creatorButtonText: '添加业主',
            },
            itemRender: (
              { listDom, action }: any,
              { index }: { index: number },
            ) => {
              return (
                <ProCard
                  bordered
                  style={{ marginBlockEnd: 0 }}
                  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: '证件正面',
                      // uploadType: 'file',
                      required: true,
                      max: 1,
                      colProps: { span: 6 },
                    }),
                    MyFormItems.UploadImages({
                      key: 'card_back_image',
                      title: '证件反面',
                      // uploadType: 'file',
                      required: true,
                      max: 1,
                      colProps: { span: 6 },
                    }),
                    {
                      title: '是否入住',
                      dataIndex: 'is_live_in',
                      colProps: { span: 4 },
                      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 },
                              },
                            ]
                          : [];
                      },
                    },
                    {
                      title: '备注',
                      dataIndex: 'remark',
                      colProps: { span: 24 },
                    },
                  ],
                },
              ],
            },
          ],
        },
      ]}
    />
  );
}
