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 ? (