index.tsx 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. import { Dialog, Picker, Popup, Toast, Uploader, UploaderValueItem, hooks } from 'react-vant';
  2. import './index.less'
  3. import React, { useRef, useState } from "react";
  4. import downArrow from './../../assets/images/downArrow.png'
  5. import api from '~/api';
  6. export const InviteBusiness: React.FC = (props: any) => {
  7. let imgList: UploaderValueItem[] = []
  8. const [careerVisible, setCareerVisible] = useState(false)
  9. const [sexVisible, setSexVisible] = useState(false)
  10. const [projectVisible, setProjectVisible] = useState(false)
  11. const [businessForm, updateBusinessForm] = hooks.useSetState({
  12. career: 0,
  13. careerName: '',
  14. sexName: '',
  15. document: '',
  16. name: '',
  17. phone: '',
  18. project: 0,
  19. projectName: '',
  20. reason: '',
  21. sex: 0,
  22. wechar: ''
  23. })
  24. const submitBusinessForm = () => {
  25. if (!businessForm.name) {
  26. Toast({
  27. type: 'fail',
  28. message: "请填写名字"
  29. })
  30. return
  31. }
  32. if (!businessForm.sex) {
  33. Toast({
  34. type: 'fail',
  35. message: "请填写性别"
  36. })
  37. return
  38. }
  39. if (!businessForm.career) {
  40. Toast({
  41. type: 'fail',
  42. message: "请填写职业"
  43. })
  44. return
  45. }
  46. if (imgList.length == 0) {
  47. console.log(imgList)
  48. Toast({
  49. type: 'fail',
  50. message: "请上传图片"
  51. })
  52. return
  53. }
  54. if (!/^1(3\d|4[5-9]|5[0-35-9]|6[567]|7[0-8]|8\d|9[0-35-9])\d{8}$/.test(businessForm.phone)) {
  55. Toast({
  56. type: 'fail',
  57. message: "请填写正确电话号码"
  58. })
  59. return
  60. }
  61. if (!businessForm.wechar) {
  62. Toast({
  63. type: 'fail',
  64. message: "请填写微信号"
  65. })
  66. return
  67. }
  68. if (!businessForm.project) {
  69. Toast({
  70. type: 'fail',
  71. message: "请填写代理项目"
  72. })
  73. return
  74. }
  75. if (!businessForm.reason) {
  76. Toast({
  77. type: 'fail',
  78. message: "请填写缘由"
  79. })
  80. return
  81. }
  82. Dialog.confirm({
  83. title: '提交',
  84. message: '是否提交你的表单',
  85. }).then(async () => {
  86. if (imgList.length > 0) {
  87. let data1 = new FormData()
  88. data1.append('coverFiles', imgList[0].file as File)
  89. data1.append('businessType', '招商文件')
  90. let res1
  91. try {
  92. res1 = await api.openApiFileInfoFileUp(data1)
  93. }
  94. catch (e) {
  95. Toast('图片上传失败')
  96. }
  97. api.openApiAentInfo({ ...businessForm, document: res1?.data.data }).then(res => {
  98. if (res.data.code == 200) {
  99. Toast.success({
  100. message: '上传成功'
  101. })
  102. }
  103. })
  104. }
  105. })
  106. }
  107. return (
  108. <div className="bg">
  109. <div className="form">
  110. <div className="content">
  111. <div className="field">
  112. <div className="left">姓名</div>
  113. <div className='right'> <input value={businessForm.name} onChange={val => updateBusinessForm({ name: val.target.value })} placeholder="请填写姓名" type="text" /></div>
  114. </div>
  115. <div onClick={() => setSexVisible(true)} className="field">
  116. <div className="left">性别</div>
  117. <div className='right'>
  118. <input readOnly={true} value={businessForm.sexName} placeholder="请选择性别" type="text" />
  119. <img src={downArrow}></img>
  120. </div>
  121. </div>
  122. <div onClick={() => setCareerVisible(true)} className="field">
  123. <div className="left">职业</div>
  124. <div className='right'> <input readOnly={true} value={businessForm.careerName} placeholder="请选择职业" type="text" /> <img src={downArrow}></img></div>
  125. </div>
  126. <div className='upload' style={{ 'background': 'transparent' }} >
  127. <Uploader
  128. upload-text="上传图片"
  129. maxCount={1}
  130. accept='*'
  131. value={imgList}
  132. onChange={v => { imgList = v, console.log(imgList) }
  133. }
  134. />
  135. <div style={{ color: '#adb4bf' }}>
  136. 请上传身份证或驾照或营业执照等 身份证明
  137. </div>
  138. </div>
  139. <div className="field">
  140. <div className="left">手机</div>
  141. <div className='right'>
  142. <input onChange={(val) => updateBusinessForm({
  143. phone: val.target.value
  144. })} value={businessForm.phone} placeholder="请填写手机" type="text" />
  145. </div>
  146. </div>
  147. <div className="field">
  148. <div className="left">微信</div>
  149. <div className='right'>
  150. <input onChange={(val) => updateBusinessForm({
  151. wechar: val.target.value
  152. })} value={businessForm.wechar} placeholder="请填写微信号" type="text" />
  153. </div>
  154. </div>
  155. <div onClick={() => { setProjectVisible(true) }} className="field">
  156. <div className="left">代理项目</div>
  157. <div className='right'>
  158. <input readOnly value={businessForm.projectName} placeholder="请选择代理项目" type="text" />
  159. <img src={downArrow}></img>
  160. </div>
  161. </div>
  162. <div style={{
  163. 'borderRadius': '2.5vw',
  164. 'padding': '1.5vw'
  165. }} className="field">
  166. <textarea value={businessForm.reason} onChange={val => updateBusinessForm({
  167. reason: val.target.value
  168. })} style={{ 'background': 'transparent', outline: 'none', 'border': 'none', height: '50vw', width: '100%' }} placeholder='请写出你的加盟缘由'></textarea>
  169. </div>
  170. </div>
  171. <div className='submit'>
  172. <div onClick={() => submitBusinessForm()} className='button1'>提交</div>
  173. </div>
  174. </div>
  175. <Popup position='bottom' visible={projectVisible} onClose={() => setProjectVisible(false)}>
  176. <Picker
  177. title='代理项目'
  178. onCancel={() => setProjectVisible(false)}
  179. onConfirm={(val: string, item: string, index: number | undefined) => {
  180. setProjectVisible(false)
  181. updateBusinessForm({
  182. project: index === undefined ? 0 : (index + 1),
  183. projectName: val
  184. })
  185. return val
  186. }}
  187. columns={[
  188. '软件代理', '书籍代理', '软件+书籍', '软件开发'
  189. ]}
  190. />
  191. </Popup>
  192. <Popup position='bottom' visible={careerVisible} onClose={() => setCareerVisible(false)}>
  193. <Picker
  194. title='职业'
  195. onCancel={() => setCareerVisible(false)}
  196. onConfirm={(val: string, item: string, index: number | undefined) => {
  197. setCareerVisible(false)
  198. updateBusinessForm({
  199. career: index === undefined ? 0 : (index + 1),
  200. careerName: val
  201. })
  202. return val
  203. }}
  204. columns={[
  205. '教练', '驾校', '自媒体', '相关从业者'
  206. ]}
  207. />
  208. </Popup>
  209. <Popup position='bottom' visible={sexVisible} onClose={() => setSexVisible(false)}>
  210. <Picker
  211. title='性别'
  212. onCancel={() => setSexVisible(false)}
  213. onConfirm={(val: string, item: string, index: number | undefined) => {
  214. setSexVisible(false)
  215. updateBusinessForm({
  216. sex: index === undefined ? 0 : (index + 1),
  217. sexName: val
  218. })
  219. return val
  220. }}
  221. columns={[
  222. '男', '女'
  223. ]}
  224. />
  225. </Popup>
  226. </div>
  227. )
  228. }