KingdeeCustomerModal.tsx 5.45 KB
import {
  postKingdeeRepCustomerDetail,
  postKingdeeRepCustomerSave,
} from '@/services';
import { getTeacherCustomFieldNumber } from '@/utils/kingdee';
import { CloseCircleOutlined } from '@ant-design/icons';
import {
  ModalForm,
  ProFormGroup,
  ProFormList,
  ProFormText,
} from '@ant-design/pro-components';
import { Form, message } from 'antd';

// import { cloneDeep } from 'lodash';
export default ({ setVisible, data, onClose }) => {
  const [form] = Form.useForm();

  /**
   * 回显客户信息
   * @param id
   */
  async function queryAndShowCustomer(id: any) {
    //查询客户信息
    let res = await postKingdeeRepCustomerDetail({
      data: {
        id: id,
      },
    });

    if (res) {
      form.setFieldValue('name', res.name);
      form.setFieldValue('id', res.id);
      form.setFieldValue('contact_persons', res.bomentity);
      let customFiledNumber = await getTeacherCustomFieldNumber();
      form.setFieldValue('teacherName', res.custom_field[customFiledNumber]);
    }
  }

  if (data) {
    //修改
    if (data.id) {
      queryAndShowCustomer(data.id);
    } else {
      //新增
      form.setFieldValue('name', data.name);
      form.setFieldValue('contact_persons', [{}]);
    }
  }
  return (
    <>
      <ModalForm
        width={900}
        open
        title="客户信息"
        form={form}
        autoFocusFirstInput
        modalProps={{
          okText: '保存',
          cancelText: '取消',
          destroyOnClose: true,
          onCancel: () => {
            setVisible(false);
          },
        }}
        onFinish={async (values) => {
          //查询客户自定义字段,课题组
          let custom_field_umber = await getTeacherCustomFieldNumber();

          if (custom_field_umber) {
            let customFieldObj = {};
            customFieldObj[custom_field_umber] = values.teacherName;
            values.custom_field = customFieldObj;
          }
          let customSaveRes = await postKingdeeRepCustomerSave({
            data: values,
          });
          if (customSaveRes) {
            let id_number_map = customSaveRes.id_number_map;
            let ids = customSaveRes.ids;
            if (id_number_map && ids) {
              message.success('保存成功');
              let id = ids[0];
              onClose(id);
            }
          }
        }}
        onOpenChange={setVisible}
      >
        <ProFormText key="key" name="id" label="id" placeholder="id" hidden />
        <ProFormGroup key="group">
          <ProFormText
            name="name"
            width="md"
            label={
              <>
                <span>客户名称</span>
                <span className="pl-2 text-xs text-gray-400">
                  请按照[单位]-[姓名][手机号]命名,例如:清华大学-张三12345678919
                </span>
              </>
            }
            initialValue={data}
            placeholder="请输入客户名称"
            rules={[
              {
                required: true,
                pattern: new RegExp('^.+-.+$'),
                message:
                  '格式错误,若无单位可写:“无-姓名手机号”,例如:无-张三12345678919',
              },
              { required: true, message: '客户名称必填' },
            ]}
          />
          <ProFormText
            name="teacherName"
            width="md"
            label="课题组老师"
            placeholder="请输入课题组老师"
            rules={[
              { required: true, message: '课题组老师必填,若没有请填“无”' },
            ]}
          />
        </ProFormGroup>

        <ProFormList
          creatorButtonProps={{ disabled: false }}
          name="contact_persons"
          label="联系人信息"
          actionGuard={{
            beforeRemoveRow: async () => {
              return new Promise((resolve) => {
                let contactPersons = form.getFieldValue('contact_persons');
                if (contactPersons.length === 1) {
                  message.error('至少要有一个联系人');
                  resolve(false);
                  return;
                }
                resolve(true);
              });
            },
          }}
          deleteIconProps={{
            Icon: CloseCircleOutlined,
            tooltipText: '不需要这行了',
          }}
        >
          <ProFormGroup key="group">
            {[
              <ProFormText
                key="key"
                name="id"
                label="id"
                placeholder="id"
                hidden
              />,
              <ProFormText
                key="key"
                name="contact_person"
                label="收货人姓名"
                placeholder="联系人姓名"
                rules={[{ required: true, message: '收货人姓名必填' }]}
              />,
              <ProFormText
                key="key"
                name="mobile"
                label="联系方式"
                placeholder="联系方式"
                rules={[{ required: true, message: '联系方式必填' }]}
              />,
              <ProFormText
                key="key"
                name="contact_address"
                label="收货地址"
                width="md"
                placeholder="请输入收货地址"
                rules={[{ required: true, message: '收货地址必填' }]}
              />,
            ]}
          </ProFormGroup>
        </ProFormList>
      </ModalForm>
    </>
  );
};