centerW.jsx 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. import React from 'react';
  2. import { Radio, Select, Input, Upload, Button , Checkbox } from 'antd';
  3. import { UploadOutlined } from '@ant-design/icons';
  4. import axios from "axios";
  5. // import { $Axios } from '../../common/publish';
  6. import select_data from '../../common/ssq';
  7. import '../center-w/centerW.scss'
  8. export default class centerW extends React.Component {
  9. constructor(props) {
  10. super(props)
  11. this.state = {
  12. selectData : select_data,
  13. fileList : [[],[],[],[],[],[],[],[],[],[],[],[]],
  14. fileList_t : null,
  15. headerProps : {
  16. action: 'http://paytest.zhongsou.com/payment/file.upload.groovy',
  17. multiple: false,
  18. },
  19. imgType : null,
  20. Params : this.props.arr,
  21. tradingScenarios : [],
  22. datas : {},
  23. }
  24. }
  25. componentDidMount() {
  26. this.props.onRef(this)
  27. }
  28. toParent = (data) => {
  29. this.props.parent.getParams_w(this, data)
  30. }
  31. InputWdata(e){
  32. let Params = {
  33. legalPersonName : document.getElementById("legalPersonName").value,//法人姓名
  34. profession : this.state.Params.profession, //法人职业
  35. legalPersonIdType : this.state.Params.legalPersonIdType,//法人证件类型
  36. legalPersonIdNo : document.getElementById("legalPersonIdNo").value, //证件号码
  37. idEffectiveDateStart : '',//法人证件有效期开始日期
  38. idEffectiveDateEnd : '',//法人证件有效期结束日期
  39. cerNoType : this.state.Params.cerNoType,//企业证件类型
  40. cerNo : document.getElementById("cerNo").value,//企业资质证书编号
  41. sellingArea : document.getElementById("sellingArea").value,//营业面积
  42. staffSize : document.getElementById("staffSize").value,//公司员工规模
  43. tradingScenarios : this.state.Params.tradingScenarios,//交易场景说明
  44. webSite : document.getElementById("webSite").value,//网站网址
  45. webSiteName : document.getElementById("webSiteName").value,//网站名称
  46. icp : document.getElementById("icp").value,//ICP备案号
  47. appName : document.getElementById("appName").value,//APP名称
  48. wechatAppletName : document.getElementById("wechatAppletName").value,//公众号/小程序/生活号
  49. testAccountInfo : '',//测试账户信息
  50. businessLicensePath : '',//营业执照照片路径
  51. openAccountPath : '',//开户许可证照片路径
  52. legalIdCardProsPath : '',//法人证件人像面路径
  53. legalIdCardConsPath : '',//法人证件国徽面路径
  54. desireAuthPath : '',//确认入网意愿视频路径
  55. holdingIdCardPath : '',//法人手持证件影印件路径
  56. webSitePath : '',//商户网址截图影印件路径
  57. wechatAppletPath : '',//公众号/小程序/生活号业务流程截图影印件路径
  58. appPath : '',//APP首页截图影印件路径
  59. legalPersonBankCardPath : '',//法人银行卡图影印件路径
  60. desireAuthOtherPath : '',//确认入网意愿其他验证方式路径
  61. otherCerPath : '',//其他资质文件路径
  62. }
  63. return Params
  64. }
  65. childMethod () { //暴露给父组件的方法,集合当前页面拿到的参数存入缓存
  66. let data = this.InputWdata();
  67. // console.log(data)
  68. this.toParent(data)
  69. }
  70. btnClick(e){ //区分上传图片类型
  71. this.setState({
  72. imgType : e
  73. })
  74. }
  75. selectChange_1(value) { //法人职业类型选择
  76. console.log(value)
  77. this.state.Params.profession = value;
  78. }
  79. selectChange_2(value) { //法人证件类型选择
  80. this.state.Params.legalPersonIdType = value;
  81. }
  82. selectChange_3(value) { // 企业证件类型选择
  83. this.state.Params.cerNoType = value;
  84. }
  85. CheckChange(e){
  86. this.state.Params.tradingScenarios = e.toString()
  87. console.log(e)
  88. }
  89. onChangeUpload(info){
  90. let fileList = [...info.fileList];
  91. this.state.fileList = fileList
  92. }
  93. UploadImgstate(){ //修改上传图片状态
  94. let fileList = this.state.fileList;
  95. let imgType = this.state.imgType; //当前上传图片点击的Index
  96. fileList[0].status = 'done' //上传成功之后的状态 自动修改
  97. fileList[0].response = fileList[0].name //图片上传成功之后展示的TIP
  98. let arr = this.state.fileList;
  99. arr[imgType] = fileList
  100. console.log(arr)
  101. this.setState({
  102. fileList : arr
  103. })
  104. }
  105. handleChange(e){
  106. let file = e.file;
  107. let that_ = this;
  108. console.log(file)
  109. const formData = new FormData();
  110. formData.append('file', file)
  111. formData.append('merchantSerialNumber', 'MCT_202106262257460929210')
  112. let config = {
  113. method: 'post',
  114. headers: { 'Content-Type': 'multipart/form-data' }
  115. }
  116. axios.post('http://paytest.zhongsou.com/payment/file.upload.groovy',formData, config).then((res) => {
  117. let status = res.data.status;
  118. let fileList = that_.state.fileList;
  119. that_.setState({
  120. fileList_t : fileList
  121. })
  122. if(status == 200){
  123. // that_.UploadImgstate()
  124. }
  125. }).catch((error) => { //上传失败后设置回之前的上前数量与状态
  126. // let fileList_t = that_.state.fileList_t;
  127. // that_.setState({
  128. // fileList : fileList_t
  129. // })
  130. console.log(error);
  131. })
  132. }
  133. // defaultValue={Params.signedName}
  134. render() {
  135. const { selectData, headerProps, fileList ,Params , } = this.state;
  136. const { Option } = Select;
  137. return(
  138. <div className='center_up'>
  139. <div className='center_left'>
  140. <div className='c-l'>
  141. <div className='titles'> 法人姓名<i className='label_x'>*</i> : </div>
  142. <div className='inputs'><Input id='legalPersonName' placeholder="请输入法人姓名" defaultValue={Params.legalPersonName} /></div>
  143. </div>
  144. <div className='c-l'>
  145. <div className='titles'> 法人职业 : </div>
  146. <Select size='default' placeholder="请选择法人职业" defaultValue={Params.profession} onChange={ this.selectChange_1.bind(this) } style={{ width: 200 }}>
  147. {selectData.contractW.map((item,index) => (
  148. <Option key={index} value={item.value}>{item.txt}</Option>
  149. ))}
  150. </Select>
  151. </div>
  152. <div className='c-l'>
  153. <div className='titles'> 法人证件类型<i className='label_x'>*</i> : </div>
  154. <Select size='default' placeholder="请选择证件类型" defaultValue={Params.legalPersonIdType} onChange={ this.selectChange_2.bind(this) } style={{ width: 200 }}>
  155. {selectData.certificateW.map((item,index) => (
  156. <Option key={index} value={item.value}>{item.txt}</Option>
  157. ))}
  158. </Select>
  159. </div>
  160. <div className='c-l'>
  161. <div className='titles'> 法人证件号码<i className='label_x'>*</i> : </div>
  162. <div className='inputs'><Input id='legalPersonIdNo' placeholder="请输入证件号码" defaultValue={Params.legalPersonIdNo} /></div>
  163. </div>
  164. <div className='c-l'>
  165. <div className='titles'> 企业证件类型 : </div>
  166. <Select size='default' placeholder="请选择证件类型" defaultValue={Params.cerNoType} onChange={ this.selectChange_3.bind(this) } style={{ width: 200 }}>
  167. {selectData.cerNoTypeW.map((item,index) => (
  168. <Option key={index} value={item.value}>{item.txt}</Option>
  169. ))}
  170. </Select>
  171. </div>
  172. <div className='c-l'>
  173. <div className='titles'> 资质证书编号 : </div>
  174. <div className='inputs'><Input id='cerNo' placeholder="请输入证书编号" defaultValue={Params.cerNo}/></div>
  175. </div>
  176. <div className='c-l'>
  177. <div className='titles'> 营业面积 : </div>
  178. <div className='inputs'><Input id='sellingArea' placeholder="A 500平以上" defaultValue={Params.sellingArea} /></div>
  179. </div>
  180. <div className='c-l'>
  181. <div className='titles'> 公司员工规模 : </div>
  182. <div className='inputs'><Input id='staffSize' placeholder="A 100人以上" defaultValue={Params.staffSize} /></div>
  183. </div>
  184. <div className='c-l'>
  185. <div className='titles'> 交易场景说明 : </div>
  186. <Checkbox.Group options={selectData.options} defaultValue={['WEBSITE']} onChange={this.CheckChange.bind(this)} />
  187. </div>
  188. <div className='c-l'>
  189. <div className='titles'> 网站网址 : </div>
  190. <div className='inputs'><Input id='webSite' placeholder="请输入网站网址" defaultValue={Params.webSite}/></div>
  191. </div>
  192. <div className='c-l'>
  193. <div className='titles'> 网站名称 : </div>
  194. <div className='inputs'><Input id='webSiteName' placeholder="请输入网站名称" defaultValue={Params.webSiteName} /></div>
  195. </div>
  196. <div className='c-l'>
  197. <div className='titles'> ICP备案号 : </div>
  198. <div className='inputs'><Input id='icp' placeholder="请输入ICP备案号" defaultValue={Params.icp}/></div>
  199. </div>
  200. <div className='c-l'>
  201. <div className='titles'> APP名称 : </div>
  202. <div className='inputs'><Input id='appName' placeholder="请输入APP名称" defaultValue={Params.appName}/></div>
  203. </div>
  204. <div className='c-l'>
  205. <div className='titles'> 公众号/小程序/生活号 : </div>
  206. <div className='inputs'><Input id='wechatAppletName' placeholder="请输入名称" defaultValue={Params.wechatAppletName}/></div>
  207. </div>
  208. </div>
  209. <div className='center_right'>
  210. {selectData.rightArray.map((item,index) => (
  211. <div className='c-l' key = {index}>
  212. <div className='titles'> {item.txt} : </div>
  213. <div className='Upload_wrap'>
  214. <Upload
  215. // {...headerProps}
  216. name="files"
  217. className="Upload"
  218. maxCount={1}
  219. showUploadList={false}
  220. accept = {item.type}
  221. customRequest={this.handleChange.bind(this)}
  222. onChange={this.onChangeUpload.bind(this)}
  223. >
  224. <Button icon={<UploadOutlined />} onClick={() =>this.btnClick(index)}>选择文件</Button>
  225. </Upload>
  226. {fileList[index].length === 0 && <div className='title_tips'>格式限制为{item.type},最大不超过50M</div>}
  227. </div>
  228. </div>
  229. ))}
  230. </div>
  231. </div>
  232. )
  233. }
  234. }