import React from 'react';
import {
Button, Cascader, Input, Select, Tag,
Spin, Table, message, Form, Col, Tabs, Modal, Icon, AutoComplete
} from 'antd';
import ajax from 'jquery/src/ajax/xhr.js';
import $ from 'jquery/src/ajax';
import {areaSelect, citySelect, provinceList } from '@/NewDicProvinceList';
import { ShowModal, onReplace } from '../../../../tools.js'
import { socialAttribute, customerSource } from '@/dataDic.js';
import Outbound from '../../NEW/components/outbound';
import ShowModalDiv from "@/showModal.jsx";
import { ChooseList } from "../../../order/orderNew/chooseList";
import TextArea from "antd/es/input/TextArea";
const QueryCustomer = React.createClass({
loadData(pageNo, apiUrl) {
// 新需求 除湖南和内蒙古外 不让其他省操作
if (adminData.province != "21" && adminData.province != "11") {
return
}
this.setState({
loading: true,
ispage: pageNo,
});
let api = apiUrl ? apiUrl : this.props.ApiUrl;
$.ajax({
method: "post",
dataType: "json",
crossDomain: false,
url: globalConfig.context + api,
data: {
pageNo: pageNo || 1,
pageSize: this.state.pagination.pageSize,
name: this.state.nameSearch,
province: !this.state.addressSearch.length
? this.state.provinceSearch
: this.state.addressSearch[0],
city: !this.state.addressSearch.length
? ""
: this.state.addressSearch[1],
sort: this.state.sort
},
success: function (data) {
ShowModal(this);
let theArr = [];
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
for (let i = 0; i < data.data.list.length; i++) {
let thisdata = data.data.list[i];
theArr.push({
key: i,
id: thisdata.uid,
name: thisdata.name,
contacts: thisdata.contacts,
contactMobile: thisdata.contactMobile,
signBills: thisdata.signBills,
createTime:
thisdata.createTime && thisdata.createTime.split(" ")[0],
transferTime:
thisdata.transferTime && thisdata.transferTime.split(" ")[0],
locationProvince: thisdata.province
? (thisdata.province || '') + (thisdata.city ? "-" + thisdata.city : '') + (thisdata.area ? "-" + thisdata.area : '')
: "--",
});
}
this.state.pagination.current = data.data.pageNo;
this.state.pagination.total = data.data.totalCount;
}
if (data.data && data.data.list && !data.data.list.length) {
this.state.pagination.current = 0;
this.state.pagination.total = 0;
}
this.setState({
dataSource: theArr,
pagination: this.state.pagination,
selectedRowKeys: [],
});
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
},
getInitialState() {
return {
verification: false,
businessScope: [],
cooperationProjects: [],
selectCooperationProjects: [],
sort: 0,
addressSearch: [],
dataSource: [],
loading: false,
selectedRowKeys: [],
selectedRows: [],
selectedData: [],
pagination: {
defaultCurrent: 1,
defaultPageSize: 10,
showQuickJumper: true,
pageSize: 10,
onChange: function (page) {
this.loadData(page);
}.bind(this),
showTotal: function (total) {
return '共' + total + '条数据';
}
},
columns: [{
title: '客户名称',
dataIndex: 'name',
key: 'name',
render: (text, record, index) =>
onReplace(text)
},
{
title: '地区',
dataIndex: 'locationProvince',
key: 'locationProvince',
},
// {
// title: '联系人',
// dataIndex: 'contacts',
// key: 'contacts',
// },{
// title: '联系电话',
// dataIndex: 'contactMobile',
// key: 'contactss',
// },
{
title: '创建时间',
dataIndex: 'createTime',
key: 'createTime',
},
{
title: '转换时间',
dataIndex: 'transferTime',
key: 'transferTime',
width: 500,
render: (text, record) => {
return
{text}
{!this.props.intentionState &&
}
}
},
{
title: '操作',
dataIndex: 'abc',
key: 'abc',
width: 250,
render: (text, record, index) => {
return
}
}
],
}
},
handleClose(removedTag) {
let businessScope = this.state.businessScope.filter(tag => { return tag !== removedTag });
this.setState({ businessScope });
},
handleCloseCooperation(removedTag) {
let selectCooperationProjects = this.state.selectCooperationProjects.filter(tag => { return tag.value !== removedTag.value });
this.setState({ selectCooperationProjects });
},
showInput() {
let str = this.state.businessScope.join('/')
this.setState({
inputVisible: true,
inputValue: str
});
},
handleInputConfirm() {
let inputValue = this.state.inputValue;
let arr = inputValue.split('/');
let lv = true;
for (let i of arr) {
if (!i.replace(/\s+/g, '')) {
message.warning("请填写关键词且不为空");
return;
}
if (i.length > 16) {
message.warning('单个标签字数不能超过16个字符')
lv = false;
return;
}
}
if (lv) {
arr = Array.from(new Set(arr));
arr = arr.filter(v => v);
this.setState({
businessScope: arr,
inputVisible: false,
inputValue: '',
});
}
},
//加载(自动补全)
supervisor(value) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/order/getBusinessProjectByName',
data: {
businessName: value
},
success: function (data) {
let thedata = data.data;
if (data.error.length === 0) {
this.setState({
cooperationProjects: thedata,
});
} else {
message.warning(data.error[0].message);
}
}.bind(this),
}).always(
function () {
}.bind(this)
);
},
onSelect(value) {
let arr = this.state.cooperationProjects.filter(v => v.id === value);
let arr1 = this.state.selectCooperationProjects.filter(v => v.value === value);
if (arr.length > 0) {
if (arr1.length > 0) {
message.warning('选项已存在');
} else {
this.state.selectCooperationProjects.push({
label: arr[0].bname,
value: arr[0].id,
})
this.setState({
selectCooperationProjects: this.state.selectCooperationProjects
})
}
}
},
// 查询客户补充完整
receive(e) {
this.setState({
loading: true,
selectedRowKeys: [],
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/customer/checkUser",
data: {
id: e.id || e.uid,
}
}).done(function (data) {
if (!data.error.length) {
let obj = data.data
let selectCooperationProjects = !!obj.intendedProject ? obj.intendedProject.split(',') : []
if (selectCooperationProjects.length > 0) {
selectCooperationProjects = selectCooperationProjects.map((item) => {
return { label: item }
})
}
this.setState({
loading: false,
verification: true,
id: obj.id,
name: obj.name,
orgCode: obj.orgCode,
ProvinceCity: [obj.province, obj.city, obj.area],
// content: obj.contacts,
position: obj.position,
// telnum: obj.contactMobile,
businessScope: !!obj.businessScope ? obj.businessScope.split(',') : [],
selectCooperationProjects: selectCooperationProjects,
level: obj.level,
nature: obj.nature,
natureOther: obj.natureOther,
});
} else {
message.warning(data.error[0].message);
};
}.bind(this));
},
/*单个领取(旧)*/
receives(e) {
this.setState({
loading: true,
selectedRowKeys: [],
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/customer/receiveCustomer",
data: {
uid: e.id,
}
}).done(function (data) {
if (!data.error.length) {
message.success(e.signBills == 1 ? '领取成功!客户为签单客户,请在【签单单位客户】列表中查询' : '领取成功!客户为私有客户,请在【私有单位客户】列表中查询');
this.setState({
loading: false,
});
} else {
message.warning(data.error[0].message);
};
this.loadData(this.state.ispage);
}.bind(this));
},
rTips(e) {
let _this = this;
Modal.confirm({
title: "温馨提示",
content: (
名称中含“协会”“商会”等名称为渠道信息!
您是否确定将客户信息,领取为“私有渠道”信息,领取后,该信息即成为渠道信息不可再修改!!!
领取成功后,您可以通过:渠道管理-渠道列表-私有渠道,查询到此条信息
),
onOk() {
_this.receiveNew(e)
},
onCancel() { },
});
},
/*领取为私有渠道信息*/
receiveNew(e) {
this.setState({
loading: true,
selectedRowKeys: [],
});
$.ajax({
method: "post",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/customer/receiveAsChannel",
data: {
uid: e.id,
}
}).done(function (data) {
if (!data.error.length) {
message.success('领取成功!');
this.setState({
loading: false,
});
} else {
message.warning(data.error[0].message);
};
this.loadData(this.state.ispage);
}.bind(this));
},
closeDesc(e) {
this.state.visitModul = e;
},
search() {
this.loadData();
},
reset() {
this.state.nameSearch = '';
this.state.provinceSearch = undefined;
this.state.addressSearch = [];
this.state.sort = 0
this.loadData()
},
componentWillReceiveProps(nextProps) {
if (nextProps.ApiUrl != this.props.ApiUrl) {
this.state.nameSearch = '';
this.state.provinceSearch = undefined;
this.state.addressSearch = [];
this.loadData(null, nextProps.ApiUrl);
};
},
componentWillMount() {
//城市
let Province = [];
provinceList.map(function (item) {
var id = String(item.id)
Province.push(
{item.name}
)
});
this.state.Provinces = Province;
this.loadData();
},
changeList(arr) {
const newArr = [];
this.state.columns.forEach(item => {
arr.forEach(val => {
if (val === item.title) {
newArr.push(item);
}
});
});
this.setState({
changeList: newArr
});
},
// 补充客户并领取
handleSubmit(e) {
e.preventDefault();
this.props.form.validateFields((err, values) => {
let re = new RegExp("^[\u4e00-\u9fa5]");
if (!re.test(values.name)) {
message.warning('公司名称必须以汉字开头!')
return
}
if (!re.test(values.name.charAt(values.name.length - 1))) {
message.warning('公司名称必须以汉字结尾!')
return
}
if (values.name.length > 64) {
message.warning('公司名称字数不超过64个!')
return false;
};
let regu = /[`~!#$%^&*'_[\]+=<>?:"{}|~!#¥%……&*=-@-!{}|/《》?:“”【】、;;‘’,,.。、\s+]/g;
if (regu.test(values.name)) {
message.warning('公司名称不能存在特殊符号或空格!')
return false;
}
if (!/^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/.test(values.orgCode)) {
message.warning('请输入正确的统一社会信用代码!')
return
}
if (/.*[\u4e00-\u9fa5]+.*$/.test(values.content)) {
} else {
message.error("请填写正确的联系人,且至少包含一个汉字");
return false;
};
if (/.*[\u4e00-\u9fa5]+.*$/.test(values.position)) {
} else {
message.error("请填写正确的职位,且至少包含一个汉字");
return false;
};
if (!values.ProvinceCity[1]) {
message.warning('请选择地区');
return false;
};
if (values.content.length > 32) {
message.warning('联系人字数不超过32个')
return false;
};
if (values.length > 13) {
message.warning('电话号码字数不超过13个')
return false;
};
if (this.state.businessScope.length === 0) {
message.warning('请选择主营产品')
return false;
}
if (this.state.selectCooperationProjects.length === 0) {
message.warning('请选择意向合作项目')
return false;
}
if (!this.state.level && this.state.level != 0) {
message.warning('请选择客户类型')
return false;
}
if (!this.state.nature && this.state.nature != 0) {
message.warning('请选择客户性质')
return false;
}
if (this.state.nature == 0 && !this.state.natureOther) {
message.warning('其他说明不能为空')
return false;
}
let arr = [];
for (let i of this.state.selectCooperationProjects) {
arr.push(i.label)
}
if (!err) {
this.setState({
loading: true
});
$.ajax({
method: "POST",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/customer/updateAndReceiveCustomer',
data: {
id: this.state.id,
orgCode: values.orgCode,
contacts: values.content,
contactMobile: values.telnum,
societyTag: '0', //社会属性默认为 社会企业
//source:values.customerSource,
province: (values.ProvinceCity)[0],//省
city: (values.ProvinceCity)[1],//市
area: (values.ProvinceCity)[2],//区
type: '1',
intendedProject: arr.join(','),
businessScope: this.state.businessScope.join(','),
position: values.position,
level: this.state.level,
nature: this.state.nature,
natureOther: this.state.natureOther,
}
}).done(function (data) {
this.setState({
loading: false
});
if (!data.error.length) {
message.success('领取成功!');
this.setState({
verification: false
})
this.loadData(this.state.ispage);
} else {
message.warning(data.error[0].message);
}
}.bind(this));
}
});
},
render() {
const intentionState = this.props.intentionState;
const { getFieldDecorator } = this.props.form;
const formItemLayout = {
labelCol: { span: 6 },
wrapperCol: { span: 14 },
};
const FormItem = Form.Item;
const { TabPane } = Tabs
const rowSelection = {
selectedRowKeys: this.state.selectedRowKeys,
onChange: (selectedRowKeys, selectedRows) => {
this.setState({
selectedRows: selectedRows,
selectedRowKeys: selectedRowKeys
});
},
onSelect: (recordt, selected, selectedData) => {
this.setState({
selectedData: selectedData,
recordt: recordt.id
})
},
};
return (
{ this.setState({ showModal: false }) }} />
{!intentionState ? "单位公共客户" : "个人公共客户"}
{
this.setState({ nameSearch: e.target.value });
}}
/>
{
this.setState({ addressSearch: e });
}}
/>
排序:
{
this.setState({
verification: false,
id: undefined,
name: undefined,
orgCode: undefined,
ProvinceCity: [],
content: undefined,
position: undefined,
telnum: undefined,
businessScope: [],
selectCooperationProjects: [],
level: undefined,
nature: undefined,
natureOther: undefined,
})
this.props.form.resetFields();
}}
width='600px'
title='客户信息'
footer={null}
className="admin-desc-content">
);
}
})
export default Form.create({})(QueryCustomer);