import React, { Component } from 'react'; import { connect } from 'dva'; import { Form, Input, Select, Button, Upload, Icon, Modal, Cascader, message } from 'antd'; import PFromUpload from '../../../components/Pro/PFromUpload'; // 默认展示图片 // const defaultUploadImg = require('../../../assets/images/upload.png'); import { getCompanyVnvoiceInfo, getDistrictData, uploadUrl, updateCompanyInvoiceInfo } from '../../../services/api'; import PCascader from '../../../components/Pro/PCascader'; const FormItem = Form.Item; const { Option } = Select; const { TextArea } = Input; @connect(state => ({ profile: state.profile })) @Form.create() export default class Invoice extends Component { state = { loading: false, telephone: '', bankAccount: '', bank: '建设银行', province: '', city: '', area: '', address: '', taxRegCerNo: '', taxPayerType: '', // "comId": '', comName: '', comProvice: '', comCity: '', comArea: '', previewVisible: false, previewImage: '', options: [], // authEntrustUrlList: '', personType: { tax: { visible: true, url: '' }, business: { visible: true, url: '' }, general: { visible: true, url: '' }, bank: { visible: true, url: '' } } }; componentDidMount() { /* (async () => { const data = await getDistrictData({}).catch((err) => { console.log(err); }); console.log(data, 'async'); })(); */ // getDistrictData({}).then( // data1 => { // function generadata(data) { // return data.map(val => { // const obj = {}; // obj.label = val.regionName; // obj.value = val.regionId + ''; // if (val.childs && val.childs.length > 0) { // obj.children = generadata(val.childs); // } // return obj; // }); // } // const options1 = generadata(data1.data); // this.setState({ options: options1 }); this.getCompanyVnvoiceInfoSd(); // }, // err => { // console.log(err, 'getDistrictData'); // } // ); } getCompanyVnvoiceInfoSd = () => { getCompanyVnvoiceInfo({}).then( data => { const { personType } = this.state; if (data.data && data.data.taxPayerType === '2') { personType.general.visible = false; personType.bank.visible = false; } this.setState({ ...data.data, personType }); personType.tax.url = data.data.taxRegCerUrl; personType.business.url = data.data.businessLicenseUrl; personType.general.url = data.data.generalTaxProveUrl; personType.bank.url = data.data.bankAccountLicenseUrl; const { comArea, comCity, comProvice,comName,comAddress,province,city,area } = data.data; this.setState({ personType, comName, comProvice, comCity, comArea, comAddress, province, city, area }); }, err => { console.log(err, 'getCompanyVnvoiceInfo'); } ); }; handleCancel = () => this.setState({ previewVisible: false }); handlePreview = file => { this.setState({ previewImage: file.url || file.thumbUrl, previewVisible: true }); }; beforeUpload = file => { const types = ['image/png', 'image/jpeg', 'image/jpg']; if (types.indexOf(file.type) === -1) { message.error('只能上传图片!'); return false; } const isLt8M = file.size / 1024 / 1024 < 8; if (!isLt8M) { message.error('图片大小大于8MB!'); return false; } return true; // return isJPG && isPNG && isLt8M; }; handleChange = (info, field) => { //除了移除状态,上传过程中,判断是否符合上传规则 let result = true; if (status !== 'removed') { result = this.beforeUpload(info.file); } if (!result) { return; } const { setFieldsValue } = this.props.form; let { fileList } = info; fileList = fileList.slice(-1); this.setState({ [field + 'List']: fileList }); if (info.file.status === 'removed') { message.error('至少需要一张图片'); return; } if (info.file.status !== 'uploading') { if (info.file.response) { // if (info.file.response.retType === "-1") { if (info.file.response.retType !== '0') { const defaultFile = [ { uid: -2, // name: 'xxx.png', status: 'done', url: '' } ]; this.setState({ [field + 'List']: defaultFile }); message.error(info.file.response.msg); return; } } else { return; } } if (info.file.status === 'done') { // if (info.file.response.retType === "0") { message.success(`${info.file.name} 文件上传成功`); this.setState({ [field + 'List']: fileList, [field]: fileList[0].response.data }); setFieldsValue({ [field]: fileList.slice(-1) }); // } else { // setFieldsValue({ [field]: "" }); // message.error(`${info.file.response.msg}`); // } } else if (info.file.status === 'error') { // setFieldsValue({ [field]: "" }); message.error(`${info.file.name} 文件上传失败.`); } }; handleSubmit = e => { e.preventDefault(); this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { /* this.props.dispatch({ type: 'form/submitRegularForm', payload: values, }); */ const data = { ...values, province: '' }; [data.province, data.city, data.area] = values.provinceCityArea; if (!data.city || data.area == 'null') { delete data.city; } if (!data.area || data.area == 'null') { delete data.area; } // data.comId = this.state.comId; delete data.comProviceComCityComArea; delete data.comAddress; delete data.provinceCityArea; this.setState({ loading: true }); updateCompanyInvoiceInfo(data).then(() => { this.setState({ loading: false }); }).catch(() => { this.setState({ loading: false }); }); // message.success('提交成功!'); } }); }; //验证电话 checkTel = (rule, value, callback) => { if (value && !/^((0\d{2,3}-\d{7,8})|(1[0-9]{10}))$/.test(value)) { callback('请输入正确的电话!'); } else { callback(); } }; //验证公司银行账号, checkBank = (rule, value, callback) => { if (value && !/^[0-9]{1,50}$/.test(value)) { callback('请输入正确的公司银行账号,仅限数字,字符长度不大于50!'); } else { callback(); } }; //验证税务登记证号码 checkTaxRegCerNo = (rule, value, callback) => { if (value && !/^[A-Za-z0-9]+$/.test(value)) { callback('请输入正确的税务登记证号码!'); } else { callback(); } }; // 根据用户选择纳税人类别,来区分显示证件扫描件的上传内容 handlePersonType = value => { const { personType } = this.state; if (value === '2') { personType.general.visible = false; personType.bank.visible = false; this.setState({ personType }); } else { personType.general.visible = true; personType.bank.visible = true; this.setState({ personType }); } }; // 显示证件扫描件的上传内容渲染函数 uploadSortsRender = () => { const { getFieldDecorator } = this.props.form; const formItemLayout = { labelCol: { xs: { span: 24 }, sm: { span: 7 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 12 }, md: { span: 10 } } }; const { state } = this; const uploadSorts = [ // { // filelist: state.personType.tax.url, // filed: 'taxRegCerUrl', // action: uploadUrl, // url: state.taxRegCerUrl, // label: '税务登记证', // msg: '请上传税务登记证', // name: 'xfile', // visible: state.personType.tax.visible // }, { filelist: state.personType.business.url, filed: 'businessLicenseUrl', action: uploadUrl, url: state.businessLicenseUrl, label: '社会统一信用代码证', msg: '请上社会统一信用代码证', name: 'xfile', visible: state.personType.business.visible }, { filelist: state.personType.general.url, filed: 'generalTaxProveUrl', action: uploadUrl, url: state.generalTaxProveUrl, label: '一般纳税人证明', msg: '请上传一般纳税人证明', name: 'xfile', visible: state.personType.general.visible }, { filelist: state.personType.bank.url, filed: 'bankAccountLicenseUrl', action: uploadUrl, url: state.bankAccountLicenseUrl, label: '银行开户许可证', msg: '请上传银行开户许可证', name: 'xfile', visible: state.personType.bank.visible } ]; return uploadSorts.map(val => { const item = val; return val.visible ? ( {getFieldDecorator(val.filed, { initialValue: item.filelist, rules: [{ required: true, message: val.msg }] })()} ) : null; }); }; render() { const { getFieldDecorator } = this.props.form; const { previewVisible, previewImage } = this.state; const formItemLayout = { labelCol: { xs: { span: 24 }, sm: { span: 7 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 12 }, md: { span: 10 } } }; const { state } = this; return (
基本信息
{getFieldDecorator('comName', { initialValue: state.comName, rules: [] })()} {getFieldDecorator('telephone', { initialValue: state.telephone, rules: [ { required: true, message: '请输入电话!' }, { validator: this.checkTel } ] })()} {getFieldDecorator('comProviceComCityComArea', { initialValue: [parseInt(state.comProvice), parseInt(state.comCity), parseInt(state.comArea)], rules: [{ required: true, message: '请选择国籍/地区' }] })( // {}} /> )} {getFieldDecorator('comAddress', { initialValue: state.comAddress, rules: [ { required: true, message: '请输入街道!' } ] })(