import React, { Component, Fragment } from 'react';
import { connect } from 'dva';
import {
Form,
InputNumber,
Table, Button, Popconfirm,
} from 'antd';
import global from '@/global.less';
import { sldTsvg, getSldEmptyH, formItemLayoutModal,sldComLanguage } from '@/utils/utils';
import SldEditFormCom from '../SldEditFormCom/SldEditFormCom';
import SldModal from '../SldModal/SldModal';
import areaData from '../../assets/area.json'
import defaultSettings from '@/defaultSettings';
const FormItem = Form.Item;
let sthis = '';
@connect(({ business }) => ({
business,
}))
export default class SldExpressCom extends Component {
constructor(props) {
super(props);
sthis = this;
const {
form: { getFieldDecorator },
type,
} = props;
this.state = {
flag: true,
edit_flag: props.edit_flag,
addData: [{
type: 'city_area_deliver',
name: 'deliver_area',
label: `${sldComLanguage('选择地区')}`,
placeholder: `${sldComLanguage('请选择modalVisible')}`,
content: '',
data: [],
}],
modalVisible: false,//是否展示对话框
area_data: areaData,//地区数据
permissionList: [],//地区数据
data_table: [],//表格数据
base_info: [{
type: 'inputnum',
label: `${sldComLanguage('首重/件')}`,
name: 'trans_com_weight' + type,
placeholder: `${sldComLanguage('首重/件(kg/件)')}`,
initialValue: '',
precision: 1,
step:1,
min:0,
max:9999,
rules: [{
required: true,
message: `${sldComLanguage('该项必填')}`,
}],
}, {
type: 'inputnum',
label: `${sldComLanguage('首费(元)')}`,
name: 'trans_com_fee' + type,
placeholder: `${sldComLanguage('首费(元)')}`,
initialValue: '',
precision: 2,
step:2,
min:0,
max:9999,
rules: [{
required: true,
message: `${sldComLanguage('该项必填')}`,
}],
}, {
type: 'inputnum',
label: `${sldComLanguage('续重/件')}`,
name: 'trans_com_add_weight' + type,
placeholder: `${sldComLanguage('续重/件(kg/件)')}`,
initialValue: '',
precision: 1,
step:1,
min:0,
max:9999,
rules: [{
required: true,
message: `${sldComLanguage('该项必填')}`,
}],
}, {
type: 'inputnum',
label: `${sldComLanguage('续费(元)')}`,
name: 'trans_com_add_fee' + type,
placeholder: `${sldComLanguage('续费(元)')}`,
precision: 2,
step:1,
min:0,
max:9999,
initialValue: '',
rules: [{
required: true,
message: `${sldComLanguage('该项必填')}`,
}],
}],
column: [
{
title: ' ',
dataIndex: 'key',
align: 'center',
width: 30,
render: (text, record, index) => {
return index + 1;
},
},
{
title: `${sldComLanguage('操作')}`,
align: 'center',
width: 70,
render: (text, record) => {
return (
this.remove(record.key)} okText={`${sldComLanguage('确定')}`} cancelText={`${sldComLanguage('取消')}`}>
{sldTsvg('shanchu', defaultSettings.primaryColor, 20, 20)}
);
},
},
{
title: `${sldComLanguage('配送地区')}`,
align: 'center',
width: 300,
dataIndex: 'deliver_areas',
render: (text, record) => {
return (
{
this.combine_area_info(record.key, record.sele_area_id_array);
}}>{text == '' ? `${sldComLanguage('点击选择配送地区')}` : text}
);
},
},
{
title: `${sldComLanguage('首重/件(kg/元)')}`,
align: 'center',
width: 150,
dataIndex: 'trans_weight',
render: (text, record) => {
return (
{getFieldDecorator(`trans_weight${record.key}${type}`, {
initialValue: text, rules: [{
required: true,
message: `${sldComLanguage('该项必填')}`,
}],
})(
this.handleFieldChange(e, 'trans_weight', record.key)}
placeholder={sldComLanguage('该项必填')}
/>,
)}
);
},
}, {
title: `${sldComLanguage('首费(元)')}`,
align: 'center',
width: 150,
dataIndex: 'trans_fee',
render: (text, record) => {
return (
{getFieldDecorator(`trans_fee${record.key}${type}`, {
initialValue: text, rules: [{
required: true,
message: `${sldComLanguage('该项必填')}`,
}],
})(
this.handleFieldChange(e, 'trans_fee', record.key)}
placeholder={sldComLanguage('该项必填')}
/>,
)}
);
},
}, {
title: `${sldComLanguage('续重/件(kg/元)')}`,
align: 'center',
width: 150,
dataIndex: 'trans_add_weight',
render: (text, record) => {
return (
{getFieldDecorator(`trans_add_weight${record.key}${type}`, {
initialValue: text, rules: [{
required: true,
message: `${sldComLanguage('该项必填')}`,
}],
})(
this.handleFieldChange(e, 'trans_add_weight', record.key)}
placeholder={sldComLanguage('该项必填')}
/>,
)}
);
},
}, {
title: `${sldComLanguage('续费(元)')}`,
dataIndex: 'trans_add_fee',
render: (text, record) => {
return (
{getFieldDecorator(`trans_add_fee${record.key}${type}`, {
initialValue: text, rules: [{
required: true,
message: `${sldComLanguage('该项必填')}`,
}],
})(
this.handleFieldChange(e, 'trans_add_fee', record.key)}
placeholder={sldComLanguage('该项必填')}
/>,
)}
);
},
},
],//表格
};
}
com_area_data = areaData;//通用的地址信息
componentDidMount() {
let { edit_flag, base_info, flag } = this.state;
if (edit_flag == 1 && flag) {
for (let i in base_info) {
base_info[i].initialValue = this.props.base_info[base_info[i].name];
this.setState({
base_info,
flag: false,
});
}
this.setState({ base_info, data_table: this.props.data_table });
}
}
componentWillReceiveProps(nextProps, nextContext) {
this.setState({
data_table: nextProps.data_table,
});
}
//地区数据组装,已经选择的地区id数据跟通用地区组装
combine_area_info = (key, sele_id_array) => {
let tmp_data = this.com_area_data;
let init_com_data = [];
for (let i in tmp_data) {
let tmp_info = {};
tmp_info.key = i;
tmp_info.id = i;
tmp_info.indeterminate = true;//有选中的为true
tmp_info.checkList = [];
tmp_info.sldchild = [];//下级数据
tmp_info.name = tmp_data[i].regionName;
//查看子元素是否有选中的
tmp_info.checkAll = true;//是否全部选中
for (let j in tmp_data[i].children) {
let cur_data = tmp_data[i].children[j];
if (sele_id_array.length == 0) {
tmp_info.checkAll = false;//是否全部选中
} else {
if (sele_id_array.indexOf(cur_data.regionCode) == -1) {
tmp_info.checkAll = false;
} else {
tmp_info.checkList.push(cur_data.regionCode);
}
}
tmp_info.sldchild.push({ id: j, key: j, label: cur_data.regionName, value: cur_data.regionCode });
}
if (tmp_info.checkList.length == 0) {
tmp_info.indeterminate = false;
}
init_com_data.push(tmp_info);
}
this.setState({
cur_key: key,
permissionList: init_com_data,
modalVisible: true,
});
};
getRowByKey(key, newData) {
return (newData).filter(item => item.key === key)[0];
}
//添加一条数据
add_spec_table_item = () => {
const { data_table } = this.state;
let key = data_table.length + 1;
const newData = data_table.map(item => ({ ...item }));
newData.push({
key: key,
deliver_areas: '',
trans_weight: 1,
trans_fee: 1,
trans_add_weight: 1,
trans_add_fee: 1,
sele_area_id_array: [],
});
this.props.save_sele_area(newData);
this.setState({ data_table: newData });
};
remove(key) {
let { data_table } = this.state;
data_table = data_table.filter(item => item.key != key);
this.props.save_sele_area(data_table);
this.setState({ data_table });
}
handleFieldChange(e, fieldName, key) {
const { data_table } = this.state;
const newData = data_table.map(item => ({ ...item }));
const target = this.getRowByKey(key, newData);
if (target) {
target[fieldName] = e;
this.props.save_sele_area(newData);
this.setState({ data_table: newData });
}
}
sldHandleConfirm = (val) => {
this.setSubmiting(true);
const { curData } = this.state;
val.id = curData.id;//待定,id
this.operateGoods(val, 'set');
};
sldHandleCancle = () => {
this.setState({ modalVisible: false });
};
//全选操作
sldHandleCheckAll = (e, index) => {
let { permissionList } = this.state;
permissionList[index]['checkAll'] = e.target.checked;
if (e.target.checked) {
let sldchild = permissionList[index]['sldchild'];
if (sldchild.length > 0) {
for (let i = 0; i < sldchild.length; i++) {
permissionList[index]['checkList'].push(sldchild[i]['value']);
}
}
} else {
permissionList[index]['checkList'] = [];
}
permissionList[index]['indeterminate'] = false;
this.setState({
permissionList: permissionList,
});
};
//单选操作
sldHandleCheckSingle = (checkList, index) => {
let { permissionList } = this.state;
let sldchild = permissionList[index]['sldchild'];
permissionList[index]['checkList'] = checkList;
if (sldchild.length == checkList.length) {
permissionList[index]['indeterminate'] = false;
permissionList[index]['checkAll'] = true;
} else {
permissionList[index]['indeterminate'] = false;
permissionList[index]['checkAll'] = false;
}
this.setState({
permissionList: permissionList,
});
};
//权限保存操作
sldHandleConfirmPer = () => {
let { permissionList, cur_key, data_table } = this.state;
let seleSldPermiss = [];//选中的地区id结合
for (let i = 0; i < permissionList.length; i++) {
seleSldPermiss = seleSldPermiss.concat(permissionList[i]['checkList']);
}
//获取选中的城市名称
let sele_area_name_array = [];
for (let i in permissionList) {
if (permissionList[i].checkList.length > 0) {
for (let j in permissionList[i].sldchild) {
let tmp = permissionList[i].sldchild[j];
if (seleSldPermiss.indexOf(tmp.value) != -1) {
sele_area_name_array.push(tmp.label);
}
}
}
}
for (let i in data_table) {
if (data_table[i].key == cur_key) {
data_table[i].sele_area_id_array = seleSldPermiss;
data_table[i].deliver_areas = sele_area_name_array.join(',');
}
}
this.setState({
data_table,
});
this.props.save_sele_area(data_table);
this.setState({
modalVisible: false,
});
};
render() {
const { column, data_table, base_info, modalVisible, permissionList } = this.state;
const { title } = this.props;
return
{getSldEmptyH(10)}
{/*可编辑表格-start*/}
{/* 可编辑表格-end*/}
{/*地址选择对话框-start*/}
{/*地址选择对话框-end*/}
;
}
}