index.jsx 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import React, { useState, useRef } from 'react'
  2. import { Form, Row, Col, Button } from 'antd'
  3. import LazyCascader from '@/components/LazyCascader'
  4. import { ProFormSelect, ProFormText, ProFormTextArea } from '@ant-design/pro-form'
  5. import { Plus } from '@icon-park/react'
  6. import { ChangeCompMap } from '@/pages/Customer/Company/components/ChangeCompany'
  7. import ModalDragForm from '@/components/Modal/src/components/ModalDragForm'
  8. import { isNullOrUnDef } from '@/utils/is'
  9. const AddClient = props => {
  10. const {
  11. reload,
  12. onConfirm,
  13. buttonProps,
  14. dataId,
  15. dataType,
  16. btnTitle = '联系人',
  17. defaultValues
  18. } = props
  19. const formRef = useRef(null)
  20. const layout = {
  21. layout: 'horizontal',
  22. labelCol: { flex: '100px' }
  23. }
  24. const [showDataItem, setShowDataItem] = useState(false)
  25. return (
  26. <ModalDragForm
  27. {...layout}
  28. formRef={formRef}
  29. title="添加联系人"
  30. onVisibleChange={visible => {
  31. if (visible) {
  32. formRef.current?.setFieldsValue({ ...defaultValues })
  33. }
  34. }}
  35. trigger={
  36. <Button type="primary" {...buttonProps} className="mr-1">
  37. <Plus className="mr-1" />
  38. {btnTitle}
  39. </Button>
  40. }
  41. submitter={{
  42. render: ({ submit }, defaultDoms) => [
  43. ...defaultDoms,
  44. dataId ? (
  45. <Button
  46. type="primary"
  47. key="2"
  48. onClick={() => {
  49. setShowDataItem(true)
  50. const values = {}
  51. if (dataType === ChangeCompMap.BUSINESS.key) {
  52. values.businessId = dataId
  53. }
  54. formRef.current && formRef.current.setFieldsValue(values)
  55. submit()
  56. }}>
  57. 添加并关联
  58. </Button>
  59. ) : null
  60. ]
  61. }}
  62. onFinish={async values => {
  63. await onConfirm(values)
  64. formRef.current?.resetFields()
  65. !isNullOrUnDef(reload) && reload()
  66. return true
  67. }}>
  68. {showDataItem ? <ProFormText name={`${dataType}Id`} hidden /> : null}
  69. <ProFormText
  70. name="clientName"
  71. label="姓名"
  72. rules={[{ required: true, message: '请输入姓名' }]}
  73. />
  74. <Form.Item
  75. label="联系人地区"
  76. name="districtIds"
  77. rules={[{ required: true, message: '请选择地区' }]}>
  78. <LazyCascader showFooter={true} />
  79. </Form.Item>
  80. <Row>
  81. <Col span={12}>
  82. <ProFormSelect
  83. name="gender"
  84. label="性别"
  85. rules={[{ message: '请选择性别' }]}
  86. options={[
  87. { label: '男', value: '男' },
  88. { label: '女', value: '女' }
  89. ]}
  90. />
  91. <ProFormText label="部门" name="department" />
  92. <ProFormText
  93. label="手机"
  94. name="telephone"
  95. rules={[{ required: true, message: '请输入手机号码' }]}
  96. />
  97. <ProFormText label="电话" name="phone" rules={[{ message: '请输入电话/座机号' }]} />
  98. <ProFormText label="联系人地址" name="address" />
  99. <ProFormText label="联系人地标" name="landmarks" />
  100. </Col>
  101. <Col span={12}>
  102. <ProFormText label="昵称" name="niceName" />
  103. <ProFormText label="职位" name="position" />
  104. <ProFormText label="QQ" name="qq" />
  105. <ProFormText label="邮箱" name="email" />
  106. <ProFormText label="联系人乘车" name="ride" />
  107. <ProFormText label="联系人住宿" name="stay" />
  108. </Col>
  109. </Row>
  110. <ProFormTextArea label="备注" name="mark" />
  111. </ModalDragForm>
  112. )
  113. }
  114. export default AddClient