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;