Browse Source

增加 收单子户入网

lvzhuo 3 years ago
parent
commit
949003cea7

+ 14 - 10
src/App.js

@@ -49,21 +49,25 @@ export default class App extends React.Component {
   //初始化执行
   componentDidMount() {
     let isSignout = localStorage.getItem('isSignout');  //获取退出时存储的数据,用于判断用户退出后是否刷新页面
-    // let obj = {   //默认信息
-    //   userName: '测试用户blabalablalba',
+    // let userData = {   //默认信息
+    //   userName: '用户名xxx',
     //   mallId: 2, //多商户所属商城id
-    //   merchantNo: 252 , //入网申请失败',//入网的appname、社群name、商户号等(香香或者嘉旺提供) 
+    //   merchantNo: 250 , //入网申请失败',//入网的appname、社群name、商户号等(香香或者嘉旺提供) 
     //   merchantType: 3,//入网来源,2:app或社群3:商户或店铺(香香或者嘉旺提供)
     //   Jur: 1,//用户权限
-    //   pages: '1-0'
+    //   pages: '1-0',
+    //   org_name : '商户名xxx'
     // }
-    // let userData = obj
 
-    let userData = cookie.load('userInformation');// 获取上游跳转时带给的信息
-    let type = this.isObject(userData)
-    if( type == false){
-      userData = JSON.parse(unescape(userData));
-    }
+    let s = "{\"userName\":\"15392502888\",\"merchantNo\":\"com.smyipaijide\",\"org_name\":\"易拍即得\",\"mallId\":\"com.smrongshengtianxia\",\"Jur\":1,\"pages\":\"1-0\",\"merchantType\":2}"
+
+    // console.log(s)
+    console.log(JSON.parse(unescape(s)))
+    // let userData = cookie.load('userInformation');// 获取上游跳转时带给的信息
+    // let type = this.isObject(userData)
+    // if( type == false){
+    // }
+    let userData = JSON.parse(unescape(s));
 
     this.autoLogin(userData) //跳转查询用户信息,验证用户是否入网
     if (isSignout == 'yes' && userData == undefined) { //拦截是否为刷新页面

+ 3 - 3
src/common/publish.js

@@ -52,9 +52,9 @@ Date.prototype.formats = function (fmt) {
 export function $Axios (method,urls, param, fn, err) {
     let url = '';
     // if(process.env.NODE_ENV === 'development'){  
-        // url = 'http://paytest.zhongsou.com' //开发测试环境
+        url = 'http://paytest.zhongsou.com' //开发测试环境
     // }else{  
-        url = 'http://pay.zhongsou.com' //线上生产环境
+        // url = 'http://pay.zhongsou.com' //线上生产环境
     // }
 	let methods = method.trim()
 	let obj = {
@@ -96,7 +96,7 @@ export function $AxiosGet (method,urls, param, fn, err) {
     url = 'http://api2test.zhongsou.com/'//开发测试环境API
     // if(process.env.NODE_ENV === 'development'){ 
     // }else{  
-    //     url = 'http://api2.souyue.mobi/d3api2' //生产线上环境API
+        // url = 'http://api2.souyue.mobi/d3api2' //生产线上环境API
     // }
 	let methods = method.trim()
 	let obj = {

+ 60 - 0
src/common/ssq.js

@@ -13741,10 +13741,70 @@ const ssq = {
         { txt: '民办非企业组织', value: 'PRIVATE_NON_ENTERPRISE_ORGANIZATIONS', type: 2 },
         { txt: '社会团体', value: 'SOCIAL_ORGANIZATION', type: 2 },
         { txt: '非法人企业', value: 'UNINCORPORATED_ENTERPRISE', type: 2 },
+        { txt: '企业法人', value: 'ENTERPRISE_LEGAL_PERSON', type: 2 },
         { txt: '自然人', value: 'NATURAL_PERSON', type: 1 },
         { txt: '政府机关', value: 'GOVERNMENT_AGENCIES', type: 2 },
         { txt: '其他', value: 'OTHERS', type: 2 },
     ],
+    'beneficiaryArr' : [
+        { txt : '身份证' , of : 'false', value : 'IDCARD'}, 
+        { txt : '护照' , of : 'false', value : 'PASSPORT'}, 
+        { txt : '武警证' , of : 'false', value : 'ARMEDPOLICE'}, 
+        { txt : '港澳居民往来内地通行证' , of : 'false', value : 'HM_VISITORPASS'}, 
+        { txt : '户口簿' , of : 'false', value : 'RESIDENCEBOOKLET'}, 
+        { txt : '台湾居民来往大陆通行证' , of : 'false', value : 'T_VISITORPASS'}, 
+        { txt : '外国人永久居留证' , of : 'false', value : 'FOREIGNESTAYFOREVER'}, 
+        { txt : '其它证件号' , of : 'false', value : 'OTHER'}, 
+    ],
+    'GENERAL_SUB_MERCHANT' : [    //收单子户
+        { txt : '被分账方' , of : 'M', value : 'signedType'},   //默认必填
+        { txt : '签约名称' , of : 'M', value : 'signedName'},   //默认必填
+        { txt : '商户签约性质' , of : 'M', value : 'registerRole'},  //默认必填
+        { txt : '证书类型' , of : 'M', value : 'cerType'},  //当签约性质不为自然人时必传
+        { txt : '商户简称' , of : 'M', value : 'signedShorthand'},  //默认必填
+        { txt : '经营地址省' , of : 'M', value : 'businessAddressProvince'}, //默认必填
+        { txt : '经营地址市' , of : 'M', value : 'businessAddressCity'}, //默认必填
+        { txt : '经营地址区' , of : 'M', value : 'businessAddressArea'}, //默认必填
+        { txt : '经营地址' , of : 'M', value : 'businessAddress'}, //默认必填
+        { txt : '业务类型' , of : 'M', value : 'businessClassification'},
+        { txt : '开户意愿核实类型' , of : 'M', value : 'desireAuth'},
+        { txt : '联系人姓名' , of : 'M', value : 'contactName'}, //默认必填
+        { txt : '联系人邮箱' , of : 'M', value : 'contactEmail'}, //默认必填
+        { txt : '联系人电话' , of : 'M', value : 'contactPhone'}, //默认必填
+        { txt : '法人姓名' , of : 'M', value : 'legalPersonName'}, //默认必填
+        { txt : '法人证件类型' , of : 'M', value : 'legalPersonIdType'}, //默认必填
+        { txt : '证件号码' , of : 'M', value : 'legalPersonIdNo'}, //默认必填
+        { txt : '企业证件类型' , of : 'M', value : 'cerNoType'}, //商户类型不为自然人时必填
+        { txt : '资质证书编号' , of : 'M', value : 'cerNo'}, //商户类型不为自然人时必填
+        { txt : '营业面积' , of : 'M', value : 'sellingArea'}, //商户类型不为自然人时必填
+        { txt : '公司员工规模' , of : 'M', value : 'staffSize'}, //商户类型不为自然人时必填
+        { txt : '交易场景说明' , of : 'M', value : 'tradingScenarios'}, //商户类型不为自然人或被分账方时必传
+        { txt : 'APP名称' , of : 'M', value : 'appName'}, //商户类型不为自然人或被分账方时必传
+        { txt : '法人证件人像面路径' , of : 'M', value : 'legalIdCardProsPath'}, //默认必填
+        { txt : '法人证件国徽面路径' , of : 'M', value : 'legalIdCardConsPath'}, //默认必填
+        { txt : '营业执照照片路径' , of : 'M', value : 'businessLicensePath'}, //默认必填
+        { txt : '开户许可证照片路径' , of : 'M', value : 'openAccountPath'}, //默认必填
+        { txt : '法人银行卡图影印件路径' , of : 'M', value : 'legalPersonBankCardPath'}, //默认必填
+        { txt : '法人手持证件影印件路径' , of : 'M', value : 'holdingIdCardPath'}, //默认必填
+        { txt : 'APP首页截图影印件路径' , of : 'M', value : 'appPath'}, //默认必填
+        { txt : '开户行' , of : 'M', value : 'bankCode'}, //默认必填
+        { txt : '支行名称' , of : 'M', value : 'bankBranchName'}, //默认必填
+        { txt : '开户名称' , of : 'M', value : 'accountName'}, //默认必填
+        { txt : '开户账号' , of : 'M', value : 'bankCardNo'}, //默认必填
+        { txt : '市编码' , of : 'M', value : 'cityCode'}, //默认必填
+        { txt : '省编码' , of : 'M', value : 'provinceCode'}, //默认必填
+        { txt : '结算银行卡属性' , of : 'M', value : 'accountType'}, //商户类型为个体工商户时必填,个人默认对私,企业等默认对公     
+        { txt : '最终受益人姓名' , of : 'M', value : 'name'}, //默认必填
+        { txt : '最终受益人证件类型' , of : 'M', value : 'idType'}, //默认必填
+        { txt : '最终受益人证件号码' , of : 'M', value : 'idNo'}, //默认必填
+        { txt : '最终受益人证件有效期开始日期' , of : 'M', value : 'effectiveDateStart'}, //默认必填
+        { txt : '最终受益人证件有效期结束日期' , of : 'M', value : 'effectiveDateEnd'}, //默认必填
+        { txt : '最终受益人住址' , of : 'M', value : 'address'}, //默认必填
+        { txt : '股权占比' , of : 'M', value : 'equityRatio'}, //默认必填
+        { txt : '收件人' , of : 'M', value : 'receiverName'}, //默认必填
+        { txt : '收件人电话' , of : 'M', value : 'receiverPhone'}, //默认必填
+        { txt : '收件人地址' , of : 'M', value : 'receiverAddress'}, //默认必填
+    ],
     'INDIVIDUAL_BUSINESS' : [    //个体工商户
         { txt : '被分账方' , of : 'M', value : 'signedType'},   //默认必填
         { txt : '签约名称' , of : 'M', value : 'signedName'},   //默认必填

+ 1 - 1
src/component/Account-overview/Account-overview.jsx

@@ -283,7 +283,7 @@ export default class AccountOverview extends React.Component {
                                 </div>
                                 <div style={{ width: '65%', height: '120px', float: 'left' }}>
                                     <div style={{ lineHeight: '40px' }}>商户编号 : {data.merchantId == '' ? '--' : data.merchantId}</div>
-                                    <div style={{ lineHeight: '40px' }}>商户名称 : {data.name == '' ? '--' : data.name}</div>
+                                    <div style={{ lineHeight: '40px' }}>商户名称 : {JSON.parse(localStorage.getItem('userData')).org_name}</div>
                                     <div style={{ lineHeight: '40px' }}>商户邮箱 : {data.contactEmail == '' ? '--' : data.contactEmail}</div>
                                 </div>
                             </div>

+ 53 - 9
src/component/Layout/Layout.jsx

@@ -91,6 +91,18 @@ export default class Layout extends React.Component {
                     }
                 }
             });
+        }else if(odatas.signedType == 'GENERAL_SUB_MERCHANT'){ //收单子户
+            let datas = select_data.GENERAL_SUB_MERCHANT;  //必填项列表
+            datas.map((item,index) => {  
+                let s = item.value;
+                for(let key  in data){
+                    if(key == s){
+                        if(data[key] == ''){
+                            listArr.push(key)
+                        }
+                    }
+                }
+            });
         }else{ //默认必填项验证
             let datas = select_data.offlist;  //必填项列表
             datas.map((item,index) => {  
@@ -136,7 +148,6 @@ export default class Layout extends React.Component {
         }else{
             setTimeout(function(){ that_.setState({lodings : false}) }, 500);
         }    
-
         if(flag == true){ //标记为true 允许跳转
             that_.setState({lodings : true});
             setTimeout(function () {
@@ -231,7 +242,7 @@ export default class Layout extends React.Component {
     btnClick() {
         let that_ = this;
         that_.CenterS.childMethod(); //提取第三页数据
-        let list = that_.Validation_data(3);//验证第页必填项是否填写,获取未填写的必填项
+        let list = that_.Validation_data(3);//验证第页必填项是否填写,获取未填写的必填项
         that_.CenterS.verification(list)  //发送给组件 未填写必填项 给出提示
         let flag = list.length > 0 ? false : true;  //list长度大于0 代表有必填项未填写
         that_.setState({lodings : true});
@@ -272,19 +283,52 @@ export default class Layout extends React.Component {
                 baseInfo: JSON.parse(odata),
                 bankCardInfo : JSON.parse(sdata),
                 desireAuthInfo :{
-                    legalPersonName : odata.legalPersonName,
-                    legalPersonIdNo : odata.legalPersonIdNo,
-                    legalPersonPhoneNo : odata.legalPersonPhoneNo
+                    legalPersonName : JSON.parse(wdata).legalPersonName,
+                    legalPersonIdNo : JSON.parse(wdata).legalPersonIdNo,
+                    legalPersonPhoneNo : JSON.parse(odata).legalPersonPhoneNo
                 },
                 certificateInfo : JSON.parse(wdata),
-                certificateContacts : '',
-                contractInfo : '',
-                paymentProfiles : '',
+                certificateContacts : [   //最终受益人信息
+                    {
+                        name : JSON.parse(sdata).name,
+                        idType : JSON.parse(sdata).idType,
+                        idNo : JSON.parse(sdata).idNo,
+                        effectiveDateStart : JSON.parse(sdata).effectiveDateStart,
+                        effectiveDateEnd : JSON.parse(sdata).effectiveDateEnd,
+                        address : JSON.parse(sdata).address,
+                        equityRatio : JSON.parse(sdata).equityRatio
+                    }
+                ],
+                contractInfo : {   //合同信息
+                    receiverName : JSON.parse(sdata).receiverName,
+                    receiverPhone : JSON.parse(sdata).receiverPhone,
+                    receiverAddress: JSON.parse(sdata).receiverAddress,
+                },
+                paymentProfiles : [
+
+                    {
+                        paymentMode : 'WEIXIN_MINIAPPS',
+                        feeType : '',
+                        feeAmount: ''
+                    }
+                    ,
+                    {
+                        paymentMode : 'ALIPAY_WAP',
+                        feeType : '',
+                        feeAmount: ''
+                    }
+                    ,
+                    {
+                        paymentMode : 'ALIPAY_OFFICIAL',
+                        feeType : '',
+                        feeAmount: ''
+                    }
+                ],
                 settlementProfile : '',
                 hmac : ''
-                // Object.assign(, this.state.Params_w, this.state.Params_S),
             }
         }
+        
         $Axios('get', url, params, (res) => {
             let data = res.data;
             let status = res.data.head.status;

+ 88 - 49
src/component/center-o/centerO.jsx

@@ -1,6 +1,5 @@
 import React from 'react';
 import { Radio, Select, Input,Form } from 'antd';
-// import { $Axios } from '../../common/publish';
 import select_data from '../../common/ssq';
 import '../center-o/centerO.scss'
 
@@ -20,7 +19,8 @@ export default class centerO extends React.Component {
             lodings: false,
             desireAuth: '',
             offlist : select_data.offlist,
-            validation_list : []
+            validation_list : [],
+            signedType : 'BY_SPLIT_BILL' // 默认被分帐方
         }
 
     }
@@ -60,19 +60,27 @@ export default class centerO extends React.Component {
                     regionlist: regionlist.mallAreaList
                 })
             }
-            if(this.state.Params.registerRole == 'INDIVIDUAL_BUSINESS'){ //个体工商户
+            let signedType = this.state.Params.signedType;
+            if(signedType == 'GENERAL_SUB_MERCHANT'){
                 this.setState({
-                    offlist:select_data.INDIVIDUAL_BUSINESS
-                })
-            }else if(this.state.Params.registerRole == 'NATURAL_PERSON'){  //自然人
-                this.setState({
-                    offlist:select_data.NATURAL_PERSON
-                })
-            }else { //默认
-                this.setState({
-                    offlist:select_data.offlist
+                    offlist:select_data.GENERAL_SUB_MERCHANT
                 })
+            }else{
+                if(this.state.Params.registerRole == 'INDIVIDUAL_BUSINESS'){ //个体工商户
+                    this.setState({
+                        offlist:select_data.INDIVIDUAL_BUSINESS
+                    })
+                }else if(this.state.Params.registerRole == 'NATURAL_PERSON'){  //自然人
+                    this.setState({
+                        offlist:select_data.NATURAL_PERSON
+                    })
+                }else { //默认
+                    this.setState({
+                        offlist:select_data.offlist
+                    })
+                }
             }
+            
         }
     }
 
@@ -82,7 +90,7 @@ export default class centerO extends React.Component {
 
     Inputdata(e) {
         let Params = {
-            signedType: 'BY_SPLIT_BILL',  //签约类型
+            signedType: this.state.Params.signedType == undefined ? 'BY_SPLIT_BILL' : this.state.Params.signedType,  //签约类型
             signedName: document.getElementById("qymc").value, //签约名称
             signedShorthand: document.getElementById("names").value, //商户简称
             registerRole: this.state.Params.registerRole == undefined ? '' : this.state.Params.registerRole, //商户签约性质
@@ -94,7 +102,7 @@ export default class centerO extends React.Component {
             contactName: document.getElementById("myname").value, //联系人姓名
             contactEmail: document.getElementById("mymail").value,// 联系人邮箱
             contactPhone: document.getElementById("mynums").value,// 联系人电话
-            businessClassification: this.state.Params.businessClassification, //业务分类 (签约类型为被分账方不传此参数)
+            businessClassification: this.state.Params.businessClassification == undefined ? '' : this.state.Params.businessClassification, //业务分类 (签约类型为被分账方不传此参数)
             desireAuth: this.state.Params.desireAuth == undefined ? 'DESIRE_VIDEO' : this.state.Params.desireAuth, // 开户意愿核实类型
             // legalPersonName : this.state.Params.desireAuth == 'DESIRE_MOBILEINFO' ? document.getElementById("myname1").value : '',// 法人姓名
             // legalPersonIdNo : this.state.Params.desireAuth == 'DESIRE_MOBILEINFO' ? document.getElementById("myname2").value : '',// 法人身份证号
@@ -107,23 +115,30 @@ export default class centerO extends React.Component {
     handleChangeQy(e) {  //商户签约性质
         let registerRole = e;
         this.state.Params.registerRole = registerRole;
-        if(registerRole == 'INDIVIDUAL_BUSINESS'){ //个体工商户
-            this.setState({
-                offlist:select_data.INDIVIDUAL_BUSINESS
-            })
-        }
-
-        if(registerRole == 'NATURAL_PERSON'){  //自然人
+        if(this.state.signedType == 'GENERAL_SUB_MERCHANT'){   //入网类型为收单子户时
             this.setState({
-                offlist:select_data.NATURAL_PERSON
-            })
-        }
-
-        if(registerRole == 'offlist'){ //默认
-            this.setState({
-                offlist:select_data.offlist
+                offlist:select_data.GENERAL_SUB_MERCHANT
             })
+        }else{
+            if(registerRole == 'INDIVIDUAL_BUSINESS'){ //个体工商户
+                this.setState({
+                    offlist:select_data.INDIVIDUAL_BUSINESS
+                })
+            }
+    
+            if(registerRole == 'NATURAL_PERSON'){  //自然人
+                this.setState({
+                    offlist:select_data.NATURAL_PERSON
+                })
+            }
+    
+            if(registerRole == 'offlist'){ //默认
+                this.setState({
+                    offlist:select_data.offlist
+                })
+            }
         }
+        
     }
 
     handleChangeZs(e) {  //商户证书类型
@@ -195,22 +210,26 @@ export default class centerO extends React.Component {
         // console.log(e)
     }
     
-    // verificationMap(e){
-    //     let data = this.state.validation_list;
-    //     let type = false;
-    //     if(data.length > 0){
-    //         let s = ;
-    //         console.log(s)
-    //     }else{
-
-    //     }
-
-    //     return type;
-    // }
+    signedTypeRadio(e){
+        let signedType = e.target.value;
+        this.state.Params.signedType = signedType;
+        if(signedType == 'GENERAL_SUB_MERCHANT'){
+            this.setState({
+                signedType: signedType,
+                offlist : select_data.GENERAL_SUB_MERCHANT
+            })
+        }else{
+            this.setState({
+                signedType: signedType,
+                offlist : select_data.offlist
+            })
+        }
+       
+    }
 
 
     render() {
-        const { selectData, cityOs, regionOs, citylist, regionlist, cityTxt, regionTxt, desireAuth, Params , validation_list } = this.state;
+        const { selectData, cityOs, regionOs, citylist, regionlist, cityTxt, regionTxt, desireAuth, Params , validation_list, signedType } = this.state;
         const { Option } = Select;
         const { TextArea } = Input;
         const layout = {
@@ -221,7 +240,10 @@ export default class centerO extends React.Component {
             <div className='center_up'>
                  <Form 
                     {...layout}
-                    // initialValuess={{ 'registerRole' : '1'}}
+                    initialValues={{  //数据回填
+                        signedType : Params.signedType == undefined ? 'BY_SPLIT_BILL' : Params.signedType,   //入网类型默认被分帐方
+
+                    }}
                  >
                 <div className='center_left'>
                     <div className='c-x' style={{height : '50px'}}>
@@ -231,8 +253,9 @@ export default class centerO extends React.Component {
                             labelCol={{ style: { width: 150 } }}
                             rules={[{ required: this.listTypes('signedType') == true ? true : false }]}
                         >
-                            <Radio.Group name="radiogroup" defaultValue={1}>
-                                <Radio value={1}>被分帐方</Radio>
+                            <Radio.Group name="signedType" onChange={this.signedTypeRadio.bind(this)}>
+                                <Radio value='BY_SPLIT_BILL' >被分帐方</Radio>
+                                <Radio value='GENERAL_SUB_MERCHANT' >收单子户</Radio>
                             </Radio.Group>
                         </Form.Item>
                         
@@ -269,7 +292,13 @@ export default class centerO extends React.Component {
                                     style={{ width: 200 }}
                                 >
                                     {selectData.contract.map((item, index) => (
-                                        <Option key={index} value={item.value}>{item.txt}</Option>
+                                        signedType == 'GENERAL_SUB_MERCHANT' ? 
+
+                                            item.value !== 'ENTERPRISE_LEGAL_PERSON' ? 
+                                                <Option key={index} value={item.value} disabled>{item.txt}</Option>
+                                            :<Option key={index} value={item.value}>{item.txt}</Option>
+
+                                        : <Option key={index} value={item.value}>{item.txt}</Option>
                                     ))}
                                 </Select>
                             </Form.Item>
@@ -319,7 +348,7 @@ export default class centerO extends React.Component {
                                 validateStatus = {validation_list.find((item,index) => { return item == 'contactName'}) !== undefined ? 'error' : null}
                                 help = {validation_list.find((item,index) => { return item == 'contactName'}) !== undefined ? '此项为必填项!' : null}
                             >
-                                <Input id='myname' style={{ width: 200 }} placeholder='请输入商户简称' defaultValue={Params.contactName} />
+                                <Input id='myname' style={{ width: 200 }} placeholder='请输入联系人姓名' defaultValue={Params.contactName} />
                             </Form.Item>
                     </div>
                     <div className='c-l'>
@@ -331,7 +360,7 @@ export default class centerO extends React.Component {
                                 validateStatus = {validation_list.find((item,index) => { return item == 'contactEmail'}) !== undefined ? 'error' : null}
                                 help = {validation_list.find((item,index) => { return item == 'contactEmail'}) !== undefined ? '此项为必填项!' : null}
                             >
-                                <Input id='mymail' style={{ width: 200 }} placeholder='请输入商户简称' defaultValue={Params.contactEmail} />
+                                <Input id='mymail' style={{ width: 200 }} placeholder='请输入联系人邮箱' defaultValue={Params.contactEmail} />
                             </Form.Item>
                     </div>
                     <div className='c-l'>
@@ -399,7 +428,7 @@ export default class centerO extends React.Component {
                     </div>
                     <div className='c-x' style={{marginBottom : '30px'}}>
                         <Form.Item
-                            label="经营地址区"
+                            label="详细地址"
                             name="businessAddress"
                             labelCol={{ style: { width: 150 } }}
                             rules={[{ required: this.listTypes('businessAddress') == true ? true : false , message: ''}]}
@@ -421,7 +450,17 @@ export default class centerO extends React.Component {
                             validateStatus = {validation_list.find((item,index) => { return item == 'businessClassification'}) !== undefined ? 'error' : null}
                             help = {validation_list.find((item,index) => { return item == 'businessClassification'}) !== undefined ? '此项为必填项!' : null}
                         >
-                             <Select size='default' placeholder="请选择业务类型" defaultValue={Params.businessClassification} onChange={this.handleChange.bind(this)} style={{ width: 400 }}>
+                             <Select 
+                                showSearch
+                                size='default' 
+                                placeholder="请选择业务类型" 
+                                defaultValue={Params.businessClassification} 
+                                onChange={this.handleChange.bind(this)} 
+                                style={{ width: 400 }}
+                                filterOption={(input, option) =>
+                                    option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
+                                }
+                             >
                                 {selectData.fication.map((item, index) => (
                                     <Option key={index} value={item.value}>{item.txt}</Option>
                                 ))}

+ 236 - 16
src/component/center-s/centerS.jsx

@@ -1,9 +1,10 @@
 import React from 'react';
-import { Radio, Select, Input, Form } from 'antd';
-// import { $Axios } from '../../common/publish';
+import { Radio, Select, Input, Form, DatePicker , TimePicker } from 'antd';
+import 'moment/locale/zh-cn';
+import locale from 'antd/es/date-picker/locale/zh_CN';
 import select_data from '../../common/ssq';
 import '../center-s/centerS.scss'
-
+const { Option } = Select;
 export default class centerS extends React.Component {
     constructor(props) {
         super(props)
@@ -18,7 +19,10 @@ export default class centerS extends React.Component {
             offlist: select_data.offlist,
             validation_list: [],
             form_width: 200,
-            contactName : JSON.parse(localStorage.getItem('oData')).contactName
+            signedType: null,
+            starTime : '',
+            endTime : '',
+            idType : null
         }
 
     }
@@ -56,11 +60,40 @@ export default class centerS extends React.Component {
 
             }
         }
+        let registerRole = JSON.parse(localStorage.getItem('oData')).registerRole;
+        let signedType = JSON.parse(localStorage.getItem('oData')).signedType;
+        this.setState({
+            signedType: signedType
+        })
+      
+        if (signedType == 'GENERAL_SUB_MERCHANT') {
+            this.setState({
+                offlist: select_data.GENERAL_SUB_MERCHANT,
+            });
+        } else {
+            if (registerRole == 'INDIVIDUAL_BUSINESS') { //个体工商户
+                this.setState({
+                    offlist: select_data.INDIVIDUAL_BUSINESS
+                })
+            }
+
+            if (registerRole == 'NATURAL_PERSON') {  //自然人
+                this.setState({
+                    offlist: select_data.NATURAL_PERSON
+                })
+            }
+
+            if (registerRole == 'offlist') { //默认
+                this.setState({
+                    offlist: select_data.offlist
+                })
+            }
+        }
     }
 
     InputSdata(e) {
         let Params = {
-            bankCode: this.state.Params.bankCode,//开户行
+            bankCode: this.state.Params.bankCode == undefined ? '' : this.state.Params.bankCode,//开户行
             bankBranchName: document.getElementById("bankBranchName").value,//支行名称
             accountName: document.getElementById("accountName").value,//开户名称
             bankCardNo: document.getElementById("bankCardNo").value,//开户账号
@@ -72,6 +105,19 @@ export default class centerS extends React.Component {
             withdrawRateType: '',//提现费率类型
             // withdrawRate: document.getElementById("withdrawRate").value,//提现费率
             withdrawRate: '',//提现费率
+
+            // 收单子户独立参数
+            name : document.getElementById("name").value, //最终受益人姓名
+            idType : this.state.Params.idType == undefined ? '' : this.state.Params.idType,//最终受益人证件类型
+            idNo : document.getElementById("idNo").value, //最终受益人证件号码
+            effectiveDateStart : this.state.Params.effectiveDateStart == undefined ? '' : this.state.Params.effectiveDateStart,//证件有效期开始时间
+            effectiveDateEnd : this.state.Params.effectiveDateEnd == undefined ? '' : this.state.Params.effectiveDateEnd,//证件有效期结束时间
+            address : document.getElementById("address").value, //最终受益人住址
+            equityRatio : document.getElementById("equityRatio").value, //股权占比
+            receiverName : document.getElementById("receiverName").value, //收件人姓名
+            receiverPhone : document.getElementById("receiverPhone").value, //收件人电话
+            receiverAddress : document.getElementById("receiverAddress").value, //收件人地址
+
         }
         localStorage.setItem('sData', JSON.stringify(Params))
         return Params
@@ -108,7 +154,7 @@ export default class centerS extends React.Component {
         this.state.Params.accountType = accountType;
         this.setState({
             regisClick: accountType
-        })
+        });
     }
 
     onChangeRadio_s(e) {
@@ -127,14 +173,35 @@ export default class centerS extends React.Component {
         return type
     }
 
+
+
     verification(e) { //暴露给父组件的方法,验证当前页面必填项
         this.setState({
             validation_list: e,
         })
     }
 
+    starTime = (value, dateString) => {
+        this.state.Params.effectiveDateStart = dateString
+        this.setState({
+            starTime: dateString
+        })
+
+    }
+
+    endTime = (value, dateString) => {
+        this.state.Params.effectiveDateEnd = dateString
+        this.setState({
+            endTime: dateString
+        })
+    }
+
+    idTypeChange(e){
+        this.state.Params.idType = e;
+    }
+
     render() {
-        const { selectData, cityOs, citylist, Params, contactName, registerRole, regisClick, validation_list, form_width } = this.state;
+        const { selectData, cityOs, citylist, Params, contactName, registerRole, regisClick, validation_list, form_width, signedType } = this.state;
         const { Option } = Select;
         const { TextArea } = Input;
         const layout = {
@@ -150,7 +217,7 @@ export default class centerS extends React.Component {
                         {...layout}
                         onFinish={onFinish}
                         initialValues={{  //数据回填
-                            accountName : Params.bankBranchName
+                            accountName: Params.accountName
                         }}
                     >
                         <div className='c-l'>
@@ -162,7 +229,18 @@ export default class centerS extends React.Component {
                                 validateStatus={validation_list.find((item, index) => { return item == 'bankCode' }) !== undefined ? 'error' : null}
                                 help={validation_list.find((item, index) => { return item == 'bankCode' }) !== undefined ? '此项为必填项!' : null}
                             >
-                                <Select size='default' placeholder="请选择开户行" defaultValue={Params.bankCode} onChange={this.selectChange_1.bind(this)} style={{ width: 200 }}>
+                                <Select
+                                    showSearch
+                                    size='default'
+                                    placeholder="请选择开户行"
+                                    defaultValue={Params.bankCode}
+                                    onChange={this.selectChange_1.bind(this)}
+                                    style={{ width: 200 }}
+                                    optionFilterProp="children"
+                                    filterOption={(input, option) =>
+                                        option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
+                                    }
+                                >
                                     {selectData.contractS.map((item, index) => (
                                         <Option key={index} value={item.value}>{item.txt}</Option>
                                     ))}
@@ -191,7 +269,7 @@ export default class centerS extends React.Component {
                                 validateStatus={validation_list.find((item, index) => { return item == 'accountName' }) !== undefined ? 'error' : null}
                                 help={validation_list.find((item, index) => { return item == 'accountName' }) !== undefined ? '此项为必填项!' : null}
                             >
-                                <Input id='accountName' style={{ width: form_width }}  placeholder="请输入开户名称" />
+                                <Input id='accountName' style={{ width: form_width }} placeholder="请输入开户名称" />
                             </Form.Item>
                         </div>
                         <div className='c-l'>
@@ -248,10 +326,21 @@ export default class centerS extends React.Component {
                                 validateStatus={validation_list.find((item, index) => { return item == 'accountType' }) !== undefined ? 'error' : null}
                                 help={validation_list.find((item, index) => { return item == 'accountType' }) !== undefined ? '此项为必填项!' : null}
                             >
-                                <Radio.Group name="radiogroup" defaultValue={Params.accountType == undefined ? registerRole == 2 ? 'PUBLIC' : 'PRIVATE' : Params.accountType} onChange={this.onChangeRadio.bind(this)}>
-                                    <Radio value='PUBLIC'>对公</Radio>
-                                    <Radio value='PRIVATE'>对私</Radio>
-                                </Radio.Group>
+                                {
+                                    signedType == 'GENERAL_SUB_MERCHANT' && 
+                                    <Radio.Group name="radiogroup" defaultValue='PUBLIC' onChange={this.onChangeRadio.bind(this)}>
+                                        <Radio value='PUBLIC'>对公</Radio>
+                                        <Radio value='PRIVATE' disabled={signedType == 'GENERAL_SUB_MERCHANT' ? true : false}>对私</Radio>
+                                    </Radio.Group>
+                                }
+                                {
+                                    signedType !== 'GENERAL_SUB_MERCHANT' && 
+                                    <Radio.Group name="radiogroup" defaultValue='PUBLIC' onChange={this.onChangeRadio.bind(this)}>
+                                        <Radio value='PUBLIC'>对公</Radio>
+                                        <Radio value='PRIVATE'>对私</Radio>
+                                    </Radio.Group>
+                                }
+                                
                             </Form.Item>
                         </div>
                         <div className='c-l'>
@@ -266,7 +355,7 @@ export default class centerS extends React.Component {
                                 <Radio.Group name="radiogroup" defaultValue='WITHDRAW'>
                                     <Radio value='WITHDRAW'>提现</Radio>
                                 </Radio.Group>
-                            </Form.Item>                       
+                            </Form.Item>
                         </div>
                         {/* <div className='c-l'>
                             <Form.Item
@@ -297,7 +386,138 @@ export default class centerS extends React.Component {
                         </div> */}
                     </Form>
                 </div>
-                <div className='center_right'> </div>
+                <div className='center_right'>
+                    { signedType == 'GENERAL_SUB_MERCHANT' &&
+                        <Form>
+                            <div className='c-l'>
+                                <Form.Item
+                                    label="最终受益人姓名"
+                                    name="name"
+                                    labelCol={{ style: { width: 150 } }}
+                                    rules={[{ required: this.listTypes('name') == true ? true : false, message: '' }]}
+                                    validateStatus={validation_list.find((item, index) => { return item == 'name' }) !== undefined ? 'error' : null}
+                                    help={validation_list.find((item, index) => { return item == 'name' }) !== undefined ? '此项为必填项!' : null}
+                                >
+                                    <Input id='name' style={{ width: form_width }} defaultValue={Params.name} placeholder="请输入最终受益人姓名" />
+                                </Form.Item>
+                            </div>
+                            <div className='c-l'>
+                                <Form.Item
+                                    label="最终受益人证件类型"
+                                    name="idType"
+                                    labelCol={{ style: { width: 150 } }}
+                                    rules={[{ required: this.listTypes('idType') == true ? true : false, message: '' }]}
+                                    validateStatus={validation_list.find((item, index) => { return item == 'idType' }) !== undefined ? 'error' : null}
+                                    help={validation_list.find((item, index) => { return item == 'idType' }) !== undefined ? '此项为必填项!' : null}
+                                >
+                                    <Select size='default' placeholder="请选择最终受益人证件类型" defaultValue={Params.idType}  style={{ width: 200 }} onChange={this.idTypeChange.bind(this)}>
+                                        {selectData.beneficiaryArr.map((item, index) => (
+                                            <Option key={index} value={item.value}>{item.txt}</Option>
+                                        ))}
+                                    </Select>
+                                </Form.Item>
+                            </div>
+                            <div className='c-l'>
+                                <Form.Item
+                                    label="最终受益人证件号码"
+                                    name="idNo"
+                                    labelCol={{ style: { width: 150 } }}
+                                    rules={[{ required: this.listTypes('idNo') == true ? true : false, message: '' }]}
+                                    validateStatus={validation_list.find((item, index) => { return item == 'idNo' }) !== undefined ? 'error' : null}
+                                    help={validation_list.find((item, index) => { return item == 'idNo' }) !== undefined ? '此项为必填项!' : null}
+                                >
+                                    <Input id='idNo' style={{ width: form_width }} defaultValue={Params.idNo} placeholder="请输入最终受益人证件号码" />
+                                </Form.Item>
+                            </div>
+                            <div className='c-l'>
+                                <Form.Item
+                                    label="证件有效期开始日期"
+                                    name="effectiveDateStart"
+                                    labelCol={{ style: { width: 150 } }}
+                                    rules={[{ required: this.listTypes('effectiveDateStart') == true ? true : false, message: '' }]}
+                                    validateStatus={validation_list.find((item, index) => { return item == 'effectiveDateStart' }) !== undefined ? 'error' : null}
+                                    help={validation_list.find((item, index) => { return item == 'effectiveDateStart' }) !== undefined ? '此项为必填项!' : null}
+                                >
+                                   <DatePicker key='starTime' style={{ width: form_width }} onChange={this.starTime} locale={locale} placeholder='请选择开始时间' />
+                                </Form.Item>
+                            </div>
+                            <div className='c-l'>
+                                <Form.Item
+                                    label="证件有效期结束日期"
+                                    name="effectiveDateEnd"
+                                    labelCol={{ style: { width: 150 } }}
+                                    rules={[{ required: this.listTypes('effectiveDateEnd') == true ? true : false, message: '' }]}
+                                    validateStatus={ validation_list.find((item, index) => { return item == 'effectiveDateEnd' }) !== undefined ? 'error' : null}
+                                    help={ validation_list.find((item, index) => { return item == 'effectiveDateEnd' }) !== undefined ? '此项为必填项!' : null}
+                                >
+                                   <DatePicker key='starTime' style={{ width: form_width }} onChange={this.endTime} locale={locale} placeholder='请选择结束时间' />
+                                </Form.Item>
+                            </div>
+                            <div className='c-x' style={{marginBottom : '30px'}}>
+                                <Form.Item
+                                    label="	最终受益人住址"
+                                    name="address"
+                                    labelCol={{ style: { width: 150 ,height : 300} }}
+                                    rules={[{ required: this.listTypes('address') == true ? true : false, message: '' }]}
+                                    validateStatus={ validation_list.find((item, index) => { return item == 'address' }) !== undefined ? 'error' : null}
+                                    help={ validation_list.find((item, index) => { return item == 'address' }) !== undefined ? '此项为必填项!' : null}
+                                >
+                                   <div className='TextAreas' >
+                                        <TextArea id='address' style={{ resize: 'none' }} defaultValue={Params.address} rows={6} />
+                                    </div>
+                                </Form.Item>
+                            </div>
+                            <div className='c-l'>
+                                <Form.Item
+                                    label="股权占比"
+                                    name="equityRatio"
+                                    labelCol={{ style: { width: 150 } }}
+                                    rules={[{ required: this.listTypes('equityRatio') == true ? true : false, message: '' }]}
+                                    validateStatus={validation_list.find((item, index) => { return item == 'equityRatio' }) !== undefined ? 'error' : null}
+                                    help={validation_list.find((item, index) => { return item == 'equityRatio' }) !== undefined ? '此项为必填项!' : null}
+                                >
+                                    <Input id='equityRatio' style={{ width: form_width }} defaultValue={Params.equityRatio} placeholder="请输入股权占比" />
+                                </Form.Item>
+                            </div>
+                            <div className='c-l'>
+                                <Form.Item
+                                    label="收件人姓名"
+                                    name="receiverName"
+                                    labelCol={{ style: { width: 150 } }}
+                                    rules={[{ required: this.listTypes('receiverName') == true ? true : false, message: '' }]}
+                                    validateStatus={validation_list.find((item, index) => { return item == 'receiverName' }) !== undefined ? 'error' : null}
+                                    help={validation_list.find((item, index) => { return item == 'receiverName' }) !== undefined ? '此项为必填项!' : null}
+                                >
+                                    <Input id='receiverName' style={{ width: form_width }} defaultValue={Params.receiverName} placeholder="请输入收件人姓名" />
+                                </Form.Item>
+                            </div>
+                            <div className='c-l'>
+                                <Form.Item
+                                    label="收件人电话"
+                                    name="receiverPhone"
+                                    labelCol={{ style: { width: 150 } }}
+                                    rules={[{ required: this.listTypes('receiverPhone') == true ? true : false, message: '' }]}
+                                    validateStatus={validation_list.find((item, index) => { return item == 'receiverPhone' }) !== undefined ? 'error' : null}
+                                    help={validation_list.find((item, index) => { return item == 'receiverPhone' }) !== undefined ? '此项为必填项!' : null}
+                                >
+                                    <Input id='receiverPhone' style={{ width: form_width }} defaultValue={Params.receiverPhone} placeholder="请输入收件人电话" />
+                                </Form.Item>
+                            </div>
+                            <div className='c-l'>
+                                <Form.Item
+                                    label="收件人地址"
+                                    name="receiverAddress"
+                                    labelCol={{ style: { width: 150 } }}
+                                    rules={[{ required: this.listTypes('receiverAddress') == true ? true : false, message: '' }]}
+                                    validateStatus={validation_list.find((item, index) => { return item == 'receiverAddress' }) !== undefined ? 'error' : null}
+                                    help={validation_list.find((item, index) => { return item == 'receiverAddress' }) !== undefined ? '此项为必填项!' : null}
+                                >
+                                    <Input id='receiverAddress' style={{ width: form_width }} defaultValue={Params.receiverAddress} placeholder="请输入收件人地址" />
+                                </Form.Item>
+                            </div>
+                        </Form>
+                    }
+                </div>
             </div>
         )
     }

+ 22 - 15
src/component/center-w/centerW.jsx

@@ -54,28 +54,35 @@ export default class centerW extends React.Component {
     componentDidMount() {
         this.props.onRef(this);
         let registerRole = JSON.parse(localStorage.getItem('oData')).registerRole;
+        let signedType = JSON.parse(localStorage.getItem('oData')).signedType;
         localStorage.setItem('rightArray', JSON.stringify(select_data.rightArray))
         this.setState({
             registerRole: registerRole,
         });
-
-        if (registerRole == 'INDIVIDUAL_BUSINESS') { //个体工商户
-            this.setState({
-                offlist: select_data.INDIVIDUAL_BUSINESS
-            })
-        }
-
-        if (registerRole == 'NATURAL_PERSON') {  //自然人
+        if(signedType == 'GENERAL_SUB_MERCHANT'){
             this.setState({
-                offlist: select_data.NATURAL_PERSON
-            })
-        }
-
-        if (registerRole == 'offlist') { //默认
-            this.setState({
-                offlist: select_data.offlist
+                offlist: select_data.GENERAL_SUB_MERCHANT
             })
+        }else{
+            if (registerRole == 'INDIVIDUAL_BUSINESS') { //个体工商户
+                this.setState({
+                    offlist: select_data.INDIVIDUAL_BUSINESS
+                })
+            }
+    
+            if (registerRole == 'NATURAL_PERSON') {  //自然人
+                this.setState({
+                    offlist: select_data.NATURAL_PERSON
+                })
+            }
+    
+            if (registerRole == 'offlist') { //默认
+                this.setState({
+                    offlist: select_data.offlist
+                })
+            }
         }
+        
     }
 
     toParent = (data) => {