import {Table,Icon,Row,Col,Button,Spin} from 'antd'
import {WeaTools,WeaInput,WeaSelect,WeaBrowser,WeaLocaleProvider} from 'ecCom'
const getLabel = WeaLocaleProvider.getLabel;
import equal from 'deep-equal'
const { getComponent } = WeaTools;
class CustomerShare extends React.Component {
constructor(props) {
super(props);
this.state = {
columns: [],
datas: [],
selectedRowKeys: [],
current: 1,
showGroup: props.showGroup ? props.showGroup : false
}
this.doDelete = this.doDelete.bind(this);
this.doAdd = this.doAdd.bind(this);
}
componentDidMount() {
const { datas = [], columns = [] } = this.props;
columns.length > 0 && this.setState(datas.length > 0 ? {datas: this.addKeytoDatas(datas),columns} : {columns})
}
componentWillReceiveProps(nextProps,nextState) {
const { columns = [], datas = [], selectedRowKeys = [] } = this.props;
const _columns = nextProps.columns || [];
const _datas = nextProps.datas || [];
const _selectedRowKeys = nextProps.selectedRowKeys || [];
!equal(columns,_columns) && this.setState({columns:_columns});
this.setState({datas: this.addKeytoDatas(_datas)});
!equal(selectedRowKeys,_selectedRowKeys) && this.setState({selectedRowKeys:_selectedRowKeys})
}
addKeytoDatas(datas){
let _datas = datas.map((data, i) => {
let _data = {...data};
_data.key = i
return _data
})
return _datas
}
render() {
const { datas,showGroup,columns, selectedRowKeys } = this.state;
const {title,needAdd,needCopy} = this.props;
return(
{title}
{needAdd &&
this.setState({showGroup:!showGroup})}/>
}
)
}
getColumns(){
const { columns } = this.state;
let _columns = [].concat(columns);
_columns = _columns.map(col => {
let _col = { ...col };
_col.render = ( text, record, index ) => {
return this.getColRender( _col, text, record, index );
}
return _col
});
return _columns
}
getColRender( _col, text, record, index ){
const { com,isLink = false,linkKey =[],linkUrl=""} = _col;
let _com = [];
com.map((c,i) => {
if(typeof c.props === 'object'){
_com.push(c);
}else{
const { domkey,viewAttr =2,key, label, formItemType = 'INPUT', options = [], browserConditionParam = {}, width ,value } = c;
const _type = formItemType.toUpperCase();
_com.push(
{label && {label}}
{ _type === 'INPUT' && !isLink &&
}
)
}
});
return (
{_com}
)
}
getRowSelection(){
const { columns, selectedRowKeys } = this.state;
if(!`${columns}`) return null
const rowSelection = {
selectedRowKeys,
onChange: (sRowKeys, selectedRows) => {
this.setState({selectedRowKeys : sRowKeys});
}
}
return rowSelection
}
doAdd(){
typeof this.props.addColumns === 'function' && this.props.addColumns();
}
doDelete(){
const { datas, current, selectedRowKeys } = this.state;
let _datas = [].concat(datas);
selectedRowKeys.map(key => {
_datas = _datas.filter(data => data.key !== key);
});
_datas = _datas.map((data, i) => {
let _data = {...data};
_data.key = i;
return _data
})
this.setState({datas: _datas,selectedRowKeys: []});
this.onChange(_datas);
}
onChange(datas){
const { columns } = this.state;
let _datas = datas.map((data, i) => {
let _data = {...data}
delete _data.key
return _data
});
typeof this.props.onChange === 'function' && this.props.onChange(_datas, columns);
}
}
export default CustomerShare;