Browse Source

Merge branch 'develop'

# Conflicts:
#	src/pages/ContractManager/component/Modal.jsx
xjj 2 years ago
parent
commit
31e3af66a1

+ 28 - 0
src/components/AuditForm/ItemAttribute.js

@@ -30,6 +30,9 @@ function ItemAttribute(props) {
       case 'ProjectField':
         FormContent = <ProjectField {...formProps} />;
         break;
+      case 'ManufacturerField':
+        FormContent = <ManufacturerField {...formProps} />;
+        break;
       case 'TextField':
         FormContent = <TextField {...formProps} />;
         break;
@@ -173,6 +176,31 @@ function ProjectField(props) {
     </Form>
   );
 }
+function ManufacturerField(props) {
+  const { item, btns, onFinish } = props;
+  const [form] = Form.useForm();
+  return (
+    <Form
+      form={form}
+      labelCol={{ span: 4 }}
+      wrapperCol={{ span: 20 }}
+      autoComplete="off"
+      initialValues={item.props}
+      onFinish={onFinish}
+    >
+      <Form.Item label="标题" name="label">
+        <Input />
+      </Form.Item>
+      <Form.Item label="提示文字" name="placeholder">
+        <Input />
+      </Form.Item>
+      <Form.Item label="必填" name="required" valuePropName="checked">
+        <Switch />
+      </Form.Item>
+      {btns}
+    </Form>
+  );
+}
 function TextField(props) {
   const { item, btns, onFinish } = props;
   const [form] = Form.useForm();

+ 11 - 0
src/components/AuditForm/constant.js

@@ -10,6 +10,7 @@ import {
   FolderAddOutlined,
   FontColorsOutlined,
   ProjectOutlined,
+  SolutionOutlined,
 } from '@ant-design/icons';
 
 export const COMPONENT_LIST = [
@@ -43,6 +44,16 @@ export const COMPONENT_LIST = [
       // choice: '0',
     },
   },
+  {
+    componentName: 'ManufacturerField',
+    icon: <SolutionOutlined />,
+    props: {
+      label: '选择供应商',
+      placeholder: '请选择供应商',
+      required: false,
+      // choice: '0',
+    },
+  },
   {
     componentName: 'TextField',
     icon: <ItalicOutlined />,

+ 54 - 0
src/components/DDComponents/ManufacturerField/index.js

@@ -0,0 +1,54 @@
+import React, { useEffect } from 'react';
+import { Select } from 'antd';
+import { useModel, useRequest } from '@umijs/max';
+import { querySupplierList } from '@/services/contract';
+
+const { Option } = Select;
+
+function ManufacturerField(props) {
+  const {
+    initialState: { user },
+  } = useModel('@@initialState');
+  const { value, disabled = false, onChange } = props;
+  //供应商列表
+  const {
+    data: option = [],
+    loading,
+    run,
+  } = useRequest((data) => querySupplierList(data), {
+    manual: true,
+    formatResult: (res) => {
+      return res?.data?.list
+        ? res?.data.list.map((item) => {
+            return { label: item.name, value: item.id };
+          })
+        : [];
+    },
+  });
+  useEffect(() => {
+    run({
+      project_id: 1,
+      is_super: user?.IsSuper,
+      created_by: user?.CName,
+      page_size: 99999,
+    });
+  }, []);
+  return (
+    <Select
+      showSearch
+      loading={loading}
+      style={{ width: '100%' }}
+      disabled={disabled}
+      defaultValue={value ? Number(value) : undefined}
+      onChange={(value) => {
+        onChange(String(value));
+      }}
+      filterOption={(input, option) =>
+        (option?.label ?? '').toLowerCase().includes(input.toLowerCase())
+      }
+      options={option}
+    ></Select>
+  );
+}
+
+export default ManufacturerField;

+ 4 - 0
src/components/DDComponents/index.js

@@ -4,6 +4,7 @@ import PhoneField from './PhoneField';
 import InnerContactField from './InnerContactField';
 import DepartmentField from './DepartmentField';
 import ProjectField from './ProjectField';
+import ManufacturerField from './ManufacturerField';
 import DDMultiSelectField from './DDMultiSelectField';
 import NumberField from './NumberField';
 import DDPhotoField from './DDPhotoField';
@@ -107,6 +108,9 @@ export default function DDComponents(props) {
     case 'ProjectField':
       component = <ProjectField onChange={onChange} />;
       break;
+    case 'ManufacturerField':
+      component = <ManufacturerField onChange={onChange} />;
+      break;
     case 'RelateField': //关联审批单
       component = '关联审批单控件未渲染!';
       break;

+ 42 - 26
src/pages/ContractManager/component/Modal.jsx

@@ -109,6 +109,7 @@ const ContractModal = (props) => {
         project_id: 1,
         is_super: user?.IsSuper,
         created_by: user?.CName,
+        page_size: 99999,
       },
     ],
     formatResult: (res) => {
@@ -128,12 +129,23 @@ const ContractModal = (props) => {
   useEffect(() => {
     const item = companyData?.find((item) => item.ID == company);
     if (item?.Flag == 1) {
+      //公司为本部
       setDepDisable(false);
-      form.setFieldsValue({ dep_id: '', archives_dep: '' });
+      form.setFieldsValue({
+        dep_id: '',
+        archives_dep: '',
+        created_dep: '',
+        deal_by: user?.CName,
+      });
       // setDealDisable(false);
     } else {
       setDepDisable(true);
-      form.setFieldsValue({ dep_id: '综合管理部', archives_dep: '综合管理部' });
+      form.setFieldsValue({
+        dep_id: '综合管理部',
+        archives_dep: '综合管理部',
+        created_dep: '综合管理部',
+        deal_by: '',
+      });
       // setDealDisable(true);
       // form.setFieldsValue({ deal_by: user?.CName });
     }
@@ -237,7 +249,6 @@ const ContractModal = (props) => {
           values.dep_id = 0;
         }
         values.created_by = user?.ID;
-        console.log('-=-=-=-=-=-=-----values--------------', values);
         handleOk(values);
       } else if (type == Type.cancel) {
         let result = {
@@ -286,13 +297,13 @@ const ContractModal = (props) => {
     let arr =
       projectList?.map((item) => {
         return {
-          key: item.id,
           value: item.project_name,
+          label: item.project_name,
         };
       }) || [];
     return [
       {
-        key: 10000,
+        label: '日常项目',
         value: '日常项目',
       },
       ...arr,
@@ -396,7 +407,7 @@ const ContractModal = (props) => {
               name="deal_by"
               label="经办人:"
               tooltip="经办人应负责合同审批流程、签字盖章、合同原件存档和电子档案存档。母公司的经办人为OA审批提交人,也是存档人。子公司经办人由子公司合同专员填写,一般是合同审批时的提交人或者是合同实际执行的负责人"
-              initialValue={data?.deal_by || user?.CName}
+              initialValue={data?.deal_by}
               rules={[
                 {
                   required: true,
@@ -404,11 +415,12 @@ const ContractModal = (props) => {
                 },
               ]}
             >
-              <Select
+              <Input disabled={!depDisable} />
+              {/* <Select
                 showSearch
                 style={{ width: '100%' }}
                 placeholder="请选择"
-                disabled
+                disabled={!depDisable}
                 filterOption={(input, option) =>
                   (option?.label ?? '')
                     .toLowerCase()
@@ -420,7 +432,7 @@ const ContractModal = (props) => {
                     label: item.CName,
                   };
                 })}
-              />
+              /> */}
             </Form.Item>
           </Col>
           <Col span={10}>
@@ -441,7 +453,7 @@ const ContractModal = (props) => {
                 placeholder="请选择"
                 showSearch
                 allowClear
-                disabled={disableds.contract}
+                disabled={disableds.contract || depDisable}
                 fieldNames={{
                   label: 'Name',
                   value: 'Name',
@@ -512,7 +524,7 @@ const ContractModal = (props) => {
             <Form.Item
               name="project_name"
               label="项目名称:"
-              tooltip="不涉及项目请填写“不涉及”"
+              tooltip="不涉及项目请选“日常项目”"
               initialValue={data?.project_name}
               rules={[
                 {
@@ -521,18 +533,21 @@ const ContractModal = (props) => {
                 },
               ]}
             >
-              <InputSelect list={projectNameList} />
-              {/* <Select
-                style={{ width: '100%' }}
-                placeholder="请选择"
-                options={projectList?.map((item) => {
+              {/* <InputSelect
+                list={projectList?.map((item) => {
                   return {
+                    key: item.id,
                     value: item.project_name,
-                    label: item.project_name,
                   };
                 })}
-                disabled={disableds.contract}
               /> */}
+              <Select
+                style={{ width: '100%' }}
+                placeholder="请选择"
+                showSearch
+                options={projectNameList}
+                disabled={disableds.contract}
+              />
             </Form.Item>
             <Form.Item
               name="party_a"
@@ -566,6 +581,7 @@ const ContractModal = (props) => {
             <Form.Item
               style={{ opacity: is_supplement ? 1 : 0 }}
               name="parent_code"
+              tooltip="请先查询原合同编号,原合同未录入本系统的,需先录入存档。"
               initialValue={data?.parent_code}
               label="原合同编号:"
               rules={
@@ -583,17 +599,17 @@ const ContractModal = (props) => {
             </Form.Item>
             <Form.Item
               name="code"
-              tooltip="请与OA审批时填写的合同编号一致。合同编号应按《合同管理办法》的合同编码规则编号"
+              tooltip="合同编号按《合同管理办法》的合同编码规则编号"
               initialValue={data?.code}
               label="合同编号:"
-              rules={[
-                {
-                  required: true,
-                  message: '请填写合同编号',
-                },
-              ]}
+              // rules={[
+              //   {
+              //     required: true,
+              //     message: '请填写合同编号',
+              //   },
+              // ]}
             >
-              <Input placeholder="请填写" />
+              <Input placeholder="提交后自动生成" disabled />
             </Form.Item>
             <Form.Item
               label="合同总价款:"

+ 14 - 2
src/pages/ContractManager/index.jsx

@@ -28,6 +28,7 @@ import FileViewerModal from '@/components/FileViewerNew';
 import { getToken } from '@/utils/utils';
 import PageContent from '@/components/PageContent';
 import EllipsisText from './component/EllipsisText';
+import { stringify } from 'qs';
 
 const ConteactManager = (props) => {
   const { dispatch } = props;
@@ -304,7 +305,7 @@ const ConteactManager = (props) => {
     setFileViewerData(attach);
     setFileViewerVisible(true);
   };
-
+  //单个合同下载
   const handleUpload = (record) => {
     const token = getToken();
     window.downloadFile(
@@ -316,7 +317,18 @@ const ConteactManager = (props) => {
   const handleSearch = () => {
     run(searchData);
   };
-  const handleExport = () => {};
+  //合同列表导出列表下载
+  const handleExport = async () => {
+    const token = getToken();
+    const params = { ...searchData, current_user: user.ID };
+    window.downloadFile(
+      `/api/contract/v1/contract-list/download?${stringify(
+        params,
+      )}&JWT-TOKEN=${token}`,
+      '合同列表.xlsx',
+      false,
+    );
+  };
 
   const handleQueryChildren = async (req) => {
     const res = await queryGetContractList(req);

+ 13 - 0
src/pages/Flow/AuditModal.js

@@ -1,6 +1,12 @@
 import React, { useEffect } from 'react';
 import { Modal, Input, Form, Select } from 'antd';
 
+const flowTypeList = [
+  { value: 1, label: '文档审批' },
+  { value: 2, label: 'OA审批' },
+  { value: 3, label: '合同审批' },
+];
+
 // 审批意见
 function AuditModal(props) {
   const { data, visible, onCancel, onOk, loading, classify } = props;
@@ -36,6 +42,13 @@ function AuditModal(props) {
         <Form.Item label="详情" name="desc" initialValue={data?.desc}>
           <Input.TextArea />
         </Form.Item>
+        <Form.Item
+          label="流程类型"
+          name="flow_type"
+          initialValue={data?.flow_type}
+        >
+          <Select options={flowTypeList} />
+        </Form.Item>
         <Form.Item
           label="分类"
           name="classify_id"

+ 2 - 2
src/pages/Flow/index.js

@@ -90,7 +90,7 @@ function Audit(props) {
       type: 'flow/addAudit',
       payload: {
         ...values,
-        flow_type: 1,
+        // flow_type: 1,
       },
       callback: async (res) => {
         if (res?.data && detailRef.current) {
@@ -111,7 +111,7 @@ function Audit(props) {
       type: 'flow/addAudit',
       payload: {
         ...values,
-        flow_type: 1,
+        // flow_type: 1,
       },
       callback: () => {
         message.success('新增成功');

+ 61 - 25
src/pages/ManufacturerMng/ManufacturerList.js

@@ -18,10 +18,11 @@ function ManufacturerList(props) {
     projectId = 1,
     data,
   } = props;
-  const { initialState: { user }  } = useModel('@@initialState');
+  const { initialState: { user } } = useModel('@@initialState');
   const [visible, setVisible] = useState(false);
   const [curItem, setCurItem] = useState(null);
   const [formDisabled, setFormDisabled] = useState(false);
+  const [typeDisabled, setTypeDisabled] = useState(false);
   const [total, setTotal] = useState(0);
   const [formData, setFormData] = useState({ start_time: "", end_time: "", project_id: projectId * 1, is_super: user?.IsSuper || false, page: 1, page_size: pageSize });
   const queryMfrListRequest = useRequest(queryMfrList, {
@@ -63,49 +64,59 @@ function ManufacturerList(props) {
   }, [queryMfrListRequest.loading, saveMfrRequest.loading, queryCreaterListRequest.loading, editMfrRequest.loading]);
   const columns = [
     {
-      title: '供应商名称',
+      title: '供应商(自然人)名称',
       dataIndex: 'name',
     },
     {
-      title: '税号',
-      dataIndex: 'tax_code',
+      title: '主体类型',
+      render: record => {
+        if (record.type == 1) return '供应商'
+        if (record.type == 4) return '自然人'
+      },
+      width: '6%'
     },
     {
-      title: '地址',
-      dataIndex: 'address'
-      // render: (record) => {
-      //   return moment(record.lab_time).format('YYYY-MM-DD')
-      // }
-
+      title: '证件类型',
+      render: record => {
+        if (record.type == 1) return '身份证'
+        if (record.type == 2) return '护照'
+      },
+      width: '6%'
+    },
+    {
+      title: '证件号',
+      dataIndex: 'id_card',
+      width: '12%'
     },
     {
       title: '联系人',
-      dataIndex: 'contact',
+      render: record => record.contact || '-',
+      width: '6%'
     },
     {
       title: '联系方式',
-      dataIndex: 'phone_number'
+      render: record => record.phone_number || '-',
+      width: '10%'
       // render: (record) => {
       //   return moment(record.create_time).format('YYYY-MM-DD')
       // }
     },
-    {
-      title: '开户银行',
-      dataIndex: 'bank_account',
-    },
     {
       title: '银行账号',
-      dataIndex: 'bank_account',
+      dataIndex: 'bank_number',
+      width: '12%'
     },
     {
       title: '创建人',
       dataIndex: 'created_by',
+      width: '6%'
     },
     {
       title: '创建时间',
       render: (record) => {
         return dayjs(record.created_on).format('YYYY-MM-DD')
-      }
+      },
+      width: '8%'
     },
     {
       title: '操作',
@@ -115,6 +126,7 @@ function ManufacturerList(props) {
             <a style={{ color: "#4096ff" }} onClick={() => {
               setCurItem(record);
               setFormDisabled(false);
+              setTypeDisabled(true);
               setVisible(true);
             }}>编辑</a>
           </>
@@ -134,6 +146,7 @@ function ManufacturerList(props) {
           </>
         </Fragment>
       ),
+      width: '12%'
     },
   ];
   const onCancel = () => {
@@ -169,7 +182,8 @@ function ManufacturerList(props) {
       page: 1,
       is_super: user?.IsSuper || false,
       created_by: formData.created_by || '',
-      name: formData.name || ''
+      name: formData.name || '',
+      type: formData.type * 1 || undefined
     }
     queryList(value);
   }
@@ -200,6 +214,9 @@ function ManufacturerList(props) {
   const onChange = name => {
     setFormData({ ...formData, created_by: name })
   }
+  const onTypeChange = type => {
+    setFormData({ ...formData, type: type })
+  }
   const onPaginationChange = pagination => {
     var tempFormData = { ...formData, page: pagination.current }
     setFormData(tempFormData)
@@ -221,11 +238,16 @@ function ManufacturerList(props) {
             </Form.Item>
           </div>
           {
-            user?.IsSuper && <div style={{ margin: '0 24px' }}>
-              <Form.Item label="创建人:">
+            user?.IsSuper && <div>
+              <Form.Item label="主体类型:">
                 <Select
-                  onChange={onChange}
-                  options={queryCreaterListRequest?.data?.list || []}
+                  onChange={onTypeChange}
+                  options={
+                    [
+                      { value: 1, label: '供应商' },
+                      { value: 4, label: '自然人' },
+                    ]
+                  }
                   style={{ width: 180 }}
                   allowClear
                 />
@@ -233,10 +255,22 @@ function ManufacturerList(props) {
             </div>
           }
           <div style={{ margin: '0 24px' }}>
-            <Form.Item style={{ margin: '0px 24 0 24px' }} label="供应商名称:">
+            <Form.Item label="名称:">
               <Input placeholder="请输入供应商名称" onChange={e => { onInputChange(e) }} />
             </Form.Item>
           </div>
+          {
+            user?.IsSuper && <div>
+              <Form.Item label="创建人:">
+                <Select
+                  onChange={onChange}
+                  options={queryCreaterListRequest?.data?.list || []}
+                  style={{ width: 180 }}
+                  allowClear
+                />
+              </Form.Item>
+            </div>
+          }
           <div style={{ display: 'flex' }}>
             <Form.Item>
               <Button style={{ marginLeft: 24 }} type="primary" onClick={() => { handleSearch() }}>
@@ -245,7 +279,8 @@ function ManufacturerList(props) {
             </Form.Item>
             <Button style={{ marginLeft: 10 }} loading={loading} type="primary" onClick={() => {
               setCurItem(null);
-              setVisible(true)
+              setVisible(true);
+              setTypeDisabled(false);
             }}>
               新增
             </Button>
@@ -270,6 +305,7 @@ function ManufacturerList(props) {
         onOk={onOk}
         item={curItem}
         disabled={formDisabled}
+        typeDisabled={typeDisabled}
       ></FirmModal>
     </>
   )

+ 161 - 77
src/pages/ManufacturerMng/ManufacturerModal.js

@@ -1,5 +1,5 @@
 import React, { Fragment, useState, useEffect, useRef, useMemo } from 'react';
-import { Table, Icon, message, Spin, Button, Form, DatePicker, Row, Col, Modal, Input, Upload } from 'antd';
+import { Table, Icon, message, Spin, Button, Form, DatePicker, Row, Col, Modal, Input, Upload, Select } from 'antd';
 import dayjs from 'dayjs';
 import { getToken, GetTokenFromUrl } from '@/utils/utils';
 const { RangePicker } = DatePicker;
@@ -11,9 +11,12 @@ function FirmModal(props) {
     visible,
     item = null,
     disabled = true,
-    form
+    form,
+    typeDisabled
   } = props;
   const [formRef] = Form.useForm();
+  const [type, setType] = useState(item?.type || 1);
+  console.log(type);
   const handleOnOk = async () => {
     formRef
       .validateFields()
@@ -39,6 +42,11 @@ function FirmModal(props) {
     formRef.resetFields();
     onCancel?.()
   }
+  const handleType = value => {
+    formRef.resetFields();
+    formRef.setFieldValue('type', value);
+    setType(value);
+  }
   const token = getToken() || GetTokenFromUrl();
   const uploadProps = {
     name: 'files',
@@ -60,7 +68,10 @@ function FirmModal(props) {
   };
   useEffect(() => {
     formRef.resetFields();
-  }, [item]);
+    if (visible)
+      setType(item?.type || 1)
+  }, [visible]);
+
   return <Modal
     maskClosable={false}
     open={visible}
@@ -78,6 +89,7 @@ function FirmModal(props) {
         // layout="inline"
         labelCol={{ span: 4 }}
         wrapperCol={{ span: 20 }}
+        preserve={false}
         initialValues={{
           name: item?.name || '',
           tax_code: item?.tax_code || '',
@@ -85,91 +97,113 @@ function FirmModal(props) {
           phone_number: item?.phone_number || '',
           bank_account: item?.bank_account || '',
           bank_number: item?.bank_number || '',
-          address: item?.address || ''
+          address: item?.address || '',
+          type: item?.type || 1,
+          id_type: item?.id_type || '',
+          id_card: item?.id_card || ''
         }}
       >
         <Row gutter={[48, 24]}>
           <Col span={12}>
-            <Form.Item style={{ width: '100%' }} label="供应商名称:" name='name' rules={
+            <Form.Item style={{ width: '100%' }} label="主体类型:" name='type' rules={
               [
                 {
                   required: true,
-                  message: '请输入供应商名称',
+                  message: '请选择主体类型',
                 }]}>
-              <Input disabled={disabled} placeholder="请输入供应商名称" />
-            </Form.Item>
-          </Col>
-          <Col span={12}>
-            <Form.Item style={{ width: '100%' }} label="税号:" name="tax_code" rules={[
-              {
-                required: true,
-                message: '请输入税号',
-              },
-            ]}>
-              <Input disabled={disabled} placeholder="请输入税号" />
-            </Form.Item>
-          </Col>
-        </Row>
-        <Row gutter={[48, 24]}>
-          <Col span={12}>
-            <Form.Item style={{ width: '100%' }} label="联系人:" name="contact" rules={
-              [
-                {
-                  required: true,
-                  message: '请输入联系人',
-                },
-              ]
-            }>
-              <Input disabled={disabled} placeholder="请输入联系人" />
-            </Form.Item>
-          </Col>
-          <Col span={12}>
-            <Form.Item style={{ width: '100%' }} label="联系电话:" name="phone_number" rules={[
-              {
-                required: true,
-                message: '请输入联系电话',
-              },
-            ]}>
-              <Input disabled={disabled} placeholder="请输入联系电话" />
-            </Form.Item>
-          </Col>
-        </Row>
-        <Row gutter={[48, 24]}>
-          <Col span={12}>
-            <Form.Item style={{ width: '100%' }} label="开户银行:" name='bank_account' rules={[
-              {
-                required: true,
-                message: '请输入开户银行',
-              },
-            ]}>
-              <Input disabled={disabled} placeholder="请输入开户银行" />
-            </Form.Item>
-          </Col>
-          <Col span={12}>
-            <Form.Item style={{ width: '100%' }} label="银行账号:" name='bank_number' rules={[
-              {
-                required: true,
-                message: '请输入银行账号',
-              },
-            ]}>
-              <Input disabled={disabled} placeholder="请输入银行账号" />
-            </Form.Item>
-          </Col>
-        </Row>
-        <Row>
-          <Col span={24}>
-            <Form.Item labelCol={{ span: 2 }}
-              wrapperCol={{ span: 22 }} style={{ width: '100%' }} label="地址:" name='address' rules={[
-                {
-                  required: true,
-                  message: '请输入地址',
-                },
-              ]}>
-              <Input disabled={disabled} placeholder="请输入地址" />
+              <Select disabled={disabled || typeDisabled} options={[
+                { value: 1, label: '供应商' },
+                { value: 4, label: '自然人' },
+              ]} placeholder="请选择主体类型" onChange={handleType}>
+              </Select>
             </Form.Item>
           </Col>
         </Row>
-        {/* <Row gutter={[48, 24]}>
+        {
+          type === 1 &&
+          <>
+            <Row gutter={[48, 24]}>
+              <Col span={12}>
+                <Form.Item style={{ width: '100%' }} label="名称:" name='name' rules={
+                  [
+                    {
+                      required: true,
+                      message: '请输入供应商名称',
+                    }]}>
+                  <Input disabled={disabled} placeholder="请输入供应商名称" />
+                </Form.Item>
+              </Col>
+              <Col span={12}>
+                <Form.Item style={{ width: '100%' }} label="税号:" name="tax_code" rules={[
+                  {
+                    required: true,
+                    message: '请输入税号',
+                  },
+                ]}>
+                  <Input disabled={disabled} placeholder="请输入税号" />
+                </Form.Item>
+              </Col>
+            </Row>
+            <Row gutter={[48, 24]}>
+              <Col span={12}>
+                <Form.Item style={{ width: '100%' }} label="联系人:" name="contact" rules={
+                  [
+                    {
+                      required: true,
+                      message: '请输入联系人',
+                    },
+                  ]
+                }>
+                  <Input disabled={disabled} placeholder="请输入联系人" />
+                </Form.Item>
+              </Col>
+              <Col span={12}>
+                <Form.Item style={{ width: '100%' }} label="联系电话:" name="phone_number" rules={[
+                  {
+                    required: true,
+                    message: '请输入联系电话',
+                  },
+                ]}>
+                  <Input disabled={disabled} placeholder="请输入联系电话" />
+                </Form.Item>
+              </Col>
+            </Row>
+            <Row gutter={[48, 24]}>
+              <Col span={12}>
+                <Form.Item style={{ width: '100%' }} label="开户银行:" name='bank_account' rules={[
+                  {
+                    required: true,
+                    message: '请输入开户银行',
+                  },
+                ]}>
+                  <Input disabled={disabled} placeholder="请输入开户银行" />
+                </Form.Item>
+              </Col>
+              <Col span={12}>
+                <Form.Item style={{ width: '100%' }} label="银行账号:" name='bank_number' rules={[
+                  {
+                    required: true,
+                    message: '请输入银行账号',
+                  },
+                ]}>
+                  <Input disabled={disabled} placeholder="请输入银行账号" />
+                </Form.Item>
+              </Col>
+            </Row>
+            <Row>
+              <Col span={24}>
+                <Form.Item labelCol={{ span: 2 }}
+                  wrapperCol={{ span: 22 }} style={{ width: '100%' }} label="地址:" name='address' rules={[
+                    {
+                      required: true,
+                      message: '请输入地址',
+                    },
+                  ]}>
+                  <Input disabled={disabled} placeholder="请输入地址" />
+                </Form.Item>
+              </Col>
+            </Row>
+            {/* <Row gutter={[48, 24]}>
           <Col span={12}>
             <div style={{ display: 'flex', alignItems: 'center' }}>
               <div style={{
@@ -229,6 +263,56 @@ function FirmModal(props) {
             </div>
           </Col>
         </Row> */}
+          </>
+        }
+        {
+          type === 4 && <>
+            <Row gutter={[48, 24]}>
+              <Col span={12}>
+                <Form.Item style={{ width: '100%' }} label="姓名:" name='name' rules={
+                  [
+                    {
+                      required: true,
+                      message: '请输入姓名',
+                    }]}>
+                  <Input disabled={disabled} placeholder="请输入姓名" />
+                </Form.Item>
+              </Col>
+              <Col span={12}>
+                <Form.Item style={{ width: '100%' }} label="证件类型:" name='id_type' rules={
+                  [
+                    {
+                      required: true,
+                      message: '请选择证件类型',
+                    }]}>
+                  <Select disabled={disabled} placeholder="请选择证件类型">
+                    <Option value={1}>身份证</Option>
+                    <Option value={2}>护照</Option>
+                  </Select>
+                </Form.Item>
+              </Col>
+            </Row>
+            <Row gutter={[48, 24]}>
+              <Col span={12}>
+                <Form.Item style={{ width: '100%' }} label="证件号:" name="id_card" rules={
+                  [
+                    {
+                      required: true,
+                      message: '请输入证件号',
+                    },
+                  ]
+                }>
+                  <Input disabled={disabled} placeholder="请输入证件号" />
+                </Form.Item>
+              </Col>
+              <Col span={12}>
+                <Form.Item style={{ width: '100%' }} label="银行账号:" name='bank_number'>
+                  <Input disabled={disabled} placeholder="请输入银行账号" />
+                </Form.Item>
+              </Col>
+            </Row>
+          </>
+        }
       </Form>
     </div>
   </Modal>