import React, { Component } from "react";
import {
AutoComplete,
Button,
DatePicker,
Input,
message,
Modal,
Select,
Spin,
Table,
Tabs,
Tag,
Tooltip,
} from "antd";
import { ShowModal, getContactType } from "@/tools";
import { salesList, } from "@/dataDic"
import { ChooseList } from "../../order/orderNew/chooseList";
import $ from "jquery/src/ajax";
import "./index.less";
import moment from "moment";
import ChannelLog from "../../channelList/channelunit/channellog"; //转交日志
import ChangeLog from "../../channelList/channelunit/changelog"; //更名日志
import DetailList from "./detaillist";//客户订单列表
import Visit from "../../channelList/channelunit/detail/visit"
const { TabPane } = Tabs;
const { RangePicker } = DatePicker;
class SignCustomer extends Component {
constructor(props) {
super(props);
this.state = {
pageNo: 1,
loading: false,
changeList: undefined,
selectedRowKeys: [],
columns: [
{
title: "客户名称",
dataIndex: "nickname",
key: "nickname",
fixed: "left",
width: 200,
render: (text, record) => {
return (
{text}
{record.member == 1 && 会员}
{record.chargeback == 1 && 退}
{record.bigCustomer == 1 && 大客户}
);
},
},
{
title: "签单次数",
dataIndex: "signNumber",
key: "signNumber",
onCellClick: (r) => {
let rows = {};
rows["nickname"] = r.nickname
rows["uid"] = r.id
this.setState({
rowData: rows,
showDetail: true,
});
},
render: (text) =>
{text}
},
{
title: "总金额(万元)",
dataIndex: "signAmount",
key: "signAmount",
},
{
title: "首次签单时间",
dataIndex: "firstSigningTime",
key: "firstSigningTime",
},
{
title: "最新签单时间",
dataIndex: "lastSigningTime",
key: "lastSigningTime",
},
{
title: "签单类型",
dataIndex: "lastSalesType",
key: "lastSalesType",
render: (text) => (
{salesList[text]}
)
},
{
title: "归属人",
dataIndex: "name",
key: "name",
},
{
title: "归属部门",
dataIndex: "depName",
key: "depName",
},
{
title: "跟进人",
dataIndex: "followAname",
key: "followAname",
},
{
title: "跟进方式",
dataIndex: "lastFollowType",
key: "lastFollowType",
render: (text) => (
{getContactType(text)}
)
},
{
title: "跟进说明",
dataIndex: "followExplain",
key: "followExplain",
width: 200,
},
{
title: "次数",
dataIndex: "followNumber",
key: "followNumber",
onCellClick: (r) => {
let rows = {};
rows["nickname"] = r.nickname
rows["id"] = r.id
this.setState({
rowData: rows,
followup: true,
});
},
render: (text) =>
{text}
},
{
title: "最新跟进时间",
dataIndex: "lastFollowTime",
key: "lastFollowTime",
},
{
title: "已签项目",
dataIndex: "taskNames",
key: "taskNames",
width: "15%",
},
],
pagination: {
defaultCurrent: 1,
defaultPageSize: 10,
showQuickJumper: true,
pageSize: 10,
onChange: function (page) {
this.loadData(page);
}.bind(this),
showTotal: function (total) {
return "共" + total + "条数据";
},
},
dataSource: [],
searchInfor: {},
mvisible: "",
showDetail: false,
followup: false,
};
this.loadData = this.loadData.bind(this);
this.resetAll = this.resetAll.bind(this);
this.changeList = this.changeList.bind(this);
this.selectSuperId = this.selectSuperId.bind(this);
this.supervisor = this.supervisor.bind(this);
this.supervisor1 = this.supervisor1.bind(this);
this.httpChange = this.httpChange.bind(this);
this.httpChange1 = this.httpChange1.bind(this);
this.selectAuto = this.selectAuto.bind(this);
this.selectAuto1 = this.selectAuto1.bind(this);
this.blurChange = this.blurChange.bind(this);
this.blurChange1 = this.blurChange1.bind(this);
this.exportExec = this.exportExec.bind(this);
}
//获取上级组织
selectSuperId() {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/organization/selectSuperId",
data: {},
success: function (data) {
let theArr = [];
if (data.error && data.error.length === 0) {
for (let i = 0; i < data.data.length; i++) {
let theData = data.data[i];
theArr.push(
{theData.name}
);
}
this.setState({
contactsOption: theArr,
});
} else {
message.warning(data.error[0].message);
}
}.bind(this),
}).always(
function () {
this.setState({
// loading: false,
});
}.bind(this)
);
}
changeList(arr) {
const newArr = [];
this.state.columns.forEach((item) => {
arr.forEach((val) => {
if (val === item.title) {
newArr.push(item);
}
});
});
this.setState({
changeList: newArr,
});
}
loadData(pageNo) {
const { searchInfor, pagination } = this.state;
this.setState({
loading: true,
});
let datas = Object.assign(searchInfor, {
pageNo: pageNo || 1,
pageSize: pagination.pageSize,
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/statistis/signSummary",
data: datas,
success: function (data) {
ShowModal(this);
if (data.error && data.error.length === 0) {
if (data.data.list) {
pagination.current = data.data.pageNo;
pagination.total = data.data.totalCount;
if (data.data && data.data.list && !data.data.list.length) {
pagination.current = 0;
pagination.total = 0;
}
this.setState({
dataSource: data.data.list,
pagination: this.state.pagination,
pageNo: data.data.pageNo,
});
} else {
this.setState({
dataSource: data.data,
pagination: false,
});
}
} else {
message.warning(data.error[0].message);
}
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
}
resetAll() {
this.setState(
{
searchInfor: JSON.parse(JSON.stringify({})),
selectedRowKeys: [],
},
() => {
this.loadData();
}
);
}
supervisor(e) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/customer/listAdminByName",
data: {
adminName: e,
status: "2",
},
success: function (data) {
if (data.error && data.error.length === 0) {
this.setState({
customerArr: data.data,
});
} else {
message.warning(data.error[0].message);
}
}.bind(this),
}).always(function () { }.bind(this));
}
supervisor1(e) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/customer/listAdminByName",
data: {
adminName: e,
status: "2",
},
success: function (data) {
if (data.error && data.error.length === 0) {
this.setState({
customerArr1: data.data,
});
} else {
message.warning(data.error[0].message);
}
}.bind(this),
}).always(function () { }.bind(this));
}
httpChange(e) {
if (e.length >= 1) {
this.supervisor(e);
}
this.setState({
followAname: e,
});
}
httpChange1(e) {
if (e.length >= 1) {
this.supervisor1(e);
}
this.setState({
adminName: e,
});
}
selectAuto(value, options) {
this.setState({
followAname: value,
});
}
selectAuto1(value, options) {
this.setState({
adminName: value,
});
}
blurChange(e) {
const { searchInfor } = this.state
let theType = undefined;
let contactLists = this.state.customerArr || [];
if (e) {
contactLists.map(function (item) {
if (item.name == e.toString()) {
theType = item.id;
}
});
}
this.setState({
searchInfor: Object.assign(searchInfor, {
followAid: theType,
}),
});
}
blurChange1(e) {
const { searchInfor } = this.state
let theType = undefined;
let contactLists = this.state.customerArr1 || [];
if (e) {
contactLists.map(function (item) {
if (item.name == e.toString()) {
theType = item.id;
}
});
}
this.setState({
searchInfor: Object.assign(searchInfor, {
aid: theType,
}),
});
}
// 导出Excel
exportExec() {
this.setState({
exportPendingLoading: true,
});
message.config({
duration: 20,
});
let loading = message.loading("下载中...");
let data = this.state.searchInfor;
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url:
globalConfig.context + "/api/admin/statistis/signSummary/export",
data,
success: function (data) {
if (data.error.length === 0) {
this.download(data.data);
} else {
message.warning(data.error[0].message);
}
}.bind(this),
}).always(
function () {
loading();
this.setState({
exportPendingLoading: false,
});
}.bind(this)
);
}
// 下载
download(fileName) {
window.location.href =
globalConfig.context + "/open/download?fileName=" + fileName;
}
// 选择行
onSelectChange(selectedRowKeys, selectedRows) {
this.setState({
selectedRowKeys,
selectedRows,
});
}
// 关闭弹窗
closeDesc() {
this.setState({
mvisible: "",
showDetail: false,
followup: false,
rowData: {}
});
this.loadData(this.state.pageNo);
}
componentWillMount() {
this.loadData();
this.selectSuperId();
}
render() {
const { searchInfor, selectedRowKeys, selectedRows, showDetail, followup, rowData } = this.state
const dataSources = this.state.customerArr || [];
const options = dataSources.map((group) => (
{group.name}
));
const dataSources1 = this.state.customerArr1 || [];
const options1 = dataSources1.map((group) => (
{group.name}
));
const rowSelection = {
hideDefaultSelections: true,
selectedRowKeys,
onChange: this.onSelectChange.bind(this),
};
return (
签单客户汇总
{
this.setState({
searchInfor: Object.assign(searchInfor, {
userName: e.target.value,
}),
});
}}
/>
跟进时间 :
{
this.setState({
searchInfor: Object.assign(searchInfor, {
lastFollowTimeStart: dataString[0],
lastFollowTimeEnd: dataString[1],
}),
});
}}
/>
首次签单 :
{
this.setState({
searchInfor: Object.assign(searchInfor, {
firstSigningTimeStart: dataString[0],
firstSigningTimeEnd: dataString[1],
}),
});
}}
/>
最新签单 :
{
this.setState({
searchInfor: Object.assign(searchInfor, {
lastSigningTimeStart: dataString[0],
lastSigningTimeEnd: dataString[1],
}),
});
}}
/>
{this.state.mvisible == "channellog" && (
)}
{this.state.mvisible == "changelog" && (
)}
{
showDetail &&
客户订单列表
客户名称:{rowData.nickname}
}
width="90%"
footer={null}
onCancel={this.closeDesc.bind(this)}
>
}
{
followup &&
客户跟进列表
客户名称:{rowData.nickname}
}
width="90%"
footer={null}
onCancel={this.closeDesc.bind(this)}
>
}
);
}
}
export default SignCustomer;